Documentation menu

Revenue and cohorts

This page is the reference for how Catchbase reports revenue and ROAS. If the ROAS number on your dashboard looks lower than you expected, or if yesterday's revenue keeps creeping up each time you check it, the cause is almost always cohorts. Read this page once and the behaviour stops being surprising.

Revenue is attributed to install date

All revenue you see in Catchbase is grouped by the day the user installed the app, not the day the revenue was earned. If someone installed on Monday and made a purchase on Thursday, that purchase counts against Monday.

This is the right way to measure paid acquisition, because it tells you how much revenue your ad spend on Monday eventually produced. But it has one consequence: a given install day's revenue is a moving number. On Monday, you know the D0 revenue. A week later, you also know the D7. A month later, the D30. The revenue keeps accumulating as those users keep using the app.

The D windows

Catchbase exposes four cohort windows, plus a lifetime number:

  • Revenue D0. Revenue generated on the install day itself. Mature after zero days: whatever you see is the full answer.
  • Revenue D7. Revenue generated within seven days of install.
  • Revenue D14. Revenue generated within fourteen days of install.
  • Revenue D30. Revenue generated within thirty days of install.
  • Lifetime Revenue. All revenue ever attributed to the install cohort, with no window.

These are not different measurements of the same thing at different times. They are different metrics. D7 ROAS and D30 ROAS are both useful, and serious teams pick the window that matches their payback horizon.

Why your recent days look thin

Here is the part that trips people up. Your D7 ROAS for the past seven days will be incomplete, because the users who installed in those days are still installing and still generating revenue. Their seven-day window has not finished yet.

If Catchbase simply showed those incomplete days, your recent ROAS would always look bad, and you would make decisions on numbers that were going to move. So Catchbase excludes the immature cohorts from analysis:

  • For D7 metrics, the most recent seven days are held back.
  • For D14 metrics, the most recent fourteen days are held back.
  • For D30 metrics, the most recent thirty days are held back.
  • For D0, nothing is held back: the window is already closed.

What you see on a D30 ROAS dashboard is the ROAS for cohorts that are at least thirty days old. That is deliberate. It means the numbers are stable, and the decisions you make from them are decisions you would still make a day later.

Lifetime revenue is different

Lifetime revenue has no fixed window. By definition, recent install dates will always understate lifetime revenue, because the future events that belong to them have not happened yet. Catchbase does not trim immature cohorts from lifetime revenue, so expect the newest cohorts to grow quietly in the background as new data arrives. Lifetime is a direction, not a closed number.

What this means for reconciliation

If your MMP shows a revenue figure for yesterday and Catchbase shows a lower one (or none at all), the most common cause is cohort maturity. The MMP dashboard usually shows revenue by event date. Catchbase shows revenue by install date, with the immature tail trimmed. Both are correct views of different questions.

If the gap persists after the window matures (for example, D7 ROAS disagreeing on install dates more than a week old), see Unusual metrics.

References

Cohort semantics and the cohorted-revenue fields come from each MMP's canonical documentation. Catchbase's dashboard names (Revenue D0, D7, D14, D30) are normalised labels; the underlying definitions are each MMP's own.

Related