GTM Consent Mode Is Blocking the Sealmetrics Tag
The single most common cause of "Sealmetrics is missing data" is a Google Tag Manager container where the Sealmetrics tag is gated behind consent — either by GTM Consent Mode settings on the tag or by a consent management platform (Cookiebot, OneTrust, Usercentrics, Didomi, etc.) that blocks Custom HTML tags until the visitor clicks "Accept".
Sealmetrics is cookieless and consentless by design: it sets no cookies and uses no persistent identifiers, so it does not require consent to run. Gating it behind a consent banner does not add any compliance benefit — it only removes from your reports every visitor who ignores or declines the banner, which is routinely 30–70% of traffic.
Symptoms
- Traffic in Sealmetrics dropped sharply the day a CMP or Consent Mode went live.
- Sealmetrics shows far fewer entrances than your server logs or ad platform clicks.
- Data only appears for visits where the tester clicked "Accept all" on the banner.
- In GTM Preview, the Sealmetrics tag shows as not fired or waiting for consent on page load.
Diagnosis
- Open your site in a private window (no prior consent choice stored).
- Open Developer Tools → Network and filter by
sealmetrics. - Load a page and do not interact with the consent banner.
- If no request to
t.jsappears until you click "Accept", the tag is consent-gated.
- If no request to
- Confirm in GTM Preview mode: select the pageview event and check the Sealmetrics tag's status. A tag held back by Consent Mode does not appear under Tags Fired on page load.
- Cross-check the dashboard: the Last hit timestamp on the Overview report updates within seconds of an unblocked hit. If it only moves after you grant consent, you have confirmed the cause.
Solution
1. Remove the consent gate from the Sealmetrics tag
In GTM:
- Open the Sealmetrics tag (Custom HTML or template tag).
- Go to Advanced Settings → Consent Settings.
- Select No additional consent required.
- Make sure the tag's trigger is
Initialization - All Pages(orAll Pages) — not a custom "consent granted" event pushed by your CMP. - If your CMP has its own "auto-blocking" feature that rewrites or blocks scripts by domain, add
t.sealmetrics.com(or your first-party tracker domain) to its allowlist of non-consent-required vendors. - Publish the container.
This is the configuration recommended in the Google Tag Manager integration guide: Sealmetrics is cookieless and consentless by design, so a CMP should not block it.
2. Use the canonical GTM pattern (stub + ?auto=0)
If other tags in your container call sealmetrics(...) and the load order is not guaranteed, use the canonical pattern documented in Advanced GTM Integration: an inline buffer stub plus the tracker loaded with ?auto=0, and a separate tag that fires the pageview manually.
<script>
!function(w){w.sealmetrics=w.sealmetrics||function(){(w.sealmetrics.q=w.sealmetrics.q||[]).push(['pv',arguments])};w.sealmetrics.q=w.sealmetrics.q||[];w.sealmetrics.conv=w.sealmetrics.conv||function(){w.sealmetrics.q.push(['cv',arguments])};w.sealmetrics.micro=w.sealmetrics.micro||function(){w.sealmetrics.q.push(['mc',arguments])}}(window);
</script>
<script src="https://t.sealmetrics.com/t.js?id=YOUR_ACCOUNT_ID&auto=0" defer></script>
The stub queues any call made before the library loads and the library drains the queue in order, so no event is lost and no duplicate pageview is sent. On a single-page application where you also fire SPA pageviews manually from GTM, add &spa=0 to the script URL as well, so the tracker's automatic pageview on route changes does not double-count your manual one — see Duplicate pageviews.
What NOT to do
- Do not fire the Sealmetrics tag on your CMP's "consent granted" event. That trigger structurally excludes everyone who declines or ignores the banner, and it fires late — after the pageview context you wanted to measure.
- Do not require
analytics_storageconsent for the tag. Sealmetrics does not use cookies or any storage, so that consent signal is irrelevant to it. - Do not delete the tag from GTM to "fix" a CMP conflict. Configure the exception instead — otherwise you keep the banner problem and lose all measurement.
Related
- Google Tag Manager integration — standard setup, including the recommended consent settings.
- Advanced GTM Integration — the stub +
?auto=0canonical pattern in full detail. - What is Consentless Analytics? — why Sealmetrics does not need a consent gate.
- Fixing
ReferenceError: sealmetrics is not defined— protecting directsealmetrics.*calls in GTM tags.