Guides → Why is my analytics data missing? — SGEN debugging guide

Fix analytics missing data on your SGEN site

How to fix missing analytics data on your SGEN site

Your Analytics Reports showed steady traffic last week. Then you deployed a change — a consent banner update, a Custom Codes edit, a new GTM tag — and now pageviews are down 60%. The data might not have gone anywhere. Four things explain the vast majority of analytics drops on SGEN sites: a rise in consent declines, a change in GTM script gating order, a custom code placed in the wrong position relative to the consent check, or the roughly 30% of users whose browsers block third-party tracking scripts outright.

This guide walks your business through each of those four causes in order, from the most likely to the least, and tells you what to look at in your SGEN admin at each step.

What is this for?

This is a decision-tree workflow for diagnosing a sudden drop in analytics data — specifically data coming from third-party tools (Google Tag Manager, GA4, Clarity, Facebook Pixel) rather than SGEN's built-in native tracker. Use it when the drop is recent, correlates with a change you made, or appeared without a change you can identify.

It is a diagnostic guide, not a setup guide. If you have not yet set up analytics on your site, start with the pile docs: Event Logs, Traffic Reports, Configure Cookie Consent, and Custom Codes.

The symptom this guide addresses: a drop of 30% or more in pageviews or sessions in your third-party analytics tool (GA4, Clarity, etc.) that appeared after a deploy, a settings change, or a Custom Codes edit — and is not explained by a real drop in site traffic.

Good use cases

Post-deploy analytics regression

You updated the consent banner copy or toggled a new Exclusion, and your GA4 sessions dropped the next morning.

New consent banner launch

You launched a GDPR-compliant banner for the first time and now want to understand why your session counts dropped 40% versus the same period last month.

GTM tag stopped firing

A Google Tag Manager tag that used to fire consistently is now showing zero events in the GA4 DebugView.

Custom Codes script is not loading

A tracking snippet you added under Custom Codes is not appearing in the page source of your public homepage.

You suspect ad blockers

Your site serves a technical or privacy-aware audience and you want to estimate how many sessions ad blockers are silently dropping.

Consent log shows high decline rate

Your Tracking Consent → Logs screen shows more visitors choosing Decline than you expected, and you want to understand the impact on your analytics numbers.

What NOT to use this for

SGEN native Analytics is missing data

SGEN's built-in Event Logs and Traffic Reports run server-side and are not affected by consent banners, ad blockers, or GTM at all. If your native SGEN counts dropped, that is a different problem — check whether a real traffic drop explains it, and look at the Traffic Reports date range.

You have never had analytics data

This guide assumes you had working analytics that has now dropped. If you are setting up from scratch, follow the setup docs first: Custom Codes to add the tracking snippet, then Configure Cookie Consent to gate it correctly.

Your GA4 property itself is broken

If the problem is on the Google Analytics side (property permissions, data stream configuration, filter rules), this guide will not help. Log in to GA4 directly, go to Admin → Data Streams, and confirm your stream is active and receiving hits.

You want to stop analytics from running

If you intentionally want to suppress analytics for compliance or testing, toggle the relevant Exclusion under Tracking Consent → Settings or deactivate the Custom Code — do not try to "fix" a correctly-working consent gate.

How this connects to other features

— SGEN's server-side tracker. Not affected by consent or ad blockers. Use it as a ground truth: if Event Logs shows normal traffic but GA4 does not, the gap is explained by one of the four causes in this guide.

— the charted summary of native event data. Useful for confirming that real visitor traffic is arriving, independent of whether third-party tools see it.

— the settings panel where you enable the consent banner, write disclosure copy, and gate which tracking scripts require consent. Steps 1 and 2 of this guide both point here.

— where GTM, GA4, and other tracking snippets live on your SGEN site. Custom code placement (head vs. body, before vs. after the consent check) is Step 3 of this guide.

Google Tag Manager

— configured outside SGEN. The Gate Google Tag Manager toggle under Tracking Consent gates the entire GTM container, including every tag inside it. When GTM is gated, GA4, Pixel, and any other GTM-loaded tag all stop firing until consent is given.

Before you start

  • You are signed in to SGEN as an Administrator.
  • You know roughly when the drop started and whether it correlates with a change you made (new banner, updated consent settings, new Custom Code, GTM tag edit).
  • You have access to your third-party analytics tool (GA4, Clarity, etc.) in a separate browser tab.
  • You have an incognito or private browser window ready — the consent banner does not reappear in a browser that has already recorded a decision, so all verification steps must be done in a fresh incognito window.
  • You know whether your site has a consent banner live (Tracking Consent → Settings with Enable Consent toggled on). If you are unsure, navigate there first.

Where to go

The four diagnostic steps each live in a different part of your SGEN admin:

  1. Tracking Consent → Logs — Step 1, consent decline rate
  2. Tracking Consent → Settings — Step 2, GTM gating
  3. Custom Codes — Step 3, script placement
  4. Analytics → Reports (compare native vs. third-party) — Step 4, ad-blocker estimate

Navigate to Tracking Consent from the left sidebar. Custom Codes is also in the left sidebar. Analytics is in the left sidebar under the same group.

Steps — Diagnose the drop

1. Check your consent decline rate in Tracking Consent → Logs

