Welcome back, jump to Tutorials, Support & Docs, or What’s New. Go to PlatformNot you?Log out
Platform AI Agents Customers Developer Docs Services Company Careers Blog Resources Comparisons Buyer's Guide Integrations Use Cases Tutorials Events Sign In — Classic view Sign In — AI agency Book a Demo
2026 B2B Benchmark, Methodology
Version 2026.1 · published 2026-08-17

The Closed-Won Protocol

Twelve rules for measuring paid media against CRM closed-won revenue. A two-person team can adopt all twelve in a quarter, and most of the work is deciding things once, in writing, before anyone sees a number. The 2026 B2B Ad Spend Benchmark · B2B advertising benchmarks by channel is built to this protocol; the rest of this page shows where we clear it, where we fall short, and the twelve claims we killed or corrected rather than leave standing. Straight to the reference material: the metric dictionary, the fair-share formula worked through, and the questions this data cannot answer. Something here look wrong? Tell us. That is what the address is for.

The words on this page, in plain English
Traceable payback
Closed-won revenue we can trace back to an ad, divided by what was spent on ads, inside twelve months. It is credit we can follow, not proof the ads caused the sale.
Cell, or cut
One specific slice of the data, a channel, a company-size band, an ad format, or a combination of them. “The 51–200 × LinkedIn cell” means advertisers targeting 51–200-employee companies on LinkedIn, and nothing else.
Withheld
We computed the number and chose not to publish it, because too few advertisers stood behind it or one advertiser accounted for too much of it. Withheld never means zero, and we never estimate in its place.
The middle / the cheapest quarter / the priciest quarter
Line every advertiser up by their own result. The middle one is the typical experience. A quarter of advertisers did better than the cheapest-quarter mark, a quarter did worse than the priciest.
Weighted by spend
Big spenders count more, because the number is built from total dollars and total leads rather than from an average of each advertiser’s own average. It answers “what did the market pay”, not “what does a typical advertiser pay”. Which is why we publish both.
Credit split evenly
When several ads touched one deal, each gets an equal share of it, so nothing is counted twice when we add the numbers up.
Close rate, won vs lost
Deals won divided by deals that actually finished, won plus lost. Deals still open count as nothing, which makes every revenue number here a floor.

The Closed-Won Protocol, adopt it in a quarter

