Skip to main content
Use this guide to analyze lifetime value (LTV) by cohort (typically first purchase month) and compare cohort quality over time.

In the dashboard

Open the LTV & Retention module. It groups customers into cohorts by first-order month, defaults to net revenue, and applies filters such as order type, sub-channel, and discount code to the acquisition order. Use the Slice filter to limit revenue to Subscription, One-time, or All product sales. The rest of this page covers the same analysis in the warehouse.

Define LTV (before you chart)

Decide which revenue definition you want to use consistently:
  • Net revenue (common for LTV): order_net_revenue
  • Gross revenue: order_gross_revenue
If you include refunds/returns/cancellations, be explicit and keep the same definition across dashboards.

Build the analysis (high level)

  1. Filter to SourceMedium-valid orders (is_order_sm_valid = TRUE).
  2. Determine each customer’s cohort (first valid order date).
  3. For each cohort, compute:
    • Total net revenue (or gross revenue)
    • Distinct customers
    • LTV = total revenue / distinct customers
  4. Add cohort aging (e.g., “months since cohort start”) if you want true cohort curves.

Choose the time horizon

A fixed horizon limits the revenue included after each customer’s first valid order. For example, 90-day LTV includes eligible revenue within the requested 90-day horizon, then divides that revenue by the cohort’s distinct customer count. Use the same elapsed horizon for every cohort you compare. Newer cohorts that have not reached the full horizon are incomplete and should not be compared with mature cohorts.

Choose what “channel” means

“LTV by channel” can refer to two different dimensions:
  • Commerce sales channel (sm_channel), such as online store, retail, or marketplace: build the cohort from obt_orders so the requested day horizon and first-order channel stay aligned.
  • Marketing acquisition source or medium: use rpt_cohort_ltv_by_first_valid_purchase_attribute_no_product_filters when the required acquisition dimension is available. Its months_since_first_order field represents monthly cohort horizons.
Name the intended channel dimension in the analysis. Do not substitute commerce sales channel for marketing acquisition source/medium, or combine their results as though they have the same grain.

Common pitfalls

  • Comparing cohorts at different maturity (newer cohorts are incomplete).
  • Mixing revenue definitions when validating against other reports.
  • Not filtering out excluded/invalid orders.

Next steps