Open Tracking Consent → Logs. This screen shows one row per visitor decision — accepted, declined, or no decision. Sort by the most recent decisions and look at the distribution.

If your decline rate has risen above 20–30%, that alone explains a significant analytics gap. Visitors who click Decline have their tracking scripts suppressed for all future page views in that browser. A banner redesign, a copy change, a new checkbox requirement, or a position switch can all push the decline rate up sharply.

The consent log for your business after a banner update looks like this — accepted sessions (green) down, declined sessions (red) up compared to the week before:

{{embed:admin-list-view { "title": "Tracking Consent — Logs", "subtitle": "Last 7 days — your business (post-banner-update)", "addButtonLabel": null, "searchPlaceholder": "Search by session key or URL…", "filterTabs": [ { "label": "All", "count": 312, "active": true }, { "label": "Accepted", "count": 147 }, { "label": "Declined", "count": 138 }, { "label": "No decision", "count": 27 } ], "columns": ["Session Key", "Landing Page", "Decision", "Date"], "rows": [ { "cells": [ { "html": "sess_m04fxrqly29ze1n553w" }, { "html": "/" }, { "html": "declined" }, { "html": "2 hours ago" } ] }, { "cells": [ { "html": "sess_h02ecnylyajmo9h747l" }, { "html": "/products/canvas-tote-bag" }, { "html": "accepted" }, { "html": "3 hours ago" } ] }, { "cells": [ { "html": "sess_k94mtvhqz01ep2n883x" }, { "html": "/blog/brewing-guide-2026" }, { "html": "declined" }, { "html": "yesterday" } ] }, { "cells": [ { "html": "sess_p37wjfbla56td0q921m" }, { "html": "/our-story" }, { "html": "declined" }, { "html": "yesterday" } ] }, { "cells": [ { "html": "sess_r89ncwmkx37ua0q214p" }, { "html": "/contact" }, { "html": "accepted" }, { "html": "3 days ago" } ] } ], "showCheckboxes": false, "height": 420, "maxWidth": 960 }}}

A split of 147 accepted / 138 declined on 312 sessions is a 44% decline rate — roughly double the pre-update rate of ~22%. That gap alone accounts for most of a 60% analytics drop, because declined visitors generate zero GA4 sessions.

What to do if decline rate has risen: open Tracking Consent → Settings and review what changed since the drop. Common culprits: the "I agree" checkbox was turned on (raising friction), the banner position was moved to Center (modal, more intrusive), or the button labels were changed to something that feels more like "refuse" than "continue." Revert one change at a time and watch the Logs distribution shift.

The healthy decision distribution for a site with a well-worded bottom-position banner looks like this — accepted sessions carrying the majority, declines in a meaningful but not dominant minority:

{{embed:status-badge-grid { "title": "Consent decision distribution — healthy baseline (last 30 days)", "tabs": [ { "label": "Accepted", "count": 1842, "tone": "pub", "active": true }, { "label": "Declined", "count": 214, "tone": "trash" }, { "label": "No decision", "count": 47, "tone": "pending" }, { "label": "Excluded pages", "count": 612, "tone": "inactive" } ], "maxWidth": 760 }}}

2. Check which tracking scripts the consent banner is gating

Open Tracking Consent → Settings and look at the four Exclusion toggles: Gate Google Tag Manager, Gate Microsoft Clarity, Gate Session Attributer, Gate Draft Form Entries. All four default to on (gated) on a fresh install.

If GTM is gated (the toggle is ticked), then GA4, Facebook Pixel, and every other tag loaded through your GTM container are all suppressed until the visitor accepts. That is correct behavior — but if you recently ticked this toggle without realizing it, that is the change that caused the drop.

The gating order matters. SGEN runs the consent check before any Custom Code in renders. If GTM is ticked under Exclusions and a visitor declines, the GTM container never loads — no tags fire, no GA4 sessions record, no Pixel events trigger.

{{embed:admin-edit-form { "title": "Tracking Consent — Settings (Exclusions section)", "subtitle": "These four toggles gate the named scripts until the visitor accepts the consent banner", "breadcrumb": "Dashboard / Tracking Consent / Settings", "fields": [ { "label": "Gate Google Tag Manager", "type": "checkbox", "value": "GTM container is suppressed until Accept", "hint": "Also gates every tag inside GTM — GA4, Pixel, remarketing, conversion tags. This is the most common cause of an analytics data drop after enabling the banner." }, { "label": "Gate Microsoft Clarity", "type": "checkbox", "value": "Clarity session recording is suppressed until Accept", "hint": "Clarity heatmaps and session recordings stop for visitors who have not consented." }, { "label": "Gate Session Attributer", "type": "checkbox", "value": "SGEN's own campaign-attribution tracker is suppressed until Accept", "hint": "Campaign source, medium, and referrer attribution will not be recorded for non-consenting visitors." }, { "label": "Gate Draft Form Entries", "type": "checkbox", "value": "Partial form auto-save is suppressed until Accept", "hint": "Visitors who have not consented will not have half-finished form entries saved across page loads." }, { "label": "Other scripts (one regex per line)", "type": "textarea", "rows": 3, "value": "/hotjar\\.com/i\n/connect\\.facebook\\.net/i\n/cdn\\.amplitude\\.com/i", "hint": "Any