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

StateMeaningWhen
OKEvent fired recently and consistentlyLast verified within < 14 days
WARNEvent hasn't fired lately — could be normal (seasonal) or could be broken14-29 days since last fire
BROKENEvent hasn't fired in a long time — almost certainly something is wrong30+ 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:

  1. Hooks into window.dataLayer.push()
  2. On every push that matches one of your tracked events, sends a small beacon to TagEasy's /api/verify/ingest endpoint
  3. 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

  1. Dashboard → your website → Health tab
  2. Click Get verification script
  3. Copy the snippet — it includes your signed 48-hour token
  4. 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

  1. Click the event in the Health tab
  2. Inspect:
    • Last-fire timestamp + count over the past 30 days
    • Selector + dataLayer event name
    • GTM tag fire history (from container)
  3. 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.