Adjust's integration model is leaner than AppsFlyer's and rewards precision: a fixed four-level campaign structure, token-based event mapping configured in the Adjust dashboard, and server-side callbacks to any URL you register. This guide sets it up for affiliate tracking end to end. For the architecture behind trackers and MMPs generally, start with the mobile attribution guide; for the AppsFlyer equivalent of this walkthrough, see the AppsFlyer setup guide.
How Adjust's Model Differs
Three differences matter to a network. Adjust organises attribution around a fixed hierarchy โ campaign โ adgroup โ creative plus a free-form label โ rather than arbitrary named parameters, so your affiliate structure must map into those slots deliberately. Event forwarding is token-based: each in-app event has an Adjust event token, and the mapping between tokens and your event names is maintained in the Adjust dashboard. And on Android, Adjust keys attribution primarily on gps_adid (the Google advertising ID), which your tracker should pass whenever available.
Step 1 โ Map the Campaign Structure
The standard affiliate mapping fills Adjust's hierarchy so both systems can report at publisher granularity:
| Adjust parameter | Tracker value | Why |
|---|---|---|
campaign | {campaign_id} | Offer-level reporting on both sides |
adgroup | {affiliate_id} | Publisher-level quality visibility |
creative | {click_id} | Round-trip key back to your click |
label | {sub_aff1} | Sub-affiliate drill-down |
gps_adid / idfa | {gaid} / {iosidfa} | Device matching where consented |
Decide this mapping once and keep it uniform across every Adjust campaign you run โ mixed conventions make cross-campaign publisher reports meaningless.
Step 2 โ Build the Tracker URL
With the mapping fixed, the Adjust tracker URL your affiliates click through looks like:
https://app.adjust.com/abc123
?campaign={campaign_id}
&adgroup={affiliate_id}
&creative={click_id}
&label={sub_aff1}
&gps_adid={gaid} // Android
&idfa={iosidfa} // iOS, ATT-consented The abc123 segment is the Adjust tracker token the advertiser creates for your network. As with every MMP link: the click ID must be generated fresh per click and passed unmodified, or installs come back unattributable.
Step 3 โ Configure the Callbacks
Adjust sends server-side callbacks per activity kind. Register distinct endpoints (or distinct parameters on one endpoint) for install, event, and โ deliberately separated โ reattribution:
// Install
https://track.yourdomain.com/postback
?click_id={creative}&gaid={gps_adid}
// In-app event
https://track.yourdomain.com/postback
?click_id={creative}&event={event}&payout={revenue}
// Reattribution โ own flag, own payout rules
https://track.yourdomain.com/postback
?click_id={creative}&reattr=1 The reattribution split matters commercially: a re-engaged user is not a new install, and paying full CPI on reattributions is one of the quieter ways app campaigns lose margin. Route them into their own conversion type with their own (usually lower or zero) payout.
Step 4 โ Event Tokens and Revenue
For every event you pay on, the advertiser creates an event token in Adjust and enables forwarding to your callback with {event} and {revenue} placeholders populated. Agree the token-to-event-name mapping in writing before launch and treat it as immutable โ Adjust callbacks identify events by token, and a silently remapped token breaks CPA rules without any visible error. Adjust also distinguishes activity kinds (install, event, session) in the callback payload; convert only the kinds you have priced.
Step 5 โ Secure and Deduplicate
Adjust secures callbacks with a callback secret carried in the authorization header. Your tracker must validate it on every request โ constant-time comparison, reject on mismatch โ before the payload touches conversion logic. Affclix validates the secret automatically when configured on the integration and logs unsigned integrations as a visible warning. Behind authentication, apply the same discipline as any postback pipeline: deduplicate on click ID + event token (Adjust retries undelivered callbacks), drop events for unknown click IDs into quarantine rather than silently discarding them, and screen the survivors through your standard fraud layers.
Callbacks with unknown click IDs usually mean a macro problem upstream, not fraud. A quarantine queue turns them into a diagnostic; silent discard turns them into a mystery revenue gap.
Reconciliation and Gotchas
- Installs attributed, callbacks missing โ callback URL not registered for your tracker token, or registered only for installs and not events. Verify per activity kind.
- Conversions without publisher attribution โ the
adgroup/creativemapping was changed on one campaign. Re-audit the structure mapping across all live trackers. - Session callbacks flooding the endpoint โ sessions are enabled by default; disable forwarding for activity kinds you do not pay on.
- Numbers drift vs the Adjust dashboard โ check attribution window alignment and confirm you exclude reattributions exactly as the advertiser's report does.
On Affclix, the Adjust integration emits the tracker URL and all three callback endpoints with this mapping pre-applied, validates the callback secret, separates reattributions, and deduplicates on the callback path โ so the checklist above is configuration you inherit, not engineering you owe.
Connect Adjust on Affclix