B2B Lead Generation Audit: Five Layers, One Morning
How to run a B2B lead generation audit yourself, in diagnostic order: volume, fit, conversion, speed, attribution. The number to pull at each step, where it hides, and the threshold that matters.

If you are searching for a B2B lead generation audit, you have probably already decided that something is broken. Pipeline looks thinner than it did this time last year. Or the cost of getting into a room with a buyer has crept up and nobody can point to the week it started. Marketing says lead volume is holding steady. Sales says the leads are unusable. Both are telling the truth, which is the part that makes it hard to act on.
This is not a definition of what an audit is, and it is not a pitch for booking one with us. It is the audit. Five layers, taken in a set order, with the exact number to pull at each one, the place that number actually lives, and the threshold that tells you this layer is your problem and not background noise. Anyone with access to the CRM and the ad account can get through all five before lunch.
I am Léo Le Henaff, co-founder and CTO at Moriah, a LinkedIn Certified Marketing Partner. I came out of software and data engineering, and I own the systems behind our LinkedIn workflows for established B2B companies, so most of my week goes on exactly these figures. At the end I will say what our own model changes about running an audit, and I will be straight about where it stops being useful, because lead generation is a far bigger subject than any single channel.
Why a B2B lead generation audit has to run in order
Five layers, in this sequence: volume, fit, conversion, speed, attribution.
The order is not a preference. A layer's numbers only mean something if the layer above it is sound, so an audit run out of sequence produces findings that are not findings at all.
Here is the version I see most often. Reply rate on outreach is 4%, so the messaging gets rewritten. Three months later it reads 4.3%. The rewrite was not bad work. The trouble is that 4% only means "the message is weak" if the people receiving it were the right people to begin with. Wrong list, and 4% is the correct answer to the question you asked. A quarter went into teaching the wrong audience to decline more politely.
The same logic holds all the way down the stack. Cutting response time from two days to two hours buys you nothing if you are now responding faster to buyers who cannot sign anything. Rebuild your attribution model and you get a very precise picture of a machine with the wrong inputs.
So, the rule for everything below: do not read a layer's numbers until the layer above it has passed. When a layer fails, stop there, write the finding down, and treat everything underneath it as unmeasured. Yes, that makes for a shorter audit than you were expecting. That is more or less the point.
Before you start: what to have open
Five sources of data, open in front of you, before you begin. The audit stalls badly if you go hunting for one of them halfway through.
- Your CRM, with export rights. Contact creation dates, the closed-won list for the last twelve months, the source field, activity timestamps.
- Your LinkedIn Campaign Manager account, if you run ads: audience estimates, unique reach by campaign, lead form results.
- Your outreach tool's logs, whatever you use. Sent, delivered, accepted, replied, per campaign, per week.
- Your written target customer profile. The actual document. Not a slide that reads "mid-market industrials."
- One empty spreadsheet, a row per layer and four columns: the number, the threshold, pass or fail, and the date you measured it.
That last one matters more than it sounds like it should. What comes out of this audit is not a narrative. It is five rows, four of which should say pass.
Layer 1: Volume
Narrow question here. Is enough raw demand entering the top of the system to produce the deals you need, at the rates you already get?
The number to pull. New named people at target accounts who had a real first touch in the last month. A message delivered, an ad served to them, a form submitted, a hand raised at an event. Not list size. Not impressions. Not website sessions. Count people, once each.
Where it lives. Contacts created in the CRM inside the window, filtered to target accounts, deduplicated. Cross-check against unique members reached in Campaign Manager and the delivered count in your outreach tool. Those three numbers will not agree. Use the CRM figure as your spine and note the gap, because an unexplained gap is itself a layer five finding.
The threshold. Build it from your own history rather than from a published benchmark. Take the last four completed quarters, count the first touches inside that window, then count the deals that have since closed out of that same cohort. You get deals per thousand first touches, and it is the one conversion figure in this audit I would fully trust, because it is yours.
A worked illustration, with numbers invented to show the arithmetic rather than lifted from any client: 3,200 first touches across four quarters producing 19 closed deals works out at roughly 5.9 deals per thousand. Need 8 deals next quarter and you need something like 1,350 first touches, call it 450 a month. If last month came in at 160, volume is a genuine finding and nothing you fix downstream will rescue the quarter.
The decision rule. Under half the required number, volume is your finding. At or above it, volume is not your problem, and the most expensive move available to you is buying more reach anyway.
The second number, which almost nobody pulls. The size of your total addressable audience under your exact targeting filters. On LinkedIn this takes about four minutes: put the filters into Campaign Manager and read the audience estimate, then run the same filters in Sales Navigator and read the result count. If your entire addressable audience comes in at less than about three times your required annual first touches, more volume is not for sale to you at any price. You will burn through the market inside a year. That is not a volume finding. It is either a targeting definition drawn too tightly or a channel that does not reach your market, and the two have different fixes.
What a volume failure does not mean. It does not mean your content, your messaging or your team are underperforming. A thin top with healthy rates is an arithmetic problem, and it is the cheapest sort of finding to understand, if not always the cheapest to fix.
Layer 2: Fit
Now the question is whether the people showing up are people you can actually sell to. This is the layer most audits skip, and skipping it is exactly what makes layers three and four unreadable.
The prerequisite. No written target profile, or three competing versions of one? Stop. That is the finding. You cannot audit fit against a definition that does not exist, and no amount of data cleaning stands in for an afternoon spent agreeing, in writing, what a good account looks like.
The number to pull. Two percentages, out of the same hand-applied test.
- Export your last 50 closed-won deals. Score each one against the written profile. Record the share that pass.
- Export your last 50 leads. Score those against the same profile. Record that share.
Manual, and it should be. A hundred rows, about 40 minutes, and the reason to do it by hand is that the exercise exposes the clauses in your profile that nobody can actually apply.
Where it lives. The closed-won list and the recently-created contact list in your CRM, both exported into the same spreadsheet so one person applies one test.
The threshold. If the fit rate among your leads sits more than 20 points below the fit rate among your closed-won deals, targeting is your finding, and every conversion number below this point is measuring the wrong population.
A sharper version of the same test. Pull the five most common job titles among the people who actually signed. Then pull the five most common titles in your current outreach audience or ad targeting. Fewer than three of the five overlapping, and you are talking to the wrong seniority, which is a different problem from talking to the wrong companies. It tends to show up as polite replies that never turn into a meeting.
The misreading to avoid. Do not let fit get judged after the fact by whether the sales team liked the lead. That measures the sales team's mood, not your targeting, and it moves every time somebody's quarter is going badly. The test has to be a written rule, applied to a row, by one person, in one sitting.
One structural note, since it changes how you read the next layer. Fit is not purely a list problem. Where your buyers already recognize the company and the person contacting them, the same list converts differently. That is why we run executive personal branding and targeted outreach as one engine at Moriah instead of selling either on its own, and it is the split you are about to measure.
Layer 3: Conversion
Only now is it fair to ask whether the right people are acting. Three numbers, plus a fourth that is more diagnostic than any of them.
Reply rate on targeted outreach. Replies over messages delivered, per campaign, per week, straight out of your outreach tool. Published figures here are reasonably consistent on one point: targeted LinkedIn outreach tends to sit in the 10% to 15% band, while cold email sits closer to 1% to 3%. So read your number against the channel it came from. A 2% email reply rate is normal and is not a finding. A LinkedIn reply rate under 5%, with fit already confirmed in layer two, is a message problem.
Positive reply share. Of the replies you did get, how many were anything other than a no? Nothing computes this for you. You will be reading 50 replies and tagging them yourself. If roughly 80% or more come back as declines, the fault sits in relevance and offer rather than in copy, and rewriting the opening line will not touch it.
Meeting show rate. Meetings held over meetings booked, from the calendar or the CRM. Under about 70% and the problem is in the booking step or in how the meeting got framed, not in demand. People who no-show had already agreed to meet you.
The fourth number, which tells you what kind of problem you have. Split your reply rate by whether the recipient had prior observable engagement with your executives' content: a comment, a reaction, a profile view after a post, a connection accepted in the weeks before the message landed. Those two reply rates are rarely close. Content from an executive's personal profile performs around 5 to 10 times better than the same content from a company page, which is why this split exists at all.
If the engaged-first group converts and the cold group does not, you do not have a message problem dressed up as a content problem. You have the reverse, and the fix sits upstream of the message entirely.
Layer 4: Speed
Rate tells you whether people get through. Speed tells you whether they get through while they still care. A layer can look fine on every ratio and still be the worst thing happening in your business.
The number to pull. Median working hours from inbound signal to first human response. Then the 90th percentile of the same series, because the median hides the cases that actually cost you deals.
Where it lives. Contact created timestamp against first logged activity timestamp in the CRM. If your CRM does not log first activity reliably, use the shared inbox or the LinkedIn lead form download timestamps against the first outbound message. Convert to working hours rather than calendar hours, or every Friday afternoon inquiry will look like a catastrophe.
The threshold. I am not handing you a multiplier here. Published research on lead response time gets quoted constantly and the numbers disagree with each other enough that I would not plan around any of them. Use a flat rule you can actually enforce instead: a median above one business day is a finding, and a 90th percentile above three business days is a finding even when the median looks fine.
The number that is free to fix. The share of inbound that never got a first response at all. Pull it as contacts created with zero logged activity after 10 business days. Anything over about 5% is your finding for this layer, ahead of anything to do with medians. These are people who asked you for something and got nothing back, and no amount of campaign spend recovers them.
The second-order speed number. Median business days from first positive reply to meeting held. Above about 10 and you are losing people in scheduling rather than in selling, which is usually a calendar and ownership problem with a one-week fix.
What a speed failure does not mean. Almost never laziness. Almost always ownership. Nobody is named, so a record that arrives belongs to everybody, which works out the same as belonging to nobody.
Layer 5: Attribution
This one comes last, and the reason is worth saying plainly: it does not tell you what is wrong today. It tells you whether you will be able to run this audit again next quarter without the same three days of archaeology.
The number to pull. The share of closed-won deals from the last twelve months carrying a recorded first-touch source.
Where it lives. The source field on closed-won opportunities in your CRM. Export the whole column and count the populated values.
The threshold. Below 70% populated and you cannot rerun this audit reliably. Below 40% and the four layers above it were educated guesses, which you should write down as a caveat beside every other finding you recorded.
The second number. The share of your populated source values that are effectively meaningless: blank, "other," "web," or "referral" used as a catch-all for anything nobody bothered to trace. A source field that is 95% populated and 60% "other" is worse than an empty one. It looks finished.
Why this layer breaks the ordering rule. Everything else in this audit can wait a quarter. Lead generation attribution cannot, because the data you are not capturing this month is not recoverable later. A missing reply rate can be recalculated from logs. A missing source on a deal that closed in March is simply gone. So if layer five fails, start fixing it this week alongside whatever else you picked, even though it is not your headline finding.
Your lead generation audit scorecard
Five rows. That is the whole lead generation audit checklist, and the whole output.
| Layer | The number | Where it lives | Fails at |
|---|---|---|---|
| Volume | First touches per month at target accounts | CRM contacts created, deduplicated | Below half the figure your own deals-per-thousand ratio requires |
| Fit | Fit rate of last 50 leads vs last 50 closed-won | CRM exports, scored by hand against the written profile | A gap wider than 20 points, or no written profile at all |
| Conversion | Reply rate, positive reply share, meeting show rate | Outreach tool, replies read and tagged, calendar | LinkedIn replies under 5%, declines over 80%, shows under 70% |
| Speed | Median and 90th percentile working hours to first response | CRM timestamps or shared inbox | Median over 1 business day, 90th percentile over 3, or over 5% never answered |
| Attribution | Share of closed-won deals with a usable first-touch source | CRM source field on closed-won | Under 70% populated, or a catch-all value dominating |
When the audit hands you five findings
It often will, especially the first time round. Here is how to choose, and the rule is not "pick the biggest."
1. The earliest confirmed fault wins. If fit and speed both fail, fix fit. The speed number was measured on a population you should not have been contacting in the first place, so it is not a finding, it is an artifact. Measure it again after the fit fix and it will have moved on its own, sometimes by a lot.
2. Attribution is the standing exception. Broken attribution gets quietly more expensive every week you leave it, because the record you did not write cannot be reconstructed. Start logging properly now, wherever your headline finding sits.
3. Inside a layer, do the one you own. Two findings in the same layer: take the one you can fix without another function signing off. A response-window commitment that needs the sales director to accept a new rule will cost you six weeks of politics. Naming an owner for unanswered inbound takes an afternoon. Do the afternoon first, then use the result as your argument for the six weeks.
4. One finding per quarter, then re-run. This is the discipline most companies skip and later regret. Fix volume, fit and speed all at once and your numbers will improve while you learn nothing about which change did it, which means you cannot repeat it. Fix one, re-run the five rows, compare dates. The audit is a series, not a report.
5. Write down what you decided not to do. Next quarter somebody will ask why the obvious conversion problem got ignored. The answer, that it was not a real finding because the layer above it had failed, is worth one line in the spreadsheet.
Running this audit on one engine instead of six
An honest caveat before I bring this round to our own model, because the five layers above are deliberately channel-agnostic. They work whether the top of your funnel is search, email, trade shows, partners, a referral network or a field sales team. Nothing in the method belongs to LinkedIn.
What does change with the number of channels is how much of the audit you can actually finish. Every layer above asked you for an observable number, and on most channels you end up inferring at least one of them. First touches get estimated. Fit gets sampled. The content and outreach split in layer three is usually impossible, because the two sit in different systems with no shared identity. Run the five layers across six routes to market and you have thirty cells, most of them modeled rather than counted, and the audit stops converging on anything.
Moriah's own answer is narrower on purpose. We are a LinkedIn marketing agency, and we run three pillars for established B2B companies: executive personal branding, targeted outreach, and LinkedIn Ads, all of it executed in house against one business objective at a time. We do not run your search, your email program, your events or your PR. We do not staff an SDR desk for you, and we do not sell appointments by the meeting. What a single channel run properly buys you, in audit terms, is that all five layers get counted instead of inferred. The audience estimate is a number on a screen. The first touch is a delivered message or a served impression against a named person. The engagement that came before a reply sits in the same place as the reply.
And the three pillars are why we will not sell any one of them on its own. They sit on different layers of the audit you just ran, and each one makes the next layer's numbers better. Personal branding moves fit, and it moves the cold-versus-warm conversion split, because the buyer knows the name before the message arrives. Targeted outreach turns that recognition into a reply, at roughly 200 messages a week. LinkedIn Ads widen volume when the objective justifies it. Run one without the others and you get the failure patterns we see most often: a company publishing consistently with nothing activated around it, or a company sending outreach with no authority standing behind it. One pillar feeding a layer whose neighbors are empty is the compounding engine running with two of its three parts switched off.
Run the five layers and want a second read on what they say? That is the conversation we have on a first call. Our engagement is a monthly retainer, no commitment and no minimum term, built that way because the early work is mostly about gathering real data points on your own numbers rather than tying you in.
Frequently Asked Questions
What is a B2B lead generation audit? A B2B lead generation audit is a structured diagnosis of where your lead generation actually breaks, run by pulling one specific number at each of five layers: volume, fit, conversion, speed and attribution. What comes out is not a report but five pass-or-fail rows, with one finding worth acting on this quarter.
How long does a lead generation audit take to run? About a morning, assuming CRM export rights, your ad account and a written target customer profile are open before you start. The part that genuinely takes time is scoring 50 leads and 50 closed-won deals by hand in the fit layer, which runs to roughly 40 minutes.
What should a lead generation audit cover? Five layers, in order: whether enough demand arrives at all, whether the people arriving match the profile you sell to, whether they act, how fast you respond, and whether any of it is recorded well enough to measure again. Everything else, creative reviews and tooling assessments included, belongs after those five rather than instead of them.
Can I run a lead generation audit myself, or do I need an agency? Run it yourself. Every number in this article comes out of systems you already own, and the diagnosis tends to be more useful when the person reading it has to live with the result. An outside read is worth having once your own five rows start disagreeing with each other.
What numbers do I need before I start a lead generation audit? Contacts created by month filtered to target accounts, your last 50 closed-won deals, your last 50 leads, outreach sent and reply counts, first-activity timestamps, and the source field on closed-won opportunities. Any of those missing, and the absence is itself a finding in the attribution layer.
Why audit fit before conversion? Because a conversion rate only means what you think it means if the population behind it was the right population. A 4% reply rate on the wrong list is a correct result, not a failure, and rewriting the message in response costs you a quarter and moves almost nothing.
What is a good reply rate for B2B outreach? Read it against the channel. Targeted LinkedIn outreach tends to land in the 10% to 15% band, while cold email sits closer to 1% to 3%, so a 2% email reply rate is ordinary rather than broken. On LinkedIn, anything under 5% with fit already confirmed points at the message.
How fast should we respond to a new lead? Use a flat rule you can enforce rather than a published multiplier, because the research on lead response time disagrees with itself more than it lets on. A median above one business day is a finding, and a 90th percentile above three business days is a finding even when the median looks acceptable.
How often should we run a lead generation audit? Once a quarter, fixing one finding between runs. The value is in the series rather than in any single pass, because comparing your own five rows across dates is the only way to know which change produced which result.
The audit found five problems. Which do we fix first? The earliest confirmed fault in the order, not the biggest number, since findings below a failed layer are artifacts rather than problems. One exception: attribution. Start recording properly straight away, because the data you fail to capture this month cannot be recovered later.