Each rule below states what to do, and then what it costs us to keep. Where we do not yet meet our own bar, that is written into the same paragraph rather than left for a reader to notice.

  1. Ground truth is the CRM, and reconcile it monthly

    Count closed-won and closed-lost outcomes, nothing else. If the platform reports 47 conversions and the CRM shows 38 wins, the CRM is right. Never sum platform-reported conversions across channels: summing routinely returns 150–250% of the customers a CRM can find, because every platform claims the same deal.

    The reconciliation audit. Once a month, divide summed platform conversions by CRM wins for the same period. A ratio near 1.0 means your channels are counting one deal once. A ratio of 1.5 to 2.5 means double-counting, and it is not growth. It is the same pipeline reported repeatedly.

    Us: every payback, cost-per-customer and close-rate figure in this report is computed from CRM opportunity records, never from platform conversion pixels.

  2. Attribute once, with a stated rule

    Pick one attribution rule, write it down, and apply it identically to every cut. Two invariants hold whatever you pick: marketing-attributed revenue can never exceed 100% of CRM revenue, and roll-ups must not double-count when the same deals are sliced by channel, format and audience.

    Us: credit split evenly multi-touch across qualifying paid touches, equal credit, additive roll-ups, and wrong whenever one touch mattered more than another. Full disclosure below.

  3. Define the outcome metrics before you look at them

    Close rate is won ÷ (won + lost). Never divide by still-open. That inflates every number in the report and it is exactly the error we shipped and had to kill. Cost per customer is spend ÷ fair-share won customers. Triggered payback is fair-share closed-won revenue ÷ spend. Open pipeline gets reported separately, on its own line.

    Us: defined before the export arrived; the definitions are in the definitions section and did not change once the numbers appeared.

  4. Label the number, don’t launder it

    Name the metric for what it measures. Ours is traceable payback, not incrementality, not profit, not lifetime value, and not a constant for B2B. Use the full label on every reference; the shorthand is where the overclaim gets in.

    Us: the report’s headline figure is 0.56x of traceable payback at $58,887 per customer, on a 21.2% won-versus-lost close rate. It is a floor and a starting point, not a target on paid media.

  5. Match the window to the sales cycle, at least twice its average length, and say which one you used

    A 30–90-day platform default, reported as payback for a 6–18-month buying cycle, is not conservative. It is wrong in a knowable direction. Set the attribution window to at least twice your average sales cycle, report cohort age beside the number, and name the window every time you quote it.

    Us: a 12-month trailing cohort on 2025 media, opportunity status as of 2026-08-16. The alternatives we rejected are printed with the direction each would move the number.

  6. Two units of analysis, always both

    Report one advertiser = one data point and spend-weighted, with p25 / median / p75 / p90 printed beside the headline. A spend-weighted average published alone describes the largest spender, not the market. Which is how a benchmark becomes a target that most of its own panel cannot hit.

    Us: the distribution is published in the explorer alongside every spend-weighted figure, computed from the advertiser range rather than interpolated from percentile labels.

  7. Pre-register the publication gates, then let them fire

    Decide the minimums before you see a number, because a threshold chosen afterwards is a preference. Ours: a pipeline metric publishes only with 25 advertisers or 30 closed-won deals behind it, and n is printed every time. The concentration kill-switch suppresses any cell where one advertiser exceeds 40% of the segment’s spend or 40% of its closed-won outcomes. Both halves, because revenue concentrates far harder than spend does.

    Us: the outcomes half of that cap fired on 2026-08-17 and tombstoned twenty claims, including three entire published pages. Kill-list entry eight.

  8. Say what the sample is made of

    A benchmark inherits the shape of whoever supplied it. Publish the composition beside the headline, because a reader outside your densest segment is entitled to know how much of the number is theirs. The honest version names the concentration when it is unflattering, and especially when the report’s title implies broader coverage than the mix supports.

    Us: this is a B2B benchmark whose spend is 77% B2B tech, across 97 advertisers, and Computer Software on its own is 63.4% of it. Financial services is 11 advertisers. Everything else, 45 advertisers across the remaining industries, is 19.5% of spend and publishes as a single bucket rather than as individual verticals, because several of those verticals are two advertisers wearing a six-advertiser count. Read the headline figures as what a B2B software advertiser experienced, and the per-segment cuts as the test of whether that travels.

  9. Publish the exclusions and the kill list

    Pre-register the outlier policy, then publish the claims you removed, with the reason, and with the number it cost you. A kill list is the only cheap way for a reader to check whether a benchmark is keeping something it shouldn’t.

    Us: eleven entries, including the best claim in our July draft, a bug in our own arithmetic, and a scope number we had wrong for weeks.

  10. Two numbers, never one, and six on every cut

    The two-number rule: no efficiency metric ships without an outcome metric beside it. Cost per lead travels with cost per customer. Click-through travels with close rate. Alone, an efficiency metric will reliably recommend the cheapest audience, format and channel regardless of what any of them are worth.

    The standing scorecard is six columns: cost per lead, customers per 1,000 leads, close rate (won versus lost), cost per customer, triggered payback, average won deal size. A single-metric ranking is itself a kill-list item.

    Us: where an outcome column is suppressed, the page says so in the same table rather than shipping the efficiency column on its own.

  11. Never blend objectives

    Split lead-generation spend from traffic and reach spend in every report, and audit the objective mix monthly. More than 10% of budget sitting on traffic or click objectives is a flag to investigate, not an upper-funnel strategy to defend, and traffic spend must be excluded from cost-per-lead reporting entirely, or it will quietly ruin the denominator.

    Us: cost per lead and conversion rate are computed only across lead-generation-objective campaigns; delivery metrics span all objectives and say so.

  12. State the cost basis

    Say what is inside the spend number: media only, or media plus agency retainers, platform fees and creative production. Two teams comparing payback on different cost bases are not comparing anything.

    Us: fully loaded paid-media spend for the campaigns in scope. It does not include agency retainers or internal salaries, so a fully loaded cost of acquisition at your company would be higher than the figures here.

  13. Then add causality, separately

    Attribution is not incrementality, and no amount of CRM rigour turns one into the other. Run one geo or PSA holdout per quarter on your largest channel, and treat platform-reported return as an index to watch over time rather than a value to bank. Published incrementality work puts platform-reported return materially above what holdouts recover, so read a platform figure as a direction of travel, not an amount.

    Us: we run no holdouts in this dataset. Every figure in this report is an observational 2025 association, and the one cell that cleared 1x payback, 51–200 employees on LinkedIn at 1.16x and $35,288 per customer. Is a description of what happened, not a demonstration of what caused it.

Version, suppression rules, and how to challenge a number

This is Version 2026.1, published 2026-08-17 on calendar-2025 data. Versioning is not decoration: it means corrections get published as corrections rather than as quiet restatements. When a number changes, the old value, the new value and the reason all appear in the kill list, and the version label moves. Entry nine below is that policy applied to our own arithmetic on the day we found the error.

Read the suppression rules before you read any result

These gates decide what appears anywhere in this report, so they belong in front of the numbers rather than in a footnote behind them:

  • Media metrics (cost per lead, cost per click, CPM, click-through, conversion rate): at least 5 advertisers, at least $50,000 of segment spend, no advertiser above 50% of segment spend.
  • Pipeline metrics (payback, cost per customer, close rate): 25 advertisers or 30 closed-won deals, and no advertiser above 40% of segment spend or above 40% of segment closed-won outcomes.
  • A failed cell is suppressed and labeled with the rule it failed. Never estimated, never interpolated, never blended into its parent, and never rendered as zero. On the pages it appears as a hatched, withheld cell.
  • Ratios only. We publish costs per unit, rates and multiples, never absolute segment totals or per-advertiser values, so a published cell cannot be worked back to one company’s spend.

Full thresholds and their rationale are in the thresholds section.

Challenge this number

If a figure in this report looks wrong to you, write to benchmarks@metadata.io. That address is read by the team that built the pipeline, the people who wrote the queries and the suppression gates, not a marketing inbox. Send the page, the number and what you think is wrong with it.

If you are right, we change the page, move the version, and add the correction to the kill list with the old value beside the new one. We did exactly that on 2026-08-17, twice, and both corrections are below.

What data is in the 2026 benchmark?

153 B2B advertisers and $57.6M of calendar-2025 ad spend, spanning 211,000 generated leads. To state the count precisely: 175 accounts appear in the source export; 22 recorded no spend in 2025, so 153 advertisers are represented in every published figure. Earlier editions of this report said 175, which counted accounts rather than advertisers, the correction is kill-list entry ten.

Media metrics (cost per lead, cost per click, conversion rate) are computed on the $31.5M subset of lead-generation-objective campaigns. Pipeline metrics (payback, cost per customer, close rate) are computed on the $29.4M subset with CRM opportunity attribution, 154,000 CRM-joined leads across 127 advertisers. After one advertiser was removed under the pre-registered outlier policy (kill-list entry seven).

