Health monitoring
Once events are published to GTM, TagEasy keeps watching to make sure they actually fire. The Health tab in your dashboard rolls everything up into a single status per event.
The three states
| State | Meaning | When |
|---|---|---|
| OK | Event fired recently and consistently | Last verified within < 14 days |
| WARN | Event hasn't fired lately — could be normal (seasonal) or could be broken | 14-29 days since last fire |
| BROKEN | Event hasn't fired in a long time — almost certainly something is wrong | 30+ days since last fire |
Thresholds are configurable per environment via HEALTH_WARN_DAYS and HEALTH_BROKEN_DAYS.
How TagEasy knows an event fired
TagEasy ships a tiny verification script that you can paste into your site (independent of GTM). The script:
- Hooks into
window.dataLayer.push() - On every push that matches one of your tracked events, sends a small beacon to TagEasy's
/api/verify/ingestendpoint - TagEasy records the timestamp + event name as evidence the dataLayer push happened
The script is gated by an HMAC-signed token tied to your website. It sends only event metadata (event name, timestamp) — no PII, no payload contents, no URL parameters.
Installing the verification script
- Dashboard → your website → Health tab
- Click Get verification script
- Copy the snippet — it includes your signed 48-hour token
- Paste it in the same place you put the GTM snippet (head of every page)
Tokens are valid 48 hours. After that, request a fresh one — older tokens become unsigned beacons and are rejected silently. You can request a new token any time without affecting installed scripts that haven't expired.
Drift detection
A nightly cron job scans every published event in your account:
- If last-fire <
HEALTH_WARN_DAYS→ marks OK - If last-fire between WARN and BROKEN → marks WARN
- If last-fire >
HEALTH_BROKEN_DAYS→ marks BROKEN
Weekly summary emails
Once a week, TagEasy emails owners + admins on each org a Health Summary:
- How many events are OK / WARN / BROKEN
- The top 5 events that recently regressed
- Direct links to the Health dashboard for each one
Configure your email by setting RESEND_API_KEY on the server. Without it, the summary still runs but logs to console only.
Live feed
The website's Live Feed tab shows every dataLayer event the verification script captures, in near real time — the event name, the full payload, the page URL, and which VisualEvent it matched. It's the fastest way to confirm a tag fires correctly while you're testing. (Starter plan and up.)
Anomaly alerts
Drift detection catches an event that stopped. Anomaly detection catches one that's degraded — still firing, but volume has crashed or spiked. A nightly scan compares each event to its 14-day baseline and emails owners + admins when it finds a drop, spike, or silent event.
Toggle it per-website on the Live Feed tab. (Pro plan and up.)
GA4 reconciliation
The verification beacon proves a tag fired in the browser. GA4 reconciliation goes further — it reads GA4's own data and cross-checks the events you configured against what GA4 actually received: which are landing, which received zero hits, and which events GA4 sees that you never set up (rogue or duplicate tracking). It's the authoritative answer to "is my data in Google Analytics?" (Pro plan and up.)
Revenue reconciliation
For e-commerce, the deepest question is whether GA4 matches your real sales. Connect your Shopify, WooCommerce, Stripe, or BigCommerce account and TagEasy puts GA4's purchase count + revenue side-by-side with the actual orders from your store — surfacing exactly how much GA4 is under-reporting. (Business plan and up.)
Container hygiene score
For GTM containers connected via the Tag Manager API, TagEasy audits the live container and grades it 0–100. It flags the structural problems that quietly distort your data or pile up as clutter:
- Duplicate configuration tags — two Google/GA4 config tags pointing at the same destination ID, which double-counts every page view
- Tags with no firing trigger — they never run
- Custom HTML tags — an XSS vector that also bypasses GTM's built-in consent gating
- Clutter — paused tags, unused triggers, and unused variables
Find it on the website's Events & Tags tab. (Starter plan and up.)
Consent Mode v2 audit
Google requires Consent Mode v2 for EEA traffic. TagEasy audits your live container for two gaps it can detect reliably:
- Custom tags that fire ungated — Custom HTML / Image tags don't respect Consent Mode automatically; without "Additional consent checks" they fire regardless of the visitor's choice
- Ad tags still on v1 signals — gated on
ad_storagebut missing thead_user_dataandad_personalizationsignals v2 now requires - Tags gated on no valid signal — set to require consent but listing no recognised Consent Mode signal, so they effectively gate on nothing
The audit sits next to the hygiene score on the Events & Tags tab. (Starter plan and up.)
PII-leak scan
Sending personal data — emails, phone numbers, payment-card numbers — to GA4 or ad pixels violates Google's and Meta's terms and can get your property suspended. TagEasy scans the dataLayer events it has captured (the live observer buffer plus your verified events) and flags anything that looks like a leak: email addresses, phone numbers, Luhn-valid card numbers, and PII-typed field names like first_name or customer_email.
Samples are always redacted in the report. The scan is point-in-time — it covers the events captured so far — and sits next to the Consent Mode audit on the Events & Tags tab. (Starter plan and up.)
Investigating a WARN / BROKEN event
- Click the event in the Health tab
- Inspect:
- Last-fire timestamp + count over the past 30 days
- Selector + dataLayer event name
- GTM tag fire history (from container)
- Click Debug with AI — runs the AI co-pilot against the event and returns a likely cause + concrete fix
Common causes of broken events
- Selector changed. A redesign or A/B test renamed the element. Pull up the page → re-grab the selector → update the VisualEvent → publish.
- Page moved or deleted. The product / landing page no longer exists. Either repoint the selector or archive the event.
- GTM container detached. Site got a redesign and the GTM snippet got removed. Reinstall per your platform guide.
- Cookie banner blocks GTM. A new consent banner gates GTM until consent is granted, and most users dismiss without accepting. Run the Consent Mode v2 audit to check your consent setup.
- Verify script removed. If TagEasy is firing but the beacon is gone, we'll think the event is broken when it's not. Reinstall the verify script.
Health API access
For agencies pulling health into their own dashboards, see the Agency features doc — the /api/agency/bulk-health-scan endpoint returns rolled-up health across all client orgs.