Unfunnel is live: every feature is free while we are in testing. Start free ›
Your funnel converts. Your reporting does not.
Most builders can show you a conversion rate. Almost none can tell you which of the eleven creatives in that campaign produced it, or why Meta is reporting forty percent fewer leads than your CRM.
That gap is not a rounding error. It is the difference between scaling the ad that works and scaling the one that happened to spend the most.
Where the drop-off actually is
The amber step is where the money leaks. Fix that one before you touch the ad.
One event. Two paths. Counted once.
Every event fires from the browser and from our servers at the same moment, carrying the same ID. If a blocker kills the browser call, the server call still lands. If both arrive, Meta keeps one.
First-party click IDs
We write the click ID ourselves the moment someone lands, so it survives longer and does not depend on the pixel loading.
Real match quality
Hashed email, phone, name, location and a stable visitor ID on every event. Those are the inputs that decide whether Meta can attribute anything.
Mid-funnel signal
Optimise toward step three instead of waiting on a thin final conversion. Small budgets stop starving.
Revenue that matches
Signals ride through Stripe metadata, so the subscription that closes at 2am is still credited to the ad that started it.
Event inspector
Deduplication and match quality
| Event | Browser | Server | Result | EMQ |
|---|---|---|---|---|
| Lead | sent | sent | Deduplicated | 9.1 |
| InitiateCheckout | blocked | sent | Recovered | 8.4 |
| Subscribe | n/a | sent | Counted | 9.6 |
| tl_Step_3 | sent | sent | Deduplicated | 8.8 |