← All guides
DANGER ZONE 0% 25% 50% 75% 100% Week 6: ~11% recognized 0 8 16 24 Weeks since first touch
Attribution

The Attribution Debt Framework for B2B PPC

Andy Hendricks Aug 25, 2026 10 min read

The B2B PPC problem

Here's a scenario every B2B marketer running paid search has lived through. A campaign launches, then six weeks in, the dashboard shows a cost per acquisition three times target. The team calls it a failure and the budget gets reallocated to a different channel.

Eighteen weeks later, if the campaign had been given time to mature, half those "acquisitions" would have closed into six figure deals. The campaign wasn't underperforming. It was never given enough time to finish reporting its own results with a longer sales cycle. This happens constantly with B2B campaigns. Teams act on data that is incomplete.

Reported CPA in long-cycle B2B is a function of campaign age, not just campaign quality, and no ad platform can measure that.

Why this happens

This isn't a mystery once you look at how attribution windows are actually built. Google Ads defaults to a 90-day click-through conversion window. GA4's standard lookback windows top out in a similar range. Most CRMs still calculate marketing performance off a "last touch before MQL" model that has no concept of what happens after that touch.

Every one of those defaults was built for short-cycle commerce, where someone clicks an ad and buys inside a week. None of them were built for a 4 to 9 month enterprise sales cycle with a buying committee attached to it.

This isn't something better attribution modeling fixes. You can run a perfect multi-touch model, weight every touchpoint correctly, and it still can't report revenue on a deal that hasn't closed yet. Attribution debt is a time lag problem, and no model can see into the future.

The framework

Defining attribution debt

Attribution Debt: the gap between a campaign's reported performance and its true eventual performance, created by the time lag between spend and revenue recognition.

Think of it like technical debt. It's not an error you fix, it's a structural cost that resolves itself over time. The problem isn't that the debt exists, it's teams treating a temporary, resolvable gap as if it were a permanent verdict on the campaign.

The debt curve

You can build one of these for any account with enough closed-won history. Pull closed deals, group them by weeks (or months) between first touch and close date, and plot the cumulative percentage of eventual pipeline recognized at each point.

Almost every long-cycle B2B curve comes out as an S-shape: slow accrual in the first month or two while deals are still in early stages, a steep middle section as the bulk of the pipeline matures and closes, then a long tail of stragglers.

The exact shape is specific to your sales cycle length, deal size tier, and vertical. For a worked example of an actual debt curve built from real deal data, see the Attribution Debt Framework, applied to a real account.

Debt-adjusted CPA

Debt-Adjusted CPA = Reported CPA × (Campaign Age ÷ Average Sales Cycle Length), capped at 1.0 once Campaign Age ≥ Average Sales Cycle Length

Worked example: a 26-week average sales cycle, a campaign that's 6 weeks old, and a reported CPA of $900.

$900 × (6 ÷ 26) = $208 debt-adjusted CPA

Immediately after the formula, the limitation is worth naming directly: this treats the debt curve as a straight line, when real debt follows the S-curve above. The linear version is the accessible entry point. For anyone with enough closed-won data, the upgrade is substituting the actual cumulative percentage from their own debt curve at that campaign age, instead of a straight ratio.

Linear correction (formula) Curve-based correction (actual)
0% 25% 50% 75% 100% $208 (linear) $99 (curve-based) Week 6 Week 26

On the same $900 reported CPA, the linear formula and a curve-based correction land nearly $110 apart at week 6 — the exact mid-cycle gap the linear version can't see.

Walkthrough: building your own debt curve

  1. Pull every closed-won deal from the CRM with a created-date and a close-date.
  2. Calculate the gap in weeks (or months) between first touch and close for each deal.
  3. Group deals into weekly or monthly cohorts based on that gap.
  4. Calculate cumulative percentage of total closed-won value recognized by each bucket.
  5. Plot your curve.

Minimum viable dataset

If there isn't enough closed-won volume yet to build a curve you'd trust — a rough floor to suggest is at least 20 to 30 closed deals — say so directly instead of skipping past it. In that case, the linear formula above is the fallback.

Debt traps

Trap 1: killing a campaign mid-cycle

Pausing or cutting budget off a campaign based on raw reported CPA before the sales cycle has had time to play out. This is the single most common and most costly trap.

Trap 2: comparing channels with different lag profiles

Putting a top-of-funnel paid social campaign next to a bottom-of-funnel branded search campaign on the same attribution window, then calling one the loser. They accrue debt at completely different rates by design.

Trap 3: chasing a moving target

Reallocating budget every month based on numbers that haven't finished accruing, then reallocating again next month when last month's number "improves." The number was never wrong. It just hadn't finished counting.

Takeaways

Limitations

Applied case study

See this framework run against a real 47-deal cohort, with the debt curve and CPA correction both worked through on live account data, in the Attribution Debt Framework, applied to a real account.

FAQ

Frequently asked questions

Does attribution debt apply to short sales cycles or B2C?

Not really. This framework is built for long sales cycles. Short-cycle or self-serve B2B resolves its debt in days, not months.

How is attribution debt different from multi-touch attribution?

Multi-touch attribution weights every touchpoint in a deal. Attribution debt deals with something a touchpoint model can't fix on its own: a deal that hasn't closed yet has no revenue to report, no matter how well you weigh the touches leading up to it. Use attribution debt as a correction layer on top of whatever model you're already running.

What does an attribution debt curve actually look like?

An S-curve. A slow trickle in the first month or two while deals are still early, a steep middle stretch as most of the pipeline closes, then a long tail of stragglers. The exact shape shifts with your sales cycle length, deal size, and vertical.

Can attribution debt explain why ROAS keeps climbing the longer a campaign runs?

Yes, and it's rarely because performance actually improved. Reported ROAS climbs as time passes and more deals close, which is why the same cohort's ROAS at week 2 and week 20 can look like two completely different campaigns.