Troubleshooting
The numbers look wrong, or something stopped. Work down this list.
All pages
This page is for when data is arriving but looks wrong. If nothing is arriving at all, start at Verify your install, which walks the install failures in order of how often they are the real cause.
Traffic stopped, or dropped to nothing
Work down these in order.
You hit the Free quota. Free stops accepting events past 2,000 in a calendar month; the ones after that are dropped rather than billed, and they are not recovered when the month rolls over. Paid plans never drop, they meter overage. Check the Billing panel: it shows events used against included, and a banner appears at 80%. See Billing and plans.
The tag stopped shipping. A deploy that changed your layout, a CMS template that got overwritten, a CSP that started blocking api.trysonex.com. View source on the live page and look for sonex.js.
The hostname changed. If your script tag sets data-domains, only those exact hostnames report. Moving to a new domain, or adding www., silently produces zero events until the list is updated.
It really did drop. Compare the same range against the previous period (Compare) before assuming a bug. A campaign ending looks exactly like a broken tracker in a single-range view.
The numbers are lower than my other analytics tool
This is expected and mostly not a defect in either tool.
- Visitors are counted differently. sonex identifies a visitor with a daily rotating hash, not a cookie. Someone who visits on Monday and Thursday is two visitors over the week, not one. What the numbers count has the exact definitions.
- Bots are dropped at ingestion, along with known spam referrers. Tools that count them report bigger numbers, not truer ones.
- Ad blockers block analytics by pattern. They do not check whether the analytics is privacy-first, so some visits never reach sonex. Everyone in this category under-counts; the gap just varies.
- No cookie banner means no consent gate. A tool that only counts consenting visitors under-counts far more than sonex does, in the other direction.
If two tools disagree by a few percent, both are probably fine. If they disagree by an order of magnitude, that is an install problem.
My teammate and I see different totals
Check the timezone in Settings → Preferences. It is stored per browser, not per account, so two people can read the same range with different day boundaries. Everything else about the data is identical; only the buckets moved. See Account and preferences.
Also confirm you are both on the same date range and have no leftover filter chips. Every view is a URL, so the fastest fix is to paste each other your address bar.
Realtime is empty
Realtime shows the last few minutes only. If nobody has visited since you deployed, an empty Realtime is an accurate reading, not a bug. Open your own site in another tab, then look again.
If you are on that site and still do not appear, you may have excluded yourself:
localStorage.removeItem("sonex.disabled");
My own visits are polluting the numbers
Run this once in the console on your site, and that browser stops sending:
localStorage.setItem("sonex.disabled", "1");
It is per browser and per site, and nothing about it reaches sonex. For staging and preview URLs, data-domains on the script tag is the cleaner fix. Both are in Install the tracker.
A custom event is not showing up
- Check the date range first. Events land in the range they happened in, so a fresh event will not appear inside a range that ended yesterday.
- Confirm the call ran. In the console on your own site,
window.sonex.track("signup"). Ifwindow.sonexis undefined the tracker is not loaded, and this is an install problem. - Check the name. Event names are matched exactly, including case.
Signupandsignupare two events. - Check
data-before-send. If you wired a rewrite function and it returns a falsy value, the event is dropped on purpose. It is also dropped if the function throws.
See Custom events.
A filter returns nothing
Filter values are exact, not fuzzy: /pricing does not match /pricing/, and google.com does not match www.google.com if that is how it was recorded. Click the row in the breakdown panel rather than typing the value, and the filter is guaranteed to match what is stored.
Filters also stack with AND, so three chips mean all three at once. Clear them and add one at a time to find the one that empties the view.
Revenue is not appearing
- The provider has to be connected on that website, not on your account. Each website connects its own Stripe or Polar credentials in its Settings.
- Only succeeded charges count, net of refunds. A range with pending or failed payments only will read as zero.
- One currency at a time. A business charging in several reads them one at a time rather than adding unlike things together.
- The credential may have expired or been revoked at the provider. Reconnect it from the website’s Settings → Revenue card.
Revenue comes from your payment provider’s API, not from tracked events, so an install problem never explains missing revenue and vice versa. See Revenue.
A report is locked
Funnel and Retention need Pro or higher. They appear in the Reports rail with a lock and explain the upgrade in place. Everything else, including Realtime, Goals, Journey, Attribution, UTM and Performance, is on every plan including Free.
Old data has disappeared
Retention is a property of your plan: 6 months on Free, 1 year on Pro, 5 years on Business. Rows past the window are deleted by a purge job. Upgrading widens the window going forward; it does not bring back what has already aged out.
Still stuck
Mail hello@trysonex.com with your website’s domain and the range you were looking at. That is enough to check what actually landed.