TL;DR, Quick Answer
6 min readVerify your analytics by checking the script installation, testing real-time data, navigating multiple pages, testing across browsers and devices, validating traffic sources, and checking for duplicate scripts or CSP blocking.
Analytics rarely breaks loudly. To verify your analytics tool is working correctly you have to look for silent failures: a script missing from one template, a Content Security Policy block, a tag manager firing the same event twice.
Analytics failures are often silent. A script can be missing from one template, blocked by Content Security Policy, duplicated by a tag manager, broken by consent settings, or sending events with the wrong domain. The dashboard still shows numbers, so nobody notices until decisions are based on bad data.
Use this checklist after installing any analytics tool and after major site changes.
1. Confirm the script loads
Open browser developer tools and check the Network tab. Filter for the analytics domain or script filename. Confirm:
- The script returns 200.
- It is not blocked by CSP.
- It is not blocked by an ad blocker during your baseline test.
- It loads only once.
- It is present on all required templates.
If you use a tag manager, check both the page source and the tag manager preview mode.
2. Test real-time pageviews
Open a private window, visit the site, and watch real-time reporting. Test homepage, blog post, pricing page, checkout or signup page, and a 404 page if tracked.
For single-page apps, verify route changes trigger pageviews. Many tracking bugs come from client-side navigation that changes the URL without re-running pageview logic.

3. Validate consent behavior
If analytics requires consent, test all states:
- Before choosing.
- Accept.
- Reject.
- Withdraw consent.
- Return visit.
- Different region if geo rules apply.
The network requests should match the user's choice. A banner that appears after the tracking request has already fired is not doing its job.
4. Check duplicate tracking
Duplicate scripts double-count pageviews and conversions. Common causes include:
- Hardcoded script plus tag manager script.
- Layout and page template both injecting analytics.
- Old GA property plus new GA4 property.
- Consent manager firing the same tag twice.
Use network request counts and dashboard spikes to detect duplicates.
5. Test events and goals
Trigger each conversion manually:
- CTA click.
- Form submit.
- Signup complete.
- Checkout complete.
- Newsletter subscription.
- Download.
Verify event names, properties, and timestamps. Events should fire after success, not merely on button click, when the business action depends on validation or server confirmation.
6. Inspect payloads for personal data
Look at request payloads. Confirm you are not sending emails, names, phone numbers, account IDs, tokens, full checkout URLs, or free-text inputs. This is especially important for healthcare, finance, education, and ecommerce.
Flowsery
Start Your 14-Day Free Trial
Real-time dashboard
Goal tracking
Cookie-free tracking

