Weekly funnel review
Use this skill on the same day every week to see where new business actually comes from, when the numbers live in five different places and nobody agrees what a qualified call is. Produces one row per week, appended to a running history: traffic and outbound by channel, calls booked against calls held, fit, signed work, and revenue split by segment, with the one thing that changed. Also use for "weekly numbers", "where are leads coming from", "how many calls did we hold", "refresh the funnel".
Applies on a fixed weekday, every week, to the firm's own new-business funnel. Produces one appended row and a short read of what moved.
The play
- Name one source of truth per metric before measuring anything, and write the list down. Two systems will always disagree about how many calls happened, and a week spent arguing about which is right is a week with no numbers. The rules for choosing, and the ones worth copying, are in references/definitions.md.
- Fix the start date of the history and never move it. A rolling twelve-week window hides the trend that matters after a repositioning or a new service launch. Pick the date the current motion began and count from there.
- Pull the stages in order: traffic, outbound activity by channel and by sender, calls booked, calls held, fit, opportunities, signed, revenue. The full chain and what each stage must exclude are in references/definitions.md.
- Record booked and held as separate numbers, every week, from different sources. The gap between them is the no-show rate, it is usually the largest unmanaged leak in a small firm's funnel, and it is invisible to anyone tracking only one of the two.
- Split revenue by segment, not as a single total. A legacy base and a new motion inside one number means the new motion is unreadable for a year. The split to use is in references/definitions.md.
- Append the week to the history rather than overwriting a dashboard. A dashboard showing only this week cannot answer whether anything is working, and the history is the entire value of doing this weekly.
- Branch by what the week shows:
- A stage down with everything above it flat: a conversion problem at that stage. Look there, not at the top.
- Everything down together: an input problem. Check whether the outbound actually went out.
- Calls booked up, held flat: a no-show problem, which is a booking and reminder problem, not a demand problem.
- A channel at zero that was not zero: check it ran before concluding anything about demand.
- One channel producing everything: note the concentration. It is a risk even in a good week.
- Write one line on what changed and why, and nothing else. The numbers are the artifact; the commentary is for the one thing a reader would otherwise have to work out themselves.
What good looks like
- First thing I check that most people skip: booked minus held. Everyone tracks calls booked because it feels like progress, and the no-shows quietly delete a third of the week.
- The mediocre version: a dashboard rebuilt from scratch each week, with whatever metrics were handy, no stored history, and no fixed definitions. It produces a number nobody can compare to anything.
- I know the review is working when a disagreement about a number ends by naming the source rather than by debating the number.
- Second test: the history can answer "has this channel ever worked" without anyone opening another system.
- Red flag: a definition changing mid-quarter. Whatever the reason, the history before and after is no longer one series, and the change needs noting in the record.
Rules
- MUST name one source of truth per metric and keep it fixed.
- MUST record booked and held separately, from different sources.
- MUST append each week to a stored history, never overwrite.
- MUST split revenue by segment.
- MUST keep the start date of the history fixed.
- MUST note any definition change in the record, with the date.
- NEVER compare a stage to a stage measured a different way.
- NEVER let a channel with no activity read as a channel with no demand.
references/definitions.md
Definitions and sources
Written down once, then not renegotiated. The point is not that these definitions are the best ones; it is that they stop moving.
The chain
| Stage | What it counts | Must exclude |
|---|---|---|
| Traffic | Sessions to the site | Bots, internal and QA traffic, local development |
| Outbound activity | Messages sent, by channel and by sender | Automated follow-ups already counted at send |
| Inbound and referral | Enquiries not generated by outbound | Existing clients asking for more work |
| Calls booked | First calls on the calendar | Reschedules counted twice, internal meetings |
| Calls held | First calls that actually happened | Anything under five minutes |
| Fit | Held calls that match the ICP | See the ICP rule below |
| Opportunities | Fit calls with a real next step | Anything with no date |
| Signed | Work agreed, by segment | Verbal with no signature |
| Revenue | Recognised revenue, split by segment | One-off pass-through costs |
One source per metric
Two systems will always disagree. Pick the one closer to the event and write the choice down.
| Metric | Choose |
|---|---|
| Channel attribution | The activity tracker where the work was logged when it happened, not the CRM's guess afterwards |
| Calls booked | The calendar |
| Calls held | The sales tracker, filled in by whoever ran the call |
| Fit | The CRM |
| Revenue | The billing system |
Booked and held come from different places on purpose. Taking both from one source makes the no-show rate unmeasurable, because one system never records the absence.
The ICP rule
A held call with no deal record created counts as not a fit.
Harsh, and deliberately so. If the person who ran the call did not think it worth creating a record, it was not a fit, whatever anyone says at the end of the month. It also makes the number self-maintaining: nobody has to grade fit retrospectively.
The segment split
Split signed work and revenue into the current motion and everything that predates it. Two lines, every week.
Without the split, an existing client base masks whatever the new motion is doing for about a year, which is long enough to keep funding something that is not working or to kill something that is.
No-shows
no-shows = calls booked (calendar) - calls held (sales tracker)
Weekly, not monthly, because the fix is operational: reminder timing, how far out calls are booked, who sends the confirmation. Monthly numbers are too coarse to connect to a change.
A rate above a quarter is a booking problem, not a demand problem, and no amount of extra top-of-funnel fixes it.
Per sender
Where more than one person does outbound, record activity by person as well as by channel. Channel totals hide the fact that one person's messages work and another's do not, and that is the actionable finding.
Changing a definition
Sometimes necessary. When it happens, write the change and the date into the history, and never retrofit earlier weeks. Two honest series with a marked break beat one series that quietly means two different things.
references/reading-a-week.md
Reading a week
The numbers are the artifact. This page is how to avoid drawing the wrong conclusion from them.
Before concluding anything
Two checks, every week, in this order:
- Did the inputs actually run? A channel at zero usually means nobody sent anything, not that demand collapsed. Check the send logs before the funnel.
- Is any definition different from last week? A changed filter produces a dramatic chart and a false finding.
Most alarming weeks are explained by one of these two.
Where the drop is
Find the highest stage in the chain that moved. Everything below it is a consequence, not a finding.
| Pattern | Reading |
|---|---|
| Traffic down, everything else down | Input problem. One cause, not five. |
| Traffic flat, calls booked down | A conversion problem on the site or in the outbound message |
| Booked up, held flat | No-show problem. Operational: reminders, booking distance, who confirms. |
| Held up, fit down | Targeting. The message is reaching the wrong people, which usually means it got broader. |
| Fit up, signed flat | The sales conversation, or pricing. Look at the calls themselves. |
| Everything flat for three weeks | The actual steady state. Not a crisis, and not a reason to change four things at once. |
Small numbers
A small firm's weekly funnel is mostly noise. Two calls instead of five is a 60% drop and usually means nothing.
Rules that keep this honest:
- Under 10 of anything per week, do not read percentage changes at all. Read counts and the four-week trend.
- One week is never a trend. Three consecutive weeks in the same direction is.
- A single large deal distorts revenue for a quarter. Note it in the row rather than explaining it repeatedly.
Concentration
Each week, check what share of calls came from the single biggest channel. Over roughly two thirds is a risk worth naming even in a great week, because that channel will eventually change and the recovery time is months.
The same applies per sender where more than one person does outbound.
What the review is not for
- Deciding this week's actions. That is a pipeline conversation, and mixing the two turns a thirty-minute review into a two-hour meeting.
- Judging individual performance. Per-sender numbers exist to find which message works, not to rank people, and the moment they are used for ranking the logging quality collapses.
- Forecasting. The history supports a forecast; it is not one.
When the numbers are bad
Write them down anyway, with the note. A history with gaps in the bad weeks is worthless, because the bad weeks are exactly where the lesson is, and the gap is always in the same place: the quarter someone would most want to look back at.
references/the-history.md
The history
One row per week, appended, never overwritten. The stored history is the whole point; a dashboard that only shows this week cannot answer whether anything is working.
The row
| Column | Note |
|---|---|
week_ending | Same weekday every week |
traffic | Sessions, filtered |
outbound_sent | Total, plus a column per channel |
inbound | Enquiries not from outbound |
calls_booked | From the calendar |
calls_held | From the sales tracker |
no_shows | Booked minus held, stored rather than derived |
fit | Held calls with a deal record |
opportunities | Fit calls with a dated next step |
signed_current | Current motion |
signed_legacy | Everything predating it |
revenue_current | |
revenue_legacy | |
note | One line, what changed and why |
Store no_shows rather than computing it at read time. If a definition changes later, a derived column silently rewrites history and a stored one does not.
Reading it
Three comparisons, in this order:
- This week against last week. Catches the thing that broke.
- This week against the four-week average. Tells you whether it matters.
- The trend since the start date. The only one that answers whether the motion is working.
Most weekly reviews only do the first, which is why they produce alarm rather than information.
Conversion rates, not just counts
Calculate three every week and store them:
- Held divided by booked, the show rate
- Fit divided by held, the targeting rate
- Signed divided by fit, the close rate
A funnel can be flat on volume and improving sharply on all three, which is what a repositioning looks like in its first two months. Volume-only tracking misses it and the repositioning gets reversed.
The note column
One line. What changed and why, in plain words.
"Held down 4, three reschedules into next week, not a demand issue."
Read back six months later, the note column explains the shape of the chart better than any dashboard does. It is also the first thing skipped when busy, and worth protecting.
Same day, same time
Monday morning works because the week is closed and the next one has not started. Any fixed day works. A review that slips by two days twice stops being a series.
Thirty minutes, including the note. If it regularly takes longer, the sources are the problem, not the review.
What not to add
The pressure is always to add columns. Resist it. A twelve-column history filled in every week beats a thirty-column one filled in for six weeks and then abandoned, and the abandonment is what actually happens.
Anything that needs its own investigation to fill in does not belong in a weekly row.