Skip to Content
Troubleshooting

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 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 first-party proxy to recover blocked visitors.

”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 (and data-api-url if 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 serves sa.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 first-party 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 first-party 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.log next to your sa.track() call, or click the element with the data-sa-event attribute 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.