Troubleshooting
Quick fixes for the issues we hear about most: missing revenue, everything showing as Direct, key rejections and duplicate conversions.
Payments show as Direct
A payment lands with attribution Direct when no analytise_visitor_id traveled with it.
- Make sure your checkout code reads the
analytise_visitorcookie and sends it as checkout metadata (see Stripe or Dodo guides). - Check the tracker snippet is installed on the page where the customer browsed before buying — the cookie is set there.
- The visitor must have browsed the tracked site before the purchase; brand-new customers who land directly on an off-site checkout have no visit to match.
- Already-connected gateways re-sync the last few days on every run, so fixing the metadata and clicking
Sync nowrepairs recent rows.
Key rejected / sync errors
- Stripe — a 403 usually means the restricted key lacks
checkout sessions:read. Regenerate with that permission in Stripe → Developers → API keys. - Dodo — 401 means the key is wrong or revoked; 403 means it can't list payments. Test keys only read test payments.
- Status for each gateway is on
Settings → Integrations, including the exact provider error.
Revenue stays at zero
- No gateway connected yet? Connect Stripe or Dodo — until then only GTM/custom events contribute.
- For client events: confirm the purchase actually fires after checkout, includes
valueand a validcurrency, and the tracker script loads exactly once. - Check the selected date range — first sync starts from "today minus a year", but new sessions need data in range.
Duplicate conversions
Synced payments dedupe on the gateway's transaction id. For custom events, always send a stable transaction_id and fire once per order.
Still duplicated?
Send the same id twice (e.g. a test order replayed) is expected to collapse to one row — if they show twice, the ids actually differ.
Back to
Overview