More in Getting started
- Install TapCub on your website
- Migrate from Google Analytics 4 or Baidu Tongji
- Add a website, app or mini-program
- How do I add TapCub to WordPress?
- How do I add TapCub to Shopify?
- Where do I paste the TapCub tracking code?
- Can I install TapCub with Google Tag Manager?
- How do I track a React, Vue or Next.js app?
- How do I check that TapCub is collecting data?
- What is a site, and how many can I add?
- Which time zone should I pick for a site?
- Which domains do I need to register?
- How do I keep my own visits out of the reports?
- Why does my visitor count differ from Google Analytics 4?
- Can I run TapCub alongside Google Analytics 4?
- How do I move my goals and events from GA4?
- Can I import my historical data from GA4?
- How do I add TapCub to Squarespace?
- How do I add TapCub to Wix?
- Which Content Security Policy rules does TapCub need?
- Do ad blockers block TapCub?
- How do I send events from my server?
- How do I install TapCub on React?
- How do I install TapCub on Nuxt?
- How do I install TapCub on Vue?
- How do I install TapCub on Next.js?
- How do I capture a HAR file for TapCub support?
- How do I create and manage API keys?
- How do I send events with the HTTP API?
- All guides in this category
Still have a question?
Could not find it? A person reads every message, usually within a few hours on business days.
Chat with usShort answer
Usually one of three things: the page being served does not contain the snippet yet, your own browser sends a privacy signal the script honors, or the domain is not registered on the SDK code page.
Causes and fixes
| What you see | Cause and fix |
|---|---|
No client.js request | The served page does not contain the snippet. Clear your site or CDN cache, check that you edited the template that is actually live, or allow the script in the extension that blocked it. |
client.js loads, no POST | Your browser sends Do Not Track or Global Privacy Control and the script honors it. Test in a browser profile without those signals. |
| Console shows a CSP error | Allow the script host in script-src and the collection host in connect-src. See CSP and SRI. |
| POST sent, Realtime empty | Check DataData quality for the reason. Most often the domain is not registered; also a paused site, a used-up monthly quota, or an exclusion rule matching the page or your IP. |
| Some pages missing | The page path matches an exclusion, the snippet’s data-exclude list, or that template was not updated. |
| Single-page app shows one pageview | Hash routing needs data-hash="true". See single-page apps. |
| Testing with a headless browser | Headless Puppeteer or Playwright sessions are usually flagged as bots and kept out of visitor reports and Realtime. Test in a normal browser. |
Testing on localhost
The script sends nothing from localhost, 127.0.0.1 or other local addresses, so development traffic stays out of your reports. To test locally on purpose, do both:
- Add
data-allow-local="true"to the tag. - Register
localhostas a domain on the SDK code page. It covers127.0.0.1as well.
Remove both when you are done, or local visits keep mixing into your numbers. Pages opened with file:// are never counted.
Data stopped after it was working
If data arrived and then stopped, check quota and plan first: hits beyond the monthly event quota are dropped until the next period or an upgrade. Plans and limits explains what happens at the limit. A theme switch or redesign that replaced the template is the other common cause.
Still stuck? Send the page URL and a screenshot of the Network panel through the contact page.
See also: HAR file.
Did this answer your question?
We use your answers to fix and expand this page.
Couldn’t send. Please try again in a minute.
Thanks for the feedback. We’ll use it to improve this page.You’ve already sent feedback on this page. Thanks.