30-day payback is one of the laziest defaults in marketing analytics.

It sounds clean, so people keep using it.

If CAC pays back in 30 days, the channel is “healthy.” If not, something is wrong.

The problem is that for a lot of businesses, 30 days tells you almost nothing.

If you sell products people reorder every few days, fine. If you work with e-commerce that has a 4-6 week purchase cycle, or SaaS where revenue expands slowly, 30-day payback is mostly premature judgment.

You’re evaluating the cohort before it had a real chance to mature. A better approach is to look at payback by cohort over time.

In BigQuery, the logic is straightforward:

  • find each user’s first visit date
  • track revenue from that point forward
  • calculate cumulative revenue by cohort at day 7, 14, 30, 60, 90, and so on
  • compare that curve to CAC

That gives you something much more useful than a single checkpoint.

You stop asking, “Did it pay back in 30 days?” And start asking, “When does this cohort actually pay back?”

That question matters because channels can look similar at day 30 and completely different by day 90.

I’ve seen teams scale paid social because 30-day ROAS looked good, only to realize later the cohort basically flatlined. On paper, it looked efficient. In reality, payback was 120+ days.

That changes how you set budgets, how aggressively you scale, and how much patience a channel actually deserves.

Want all my best GA4-BQ queries in one place? I turned them into a Chrome extension — top SQL queries you can search and copy in seconds.

Go here to install it for FREE.

Prefer the web version? It’s here.