ChannelAdvertisersShare of 2025 spendPublished?
LinkedIn15269.6%Yes
Google Ads6515.2%Yes
Facebook8110.6%Yes
Instagram504.3%Yes
Reddit170.3%No, below thresholds
Microsoft Ads3<0.1%No, below thresholds

Channel exclusions. Reddit and Microsoft Ads spend is counted in dataset totals but excluded from published segments and from the explorer's filters: neither channel clears the advertiser-count and spend floors below, and publishing them would mean publishing individual advertisers' results.

Company-size exclusions. Size bands 51–200, 201–500, 501–1,000 and 1,001–5,000 employees carry published cost-per-lead numbers. On the outcome side only 501–1,000 and 1,001–5,000 survive at band level: the 51–200 and 201–500 all-channel cost-per-customer numbers were suppressed on 2026-08-17 under the 40% one-advertiser limit, and the 51–200 story is published only as its LinkedIn cut. The 0–50 band (24 advertisers, $1.3M) is too thin relative to the dataset to benchmark, and the bands above 5,000 employees failed the concentration thresholds. The largest of those failures is kill-list entry one.

Scope statements. Channel-share numbers depend on the denominator: LinkedIn is 82.4% of paid-social spend (LinkedIn + Facebook + Instagram) but 69.6% of all-channel spend. Every sentence in the report states which scope it uses, and unscoped share claims from earlier drafts were corrected or removed.

When do we refuse to publish a number?

A segment (say, LinkedIn × Document ads × lead generation) is published only if it passes every rule in its row:

RuleMedia metrics (CPL, CPC, CPM, CTR, CVR)Pipeline metrics (ROI, CAC)
Minimum advertisers525, or 30 closed-won deals
Minimum segment spend$50,000$50,000
Spend concentration capNo advertiser >50% of segment spendNo advertiser >40% of segment spend
Outcome concentration capNo advertiser >40% of segment closed-won outcomes
n printed with the numberAlwaysAlways

In plain English: no single advertiser may dominate a published segment. If one company’s results can move the number, the number is not a benchmark. It is an anecdote with a denominator. Pipeline metrics carry the stricter bar because revenue concentrates far harder than spend does: a segment can look perfectly diversified on media dollars while one advertiser supplies nearly all of its closed-won revenue. That is why the cap is applied twice, to spend and to outcomes, and why the outcomes half is the one that does most of the killing.

Size bands with fewer than 25 advertisers publish only where the cell clears 30 closed-won deals on its own, the 501–1,000 band (19 advertisers) and the 51–200 × LinkedIn cell (27 advertisers) are both in that position, and n is printed beside each of them so a reader can weigh it.

Segments that fail are suppressed entirely and labeled with the exact rule they failed ("fewer than 5 advertisers", "below the spend floor", "concentration") in the explorer. We never estimate, interpolate or quietly blend a failed segment into its parent. An automated test also attempts to isolate individual advertisers from the published aggregates on every build, and blocks publication if it succeeds.

How are the metrics defined?

Triggered revenue. Closed-won revenue is counted as triggered only when the ad-generated lead directly created the opportunity in the CRM. It is the conservative floor, and it is the basis of every ROI and CAC figure in the report.

Influenced revenue. Influenced counts opportunities a campaign touched anywhere in the buying journey. It is directional, not attributable, a ceiling, not a measurement, so it never appears as a headline number and is shown only as context alongside triggered figures.

CAC. Customer acquisition cost = a segment's ad spend ÷ the number of closed-won customers whose opportunities were triggered by that segment's campaigns. It answers: "what did a customer that these ads directly produced cost?"

Close rate. Won ÷ (won + lost) among ad-triggered opportunities that have reached a decision. Still-open opportunities are excluded from both sides of the division. An earlier published version that counted them in the denominator is on the kill list. Opportunity status is a snapshot as of 2026-08-16 (see below).

CPL and conversion rate. Computed only across campaigns with a lead-generation objective, so awareness and traffic campaigns don't distort lead economics. CPL = total segment spend ÷ total leads, always recomputed from raw totals, never an average of per-account averages. Delivery metrics (CPM, CPC, CTR) are computed across all campaigns in a segment.

Why ratios only. We publish rounded ratio metrics, costs per unit, rates, multiples, and never absolute segment totals or per-advertiser values. Absolute totals in thin segments would let a motivated reader reverse-engineer an individual advertiser's spend; ratios plus the suppression thresholds above make that reconstruction fail.

Metric dictionary, every published metric, with its formula

Dictionary version 2026.1

One row per metric that appears anywhere in this report. The formula column is the arithmetic actually executed by the pipeline, not a description of it. The dictionary is versioned with the report: if a definition changes, the version moves and the change is listed in the kill list, because a benchmark whose definitions drift silently is worse than no benchmark.

