Lifetime Value (LTV)
ltv
Overview
Lifetime Value (LTV) represents the average order revenue per customer, for orders placed within the selected timeframe.
LTV = Order Revenue / Unique Customers
The calculation is based on data from the Orders table.
Alternative LTV DefinitionsThe formula above is a basic definition that matches the LTV tile on the Summary page. However, LTV can also be calculated using more advanced methods—such as cohort-based models, custom time ranges, or by specific acquisition channels.
See for example: Lifetime Value by Day Range (60, 90, 180, 365)
To get an LTV value based on your custom parameters, ask Moby.
Detailed Breakdown
The formula above is derived from the following components:
Order Revenue = SUM(order_revenue)
--> Orders table
Unique Customers = uniq(o.customer_id)
--> Orders table
Insights and Actions
Lifetime Value (LTV) shows the average revenue generated per customer, guiding decisions on acquisition spend and retention strategy:
- Assess Acquisition Profitability: Compare LTV to your cost per acquisition; if LTV exceeds acquisition cost, campaigns are generating sustainable value.
- Prioritize High-Value Segments: Segment customers by LTV to focus retention efforts (e.g., loyalty programs or VIP offers) on your most profitable cohorts.
- Boost Repeat Purchases: Use LTV trends to test cross-sell, upsell, and subscription offers aimed at extending the customer relationship and increasing revenue per buyer.
Related Metrics
- Blended CPA: Provides the average cost to acquire a customer, serving as a benchmark to ensure LTV outweighs acquisition spend.
- Returning Customers Percent: Indicates the share of repeat buyers, offering context for how repeat purchasing drives LTV growth.
- Average Order Value (AOV): Shows revenue per transaction; increasing AOV directly raises LTV when purchase frequency remains constant.
Example Use
Prompt
Show me the average LTV for customers over the past year
Response

Query
SELECT
COALESCE(
SUM(ot.order_revenue) / NULLIF(uniq (ot.customer_id), 0),
0
) AS ltv
FROM
orders_table AS ot
WHERE
ot.event_date BETWEEN CURRENT_DATE() - 365 AND CURRENT_DATE() - 1;
Updated 18 days ago