Skip to content
trackrift

Documentation

Platform

Troubleshooting

Systematic debugging for ingest, CNAME, CAPI, attribution, and consent issues.

AI brief: Check: public_id in u.js, allowed origins, CNAME verified, live verification in dashboard, Events page payload, browser devtools network to /collect 204, ad blockers, init before track(), consentMode required gating.

Use this guide top-to-bottom: confirm delivery (events arrive), then payload quality (fields correct), then downstream (CAPI, attribution).

Symptom matrix

SymptomLikely causeFix
No events at allScript missing or wrong public_idMatch id= in u.js to dashboard; hard refresh
Events in dev, not prodOrigin not in allowlistSettings → Tracking → Allowed origins
403 on /collectOrigin blockedAdd domain or clear allowlist for testing
CORS error in consoleCollector URL mismatchendpoint must match script host / CNAME
Duplicate page_viewsStrictMode / double mountExpected in dev — SDK dedupes 1500ms
No UTMs on internal pagesBy designUTMs URL-only — see attribution docs
Low Meta Event Match QualityMissing fbp/fbc or fbclidCNAME + pixel on same domain; preserve fbclid
CNAME stuck pendingDNS not propagated or proxiedDNS-only CNAME; verify with dig
Events queued never sentconsentMode: requiredCall setConsent() after CMP approval
Server events 401Invalid/expired ingest tokenRotate token in Settings → API keys

Debug mode

typescript
tracker.init({
  endpoint: 'https://api.trackrift.com',
  publicId: 'YOUR_PUBLIC_ID',
  debug: true,
});
// Console: [tracker] init, enqueue, flush, dedupe skip, consent block

Network checklist

  1. Disable ad blockers for testing (or use CNAME).
  2. Confirm GET /bootstrap returns Set-Cookie for _aid.
  3. Confirm POST /collect returns 204.
  4. Compare request public_id with dashboard snippet.
  5. Inspect payload in Events explorer within 30s.
dig-cname.sh
dig +short t.yourdomain.com CNAME
# Should return the Trackrift collector target from dashboard

Still stuck?

Export a redacted event JSON from Events → copy payload → compare against OpenAPI schema. Missing page.url or anonymous_id are the most common payload gaps.