hello@datascale.de+49 89 921 35 623tracked cookie-free · /openDEEN

Search services, integrations and blog posts.

DatascaleResourcesChecksAnalytics tag

Check · C03 · Tracking core

Analytics tag check: is anything measuring at all

The check looks for twelve measurement tools in the executable part of the HTML, from GA4 to Plausible. No match is critical, unless a server-side endpoint takes over.

What we check

In the HTML: the scan reads only the executable parts of the page, script sources, inline scripts and pixel URLs, and looks for the signatures of twelve measurement tools: GA4 (gtag.js with a G-ID), Google Tag Manager (container ID), Plausible, Matomo, Piwik PRO, Fathom, Pirsch, Simple Analytics, Cloudflare Web Analytics, Mixpanel, PostHog and Adobe Analytics. A match means "ok" with the list. No match is critical: no measurement active.

Two exceptions soften the verdict. If the scan detects a first-party endpoint (server-side tagging finding), the critical becomes a note, because measurement then runs server-side. And starting the scan in the "server-side / custom" context gives the same downgrade.

What the scan cannot see: scripts the CMP serves as text until consent, custom loaders without the known hostnames, and anything that loads only after a click. Code in examples and documentation does not count; until September 2026 the scan took g-recaptcha for a GA4 property, since then the IDs are case-sensitive.

Why it matters

No tag, no data: no reporting, no conversion for Google Ads, no audience for remarketing. Sounds trivial, happens after almost every relaunch. The snippet lived in the old theme, the new theme has none, and because nobody opens the dashboard in the first week, it shows up with the monthly report. Four weeks of gap, gone for good. Which tools the scan detects also says something about the stack: Plausible or Fathom means cookieless, GA4 with GTM means consent duty, both together means something to clarify.

Common causes

  • The site deliberately tracks server-side or cookieless, then the finding is expected and not an error.
  • The tag sits behind the CMP blocking and only appears after consent, invisible to the static scan.
  • After a relaunch the tracking snippet simply did not move along.
  • An ad or tracking blocker at CDN level filters the known script hosts before delivery.

The fix

If measurement deliberately runs through Plausible, Matomo or a server-side container, ignore the finding and rerun the scan with the matching context. Otherwise install GA4, preferably through a tag manager, and put the snippet into the base template every page loads. One template, every page. Then check in the deep scan whether pings go out after "accept"; what a clean event schema needs for that is covered in the measurement blueprint.

Matching template

GA4 and Google Ads Consent Mapping

Documents which data flows from GA4 to Google Ads and which signal governs each flow.

Get the worksheet →

Check it yourself first

The Tracking Check tests this point along with all the others, in seconds.

Start the Tracking Check →
We track through a server-side container. Why does the check say "no tag"?

Because there is no client tag in the HTML, which is normal for pure server-side tracking. If the scan detects the first-party endpoint, it downgrades the line to a note and adds that measurement runs server-side. Starting the scan as "server-side / custom" gives you the downgrade anyway. Whether pings really go through the endpoint is shown by the tracking architecture finding in the deep scan.

Our tag only loads after consent. Does the scan see that?

The static scan does not, when the CMP serves the script as plain text until consent. The deep scan clicks "accept" and then sees the pings; the finding consent activates measurement confirms that measurement runs after opt-in. A "critical" from the static scan is refuted by that, the line still stays.

The scan finds a tag we no longer use. Where does it come from?

From the template. Old GA4 properties, a second container from the agency days or the Universal Analytics snippet from 2019 often still sit in the source and keep loading dutifully. The duplicate Google IDs finding lists which IDs run side by side.

The fix, delivered

Wired up in days, not sprints.

Findings from the Tracking Check go into a ranked sequence with effort estimates in the Audit Sprint, every module with an acceptance criterion.