How to Test a Tracking Link Before Launch
A six-step checklist to test a tracking link before launch: resolved macros, a unique click ID, the redirect, the click in the MMP, the postback and duplicates.
Send a real test click through the exact link your platform will serve, then follow it: macros resolved, a fresh click ID, the right store, the click in the MMP, and one postback with your click ID that your system pays only once.
What does testing a tracking link mean?
Testing a tracking link means sending a real click through the exact link your platform will serve and following it to the MMP and back, until one postback carrying your click ID arrives and is counted once.
Test click: a click made on a real device through the live, macro-resolved link, not the template.
Resolved link: the URL after your platform has filled every macro, which is what the MMP receives.
The six checks below run in the order the click travels, so the first failure tells you where to look.
The checklist at a glance
| Step | What you check | Most common cause of failure |
|---|---|---|
| 1 | Every macro resolved | Wrong macro syntax for your platform |
| 2 | Click ID unique, right parameter | Static value or wrong parameter name |
| 3 | Redirect lands correctly | Edited base link or wrong platform link |
| 4 | Click visible in the MMP | Campaign identifier changed |
| 5 | Postback received with click ID | Network not selected, or event not mapped |
| 6 | Duplicate postback not paid twice | No deduplication key |
Step 1: every macro resolves
Check: capture the URL that actually leaves your platform, from your redirect log or the address bar after the first hop, and confirm no braces, double braces or hash wrappers remain.
If it fails: your platform did not recognise the token, so it passed the text through. Copy the exact token from your platform's macro list and update the template. The tracking link macros guide covers syntaxes and encoding.
Step 2: the click ID is unique and in the right parameter
Check: make two test clicks and compare the click ID values; they must differ. Then confirm the parameter name matches the MMP:
- AppsFlyer:
clickid - Branch:
~click_id - Airbridge, Tenjin and AppMetrica:
click_id - Linkrunner:
tid - Adjust, Kochava and Singular: ask the advertiser, as no click ID parameter is documented or confirmed for their partner links
If it fails: a static value or a session ID is sitting in the click ID slot, or the name is wrong. An MMP ignores a parameter name it does not use, so clickid on a link that expects click_id is as bad as no click ID. See what a click ID is.
Step 3: the redirect lands in the right place
Check: the click should end on the Play Store listing on Android and the App Store listing on iOS, or on the expected screen if the advertiser set up a deep link and the app is installed.
If it fails:
- Compare the base link with the advertiser's original, character by character. AppsFlyer, for example, says not to change the
pidmedia source value, and an edited campaign identifier can leave clicks matched to no campaign. - AppsFlyer supports only HTTPS for incoming clicks, so an
http://link is wrong. - Branch ad links always use the
app.linkdomain, even when the app has a custom domain.
Step 4: the click appears in the MMP
Check: ask the advertiser to find your test click in the MMP, with your click ID and sub-IDs showing real values.
If it fails:
- On Adjust links, the hierarchy matters: a parameter added out of order means only the lowest level populates, and missing values show as
unknown. - Server-to-server clicks follow each MMP's own rules. AppsFlyer reserves
af_ipandaf_uafor S2S links only; AppMetrica expects URL-encodeddevice_ipanddevice_ua; Linkrunner readsipanduaonly after the advertiser turns on S2S clicks for you.
Step 5: a postback arrives with your click ID
Check: install the app from the test click on a device that does not already have it, open it and complete signup. Your endpoint should receive the install and signup postbacks with the same click ID you sent.
If it fails:
- No postback at all: ask the advertiser to confirm your postback URL is saved for your network and that the link was created with your network selected.
- Install arrives, events do not: the in-app event has probably not been mapped to your postback yet. Ask the advertiser which events are mapped.
- Nothing reaches your server: if your firewall restricts inbound calls, ask the advertiser for the MMP's postback IP addresses and allowlist them.
- Postback arrives with an empty click ID: your click link never carried the click ID in the parameter the MMP reads. Go back to step 2.
When the MMP shows the conversion but the network still sees nothing, this postback troubleshooter works through the break in order. The tracking link vs postback guide explains which values a postback can carry.
Step 6: duplicates are handled
Check: replay the same postback against your endpoint and confirm it is not counted or paid twice.
If it fails: add a deduplication key, such as the click ID plus the event name. Linkrunner, for one, documents at-least-once delivery and recommends exactly that key.
Before you test
- Build the link in the tracking link generator to catch a missing click ID or postback-only values first.
- Agree with the advertiser which events will be mapped and who checks the MMP side.
- Advertisers running their own QA can follow this mobile attribution QA protocol.
Questions
How many test clicks should I send?
At least two, so you can confirm the click ID changes between clicks, plus one click that you follow through to a full install.
Can the generator test my link?
No. It runs in your browser and checks the structure of the link, but it never fires a click or tests delivery. Use it before the test click, not instead of one.
Why was my test install not attributed?
The usual causes are an edited campaign identifier, a device that already had the app, or a click made on the template rather than the resolved link. Check steps 3 and 4 first.
Should I test with real values or raw macros?
Real values. Branch notes that unfilled macros with braces can break the link in some browsers, and a raw macro tells you nothing about whether your platform fills it.
What if the postback arrives twice?
That can happen when an MMP delivers postbacks at least once. Deduplicate on the click ID plus the event name so the conversion is counted once.
What is a tracking link?
A tracking link is the URL an ad network or affiliate sends a user through before the app store, so the advertiser's MMP can record the click and match it to the install. It carries the campaign, the partner's click ID and optional sub-IDs.