← All articles
DANGER ZONE 0% 20% 40% 60% 80% 100% 0 5 10 15 20 Weeks since first touch
Attribution

The Attribution Debt Framework In Action

Andy Hendricks Sep 2, 2026 7 min read

The problem, applied

The Attribution Debt Framework makes the case that reported CPA in long-cycle B2B is a function of campaign age, not just campaign quality. I pulled six months of Google Ads and CRM data from a live B2B account to build the curve with real metrics and see how the framework holds up in the real world.

The setup

The account is a B2B manufacturer that sells equipment to government municipalities, dealers, and fleet operators. Google Ads is the main lead generation channel this account runs outside of its dealer network and repeat customer base. Here's the PPC-driven cohort for the first half of 2026:

47closed-won deals
$329,117total deal value
$32,601.67ad spend

The curve

Grouping those 47 deals by weeks between first touch and close date, and plotting cumulative percent of eventual value recognized at each point, produces the curve below.

DANGER ZONE 0% 20% 40% 60% 80% 100% 0 5 10 15 20 Weeks since first touch

Debt curve for the Google Ads cohort, H1 2026 (n=47). Danger zone shaded over the first four weeks.

The shape is a real S-curve: a fast initial trickle, a steady climb through the middle weeks, and a long tail that doesn't fully resolve until week 20. This is exactly what you'd expect from a business with a multi-week sales cycle and a mix of deal sizes.

The CPA payoff

If you'd evaluated this exact cohort at week 2, only 44.7% of the eventual deals had closed. Here's what the numbers looked like at that moment, compared to reality:

MetricValueGap from true CPA
True eventual CPA (all 47 deals closed)$693.65—
Reported CPA at week 2$1,551.80+124%
Linear debt-adjusted CPA$620.72−10.5%

Reported CPA at week 2 makes the campaign look like deals are costing more than double what they actually cost. The linear formula from the guide gets meaningfully closer, but still overcorrects by about 10%.

The curve-based correction, using this account's actual empirical distribution instead of a straight-line assumption, is what closes that remaining gap — by definition, it tracks the real recognized value at each point rather than approximating it with a straight ratio.

What it means for campaign decisions

Picture a team looking at this account in week 2. Reported CPA is $1,551.80 against whatever target they set. That's the kind of number that gets a campaign paused, or budget quietly reallocated to a channel that looks healthier that week. This is Trap 1 from the framework guide, killing a campaign mid-cycle, and it would have been the wrong call. The campaign wasn't failing, it just didn't have time for deals in a long sales cycle to mature.

Reported ROAS triples from 3.33x to 10.1x purely as a function of time passing, not because anything about the campaign's performance changed.

The same distortion impacts ROAS. Using the same cohort's real revenue and spend, here's reported ROAS calculated at each point in the campaign's life:

0x 2x 4x 6x 8x 10x 3.33x 4.32x 5.94x 7.37x 8.28x 10.1x Week 1 Week 2 Week 4 Week 6 Week 8 Week 20 (final)

Reported ROAS for the same 47-deal cohort, calculated at each campaign age.

Reported ROAS triples from 3.33x at week 1 to 10.1x by week 20, purely as a function of time passing, not because anything about the campaign's performance changed. A team checking in early and seeing a 3.33x ROAS might read that as a mediocre account and start asking hard questions. The account was never mediocre, deals just needed time to close.

Limitations