delivery_drop firedYour Meta access token expires at 03:14 on a Sunday. Events keep firing from the consumer worker; CAPI returns 200 OK with a benign warning header that nobody parses. By Monday afternoon, ROAS reporting in Ads Manager looks fine — but bid optimisation has been training on a 38% delivery rate for 30 hours. No tool in your stack alerted on that.
The checkout team ships a feature that quietly drops phone from purchase events. Your platform-level event count is unchanged, your delivery rate is unchanged — but the share of high-EMQ events fell from 71% to 44% an hour after deploy. Static thresholds miss it. Z-score against your 30-day baseline catches it in the first 4-hour window.
You eventually wire up something with curl + cron + Slack. It works for a week, then someone forgets to add an idempotency key. Now every 5 minutes the same delivery_drop alert fires, the channel becomes noise, on-call mutes it, and three weeks later a real incident slips through. Idempotent windowing exists precisely so this doesn't happen.
delivery_dropDelivery rate falls below threshold over a rolling window.
event_anomalyEvent volume z-score deviates from the merchant×event baseline.
platform_downConsecutive failed deliveries to one platform exceed a count.
quota_warningPlan event quota percent_used crosses a threshold.
custom_metricAny field on event_metrics_5m crosses a user-defined expression.
emailPlain-text + HTML, sent to the merchant alert_email_addresses array. Default for every rule. Includes the rule slug, severity, fired_at timestamp, the metric snapshot, and a deep link to /alerts/{event_id}.
slackStandard Slack incoming webhook. Severity-coloured attachment, rule slug as title, baseline vs. current as fields, jump link to TrackLayer dashboard. One config field, paste-the-URL setup. Available Starter onwards.
webhookJSON body posted to merchant.alert_webhook_url with X-TrackLayer-Signature: sha256=… computed over the body. Retries 3× with exponential backoff. Custom integrations with PagerDuty, Opsgenie, Linear, internal Slack bots — Pro tier only.
Each rule has a window field (default 60 min). Once an alert fires, the same rule_id × severity will not re-fire until the window elapses. Enforced via UPSERT on alert_events.dedupe_key — even a 5-minute cron storm will produce one alert, not twelve.
Every new merchant is seeded with three rules at signup: delivery_drop @ 90% / 1h, platform_down @ 25 failures, quota_warning @ 85%. Email-only channel, edit or disable them in /alerts-rules. Catches 80% of the incidents people actually see in the wild.
SITUATION · Managing Meta CAPI for 14 e-comm clients. Token refresh was on a humans-remember basis. Q1 2026: one client's token expired Friday night, agency caught it Monday lunch — three CAPI-blind days, ~£11K mis-spent budget.
RESULT · Switched on platform_down @ 25 consecutive failures, Slack channel #ads-pager. Next token expiration triggered an alert in 11 minutes. Resolved before the daily Meta optimiser run. Now standard onboarding for every new client.
SITUATION · Started a Meta lead-gen campaign mid-month and didn't watch the quota meter. Hit 100% on the 22nd, events queued and dropped, attribution gap took 4 days to backfill from raw logs.
RESULT · Enabled quota_warning @ 85% with email + webhook to internal Linear. The next month, alert fired at day 17 with 3 days of headroom — upgraded plan in-app, zero queued events lost. Cost of the alert: 40 minutes of dev time.
SITUATION · iOS 17.4 cleared fbp on a major Safari version push. Within 2 hours, share of events with click_id_present dropped 18 points. Static thresholds wouldn't have caught it — looked normal in absolute terms.
RESULT · event_anomaly z-score on click_id_present_rate fired at z = -3.4 inside the same hour. Engineering caught the regression before the optimiser absorbed it; deployed a server-side fbp generator within the day. Estimated saved CPA: 14% on Meta.
We use essential cookies to keep the site secure and functional. Analytics and third-party tags run only with your consent. See our Cookie Policy.
We use essential cookies to keep the site secure and functional. Analytics and third-party tags run only with your consent. See our Cookie Policy.