Recovering attribution with server-side events
How we recovered 34% of lost conversions on Meta with a Cloudflare Worker and CAPI.
Nov 30, 2025·10 min read·Analytics / Advertising
Where the signal goes
Between iOS 14, ad blockers, and cookie expiry, the pixel now sees a shrinking fraction of your conversions. On some accounts we've measured a 40% gap between the pixel and the CRM.
Server-side events close most of that gap.
Architecture
The pattern:
- Fire a first-party event on your server when a conversion happens.
- A Cloudflare Worker enriches the event with hashed identifiers.
- Forward to Meta CAPI, Google Enhanced Conversions, TikTok Events API.
Everything runs on your infrastructure. Nothing depends on the browser being cooperative.
Dedupe
The trap is double-counting. Send both browser and server events, but attach a matching event ID to each. The platforms dedupe automatically.
const eventId = crypto.randomUUID();
await Promise.all([
sendBrowserEvent({ eventId, ... }),
sendServerEvent({ eventId, ... }),
]);Impact
Across three accounts we implemented this on:
- Meta reported conversions: +34%.
- Blended CAC (from source of truth): unchanged.
- Meta's ability to optimize the auction: visibly better within 10 days.