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.
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
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
Worked example: a 26-week average sales cycle, a campaign that's 6 weeks old, and a reported CPA of $900.
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.
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
- Pull every closed-won deal from the CRM with a created-date and a close-date.
- Calculate the gap in weeks (or months) between first touch and close for each deal.
- Group deals into weekly or monthly cohorts based on that gap.
- Calculate cumulative percentage of total closed-won value recognized by each bucket.
- 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
- Reported CPA in long-cycle B2B is a function of campaign age, not just campaign quality.
- Attribution debt isn't an error to fix, it's a cost to price in.
- A campaign that looks like a failure at week 6 and a win at week 24 didn't change, the deals just had time to mature.
- Compare channels by their debt curve, not by a shared attribution window that treats them identically.
- The goal isn't eliminating attribution debt. It will always exist. The goal is to approach campaign performance with better understanding.
Limitations
- The Debt-Adjusted CPA formula is a linear approximation. Real debt follows an S-curve, not a straight line.
- Doesn't apply to short-cycle or self-serve B2B, where debt resolves in days rather than months.
- Needs enough closed-won deal volume to build a reliable curve. Small pipelines produce noisy, unreliable curves.
- Doesn't replace multi-touch attribution modeling. It's a correction layer on top of whatever model is already in place.
- A single large enterprise deal can distort a small dataset's curve shape.
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.