Documentation

Troubleshooting

No data arriving, numbers lower than other tools, events counted twice: the checklist for each.

No data is arriving

Work down these in order; one of them is almost always the cause. Most of them still fail silently, which is why the last step turns the tracker's own logging on. The first one no longer does: a tag on a host the site does not count says so in the console by itself, and the waiting screen in the dashboard names that host too.

Open the site at the address the dashboard knows

Onboarding puts the domain you typed on the site's allowed domains, and from then on events are accepted from that host and its subdomains only. A visit from anywhere else is refused with a 403 that the tracker drops for good: no retry. You do not have to go looking for it — the tracker writes one line in the console naming the host it loaded on and the domains that are allowed, and stops sending for that page load. The dashboard's waiting screen names the same host from its side. The usual cases:

  • localhost.It can never be on the list, since a single-label host is not a domain, so a local dev server is not counted while the list has anything in it. The console line says so in those words, rather than offering a fix that does not exist. Test on the deployed site, or give local its own site and empty that one's list in Settings; an empty list accepts any origin.
  • A preview URL such as my-app-git-main.vercel.app. The waiting screen offers Allow this domain for the host it saw, which is one click; otherwise add it under Settings → Allowed domains. A listed domain covers all of its subdomains, so example.com also admits staging.example.com.
  • www versus bare. example.com covers www.example.com, but not the other way round. If you typed the www form and the site opens without it, change the entry to the bare domain.

A change to the list reaches the tracker within a minute or so.

Check your own browser

The person testing an install is the visitor most likely to be invisible to it:

  • Global Privacy Control and Do Not Track are honoured, so a browser sending either is not measured at all. Brave, DuckDuckGo and Privacy Badger send GPC by default, and so do Firefox private windows. Try Chrome or Safari with extensions off.
  • An ad blocker can keep the tag from loading. Pause it for one visit and reload.
  • If you ever opened the site with #oa-ignore, that browser is excluded until you open it with #oa-unignore.

Check the key

The data-key in your page must be the tracking key from thissite's Settings → Installation. A key from another site writes to that other site, and the traffic looks missing here. If the key comes from an environment variable, it is baked in when the site is built: set the variable, then deploy again.

Fixed a wrong key, or the placeholder from these docs? A browser that loaded the tag with a key no site matches stays quiet for up to an hour before it asks again. Check from a browser that never saw the wrong one.

Check the tag is really on the page

A caching layer or CDN can serve pages from before you added the tag. View the page source and search for oa.js. If you use next/scriptor another loader that adds the tag after the page has loaded, the source will not show it; open the browser's Network tab and look for oa.js there instead.

Verify on realtime, with debug on

Watch the realtime view, not the charts: it shows a visit within seconds. Add data-debug="true" to the tag temporarily and the browser console says what happened to each batch: dropped_403 is the address, and missing data-keyis the key. The lines are logged at the debug level, which Chrome hides until the console's level filter includes Verbose.

Numbers are lower than my other tool

This is usually the two tools disagreeing on what to count

  • Privacy-signal visitors are absent by design: someone sending GPC or DNT is not measured at all, while cookie-based tools count them. Respecting the opt-out is the product working.
  • Bots are filtered before billing and before charts.
  • Visitors here means people, counted with a daily identifier; a tool that counts cookie lifetimes or device installs reads higher on the same traffic.

An event is counted twice

The one way to double-bill a click is describing it twice yourself under the same name with two mechanisms: a data-oa-event attribute plus an oa.track() call of the same name on the same element. Pick one. A dashboard rule with the same name is safe; the rule wins and exactly one event fires. Details on the custom events page.

Keeping your own visits out

There are two honest ways, depending on what you are excluding.

  • To exclude the browser you work in, use #oa-ignore: visit any page of your site with that in the URL and this browser stops being counted, per browser, nothing to install.
  • To keep whole environments apart, create a separate site for staging and local, and point those snippets at its own tracking key; their traffic then lands in its own dashboard. For local, empty that site's allowed domains in Settings, since localhost cannot be listed.
There is no per-person exclusion by identity, because the product does not recognise people. The old data-test-mode attribute is retired and ignored; traffic from snippets still carrying it is ordinary and visible.

Still stuck

Write to hey@getopen.so with your site's slug and what you tried; we answer quickly.