Skip to main content
TRACKLAYER · PREDICTIVE DELIVERY

Predictive scoring stops weak events
before they hurt your match quality.

Every event is graded 0–100 against a 30-day delivery baseline before it touches Meta, TikTok, or Google CAPI. Built for operators who watch EMQ scores drop on iOS 17.4+ Safari and want the math to fix it — not another dashboard to stare at.
14-day trial · no card · pro tier $599/mo
// WHAT YOU GET
  • Score 0–100
    predictDeliveryScore() returns identity_strength, freshness, platform_health, click_id_present
  • 3 actions
    send (≥80) · enhance (50–79) · skip (<50). Wired into the consumer worker.
  • Per-merchant baseline
    score_trainer aggregates 30-day signals into delivery_score_signals (Migration 021)
  • EMQ uplift
    Bottom-decile events never reach Meta CAPI. Median EMQ rises within 30 days.
// tracklayer://scoring/northfield.co · meta · purchase
event_id  evt_8f2c91…
event     purchase · $184.50 USD
age       2.1s            ──── freshness 100
identity  email + phone   ──── identity_strength 78
fbp       present         ──── click_id_present 72
baseline  delivered 91%   ──── platform_health 91

  ┌─────────────────────────────┐
  │  composite score            │
  │                             │
  │           87 / 100          │
  │  ████████████████████░░░░   │
  │                             │
  └─────────────────────────────┘

  action ▸ 
SEND→ meta capi · 200 ok · matched
last 100 events · skipped 12 · enhanced 6 · sent 82 · median emq 8.1
// THE PROBLEM

Why does your Meta Event Match Quality keep dropping below 7.0?

Most attribution decay isn't a tracking outage — it's a slow bleed of low-quality events you're still sending. Meta penalises them, your bid optimiser learns from the survivors, and revenue moves to platforms that look healthier on paper.

The iOS 17.4 Safari problem

On iOS 17.4+ Safari, fbp and fbc cookies get cleared on every cold-start session. Your CAPI events still fire — but with no browser_id, no click_id, and an email that may or may not match. Meta receives them, accepts them, and silently scores them at 3–5 EMQ. They count against your delivery rate but don't help your model.

The deploy-day cliff

Your checkout team ships a feature, the dataLayer changes shape, and 14% of your purchase events arrive without phone or external_id for 6 hours before anyone notices. The aggregate EMQ drop shows up in Meta Ads Manager 36–48h later — long after the bid optimiser has already absorbed it.

The retargeting tax

Stale event_time freshness (anything over 24h) drops your Meta delivery rate to 35% of healthy. If you batch-replay yesterday's checkouts to recover lost EMQ, you're paying twice — once for the stale event, once because Meta now lowers your trust score for the merchant_id.

The diagnosis gap

Stape and Elevar will tell you the event was sent. They won't tell you the click_id was missing, the identity strength was 41/100, or that this exact merchant×platform×event combination has a 30-day delivery rate of 62%. You're flying blind on the data that actually predicts whether Meta will keep your account healthy.

§ 01

How predictive scoring works

One scoring call per event, four components, three actions. Tuned per merchant from your own 30-day signal table.
01

Identity strength

Email, phone, customer_id, fbp, click_ids, ip+UA — each weighted, then blended with your 30-day identifier_match_rates from delivery_score_signals.

02

Freshness

event_time vs now: ≤5 min = 100, ≤1 h = 90, ≤6 h = 74, ≤24 h = 55, older = 35. Stops you replaying stale events that erode delivery trust.

03

Platform health

Per-merchant×platform×event_name baseline of p_delivered and p_high_match, computed nightly by score_trainer over a rolling 30-day window.

04

Click-id presence

fbc / gclid / ttclid / msclkid / 7 more. Direct presence = 100. Falls back to fbp_presence_rate benchmark when missing.

# score a single event before send
$ curl -X POST https://tracklayer-api.sublime.workers.dev/v1/scoring/score \
    -H "Authorization: Bearer $TRACKLAYER_API_KEY" \
    -d '{
      "platform": "meta",
      "event": {
        "event_name": "purchase",
        "event_time": 1714137600,
        "user_data": { "email": "j@northfield.co", "phone": "+15551234567" },
        "custom_data": { "value": 184.50, "currency": "USD" }
      }
    }'

# response
{ "score": 87,
  "components": {
    "identity_strength": 78, "freshness": 100,
    "platform_health": 91,   "click_id_present": 72
  },
  "action": "send",
  "suggested_enhancement": null }

# action map:    score >= 80 → send    50–79 → enhance    < 50 → skip
# applied automatically inside the consumer worker — no SDK change required
§ 03
LIVE SCORING STREAMnorthfield.co
14:02:11purchase92send
14:02:09purchase87send
14:01:58add_to_cart64enhance
14:01:51purchase41skip
14:01:43page_view73enhance
14:01:38purchase89send
14:01:22lead38skip
Tail of the last events the consumer scored. Anything below 50 is skipped before reaching Meta.
EMQ TREND · 30Dhalcyonlabs.io
EMQ 8.0
EMQ MEDIAN
8.1
+1.7
DELIVERY %
94.3
+11.2
EVENTS SKIPPED
11.8%
ENHANCED
6.2%
Switched on Mar 28. Median Meta EMQ went 6.4 → 8.1; bottom-12% events skipped, not enhanced and re-sent.
PLATFORM × EVENT MATRIXglasshouse.co
METAGA4TIKTOKGOOGLEKLVYO
purchase9188768284
atc8586718079
lead6274586873
view5481496470
≥80 send 50–79 enhance <50 skip
Per-merchant×platform baseline from score_trainer. Click any cell to drill into the 30-day signal row.
§ 04

