Troubleshooting
The fixes for the issues we see most often. If you don't find your problem here, email support@tracerev.com with your site_id.
The pixel isn't firing
Check 1: the script tag is in <head>
Open your store, view source, search for track.js. If it's missing, the snippet wasn't saved or the theme is caching old HTML. Try a forced reload, then re-check.
Check 2: data-site is set
The script needs data-site="site_xxx". Without it, the pixel exits early. Confirm the value matches the Site ID from your dashboard's Settings tab — it should start with site_.
Check 3: ad blocker
Some aggressive ad blockers (uBlock with custom filters, Brave shields on max) block requests to non-essential third-party domains. Test in a fresh incognito window with extensions disabled.
Check 4: CSP / report-only headers
If you have a Content Security Policy, you need to allow the script source and the collect endpoint:
script-src 'self' https://tracerev.com;
connect-src 'self' https://tracerev.com;Charges aren't showing up in Attribution
Check 1: Stripe is connected
Settings tab should show your connected Stripe account ID. If it shows the "Connect Stripe" button, the OAuth handshake didn't complete — re-run it.
Check 2: backfill is in progress
Brand-new connections backfill 12 months of history. For accounts with thousands of charges this takes a few minutes. Refresh the dashboard; rows trickle in.
Check 3: webhook is reaching us
For new charges (post-connect), Trace relies on Stripe webhooks. In your Stripe Dashboard → Developers → Webhooks → click the Trace endpoint. Look for delivery failures (non-2xx responses). If you see them, email support with the failure timestamps.
Lots of charges show as "unattributed"
Unattributed means Trace couldn't resolve the charge to a visitor via either metadata or email match. Common causes:
- SDK not wired into checkout. Without
metadata.trace_visitor_id, attribution depends entirely on email match. Add the SDK to your Checkout Session creation. SDK reference → - Different emails between identify and checkout. Customer signs up for the newsletter as alex@gmail.com but checks out as alex+work@gmail.com. Email-match fails. Mitigate by capturing email at multiple points and calling
identify()on each. - Direct traffic. If a customer typed your URL directly with no UTMs and no referrer, there's nothing to attribute even if we resolve the visitor. They'll show up under
direct/nonein the channel breakdown. - Pre-pixel charges.Charges that happened before you installed the pixel can't be attributed retroactively. They'll always be unattributed.
UTMs aren't being captured
Trace reads UTMs from the current page URL on every pageview, then stores them on the event. Attribution uses the visitor's earliest event with a UTM (first-touch).
Common UTM mistakes
- UTMs only on the landing page. Your ad URL has UTMs, but a redirect strips them before the pixel fires. Use 302s that preserve query strings, or land directly on the destination.
- Hash-routing. If your UTMs are after a
#instead of a?, the browser strips them server-side. Always use query strings. - Lowercase mismatch. Trace treats
utm_source=Metaandutm_source=metaas different sources. Pick a convention (lowercase recommended) and stick to it across all your platforms.
Recommended UTM conventions
| Param | What goes there | Examples |
|---|---|---|
utm_source | The platform / publisher | meta, google, reddit, klaviyo, partner |
utm_medium | The format / channel type | cpc, organic, email, affiliate, post |
utm_campaign | Campaign or send name | spring-sale, q3-launch, podcast-tim-ferriss |
utm_content | Creative variant | video-a, carousel-b, blog-cta |
utm_term | Keyword (search ads only) | magnesium-glycinate, sleep-supplement |
Refunds aren't reducing my revenue
I'm on Shopify — why use the SDK?
Shopify's native checkout doesn't let you customize Stripe metadata easily. For Shopify stores, Trace relies on the email-match path, which works fine if you're calling trace.identify() at email capture (newsletter, account, quiz).
If you have a custom Shopify Plus checkout extension or Shopify Functions, you can pass trace_visitor_id through their checkout extensibility hooks. Email support if you need a hand wiring this up.
Getting in touch
Email support@tracerev.com. Include your site_id, the time window of the issue, and a couple of charge IDs we can investigate.