Atterna
RUEN
Get access

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. 1

    Decide what “gone” means for this product: a cancelled subscription, or no order in 90 days.

  2. 2

    Divide by who was there at the start of the period.

  3. 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?”
Paste a real AI answer into the checker — it writes these questions for you →

Read next

Examples use Meridian, Atterna’s fictional practice marketplace.