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
You updated the consent banner copy or toggled a new Exclusion, and your GA4 sessions dropped the next morning.
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.
A Google Tag Manager tag that used to fire consistently is now showing zero events in the GA4 DebugView.
A tracking snippet you added under Custom Codes is not appearing in the page source of your public homepage.
Your site serves a technical or privacy-aware audience and you want to estimate how many sessions ad blockers are silently dropping.
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'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.
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.
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.
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.
— 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:
- Tracking Consent → Logs — Step 1, consent decline rate
- Tracking Consent → Settings — Step 2, GTM gating
- Custom Codes — Step 3, script placement
- 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 whose src or body matches a regex here is suppressed too. Scripts added via Custom Codes are caught here if their domain matches." } ], "actions": [ { "label": "Save Config", "primary": true, "msg": "Writes settings — banner updates on next public page load" } ], "sidebarTips": [ { "heading": "Default-on for compliance", "body": "All four toggles are ON by default on a fresh install. Only untick one if you have legal sign-off that the script does not need consent." }, { "heading": "GTM gates everything inside it", "body": "If GTM is ticked, GA4, Pixel, remarketing tags, and conversion scripts all stop. One toggle, many consequences." }, { "heading": "Hard-refresh after changes", "body": "After saving, verify in a fresh incognito window — not your normal browser, which already has a consent decision stored." } ], "height": 600, "maxWidth": 920 }}}
What to do if the wrong toggle is ticked: decide whether gating that script is required by your compliance posture. If you added GTM recently and want it to load without consent (not recommended for EU/UK audiences), untick the Gate Google Tag Manager toggle and save. If you must gate it, the drop in your analytics is expected and correct — your options are to improve your consent accept rate (Step 1) or switch to server-side tagging outside SGEN.
3. Check the placement of your Custom Code scripts
Open Custom Codes from the left sidebar. Find the entry for your GTM snippet or GA4 tag. Check its Placement — the options are , — Start, or — End.
The placement relative to the consent check matters:
- Scripts placed in
load before the visible page renders. SGEN's consent gate fires early inand suppresses gated scripts before the browser encounters them. This is the correct placement for GTM when consent gating is in use. - Scripts placed at
— Endload last. SGEN's consent gate is still applied, but some older GTM container configurations rely ondocument.writeand may behave differently at body-end. If your GTM snippet was working at body-end before the consent banner was added, and is now silent, move it to. - Scripts placed at 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 regressionYou updated the consent banner copy or toggled a new Exclusion, and your GA4 sessions dropped the next morning.
New consent banner launchYou 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 firingA Google Tag Manager tag that used to fire consistently is now showing zero events in the GA4 DebugView.
Custom Codes script is not loadingA tracking snippet you added under Custom Codes is not appearing in the page source of your public homepage.
You suspect ad blockersYour 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 rateYour 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 dataSGEN'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 dataThis 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 brokenIf 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 runningIf 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:
- Tracking Consent → Logs — Step 1, consent decline rate
- Tracking Consent → Settings — Step 2, GTM gating
- Custom Codes — Step 3, script placement
- 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 whose src or body matches a regex here is suppressed too. Scripts added via Custom Codes are caught here if their domain matches." } ], "actions": [ { "label": "Save Config", "primary": true, "msg": "Writes settings — banner updates on next public page load" } ], "sidebarTips": [ { "heading": "Default-on for compliance", "body": "All four toggles are ON by default on a fresh install. Only untick one if you have legal sign-off that the script does not need consent." }, { "heading": "GTM gates everything inside it", "body": "If GTM is ticked, GA4, Pixel, remarketing tags, and conversion scripts all stop. One toggle, many consequences." }, { "heading": "Hard-refresh after changes", "body": "After saving, verify in a fresh incognito window — not your normal browser, which already has a consent decision stored." } ], "height": 600, "maxWidth": 920 }}}
What to do if the wrong toggle is ticked: decide whether gating that script is required by your compliance posture. If you added GTM recently and want it to load without consent (not recommended for EU/UK audiences), untick the Gate Google Tag Manager toggle and save. If you must gate it, the drop in your analytics is expected and correct — your options are to improve your consent accept rate (Step 1) or switch to server-side tagging outside SGEN.
3. Check the placement of your Custom Code scripts
Open Custom Codes from the left sidebar. Find the entry for your GTM snippet or GA4 tag. Check its Placement — the options are
,— Start, orEnd" }, { "html": "Active" }, { "html": "Apr 21, 2026 09:41" } ] }, { "cells": [ { "html": "Facebook Pixel" }, { "html": "" }, { "html": "Active" }, { "html": "Apr 20, 2026 16:55" } ] }, { "cells": [ { "html": "Old Intercom widget (deprecated)" }, { "html": "End" }, { "html": "Inactive" }, { "html": "Mar 14, 2026 11:22" } ] } ], "height": 380, "maxWidth": 960 }}}What to do if placement is wrong: click the code name to open the edit panel, change the Placement dropdown, and save. Navigate to your public homepage in a fresh incognito window and view the page source — your GTM snippet should appear in
before the closingtag. After clicking Accept on the banner and reloading, it should fire normally.What to do if a script appears in the source before the consent check has run: this usually means the script is not flagged as a gated Custom Code and the Tracking Consent regex for that domain is missing. Add the script's domain to the Other scripts regex field in Tracking Consent → Settings.
4. Estimate your ad-blocker gap
Approximately 30% of web users run a browser extension or DNS-level filter that silently blocks requests to known analytics domains —
googletagmanager.com,google-analytics.com,static.hotjar.com, and similar. These visitors never show up in your GA4 sessions regardless of whether they accept or decline the consent banner, because the tracking script is blocked at the network level before it can fire.You cannot fix this at the SGEN level. However, you can measure the gap by comparing SGEN's native Event Logs count (server-side, not affected by ad blockers) to your GA4 session count for the same period.
Open Analytics → Reports in your SGEN admin. Set the event type to Page View and the date range to the last 7 days. Note the Total Events tile. Then open GA4 (or your third-party analytics tool) and look at the sessions count for the same 7-day window.
The gap between the two numbers — native page views minus GA4 sessions — is the combined effect of consent declines and ad blockers. If your consent Logs show a 15% decline rate, and the native-to-GA4 gap is 45%, ad blockers account for roughly the remaining 30 percentage points.
{{embed:code-output-panel { "language": "text", "filename": "ad-blocker-gap-estimate.txt", "caption": "A back-of-envelope calculation for your business. Native page views come from SGEN Analytics Reports (server-side, not blocked). GA4 sessions come from the GA4 dashboard for the same date window. The difference is the combined effect of consent declines and ad blockers.", "code": "Period: Apr 28 – May 5, 2026\n\nSGEN native page views (Analytics Reports): 1,240\nGA4 sessions (same 7-day window): 496\n\nRaw gap: 744 views missing from GA4 (60%)\n\nBreakdown estimate:\n Consent decline rate (Consent Logs): 22% → ~273 sessions lost to consent\n Remaining gap: 38% → ~471 sessions — likely ad blockers\n\nConclusion: ~30% of your business's audience is running an ad blocker.\nConsent declines + ad blockers together explain the 60% drop.", "height": 280, "maxWidth": 820 }}}
Ad-blocker impact is a reality for most sites — especially blogs, developer tools, and privacy-aware communities. The mitigation options are outside SGEN's scope: server-side tagging (sending events from your own server to GA4 rather than from the visitor's browser) or switching to a server-side analytics tool that is not blocked. SGEN's native tracker is server-side and is not affected.
What success looks like
Success looks likeYou have found and fixed the cause of the analytics drop when: {{embed:settings-save-success { "fieldGroup": "Tracking Consent settings", "message": "Consent configuration updated. Verify in an incognito window: banner appears, scripts suppress before Accept, scripts load after Accept.", "timestamp": "Apr 22, 2026 14:03", "savedFields": ["enabled", "exclude.gtm", "exclude.clarity", "exclude.others_regex", "excluded_pages"], "height": 180, "maxWidth": 760 }}}
- Consent Logs show a decline rate under 25% and it has returned to the level you saw before the drop. If you changed the consent banner and accept rates came back, the banner was the cause.
- GTM fires on every page for visitors who have accepted. Open your site in a fresh incognito window, accept the banner, then open the GTM Preview/Debug console — you should see the container fire on page load.
- The Custom Codes list shows your tracking snippet as Active and the Placement is
(for consent-gated GTM). Viewing the page source after accepting the banner shows the GTM snippet in. - The native-to-GA4 ratio is stable week over week. If SGEN native page views and GA4 sessions both moved in the same direction by the same proportion, real traffic is what changed — not your tracking setup.
What to do if it does not work
Consent Logs show zero rowsThe banner has not been live long enough to record decisions, or it is being shown on pages that are Excluded from the banner. Confirm Enable Consent is on and that your homepage is not in the Excluded Pages list.
Examples
Example 1: Consent banner rewrite caused a 60% analytics drop.
your business updated their consent banner on Apr 28 — new copy, new position (moved from Bottom to Center), and the "I agree" checkbox turned on. The next morning, GA4 sessions were down 60% versus the same day the prior week.
Opening Tracking Consent → Logs showed the problem: the accepted/declined split flipped from 75%/25% to 44%/56%. The modal position and the mandatory checkbox were creating too much friction.
The fix: move Position back to Bottom, remove the "I agree" checkbox requirement, and rewrite the Decline button from "Refuse" to "Continue without analytics." After saving and waiting 48 hours, the accept rate returned to 72% and GA4 sessions recovered to within 10% of the pre-change baseline.
{{embed:status-badge-grid { "title": "Consent decision — before vs. after banner fix (your business)", "tabs": [ { "label": "Accepted (before)", "count": 147, "tone": "trash", "active": true }, { "label": "Declined (before)", "count": 138, "tone": "trash" }, { "label": "Accepted (after)", "count": 224, "tone": "pub" }, { "label": "Declined (after)", "count": 86, "tone": "draft" } ], "maxWidth": 760 }}}
Example 2: GTM container suppressed by a newly-ticked Exclusion.
your business added a new tracking tag to their GTM container — a conversion pixel for a paid campaign. While adding it, the site owner also opened Tracking Consent → Settings to add a regex for the pixel domain. They accidentally ticked the Gate Google Tag Manager toggle (which had been off previously) and saved without noticing.
The result: every visitor to the site, whether they accepted or declined the banner, stopped receiving the GTM container — because now the entire container was gated, and no visitor had yet encountered the new banner flow.
The fix required two steps:
- Open Tracking Consent → Settings, scroll to Exclusions, and confirm the Gate Google Tag Manager toggle reflects the intended posture — on if consent is required for GTM, off if GTM should load regardless of consent.
- Rewrite the Other scripts regex for the pixel domain so only that specific pixel is gated, rather than gating the entire GTM container.
After correcting the toggle and saving, GTM fired correctly for all visitors, and the pixel alone was gated until consent.
Example 3: Custom Code placed at body-end fires after the consent check window.
your business' marketing team added a Facebook Pixel snippet to Custom Codes with Placement set to
— End. The consent banner was configured to gate Facebook Pixel via the Other scripts regex/connect\.facebook\.net/i.On testing, the site owner noticed the Pixel was occasionally firing before the visitor accepted the banner — the consent check had completed and injected the banner, but the Pixel at body-end was loading slightly after the gate check on slow connections. Moving the Pixel's Custom Code Placement from
— Endtofixed the race: the consent gate innow ran before the Pixel script was encountered by the browser, and the suppression was reliable on every test.The corrected Custom Code edit panel, after changing Placement:
{{embed:admin-edit-form { "title": "Custom Codes — Edit: Facebook Pixel", "subtitle": "Fixing placement from body-end to head for reliable consent gating", "breadcrumb": "Dashboard / Custom Codes / Edit", "fields": [ { "label": "Name", "type": "text", "value": "Facebook Pixel", "hint": "Internal label — not shown on the public site." }, { "label": "Placement", "type": "select", "options": [ { "label": "
", "value": "head", "selected": true }, { "label": "Guides → Why is my analytics data missing? — SGEN debugging guideFix 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 regressionYou updated the consent banner copy or toggled a new Exclusion, and your GA4 sessions dropped the next morning.
New consent banner launchYou 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 firingA Google Tag Manager tag that used to fire consistently is now showing zero events in the GA4 DebugView.
Custom Codes script is not loadingA tracking snippet you added under Custom Codes is not appearing in the page source of your public homepage.
You suspect ad blockersYour 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 rateYour 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 dataSGEN'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 dataThis 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 brokenIf 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 runningIf 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:
- Tracking Consent → Logs — Step 1, consent decline rate
- Tracking Consent → Settings — Step 2, GTM gating
- Custom Codes — Step 3, script placement
- 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 whose src or body matches a regex here is suppressed too. Scripts added via Custom Codes are caught here if their domain matches." } ], "actions": [ { "label": "Save Config", "primary": true, "msg": "Writes settings — banner updates on next public page load" } ], "sidebarTips": [ { "heading": "Default-on for compliance", "body": "All four toggles are ON by default on a fresh install. Only untick one if you have legal sign-off that the script does not need consent." }, { "heading": "GTM gates everything inside it", "body": "If GTM is ticked, GA4, Pixel, remarketing tags, and conversion scripts all stop. One toggle, many consequences." }, { "heading": "Hard-refresh after changes", "body": "After saving, verify in a fresh incognito window — not your normal browser, which already has a consent decision stored." } ], "height": 600, "maxWidth": 920 }}}
What to do if the wrong toggle is ticked: decide whether gating that script is required by your compliance posture. If you added GTM recently and want it to load without consent (not recommended for EU/UK audiences), untick the Gate Google Tag Manager toggle and save. If you must gate it, the drop in your analytics is expected and correct — your options are to improve your consent accept rate (Step 1) or switch to server-side tagging outside SGEN.
3. Check the placement of your Custom Code scripts
Open Custom Codes from the left sidebar. Find the entry for your GTM snippet or GA4 tag. Check its Placement — the options are
,— Start, or— End", "value": "body_end" } ], "hint": "Changed from body-end to head. Scripts gated by Tracking Consent should be in for reliable suppression." }, { "label": "Code", "type": "code-area", "value": "\n\n(function(){function run(){if(window.lucide&&typeof window.lucide.createIcons==='function')window.lucide.createIcons()}if(document.readyState!=='loading')run();else document.addEventListener('DOMContentLoaded',run);setTimeout(run,100)})();if(typeof WOW!=='undefined'){new WOW().init()}window.sgenAccessibility={alignment:"right"};window.sgcom=window.sgcom||{};window.sgcom.config={cart:{mode:'drawer',button:{mode:'redirect',show_count:true,inline_count:false},urls:{cart:'https://docs.sgen.com/cart/',checkout:'https://docs.sgen.com/checkout/',state:'https://docs.sgen.com/do_shopping/cart_state',add:'https://docs.sgen.com/add_to_cart',remove:'https://docs.sgen.com/remove_from_cart'}}};window.sgcom.cart=window.sgcom.cart||{};window.sgcom.checkout=window.sgcom.checkout||{};window.sgcom.ui=window.sgcom.ui||{};window.sgcom=window.sgcom||{};window.sgcom.config={cart:{mode:'drawer',button:{mode:'redirect',show_count:true,inline_count:false},urls:{cart:'https://docs.sgen.com/cart/',checkout:'https://docs.sgen.com/checkout/',state:'https://docs.sgen.com/do_shopping/cart_state',add:'https://docs.sgen.com/add_to_cart',remove:'https://docs.sgen.com/remove_from_cart'}}};window.sgcom.cart=window.sgcom.cart||{};window.sgcom.checkout=window.sgcom.checkout||{};window.sgcom.ui=window.sgcom.ui||{};
