Unfunnel is live: every feature is free while we are in testing. Start free ›

The gap

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

Landed12,480
Started quiz8,86129%
Qualified5,49138%
Contact details3,24441%
Booked2,12235%

The amber step is where the money leaks. Fix that one before you touch the ad.

The difference

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

Live
EventBrowserServerResultEMQ
LeadsentsentDeduplicated9.1
InitiateCheckoutblockedsentRecovered8.4
Subscriben/asentCounted9.6
tl_Step_3sentsentDeduplicated8.8
Shared event IDs mean a blocked browser call costs you nothing.