MetricExact definitionFormulaScope it is computed on
LeadA form submission or lead-gen-form completion recorded against a campaign in a lead-generation-objective campaign.Lead-generation-objective campaigns only
CustomerA CRM opportunity with a closed-won status whose creation was triggered by an ad-generated lead. Counted in fair-share units, so one deal touched by several segments is never counted twice.Pipeline subset, CRM-joined
CPL, cost per leadWhat one lead cost, recomputed from raw totals. Never an average of per-advertiser averages.segment spend ÷ segment leadsLead-generation-objective campaigns
CPC, cost per clickWhat one click cost, across every campaign in the segment regardless of objective.segment spend ÷ segment clicksAll objectives
CPM, cost per milleWhat one thousand impressions cost.segment spend ÷ (impressions ÷ 1,000)All objectives
CVR, conversion rateClick-to-lead conversion. Not click-to-opportunity and not click-to-customer.segment leads ÷ segment clicksLead-generation-objective campaigns
Triggered ROI, traceable paybackDollars of closed-won revenue per dollar of media, counted only where the ad-generated lead directly created the opportunity. The conservative floor, and the basis of every headline. Not incrementality, not profit, not lifetime value.fair-share triggered closed-won revenue ÷ segment spendPipeline subset; 12-month trailing cohort; status snapshot 2026-08-16
Influenced ROIDollars of revenue per dollar of media across every opportunity a campaign touched anywhere in the journey. Directional, not attributable, a ceiling, not a measurement. Never a headline; appendix context only.fair-share influenced revenue ÷ segment spendPipeline subset
CAC, cost per customerWhat one ad-triggered customer cost, on a media-only cost basis. Excludes agency retainers, platform fees, creative production and salaries, so a fully loaded CAC at your company is higher.segment spend ÷ fair-share triggered closed-won customersPipeline subset
Close rateWon versus lost among ad-triggered opportunities that reached a decision. Still-open opportunities are excluded from both sides. Dividing by still-open is the error that killed six published stats (entry six).fair-share won ÷ (fair-share won + fair-share lost)Pipeline subset, decided opportunities only
Customers per 1,000 leadsLead-to-customer yield, expressed per thousand leads so thin and thick segments are readable on one axis.(fair-share won customers ÷ leads) × 1,000Pipeline subset
Average won deal sizeMean fair-share closed-won amount per fair-share won customer in the segment.fair-share closed-won revenue ÷ fair-share won customersPipeline subset
Demand creation, cold, prospectingCampaigns targeting audiences built from firmographic, technographic, intent or account-list criteria, with no requirement of prior engagement with the advertiser.Audience-type cut
Demand capture, retargetingCampaigns targeting audiences built from prior engagement: site visitors, ad engagers, known contacts.Audience-type cut
Traffic objectiveCampaigns whose platform objective is traffic, clicks or reach rather than lead generation. Excluded from CPL and CVR entirely, leaving them in ruins the denominator, but counted in total spend and in delivery metrics.Objective cut
nThe number of distinct advertisers behind the cell. Printed beside every published number, always.Every cell
Spend-weighted vs per-advertiserA spend-weighted figure recomputes from raw totals and therefore describes the largest spenders; a per-advertiser figure treats one advertiser as one data point and describes the dataset. Both are published for the metrics where they diverge, and they are never mixed in one sentence.Every cell

Two labels that are not metrics. “Triggered” is a modelling convention, not a causal finding: it means the CRM records the ad-generated lead as having created the opportunity, under fair-share attribution. Read it as attributed. And “pipeline ROI” is not a metric in this report at all: pipeline divided by spend is a pipeline-to-spend ratio, because pipeline is not revenue. Where a customer story publishes one, we relabel it, see the tail chapter.

How is revenue attributed and counted?

Fair-share (1/N) multi-touch attribution. When an opportunity was triggered by campaigns in N different segments, each segment is credited 1/N of the opportunity, its win, its loss and its amount alike. Fair share makes every roll-up additive: the credited opportunities in child segments sum exactly to their parent, and nothing is double-counted when you slice the same deals by channel, format and audience. The limitation is just as plain: 1/N is an equal split, and equal splits are wrong whenever one touch mattered more than another. It is the honest default, not the truth. An engagement-weighted upgrade, crediting touches by measured interaction rather than by count. Is planned for a future edition.

Amounts are pro-rated within a row. Where a source row aggregates several opportunities, closed-won and closed-lost amounts are apportioned to opportunities proportionally within that row. This is an approximation at the amount level (counts are exact); an export with exact per-opportunity amounts is planned, and we do not expect it to move the published ratios materially.

Opportunity status is a snapshot. Won and lost reflect CRM status as of 2026-08-16. Deals still open on that date are excluded from close rates and not yet counted in triggered revenue, so ROI, CAC and close-rate figures will drift as open 2025-sourced pipeline closes. The next edition recomputes from a fresh snapshot.

Amount scrub. Three opportunities carried amounts above $100M, data-entry artifacts, not bookings. They are excluded from the amount side of the dataset, so they contribute nothing to triggered revenue, payback or cost per customer.

Concentration caps applied to the attributed result. Both caps run on the fair-share attributed figures, not on raw spend alone: a cell is suppressed if one advertiser holds more than 40% of its spend or more than 40% of its fair-share closed-won outcomes. Because 1/N spreads a single deal across every segment that touched it, the outcomes cap is the one that catches a dominant advertiser hiding behind a diversified media mix, and on 2026-08-17 it removed twenty claims from this report.

Reproducibility, the fair-share rule, stated and worked

A number nobody else can recompute is a claim, not a benchmark. This section publishes the attribution rule verbatim, works it through one anonymous advertiser step by step, and states plainly which parts of the pack we can hand over and which we cannot.

The fair-share (1/N) rule, verbatim

“When an opportunity was triggered by campaigns in N different segments, each segment is credited 1/N of the opportunity, its win, its loss and its amount alike.”

Formally, for a segment s and an opportunity o triggered by campaigns in N(o) distinct segments:

  • credit(s, o) = 1 ÷ N(o) if a campaign in s triggered o, otherwise 0.
  • Fair-share won customers in s = the sum of credit(s, o) over every won opportunity o.
  • Fair-share revenue in s = the sum of credit(s, o) × amount(o) over every won opportunity o.
  • Invariant: for any opportunity, the credits across all segments that triggered it sum to exactly 1. Roll-ups are therefore additive and the same deal is never counted twice when the data is sliced by channel, format and audience.

