Churn
The share of customers who stop using or paying in a period. It is the complement of retention for the same group and window.
Formulachurn = active last period and not active this period ÷ active last period
How we work it through
- 1
Decide what “gone” means for this product: a cancelled subscription, or no order in 90 days.
- 2
Divide by who was there at the start of the period.
- 3
Check a longer window before calling it churn.
On the practice dataset
The query we run on Meridian, Atterna’s practice marketplace, and what it returns.
-- customers who bought in May 2026 and not in June
WITH m AS (SELECT DISTINCT customer_id,
date_trunc('month', created_at) AS mo
FROM meridian.order_history WHERE status = 'paid')
SELECT COUNT(*) FILTER (WHERE nxt.customer_id IS NULL) * 1.0 / COUNT(*)
FROM m cur
LEFT JOIN m nxt ON nxt.customer_id = cur.customer_id
AND nxt.mo = cur.mo + INTERVAL 1 MONTH
WHERE cur.mo = '2026-05-01';Result474 of 615 (77%) — for a shop, “no order next month” is not the same as “gone”
The common trap
Dividing by the customer count at the end of the period instead of the start.
When an AI answers
An AI assistant
“Monthly churn is 77%, customers are leaving.”
- What it didn’t know
- It applied a subscription definition to a marketplace where people buy every few months.
- Ask back
- “What gap without an order means a customer is gone for us, and why that one?”
Read next
Examples use Meridian, Atterna’s fictional practice marketplace.