7. Validate attribution
Create test URLs with UTMs:
?utm_source=test&utm_medium=email&utm_campaign=qa
Visit the link and confirm the campaign appears correctly. Also test a referral from another domain. If attribution is missing, check redirects, canonical domains, consent timing, and parameter stripping.
8. Compare with server logs
Analytics will not match server logs exactly, but large gaps are useful signals. Compare total requests, pageviews, and top pages over a short period. Differences may come from bots, blockers, cached pages, or script errors.
9. Monitor after launch
Set a recurring check:
- Weekly traffic sanity check.
- Alert on sudden zero events.
- Alert on conversion drops beyond normal variance.
- Review after deployments.
- Re-test after consent manager or CSP changes.
Verification is not a one-time installation task. Treat analytics like instrumentation in production: tested, monitored, and reviewed whenever the application changes.
Deployment guardrails
Add analytics checks to release QA. For example, after a route refactor, verify that the global layout still includes the script, client-side navigation still emits pageviews, and CSP still allows the analytics endpoint. If your platform supports it, create a synthetic monitor that visits a test page and confirms an event arrives.
Privacy QA
Technical QA should include privacy QA. Inspect payloads after realistic flows, including failed forms and error pages. These are places where sensitive data leaks because developers send full error context. Analytics that works correctly but collects the wrong data is still broken.
- Signup, checkout, and form submit tested
- Payloads checked for names, emails, and tokens
- Often skipped in QA
- Developers log full error context, including sensitive fields
Use Browser and Server Evidence
Do not rely only on the analytics dashboard. Use the browser Network tab, server access logs, and the analytics UI together. The Network tab proves that a request was sent. The server log proves it reached your endpoint. The dashboard proves it was accepted, processed, and attributed correctly. A bug can happen at any layer.
MDN's guide to the Network request list explains how developer tools expose request methods, status codes, timing, and transferred resources (MDN Network Monitor). Use that evidence during QA: save screenshots or HAR files for installation, consent states, and conversion tests.
For a privacy-first analytics tool, verify these additional points:
- Query strings are stripped or safely allowlisted.
- IP handling matches your privacy notice.
- Bot filtering does not remove real QA traffic unexpectedly.
- Events sent with
navigator.sendBeaconarrive during page unloads. - Duplicate browser tabs do not inflate conversion events.
- Ad blockers do not break essential site functionality.
Create a small test matrix before important releases:
| Scenario | Expected result |
|---|---|
| First visit with UTMs | One pageview with campaign labels |
| Reject consent | Only allowed requests fire |
| SPA route change | New pageview recorded |
| Successful signup | One conversion after server success |
| Failed form | No conversion and no sensitive payload |
Keep this matrix with release QA. Analytics quality decays when nobody owns it; lightweight repeatable tests keep it trustworthy.
Release-Ready Verification
Treat analytics verification like production QA. For every important release, keep evidence for the script request, the pageview request, the conversion request, and the final dashboard row. Include at least one accepted-consent test, one rejected-consent test where relevant, one mobile test, and one conversion test reconciled against the backend.
Flowsery
Start Your 14-Day Free Trial
Real-time dashboard
Goal tracking
Cookie-free tracking
Do not mark analytics as working just because the dashboard moved. A correct setup loads once, respects consent, excludes obvious test traffic, sends no personal data in payloads, preserves UTMs through redirects, and records conversions only after the real business event happened.
Frequently Asked Questions
How do I know if my analytics script is actually loading?
Open developer tools, go to the Network tab, and filter for the analytics domain or script filename. Confirm it returns a 200 status, isn't blocked by CSP or an ad blocker during your baseline test, loads only once, and appears on every required template. If you use a tag manager, check both the page source and the tag manager preview mode.
Why does my dashboard show numbers but the tracking is still broken?
Analytics failures are often silent. A script can be missing from one template, blocked by CSP, duplicated by a tag manager, broken by consent settings, or sending events with the wrong domain, and the dashboard keeps showing numbers regardless. That is why decisions can be based on bad data until someone runs the checklist.
How do I test analytics on a single-page app?
Verify that route changes trigger pageviews, since many tracking bugs come from client-side navigation that changes the URL without re-running the pageview logic. Watch real-time reporting while navigating between pages in a private window to confirm each route change registers.
What causes duplicate analytics tracking?
Common causes are a hardcoded script alongside a tag manager script, the layout and page template both injecting analytics, an old GA property still active beside a new GA4 property, or a consent manager firing the same tag twice. Use network request counts and dashboard spikes to catch the duplication.
When should a conversion event fire?
After the actual business action succeeds, not merely on button click, when that action depends on validation or server confirmation. Trigger CTA clicks, form submits, signups, checkouts, newsletter subscriptions, and downloads manually, then verify the event names, properties, and timestamps.
What personal data should never appear in analytics payloads?
Emails, names, phone numbers, account IDs, tokens, full checkout URLs, and free-text inputs should never show up in a request payload. This matters most for healthcare, finance, education, and ecommerce sites, and it applies to failed forms and error pages too, since developers often log the full error context there.
How do I test UTM attribution?
Build a test URL such as ?utm_source=test&utm_medium=email&utm_campaign=qa, visit it, and confirm the campaign appears correctly in reporting. Also test a referral from another domain, and if attribution is missing, check redirects, canonical domains, consent timing, and parameter stripping.
Why doesn't my analytics data match my server logs?
Analytics will never match server logs exactly, but large gaps are still a useful signal. Compare total requests, pageviews, and top pages over a short period, since differences may come from bots, blockers, cached pages, or script errors.
What should I monitor after launch?
Set a recurring check covering a weekly traffic sanity check and alerts on sudden zero events and conversion drops beyond normal variance. Add a review after every deployment and a re-test after any consent manager or CSP change. Verification is not a one-time installation task.
How do I verify analytics without trusting the dashboard alone?
Use the browser Network tab, server access logs, and the analytics UI together. The Network tab proves a request was sent, the server log proves it reached your endpoint, and the dashboard proves it was accepted, processed, and attributed correctly, since a bug can happen at any layer.
Was This Article Helpful?
Let us know what you think!
See us more often in Google
One click marks Flowsery as a preferred source, so our articles sit higher in your Top Stories, AI Mode, and AI Overviews.
Before you go...
Flowsery
Revenue-first analytics for your website
Track every visitor, source, and conversion in real time. Simple, powerful, and cookie-free.
Real-time dashboard
Goal tracking
Cookie-free tracking
Related Articles


A Practical Guide to Web Analytics Terms
Custom dimensions attach business context to analytics events. What they are good for, what they quietly break, and the naming rules that keep schemas clean.


A Practical Guide to 404 Errors
A 404 error is a failed journey, not just a status code. Track them as events, rank broken URLs by lost traffic, then redirect only the ones that matter.


A Practical Guide to Website Traffic Loss Audit
Traffic dropped and nobody knows why. A website traffic loss audit separates tracking bugs from real audience loss, source by source, before you edit pages.