Worked example, one anonymous advertiser

Advertiser A is in the pipeline subset. Inside the window, two of A’s ad-triggered opportunities reach a decision. Both are won. The example uses no data from any advertiser: the counts are the structure of the rule, and the money is left as symbols precisely so nothing here can be mistaken for a published figure.

OpportunitySegments that triggered itNCredit to each segmentAmount credited to each
Opportunity 1 (won, amount A₁)LinkedIn × document × cold; LinkedIn × image × cold; Facebook × image × retargeting31/3 eachA₁ ÷ 3 each
Opportunity 2 (won, amount A₂)LinkedIn × document × cold11A₂

How the cell total is formed. Take the cell LinkedIn × document × cold. It appears in both rows, so A contributes:

  • Fair-share won customers: 1/3 + 1 = 4/3, or 1.33 customers. Not 2, opportunity 1 was not this cell’s alone, and not 1, which would discard a real touch.
  • Fair-share revenue: (A₁ ÷ 3) + A₂.
  • Cost per customer for the cell: the cell’s media spend S ÷ 4/3, which is 0.75 × S per customer from A’s contribution. Before every other advertiser in the cell is added the same way.
  • Triggered payback for the cell: total fair-share revenue ÷ S, summed across advertisers.
  • Additivity check: opportunity 1 gave 1/3 + 1/3 + 1/3 = 1 across the three numbers that triggered it. Sum the child numbers and you get the parent exactly once, which is the entire reason the equal split is used.
  • Then the gates fire. If A’s 4/3 is more than 40% of that cell’s total fair-share closed-won outcomes, the cell is suppressed and published as a hatched withheld cell, not estimated, not blended upward. With fewer than 25 advertisers and fewer than 30 closed-won deals behind it, it never publishes at all.

Where the rule is wrong, in writing. An equal split is wrong whenever one touch mattered more than another; 1/N has no opinion about which ad did the work. It is the honest default because it is additive and unarguable, not because it is true. An engagement-weighted upgrade is planned for a future edition, and a first-touch / last-touch sensitivity row, the same payback figure recomputed under both. Is the next item on this page’s backlog rather than something we can show you today.

What is in the reproducibility pack, and what is not

  • Published now: the aggregate dataset behind the explorer at /benchmark/data/benchmarks-2026.json under CC BY 4.0, carrying per-cell values, n, and the suppression thresholds; this dictionary and these formulas; the window, the snapshot date, the cost basis and the exclusions; and the kill list with the value each killed claim would have printed.
  • Enforced at build time: every figure in this report is wrapped in a claim marker and checked against a registry of expected values before publication. A number that drifts from the registry, or that belongs to a killed claim, blocks the build rather than reaching a page. That is why the same figure reads identically on every page it appears on.
  • Not published: row-level advertiser data, even deidentified. Our customer contracts do not permit it, and the suppression thresholds on this page exist precisely to stop individual advertisers being reconstructed from what we do publish. Saying “we cannot” is more useful to you than a synthetic file that reproduces nothing.
  • The standing offer: if you are an analyst who needs to verify rather than cite, write to benchmarks@metadata.io. We will walk a specific cell, its query, its gates, its n, with the people who built the pipeline. An independent audit of the CRM joins is the next credibility step we owe this report, and it has not happened yet.

Which attribution window, and what the alternatives would do

We use a 12-month trailing cohort: calendar-2025 media spend, matched to the CRM outcomes of the opportunities that spend triggered, with opportunity status read as a snapshot on 2026-08-16. Every pipeline figure in the report is that window and no other, and cohort age is printed alongside it.

The window is a choice, not a fact, and reasonable measurement people disagree about it. Our review panel split five ways. Rather than average the alternatives into a number nobody proposed, here is the split with the direction each option would push the headline 0.56x:

WindowThe argument for itWhich way it would move the number
12-month trailing cohort (ours)One full year of media matched to one full year of outcomes; the cohort is closed enough to compute and recent enough to act on.Baseline
6–18 months, matched to each advertiser’s cycleThe only window that respects a 6–18-month B2B cycle per advertiser rather than on average.Up. Late-closing 2025 deals would land inside the window; the effect is largest for enterprise-target advertisers.
18-month lookbackLong enough that almost no 2025-sourced deal is still open.Up, and by more than the option above.
180–365 daysKeeps the cohort tight enough that the figure describes current market conditions.Down at the 180-day end; unchanged at 365.
180 days for deals above $50k ACVSeparates fast mid-market motions from slow enterprise ones instead of blending them.Down for the large-deal segments, which is where most of the closed-won revenue sits.
90 days (the dissent)Matches what platforms report, so it is comparable with the dashboards teams already argue about.Down sharply, and it systematically undervalues top-of-funnel work. Printed here because it is the window most reports use without saying so.

Two consequences we accept in writing. Because deals still open on 2026-08-16 are excluded from both sides of the close rate and contribute nothing to triggered revenue, the published 0.56x will drift upward as 2025-sourced pipeline closes. It is a floor for this cohort, not a final figure. And because the window is fixed at 12 months for every advertiser, it is shorter than the sales cycle of the enterprise-target advertisers in the dataset, which is one reason the largest size bands look worse than the mid-market ones.

Confidence, and the questions this data cannot answer

Every dataset has a boundary. Publishing ours is cheaper than having a reader find it, and it is the single thing we would want from any vendor benchmark we were asked to cite.

