Affonso tracking works in two stages: a browser-side cookie set by the pixel script, and a server-side metadata field forwarded into your payment provider. This checklist walks through each stage so you can pinpoint where attribution is failing.
1. The pixel script is installed on the live site
View source on your live site and search for affonso. The pixel <script> tag must be present. Site redesigns or deploys can silently remove it.
If missing, reinstall from the appropriate framework guide.
2. The affonso_referral cookie is set
- Visit your site with an affiliate link, e.g.
https://yourdomain.com/?atp=test. - Open DevTools → Application → Cookies → your domain.
- Look for
affonso_referral.
Cookie present → the browser-side tracking is working. Cookie missing → the script isn't loading correctly or is blocked by a consent banner.
3. Single-page apps load the script before bootstrap
For Angular, React Router, Vue Router, and other SPAs, the pixel must load before your app's JavaScript bootstraps. Place it in index.html (in <head> or just before </body>), not inside a component or layout file.
4. Stripe is in live mode
Affonso ignores Stripe test-mode webhooks. For end-to-end testing, use live mode with a 100% off coupon. See Stripe test mode and Affonso tracking.
5. The cookie value reaches your payment provider as metadata
The cookie value must be forwarded as metadata when you create the checkout session:
- Stripe:
metadata.affonso_referral - Polar / Creem / Dodo / Paddle: see the relevant integration guide.
Open one of your transactions in the provider's dashboard and confirm the metadata field is present.
6. The webhook endpoint is configured
Each payment provider needs its webhook pointed at Affonso so transaction events reach us. Configure under Tracking & Coupons → Connect.


