Tracking
Your affiliates are selling. The tracker says Direct.
It is the most common complaint in affiliate software support forums, and the most expensive one: commissions silently misattributed while real promoters conclude you are not paying them. Here are the seven ways tracking actually breaks, in order of frequency.
By the AffiliateTracking team · · 7 min
1. The cookie never gets set
Affiliate tracking starts with a click landing on your site with a referral parameter. If the visitor arrives, the tracking script fails to load, or the parameter gets stripped by a redirect before the script runs, there is nothing to attribute. The sale records as Direct. This failure is invisible from the dashboard: no click, no error, no trace.
2. The checkout happens on another domain
Stripe Checkout, Paddle, and hosted payment pages move the customer to a different domain for the final step. If attribution lives only in a browser cookie on your marketing domain and the conversion event fires on the payment domain, the two never meet. The fix is server-side: the payment event must carry the referral identity in metadata, not hope the cookie survives the hop.
3. A redirect strips the parameter
Affiliate links pass ?ref=, ?via=, or ?fpr=. Marketing teams love redirect chains: vanity URLs, tracking wrappers, language gates. Each hop is a chance to drop the query string. One misconfigured redirect between the affiliate's link and your landing page eats every conversion it carries.
4. Ad blockers and privacy browsers
A meaningful share of technical audiences block third-party scripts outright. One operator on Hacker News reported roughly one in ten clicks tracked on third-party networks; ad-block researchers have documented the pattern for years. First-party tracking, served from your own domain, survives most of it. Third-party trackers do not.
5. The cross-device journey
A customer clicks an affiliate link on their phone during commute, buys on their laptop that night. Cookie-based attribution sees two unrelated visitors. Subscription SaaS with long consideration windows feels this most. Server-side identity, anchored to the customer record at payment time, is the only durable answer.
6. The order hook races the tracking
On plugin-based setups, the commission hook fires when the order is created. If tracking data has not landed yet, a real referral can record as organic. Race conditions like this produce the classic support ticket: it worked yesterday, nothing changed, now commissions are missing.
7. The numbers disagree with reality
The quietest failure: no missing sale, but reported clicks or commissions drift from what affiliates see in their own analytics. When reports are recomputed on the fly, small bugs become permanent history. An append-only ledger, where entries are written once and never rewritten, makes drift impossible: what was recorded is what is reported, forever.
The diagnostic table
When attribution looks wrong, work the list in order:
Sale shows Direct: cookie never set, or redirect stripped the parameter. Test the actual affiliate link end to end.
Some affiliates track, others never: their links use a parameter your setup does not read, or their audience blocks scripts.
Worked then stopped: something changed on the journey, a new redirect, a checkout migration, a script load order change.
Numbers drift slowly: reports being recomputed. Demand a ledger.
What trustworthy tracking checks
A tracker you can audit does three things. It attributes from the payment event itself, so the conversion is anchored to money, not to a cookie that may never have existed. It reconciles: every order either matches a referral or has a recorded reason not to. And it keeps history append-only, so the story cannot be rewritten after the fact. That is the standard we built to: first-party links on your domain, conversions from your processor's own events, and a double-entry ledger where every click and commission is a permanent row.