How much confidence each part of the report carries

  • Highest, delivery and media metrics. Cost per lead, cost per click, CPM and conversion rate rest on large advertiser counts and platform-reported delivery data. They concentrate far less than revenue does, which is why they survived the sweep that removed twenty outcome claims.
  • Medium, CRM-joined outcome metrics. Payback, cost per customer and close rate are real CRM outcomes, but they depend on the fair-share convention, on a fixed window, and on a join we performed rather than an auditor. Every published outcome cell carries its n; several thin ones publish only because they clear 30 closed-won deals rather than 25 advertisers, and that is printed beside them.
  • Lowest, single numbers with small n. The one cell above 1x payback, 51–200 employees on LinkedIn at 1.16x across 27 advertisers, is a segment signal requiring validation, not a promise. Treat any single small-n cell as a hypothesis about where to look next.
  • No confidence intervals in this edition. We print n on every cell but not an interval, which is a real gap and the most common criticism this report receives from analysts. Intervals on the pipeline cuts are the top methodological item for the next edition.

Questions this data cannot answer

  • Would this revenue have happened anyway? Nothing here is incrementality. We run no holdouts in this dataset; every figure is an attributed, observational 2025 association.
  • Does changing my allocation change my outcome? The allocation percentiles describe what advertisers did, not what moving budget would do. The within-advertiser panel that would answer it has not been run.
  • Is the market getting better or worse? This is a single-year snapshot. It cannot show a trend, and any year-over-year claim built on it would be invented.
  • How does my vertical, country or currency perform? Not disclosed at that grain: most vertical and geography numbers fail the thresholds, and the ones that survive would identify individual advertisers.
  • What do advertisers who do not use this platform see? Unknown. The panel is Metadata-platform advertisers, 2025, vendor-joined CRM, credit split evenly, a specific population, not the B2B market.
  • What is the profit, margin or lifetime value of these customers? Out of scope. We measure closed-won revenue on a media-only cost basis; no margin, renewal or LTV data enters the pipeline.
  • What happened in the suppressed numbers? We will not say. A suppressed cell is withheld, never estimated, and asking us for the underlying number is asking us to publish one advertiser’s results.
  • What would the headline be under a different attribution rule? Not published in this edition. First-touch and last-touch sensitivity rows are on the backlog; today the report shows 1/N only, and says so.
  • Where will the 2025 cohort finish? Higher than it reads. Deals still open on the snapshot date count as nothing, so the payback figure is a floor for this cohort and will drift upward as pipeline closes.
  • How should I allocate my budget? Not a question this dataset can answer. It is descriptive and comparative: it tells you where you sit, never what to do. Anyone converting a percentile into a target, including us. Is adding an opinion to the data.

What we refused to publish, twelve entries

One advertiser produced $33.7M of a $34.1M segment's closed-won revenue. It would have been our best headline. We killed it.

Twelve entries are documented here. Five draft claims failed the standards on this page before publication. One was published, re-checked, killed, and then earned its way back as a corrected metric after the source system re-exported the data. One is a pre-registered outlier exclusion that cost us the most quotable number in the report. One is the outcome-concentration cap firing across the whole dataset on 2026-08-17. The ninth is a bug in our own arithmetic, found the same day and corrected in public rather than quietly restated. The tenth is a scope number we had wrong for weeks. The eleventh is an advertiser count that described a wider group than the cost figure it sat beside. The twelfth is a lead count in our own citation line that came from an export we no longer use, caught by an audit that checks the numbers our claim registry never sees.

We publish these because the quickest way to stop trusting a benchmark is to catch it keeping a number it shouldn’t, and because the reasons are instructive about how thin B2B data gets once you segment it. This section names what was removed and why, without reprinting the withdrawn figures themselves: a number we will not stand behind has no business being quotable, even as an illustration.

Kill 01 of 12
Killed, 3 advertisers in the pipeline cell (below the advertiser minimum); one advertiser at 57% of segment spend (cap 40%) and 99% of closed-won revenue

The "enterprise sweet spot" (5,001–10,000 employees), two claims died here

The draft's flagship: companies with 5,001–10,000 employees were the dataset's best segment, with a payback multiple above every other size band and a cost per customer a small fraction of its neighbours. It was the most quotable finding in the report.

Then we looked at the composition. The segment held five advertisers, only three of them in the pipeline cell, and a single advertiser accounted for $33.7M of the segment's $34.1M in triggered closed-won revenue. That is one customer's exceptional year wearing a segment's name, a case study, not a benchmark. Both numbers were removed, and the size-band story was rebuilt on the four bands that pass every threshold.

Kill 02 of 12
Killed, 3 advertisers (minimum 5); $28K qualifying spend (floor $50K); one advertiser at 60% of the cell (cap 50%)

Instagram's cybersecurity bargain

The draft said Instagram delivered dramatically cheaper cybersecurity leads than LinkedIn. The kind of contrarian stat that gets a report shared. The cell behind it held three advertisers and about $28K of qualifying spend, with one advertiser at 60% of it. Worse, the cybersecurity industry cell itself is dominated by a single account at roughly 70% of the industry's spend, so even the industry-level version of the story could not stand. Cybersecurity appears in the report only where numbers pass every threshold.

Kill 03 of 12
Killed, one advertiser at 62% of Meta landing-page spend (cap 50%)

The Meta landing-page "virtual tie"

The draft claimed that on Meta, landing pages trail lead-gen forms by only 2%, an argument for testing landing pages aggressively. One advertiser was 62% of Meta's landing-page spend, so the comparison mostly measured that advertiser. We cannot tell you how Meta landing pages perform in general; we can only tell you how one company's did, and that is not what a benchmark is for. The LinkedIn form-versus-landing-page comparison survives because both of its numbers pass.

