River
Y CombinatorBacked by Y Combinator

Marketing & GrowthFree

Marketing Funnel Conversion Analysis Report

Each stage's loss splits into a unit change, a data defect, a record still open and a real drop-off, only one of which you fix.

Start here

Calderwood's funnel chart said the business lost 8,781 records below the traffic step last quarter. Taken apart, 2,655 of those were a real drop-off, which is 30.2%. Another 2,627 were the same entity counted in a different unit, 2,521 were records whose outcome was never written down, and 978 were still open. The single biggest loss on the chart, 3,328 records between form submission and contact created, held no drop-off at all. A form project was already scoped against it.

Each boundary gets four numbers instead of one, and they sum to the apparent loss. A unit change is the same entity counted differently, so 2,104 repeat submissions collapsed onto contacts that already existed. A measurement gap is a record whose outcome nobody recorded. Still open is a record inside its own stage's median lag. Real drop-off is a record that was worked, decided against and written down. Only the fourth kind earns a recommendation, and the other three get an owner.

Written for whoever has to name the stage to fix, and then gets asked why the CRM and the analytics have never agreed. Run it alongside the channel mix and CAC review when the question is where money goes rather than where people stop. Reach for the landing page drop-off review when the answer really is a page, and the cross-platform paid report when the stage counts themselves come from three platforms.

Where the units diverge

The traffic step is where the units diverge most. Calderwood's 412,600 sessions came from 214,800 users, so the session-to-submission rate of 2.17% and the user-to-submitter rate of 3.88% describe one quarter 1.79 times apart. The page-level view was incomplete too. Google condenses low-frequency values into an (other) row once a table passes its row limit, and any dimension carrying more than 500 values raises that risk, which put 47,036 sessions beyond a landing page read.

Three of nine segment views came back with no rows. Google withholds data so that nobody can infer an individual's identity from demographics or signals, and those thresholds are system defined rather than adjustable. That is a measurement gap, not a small segment. On the other side, HubSpot deduplicates contacts by email address and companies by domain, which is how 186 accepted contacts became fewer opportunities without a single deal going missing.

Then the three rankings, which disagree about first place. Lowest rate picks opportunity to closed won at 21.4%, where 379 of the 584 missing deals are still inside the 74-day median. Largest raw loss picks form submission to contact, which decomposes to nothing. Largest real drop-off picks contact to MQL at 1,305. None of them finds the biggest number: 1,599 records with no outcome recorded at all, including 1,188 contacts the scoring rules never reached. That is an operations ticket rather than a marketing project, and it went first.

How it works

  1. Name the systems

    Each stage gets the system it lives in and the unit that system counts.

  2. Match the boundaries

    Every boundary is matched record by record, so unmatched volume is measured rather than assumed.

  3. Split every loss

    Unit change, measurement gap, still open and real drop-off, summing exactly to the apparent loss.

  4. Rank and route

    Stages ordered by real drop-off, with every data defect sent to whoever owns that system.

What you get

  • Every stage boundary labelled with the system it crosses and the unit that changes there.
  • Each stage's loss split into unit change, measurement gap, records still open and real drop-off.
  • Stage rates recomputed on decided records only, printed next to the naive rate they replace.
  • Conversion measured on entry cohorts at each stage's own median lag, so open records stay open.
  • Stage conversion by source and segment, with any segment the analytics withheld marked rather than dropped.
  • A Sheet of the decomposition, a Doc naming the two changes worth making, and the chart.

Common questions

Isn't a unit change just a loss you are excusing?

No, it is a record that still exists. Calderwood's 2,104 repeat form submissions became updates to contacts that were already there, because the CRM matches on email address. Nobody left. Counting them as loss inflates the biggest number on the chart and aims a project at a boundary where no drop-off happened.

How do you decide a record is still open rather than lost?

By that stage's own median lag, measured from your history rather than assumed. Calderwood's opportunities took a median 74 days to close, which is 80.4% of the quarter, so 379 of the 584 apparently lost deals had not had time to resolve. Those get a re-measure date instead of a diagnosis.

Our analytics and CRM have never agreed. Does that break this?

It is the reason to run it. The disagreement is the output rather than an obstacle: each boundary reports how much volume matched, and the unmatched share becomes a measurement gap with an owner. If the mismatch sits in ad platform conversions specifically, start with the match rate review.

What if we cannot match records between the systems at all?

Then the review says so per boundary and works at the aggregate level, with the unit change named rather than corrected. That is still worth having. Knowing a boundary crosses from sessions to email-deduplicated contacts tells you the rate across it is not a rate, even when you cannot repair it this quarter.

Why not just use the funnel exploration in the analytics tool?

It draws one system's funnel well and stops at the property boundary. It cannot see a lifecycle stage, an owner assignment or a closed-won date, which is where four of Calderwood's five business boundaries lived. It also thresholds small segments away, so the segment view you most want is often the one withheld.

Does the ranking change what we should actually do first?

On this account it did. The rate ranking pointed at a sales stage, the raw loss ranking pointed at a boundary with no drop-off, and the decomposition pointed at contact to MQL. The first move was none of those. It was scoring the 1,188 contacts the model had never reached.

What actually gets delivered?

A Sheet with one row per boundary carrying the four components, both rates and the matched share, plus stage conversion by source and segment. A Doc naming the two changes worth making, with each data defect routed to whoever owns that system. A funnel chart by segment, with the withheld segments marked.

Marketing Funnel Conversion Analysis Report

Fill in the form and your workspace opens with the work already underway.