Skip to main content
TRACKLAYER · REAL-TIME ALERTS

Know your pipeline broke
before your CMO does.

Five anomaly classes — delivery drop, event z-score outlier, platform down, quota warning, and custom metric — evaluated every 5 minutes against your own 30-day baseline. Email, Slack, and webhook. Idempotent within the rule window so the on-call channel stays signal, not noise.
14-day trial · no card · starter tier $79/mo
// WHAT YOU GET
  • 5 rule types
    delivery_drop · event_anomaly · platform_down · quota_warning · custom_metric
  • 3 channels
    email (Resend) · Slack (webhook URL) · webhook (HMAC-signed POST)
  • Idempotent
    Same rule × severity won't re-fire inside its window — your on-call stays signal
  • Pre-seeded
    3 default rules at signup so you're protected on day one without configuring anything
// slack://#ads-pager · 14:08:22 UTC
🔴TrackLayer· northfield.coCRITICAL
delivery_drop fired
meta_capi delivery 87.4% over 1h
24h baseline 96.1% (Δ −8.7pp)
1,832 retries on iOS 17.4 in the last hour
investigate →app.tracklayer.io/alerts/evt_8f2c91
rule.window 60min · dedupe active · won't re-fire until 15:08 UTC unless severity escalates
// THE PROBLEM

When does Stape ping you the moment Meta delivery breaks?

Most server-side tracking infra ships under the rule of “events fire, hope they land”. There is no smoke alarm. The first time you find out delivery cratered is Tuesday morning when the CMO opens Ads Manager and your CPA is up 31%.

The silent-failure gap

Your 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 deploy-day cliff

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.

The on-call noise problem

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.

§ 01

Five anomaly classes, three delivery channels

Each rule type is evaluated by alert-evaluator on a 5-minute cron. Defaults are tuned per-merchant from your delivery baseline — every threshold is editable in /alerts-rules.
01delivery_drop

Delivery rate falls below threshold over a rolling window.

THRESHOLD
default 90% over 1h window
EXAMPLE
meta_capi delivery 87.4% (24h baseline 96.1%) → fires CRITICAL
02event_anomaly

Event volume z-score deviates from the merchant×event baseline.

THRESHOLD
default |z| > 3.0 over 4h window
EXAMPLE
purchase volume z = -4.2 (mean 142/h, sd 18) → fires WARN
03platform_down

Consecutive failed deliveries to one platform exceed a count.

THRESHOLD
default 25 consecutive failures
EXAMPLE
tiktok_capi: 28 consecutive 401 (token expired) → fires CRITICAL
04quota_warning

Plan event quota percent_used crosses a threshold.

THRESHOLD
default 85% of monthly events
EXAMPLE
quota_used 88.2% with 9 days left in cycle → fires WARN
05custom_metric

Any field on event_metrics_5m crosses a user-defined expression.

THRESHOLD
merchant-defined SQL-like predicate
EXAMPLE
avg_match_quality_meta < 7.4 over 6h → fires INFO
§ 02

Email · Slack · webhook · idempotent

Three delivery channels, one idempotency contract. A fired rule will not re-trigger inside its configured window even if the condition stays red — so the on-call channel stays useful.
email
VIA · Resend

Plain-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}.

slack
VIA · merchant.slack_webhook_url

Standard 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.

webhook
VIA · HTTPS POST · HMAC-signed

JSON 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.

IDEMPOTENCY WINDOW

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.

DEFAULT 3 SEEDED RULES

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.

§ 03

What it looks like in TrackLayer

Three views the team actually uses on Tuesday morning, not a marketing screenshot.
/ALERTS-RULES · RULE EDITORnorthfield.co
RULEdelivery_drop
THRESHOLD< 90.0%
WINDOW60 min
SEVERITYcritical
CHANNELSemail + slack
ENABLEDtrue
last_evaluated 14:05:00 · last_fired 14:08:22 · next_eligible 15:08:22
Edit threshold, channel, and window per rule. Hot-reloaded by alert-evaluator on the next 5-min tick.
/ALERTS · EVENT TIMELINEhalcyonlabs.io
14:08delivery_dropemail + slack
11:42platform_downemail + slack
09:15event_anomalyslack
06:30quota_warningemail
yestcustom_metricemail
yestdelivery_dropemail + slack
critical warn info
Last 24h of fired alerts. Severity pill, rule slug, channel(s) it was delivered to, time-to-ack.
/SETTINGS · SLACK WEBHOOKglasshouse.co
MERCHANT.SLACK_WEBHOOK_URL
https://hooks.slack.com/services/T0K3N4LR/B0K3N4LR/q9X2…RmD8
CHANNEL
#ads-pager
STATUS
verified · last ping 14:08
$ tracklayer alerts:test --channel slack
200 ok · delivered to #ads-pager
One field. Paste the merchant.slack_webhook_url, hit save, get a test ping.
// HOW IT COMPARES

Other tools vs TrackLayer Real-Time Alerts.

BASED ON PUBLIC DOCS · 04·2026
CAPABILITYTRACKLAYERStapeElevarTracklution
Real-time alerting (≤ 5 min cadence)~
Multi-channel delivery (email + Slack + webhook)~
Idempotent dedupe within rule window
Z-score event anomaly vs 30-day baseline
Custom rule expressions (custom_metric)~
Default 3 rules seeded at signup
TRACKLAYER
Real-time alerting (≤ 5 min cadence)
Multi-channel delivery (email + Slack + webhook)
Idempotent dedupe within rule window
Z-score event anomaly vs 30-day baseline
Custom rule expressions (custom_metric)
Default 3 rules seeded at signup
Stape
Real-time alerting (≤ 5 min cadence)
Multi-channel delivery (email + Slack + webhook)
Idempotent dedupe within rule window
Z-score event anomaly vs 30-day baseline
Custom rule expressions (custom_metric)
Default 3 rules seeded at signup
Elevar
Real-time alerting (≤ 5 min cadence)
~
Multi-channel delivery (email + Slack + webhook)
~
Idempotent dedupe within rule window
Z-score event anomaly vs 30-day baseline
Custom rule expressions (custom_metric)
~
Default 3 rules seeded at signup
Tracklution
Real-time alerting (≤ 5 min cadence)
Multi-channel delivery (email + Slack + webhook)
Idempotent dedupe within rule window
Z-score event anomaly vs 30-day baseline
Custom rule expressions (custom_metric)
Default 3 rules seeded at signup
§ 04

Where alerts pay for themselves

Three real shapes of customer. Numbers are anonymised but representative — your incident pattern will track within ±20%.
PERFORMANCE AGENCY · 14 CLIENTS
halftone.agency

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.

HORIZONTAL SAAS · 38M EVENTS/MO
brightline.app

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.

DTC HOME GOODS · IOS-HEAVY
northfield.co

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.

// AVAILABLE ON

Starter onwards.

Real-time rule evaluation runs every 5 minutes on all paid tiers from Starter ($79/mo) upward — the six rule types fire as soon as their thresholds are crossed. Scale ($249/mo) adds proactive AI anomaly watch every 4 hours; Pro ($599/mo) runs the AI watch every 15 minutes and unlocks webhook delivery for custom integrations (PagerDuty, Opsgenie, Linear). See all 6 tiers →
NEXT

Stop debugging events at 9am.
Start sleeping through the night.

Default rules ship pre-seeded. The first alert lands in your inbox within minutes of a real incident.
Start free trial →BOOK A DEMO
NO CREDIT CARD · STARTER $79/MO · SCALE $249/MO · PRO $599/MO

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.