Kill 04 of 12
Killed, one advertiser at 74% of Conversation-ad landing-page spend (cap 50%)

The LinkedIn Conversation-ads inversion

The draft's most surprising format stat: Conversation ads paired with landing pages appeared to sharply outperform the same ads paired with lead-gen forms. The landing-page side of that comparison was 74% one advertiser. The lead-gen-form side of the cell survives in the dataset, but with only one publishable side there is no comparison to make, so the claim is gone.

Kill 05 of 12
Killed, one advertiser at 72% of Facebook video landing-page spend (cap 50%)

Facebook video's destination preference

The draft said Facebook video ads perform slightly better with landing pages than with lead-gen forms. The landing-page cell was 72% one advertiser. A single-digit percentage gap resting on a single dominant account is noise, not a finding.

Kill 06 of 12
Killed. After publication: the denominator was wrong. The export contained no closed-lost opportunities. Redeemed 2026-08-16, re-exported with closed-lost, republished as a won-versus-lost rate

The “close rate” that wasn’t, six published stats died here, then came back corrected

We published a “close rate” for a week. Then we checked what it divided. The export contained won and still-open opportunities, no closed-lost. Won ÷ (won + still-open) is not a close rate, so on 2026-08-15 we killed all six published close-rate stats and wrote here: if the source system can export closed-lost, true close rates return.

They returned. On 2026-08-16 the source system re-exported the opportunity data with closed-lost included, under fair-share (1/N) multi-touch attribution. We recomputed everything, and the true rates are now published across the report. The correction is the proof the process works: the killed metric put the close rate about three times higher than the corrected one, and it crowned video the best-closing format when the corrected rate makes video the worst of any format. A denominator error had turned the report's weakest format into its hero stat. That is why we kill numbers instead of hedging them: the fake and the true rate do not just differ in size, they point in opposite directions.

Kill 07 of 12
Excluded, pre-registered outlier policy: one advertiser’s CRM records transactional deals whose shape is categorically unlike the rest of the dataset. Cost: the best claim in the draft

The advertiser we removed, and the best claim in the draft

One advertiser in the dataset runs a transactional CRM: thousands of small, fast-closing opportunities, where every other advertiser records tens of considered B2B deals. Under fair-share attribution that one account dominated outcome counts across dozens of numbers at once, not by spending more, but by closing a different kind of thing. Our pre-registered outlier policy says a segment measures a market only if its members are measuring comparable events, so the advertiser was excluded from all outcome metrics. We do not name it; it did nothing wrong.

The exclusion was expensive. The draft’s most quotable number was a combination cell, LinkedIn × lead-generation form × prospecting, at a payback multiple and a cost per customer far better than anything this report now publishes. That number was largely the excluded advertiser’s transactional volume wearing a media strategy’s name. After exclusion the same cell fails the outcome-concentration cap outright and is suppressed, so the "best corner of the dataset" page was retired rather than restated with a smaller number. What replaced it is duller and survives a hostile read: the one cell that cleared 1x payback is 51–200 employees on LinkedIn, at 1.16x and $35,288 per customer across 27 advertisers.

Kill 08 of 12
Killed 2026-08-17, the 40%-of-outcomes half of the concentration cap, applied after the exclusion above. Twenty claims tombstoned; three published pages retired

The outcome-concentration sweep, twenty claims and three pages

Removing the outlier changed which numbers could survive the cap, so we re-ran the gate on every outcome cell in the report. Twenty claims failed: after exclusion, one advertiser held more than 40% of the remaining closed-won revenue in each of them. The casualties are the ones a reader would most want: retargeting versus prospecting cost per customer, the format payback ranking (document, video and conversation ads), Facebook and Instagram channel payback, the 51–200 and 201–500 all-channel cost-per-customer rows, the combination-cell payback, and four of the format and audience close rates.

Three published insight pages rested on those numbers and could not be honestly patched, so they were retired to redirects rather than quietly edited: the retargeting page, the video-format page and the combination-cell page. The remaining pages carry hatched, withheld numbers wherever an outcome number used to sit. That is deliberate: an empty cell with a reason is information, and an estimated cell is not. Media metrics were untouched by this sweep. Cost per lead, cost per click and conversion rate concentrate far less than revenue does, which is exactly why the two caps have different thresholds.

Kill 09 of 12
Corrected 2026-08-17. Our own denominator bug: pipeline metrics were divided by media spend that still included the excluded advertiser after its outcomes had been removed

The pipeline denominator bug, and why we are publishing it instead of restating

When we excluded the outlier advertiser from outcome metrics, its spend stayed in the pipeline denominator for one build. The numerator lost that advertiser’s closed-won revenue; the denominator kept its media dollars. Every pipeline ratio in the report was therefore computed against a denominator that was too large, in a knowable direction: payback came out too low, and cost per customer came out too high.

The corrected figures are 0.56x payback and $58,887 per customer. Both were live in a slightly wrong form for part of one day. The pipeline subset is $29.4M of spend, 154,000 CRM-joined leads and 127 advertisers. Nothing else moved: the close rate, the size-band ordering and every media metric are unaffected, and no argument anywhere in the report turns on the third decimal place.

We are listing a two-hour arithmetic error in the same section as the claims we refused to publish, because the alternative, changing the number and saying nothing. Is the practice this whole protocol exists to argue against. A benchmark that never reports a correction is not a benchmark with no errors. It is a benchmark that does not tell you about them.