EMQ confidence intervals + sample size.

Wilson 95% CI on EMQ scores. Sample size matters: a score from 50 events is much less reliable than from 5,000. Dashboard surface shows muted-color when sample_size < 50, full-color when ≥ 50.
WHY CONFIDENCE INTERVALS MATTER
  • EMQ scores are sample statistics — a single number can't tell you how precise it is
  • Wilson 95% CI gives you a range: EMQ ± margin of error
  • Sample size drives confidence: more events = narrower interval
  • A score of 7.4 from 50 events might be 6.2–8.6. From 5,000 events, it's likely 7.3–7.5.
  • Meta's EMQ calculation is Bayesian — confidence intervals help you interpret the uncertainty.

Phase 9.2 added Wilson 95% CI to EMQ scores. The interval is computed per merchant×platform and surfaces in dashboard alongside the point estimate. When sample_size < 50, the display uses muted color to indicate low confidence.

// delivery_emq · with confidence intervals
// EMQ scores with 95% CI (Phase 9.2)
SELECT merchant_id, platform, emq_score, emq_ci_lower, emq_ci_upper, sample_size
FROM delivery_emq
merchant_id
platform
emq_score
emq_ci_95%
sample_size
m_abc123
meta
7.4
7.1 ± 0.6
n=2,341
m_abc123
google
6.8
6.5 ± 0.7
n=14,892
PHASE 9.2
Wilson 95% CI: emq_ci_lower and emq_ci_upper. Computed from n (successes) and total attempts using Wilson score interval formula for binomial proportions.
// Dashboard visual
BEFORE (Phase 9.1):
EMQ Score: 7.4
EMQ Score: 7.4 ± 0.6 (n=2,341)
AFTER (Phase 9.2):
EMQ Score: 7.4 ± 0.6 (n=2,341)
Sample size: 2,341 events
Muted color when sample_size < 50, full-color when ≥ 50. Helps operators distinguish reliable vs speculative scores.
// 07

Other tools vs TrackLayer Predictive Scoring.

BASED ON PUBLIC DOCS · 04·2026
CAPABILITYTRACKLAYERStapeElevar
Score every event 0–100 before send
Per merchant × platform × event baseline~
Auto-skip bottom-decile events
30-day rolling signal trainer
Component breakdown (identity / freshness / health / click_id)
Suggested enhancement per low-score event
EMQ uplift visible in Meta Ads Manager~~
TRACKLAYER
Score every event 0–100 before send
Per merchant × platform × event baseline
Auto-skip bottom-decile events
30-day rolling signal trainer
Component breakdown (identity / freshness / health / click_id)
Suggested enhancement per low-score event
EMQ uplift visible in Meta Ads Manager
Stape
Score every event 0–100 before send
Per merchant × platform × event baseline
Auto-skip bottom-decile events
30-day rolling signal trainer
Component breakdown (identity / freshness / health / click_id)
Suggested enhancement per low-score event
EMQ uplift visible in Meta Ads Manager
~
Elevar
Score every event 0–100 before send
Per merchant × platform × event baseline
~
Auto-skip bottom-decile events
30-day rolling signal trainer
Component breakdown (identity / freshness / health / click_id)
Suggested enhancement per low-score event
EMQ uplift visible in Meta Ads Manager
~
§ 03

Where Predictive Scoring pays off

Three real shapes of merchant. Numbers anonymised but representative — your mileage will track within ±15%.
DTC APPAREL · €4.2M ARR
northfield.co

SITUATION · iOS-heavy traffic (73%), Meta is the #1 channel at 41% of spend. EMQ averaged 6.4 over Q1, bid optimiser was over-spending on broad audiences with weak signal.

RESULT · Switched on scoring with skip-threshold 50. 11.8% of events skipped, EMQ rose to 8.1 in 30 days. Meta CPA dropped 19%, recovered ~€43K/month in matched conversions.

HEALTH SUBSCRIPTION · 12M events/mo
halcyonlabs.io

SITUATION · Server-side replay job was firing 6h-old events on retry, dragging freshness scores below 55. Meta was rejecting 28% of events and silently down-scoring the rest.

RESULT · Scoring blocked the 6h+ replays at the consumer worker. Delivery rate climbed 83% → 94.3%. Cancelled the standalone EMQ-monitoring contract (Stape + Elevar overlap), saved $740/mo.

LUXURY HOME GOODS · GLOBAL
glasshouse.co

SITUATION · 14 platforms (Meta, GA4, TikTok, Pinterest, Klaviyo, Google Ads, Bing, Reddit, Snap, X, LinkedIn, Yahoo Native, Outbrain, Taboola). Couldn't tell which platform was burning the budget on bad signal.

RESULT · Per-platform breakdown showed Pinterest at 0.71 × baseline and Reddit at 0.58 × — both pulling spend with low-EMQ events. Reallocated $18K/mo back to Meta+TikTok where score-weighted ROAS was 3.4 ×.

// AVAILABLE ON

Pro and Enterprise

Predictive Delivery Scoring is part of the Pro tier ML moat at $599/mo (50M events, Boosted Events ML, unlimited Copilot, 2-year retention). Enterprise adds a dedicated region, account manager, and a tunable skip-threshold per platform. See all 6 tiers →
NEXT

Stop sending weak events.
Start lifting EMQ.

Ship in an afternoon. The scoring call is automatic in the consumer worker — no SDK change, no GTM rewrite.
Start free trial →BOOK A DEMO
NO CREDIT CARD · AVAILABLE ON PRO ($599/MO) AND ENTERPRISE

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.