The Problem
You click a new campaign link and test a signup, but the dashboard attributes it to a different campaign — usually an older test link with a stale date.
Why This Happens
The SDK generates a unique install instance ID on first launch and persists it on the device. All subsequent activity (installs, signups, events) is tied to this ID. When you test again without uninstalling, the SDK reuses the same ID and the backend attributes everything to the original campaign.
No uninstall = same ID = attribution stuck on the first campaign.
How to Fix It
1. Uninstall the app before each test
This clears the stored install instance ID so a fresh one is generated on next launch.
Force-stopping the app is not enough — you must fully uninstall it.
2. Enable debug mode
Set debug = true in your SDK init to see logs confirming a fresh install.
React Native
Flutter
iOS
Android
await linkrunner.init("TOKEN", "SECRET", "KEY_ID", false, true);
await LinkRunner().init('TOKEN', 'SECRET', 'KEY_ID', false, true);
await LinkrunnerSDK.shared.initialize(
token: "TOKEN", secretKey: "SECRET", keyId: "KEY_ID",
disableIdfa: false, debug: true
)
LinkRunner.getInstance().init(
context = applicationContext, token = "TOKEN",
secretKey = "SECRET", keyId = "KEY_ID", debug = true
)
3. Run the test flow
- Click your new campaign link on the test device
- Install and open the app within 3 minutes of clicking
- Signup (if testing signup attribution)
Multiple tests? Uninstall between each run for clean attribution.
Still seeing issues?
- Confirm you clicked the link on the same device where the app is installed
- Confirm you opened the app within 3 minutes of clicking
- See the full Integration Testing guide for a detailed walkthrough
Need help? Reach out at darshil@linkrunner.io.