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 (cron setup) 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.
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. 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.