Troubleshooting
The most common issues and how to fix them.
No data is showing up
Work through these in order:
Confirm the snippet is on the page
Open your site, view source, and search for sa.js. If it’s not there, the snippet
didn’t get added. Revisit the install guide for your platform.
Check your Site ID
The data-site value must match your Site ID exactly. A wrong or missing
data-site means the script does nothing.
Look in the Live view
Open your site in one tab and the dashboard’s Live view in another. You should appear within a few seconds. If you do, tracking works. The main reports update on their own shortly after.
Rule out a privacy signal (Do Not Track / GPC)
Snow honors Global Privacy Control and Do Not Track by default. When your
browser sends one, sa.js loads normally and then sends nothing: no request,
no console error. The install is fine; it is deliberately opting out.
Firefox sends GPC whenever Enhanced Tracking Protection is set to Strict, and some privacy-focused browsers send it by default, so this often fires on the very machine you’re testing from. Check in the browser console:
navigator.globalPrivacyControl // true → this is why
navigator.doNotTrack // "1" → this is whyA private window will not rule this out: it’s a browser setting, not an extension. Test in a browser you haven’t hardened, or on your phone.
If another analytics tool on the same page is still recording those visits, that’s
expected, because most don’t honor these signals. You can match that behaviour with
data-honor-dnt="false", but that means ignoring
a signal the visitor explicitly sent. See Privacy.
Rule out an ad-blocker
Many ad-blockers block analytics requests. Try in a private window with extensions disabled. If data appears there but not normally, set up the ad-blocker bypass to recover blocked visitors.
Ad-blocking and a privacy signal look identical in the dashboard, but differ in DevTools → Network: a blocked request appears and fails, while a privacy signal means no request is made at all.
”Failed to fetch” or events aren’t sending
This is almost always about where events are sent. Check that:
- Your collector URL is correct in the snippet’s
src(anddata-api-urlif you use a proxy). - The URL includes
https://and points to your actual Snow collector. - If you proxy events, the proxied path is reachable and forwards to
/api/collect.
A Content Security Policy (CSP) is blocking Snow
If your site sets a Content-Security-Policy, allow Snow’s collector:
script-src: allow the domain that servessa.js(your collector, or your own domain when proxying).connect-src: allow the domain events are sent to (same collector or proxy).
Content-Security-Policy: script-src 'self' https://api.snowanalytics.app; connect-src 'self' https://api.snowanalytics.app;With a same-origin proxy, 'self' covers both.
Locations all show “Unknown” or one city
- All “Unknown”: the location database may not be configured on your Snow instance. This is a hosting-side setting. Whoever runs your Snow can enable it.
- Everyone in one city: that’s the classic proxy bug: events flow through your server and the visitor’s real IP isn’t forwarded, so everyone geolocates to your server. Forward the visitor IP as described in Forwarding the visitor IP.
Custom events aren’t appearing
- Confirm the event actually fires: add a quick
console.lognext to yoursa.track()call, or click the element with thedata-sa-eventattribute and watch the Live view. - Check the event name for typos. Events are grouped by exact name.
- Events sent from a server need the Events API and a valid
API key, not
sa.track().
Duplicate or missing payments
- Revenue syncs from Stripe in real time and is reconciled periodically, so a briefly missing payment usually appears within a few minutes. See How revenue stays up to date.
- If a conversion isn’t tied to a visit, the visitor wasn’t linked to the Stripe customer. Set up revenue attribution.
Still stuck?
Email us at [email protected] with what you tried and what you saw.