Kill 10 of 12
Corrected 2026-08-17, a scope number, wrong for weeks: we counted accounts in the export instead of advertisers with spend

“175 advertisers”, 22 of them spent nothing

Every draft of this report, and the citation line we asked people to use, said 175 advertisers. The source export does contain 175 accounts. But 22 of them recorded no 2025 spend at all, which means they contributed nothing to any rate, ratio or aggregate on any page. The panel size in every published figure is 153 advertisers, and it always was, we were quoting the export’s row count as if it were a sample size.

Total spend is unchanged at $57.6M, because accounts with no spend add no spend. No rate, cost or payback figure moves. What moves is the honesty of the denominator we asked readers to cite, which matters more than the arithmetic here: a sample size inflated by 14% is the kind of small, comfortable error that a report with no correction policy never has to notice. The citation line now reads n=153 advertisers, and 175 appears in this report only as the account count, only where the distinction is explained.

Kill 11 of 12
Corrected 2026-08-17. The advertiser count beside a cost figure was counted on a wider group than the cost itself

“$346 a lead across 100 advertisers”, the cost came from 65 of them

This report compared LinkedIn’s built-in forms against landing pages: $193 a lead against $346, a 44% gap. The cost figures are computed only on campaigns whose goal was to collect leads, which is the only fair way to price a lead. The advertiser counts printed beside them were not. The landing-page count was taken across every campaign goal, so we published a lead cost drawn from 65 advertisers while telling readers it rested on 100.

The gap itself does not move: $193 against $346 is unchanged, and both figures still clear every publication rule. What moves is how well-supported the landing-page side looked. Quoting the larger number made the comparison appear better evidenced than it was, and it broke this report’s own rule that a figure and its sample size must describe the same group of advertisers. Every landing-page reference now reads 65 advertisers, and the advertiser count is gated by the same filter as the cost it sits beside, so a future refresh cannot separate them again.

This one is ours twice over: an earlier pass had “corrected” this count in the wrong direction, from 65 to 100, on the reasoning that more advertisers ran landing pages. They did. Just not in the campaigns the $346 was measured on.

Kill 12 of 12
Corrected 2026-08-18. A scope number in the citation line that no check was looking at

The lead count in our own citation line came from an export we no longer use

The report described its own scope as “153 advertisers, $57.6M” and a lead count, in the hero, in the search description and in the methodology. The first two figures are recomputed from the raw data on every build and gated against a registry. The third was typed, and it was left behind when the source data was re-exported. On the data this report is actually built from, the count is 211,000 leads, every campaign objective, rows carrying spend on a real channel, the same basis as the $57.6M and the 153 advertisers.

Nothing computed from it moves, because nothing was computed from it: no rate, cost or ratio on any page divides by this number. It is a scope figure, which is precisely why it survived. It sat in the citation line, where it was most quotable and least checked. It is now produced by the pipeline and gated like every other published figure.

How we found it: a new audit that inverts the usual test. Instead of asking “does each marked number match the data?”, it asks “does every number in the unmarked copy, the structured data, the search descriptions, the share cards, the chart series, exist in the data at all?” This was the first thing it caught.

The extension: four things this report now refuses by standing rule

The eleven entries above are numbers we removed. These four are classes of number we will not print again, adopted with Version 2026.1 after an analyst review of the draft. They are listed here rather than as new entries because nothing was killed to create them. They govern what can enter the report in the first place.

  • No bare multiples, anywhere. Every customer-reported figure is set in type with its unit, the measure it was computed on, and a link to the study that published it. A number like “122X” standing alone is a poster, not a finding.
  • No averaging of customer stories. There is no “our customers average” figure and no “customers see X to Y” range in this report. Averaging outcomes that were selected for being good produces a number with no population behind it.
  • No pipeline ÷ spend called ROI. Pipeline is not revenue. Any such figure is relabelled a pipeline-to-spend ratio before it is printed, including when a customer published it as ROI.
  • No percentile pairing unless the metrics match. A cost-per-lead result may be read against the cost-per-lead distribution. An influenced-pipeline multiple pairs to nothing here and gets a disclosure block instead of a percentile. Influenced means the ad touched the account at any point in the deal cycle; it does not mean the ad sourced the deal. This is not comparable to the 0.56x triggered benchmark.

All four are enforced in the tail chapter, where the twenty-four published customer stories live with their disclosure fields attached, segregated from the benchmark on purpose.

The suppressed numbers still exist in our warehouse; they are simply not benchmarks. If you hit a suppressed segment in the explorer, the label tells you which rule it failed. If a number this good ever comes from one company, it belongs in that company’s case study rather than an industry report, and if you think any of these calls was wrong, the address is above.

How fresh is this data?

This edition is Version 2026.1, calendar-2025 data, published in 2026, rebuilt annually. The numbers on these pages will not drift during the year, and we do not dress an annual dataset up as a live feed. There is no "updated daily" badge here because that would be false. When the 2026 dataset is complete, the next edition replaces this one, built by the same pipeline under the same thresholds.

How to cite this data

Cite as: Metadata 2026 B2B Ad Spend Benchmark, Version 2026.1 (n=153 advertisers, $57.6M, 2025). Https://metadata.io/benchmark-report-2026 The aggregate data behind the explorer is published at /benchmark/data/benchmarks-2026.json under CC BY 4.0, use it freely with the citation above.

Please do not cite suppressed numbers or the killed claims above as benchmarks: a segment absent from the published JSON failed the thresholds on this page, and quoting it defeats the purpose of the thresholds. Quote the version too, Version 2026.1 is what these numbers are, and a later version may correct them in public, as this one does.

Back to the 2026 benchmark report →