Table of Contents >> Show >> Hide
- First, agree on what you’re measuring: logo vs revenue
- The three buckets (and why everyone keeps mixing them up)
- A practical classification framework you can actually implement
- How 100% discounts should show up in SaaS metrics
- Concrete examples (because definitions are cheap)
- Edge cases that deserve their own sticky note
- Data model tips: how to keep your pipeline from lying (accidentally)
- What to do after you classify it (because labels don’t fix churn)
- of real-world experience: where teams usually go wrong (and how to fix it)
- Conclusion
If you’ve ever watched a CFO, a Head of Sales, and a Customer Success lead stare at the same dashboard like it’s a haunted house mirror, odds are the fight started with one question: “Is this 100% discount a downgrade… or churn?”
On paper, it sounds simple: a customer pays less, that’s a downgrade; a customer leaves, that’s churn. In real life, you’ll meet the customer who’s “still active” but pays $0 because a coupon went nuclear, and suddenly your Monthly Recurring Revenue (MRR) looks like it tripped over a Lego.
This guide helps you classify 100% discounts, downgrades, and churn in a way that’s consistent, auditable, and useful for decision-making. We’ll define the categories, show where they overlap, and give you a practical framework (with examples) so your reports stop arguing with your instincts.
First, agree on what you’re measuring: logo vs revenue
Logo retention (customer count) vs revenue retention (MRR/ARR)
A customer can stick around (logo retained) while spending less (revenue contraction). That’s why teams often track both customer churn and revenue churn. When you don’t separate them, you end up calling every revenue dip “churn” and every churn event “a pricing issue.” Neither is a good look.
MRR movements make classification easier
Most subscription analytics systems break recurring revenue changes into standard movements: New, Expansion, Contraction (downgrades/downsells/discounts), Churn, and Reactivation. If you adopt this structure, classification becomes less philosophical and more mechanical.
What a “100% discount” actually means
“100% discount” is not one thing. It can be:
- A promo coupon (limited time, intended to convert to paid).
- A retention concession (a save attempt after a complaint or renewal objection).
- A comped subscription (partner deal, influencer, internal use, or goodwill).
- A plan pause (seasonal business, temporary freeze, “we’ll be back”).
Each of these behaves differently in your metricsand should be classified differently in your reporting logic.
The three buckets (and why everyone keeps mixing them up)
| Category | What changes | What stays true | Typical signal | Best classification |
|---|---|---|---|---|
| Churn | Access ends or contract is canceled | Customer is no longer active | Cancellation, non-renewal, or failed payment leading to termination | Churn MRR (and often customer churn) |
| Downgrade | Customer pays less | Customer remains active | Plan tier drop, seat reduction, feature removal | Contraction MRR (Downgrade/Downsell) |
| 100% Discount | Customer pays $0 for a period | Customer may still be “active” | Coupon/credit brings net price to zero | Usually Contraction MRR to $0, but track as Discount-to-Zero |
Notice the trap: a 100% discount can look like churn in revenue, but not in customer count. That’s why you need a rule set that answers two questions separately: “Is the customer active?” and “Is the customer paying?”
A practical classification framework you can actually implement
Below is a decision tree you can apply in billing systems, data warehouses, or analytics tools. It’s designed to be boring in the best way: consistent.
Step 1: Did the subscription end?
- Yes (canceled, expired, terminated, non-renewed) → classify as Churn.
- No (still active) → go to Step 2.
Step 2: Did recurring revenue decrease?
- No → not downgrade/churn; likely “no movement” (or expansion if increased).
- Yes → go to Step 3.
Step 3: Why did revenue decrease?
- Plan/quantity change (tier drop, fewer seats, fewer add-ons) → Downgrade (Contraction MRR).
- Price change via discount/coupon/credit → Discount-driven Contraction (tag the reason).
- Billing failure but service continues → classify as At-Risk / Past-Due (don’t call it churn until access ends or you formally terminate).
Step 4: If net price is $0, classify the “flavor” of free
When a discount hits 100%, treat it as a distinct state in your data model, not just “a really big discount.” Create a tag such as: Discount-to-Zero or Free-but-Active.
- Trial / acquisition promo: intended to convert to paid (track conversion).
- Retention save: customer was going to leave; you comped to keep the logo (track recovery).
- Goodwill / support comp: service issue credit or apology month (track cost-of-quality).
- Partner / internal / non-revenue account: exclude from core retention metrics.
- Pause: time-bound freeze (track reactivation rate and return-to-paid).
The goal is to keep churn honest while still showing the business impact of going to $0. If you lump everything into churn, you’ll overreact; if you hide it as “retained,” you’ll underreact.
How 100% discounts should show up in SaaS metrics
MRR: net vs gross (a polite way to stop fights)
If you only track one MRR number, a 100% discount can wreck your trendline and obscure what happened. Consider tracking:
- Gross MRR: recurring value at list price (before discounts).
- Net MRR: recurring value after discounts (what you actually bill/collect).
- Discount Amount: Gross MRR − Net MRR (the “cost” of discounts).
Why it matters: a customer on a $500 plan with a 100% coupon still uses the product like a $500 customer, but they contribute $0. Gross helps you understand product adoption; net helps you understand revenue reality. Put both on the dashboard and you’ll spend less time playing “guess the denominator.”
Retention metrics: where does a $0 customer belong?
For revenue retention (GRR/NRR), a move from paid to $0 is typically a loss of retained revenue. In practice, many subscription analytics rules treat a 100% coupon as a free user and exclude it from paid MRRand if a paying customer becomes 100% discounted, that event can be treated like revenue churn for reporting purposes. That’s not “wrong”; it’s a strict definition that keeps revenue metrics clean.
But operationally, you still want to see it separately from true churn because the customer is not gonethey’re in a limbo state. Classify it as Contraction to $0 (Discount-to-Zero), then decide whether your “churn” definition includes discount-to-zero events or reports them separately.
Concrete examples (because definitions are cheap)
Example 1: Promo coupon for new customer
A new customer signs up for $49/month with a 100% coupon for 30 days.
Classification: Trialing / Discount-to-Zero (not churn, not downgrade).
Reporting tip: Track “trial-to-paid conversion rate” and “discount cohort retention.”
Example 2: Existing customer threatens to cancel
A $1,200/month customer says, “We’re leaving,” and you offer 100% off for one month to keep them live while a CSM fixes onboarding.
Classification: Contraction MRR to $0 (Discount-to-Zero) with a “save” reason code.
What not to do: Call it “retained” and move on. It’s retained in logo, not in revenue.
Example 3: Customer reduces seats
A customer goes from 50 seats to 20 seats.
Classification: Downgrade (Contraction MRR), not churn.
Key insight: Downgrades often signal internal change (budget cuts, re-org, lower usage), not necessarily dissatisfaction. The playbook should be different than churn prevention.
Example 4: Card fails, grace period begins
The payment fails. You give 14 days to update the card; access continues.
Classification: Past-due / dunning (not churn until termination).
Why it matters: Mixing dunning with churn inflates “product churn” when the real issue is billing.
Edge cases that deserve their own sticky note
“Paused” subscriptions
Pauses can be legitimate (seasonal businesses, contract freezes). Treat them as a distinct state: Paused, not churn, but track the resulting MRR drop and the reactivation rate.
Refunds vs discounts
A refund corrects past revenue; a discount changes future price. Your reporting should separate refund activity from recurring price changes so your “MRR movement” isn’t doing accounting gymnastics.
Annual plans with credits
If a customer prepays annually and you apply credits, the customer may still be “paid up” while your net revenue recognition changes. Don’t use a single “MRR” number as a universal truthuse consistent rules and document them.
Data model tips: how to keep your pipeline from lying (accidentally)
If you want your classification to survive audits, dashboards, and executive opinions, store the ingredientsnot just the outcome. Helpful fields include:
- Subscription status: active, trialing, paused, canceled, past-due
- List price (before discounts) and net price (after discounts)
- Discount type: coupon, credit, manual override, retention concession
- Discount scope: recurring vs one-time
- Discount duration: forever, months, until renewal date
- Reason codes: acquisition promo, save attempt, support comp, partner/internal
- Effective dates: when the discount starts/ends (so roll-offs are predictable)
With that foundation, you can produce clean rollups like: Churn MRR, Downgrade MRR, and Discount-to-Zero MRRand your team can finally debate strategy instead of definitions.
What to do after you classify it (because labels don’t fix churn)
If it’s Discount-to-Zero (trial or promo)
- Design a conversion moment: a feature unlock, a usage threshold, a clear ROI proof point.
- Track conversion to paid within a defined window (e.g., 7/14/30 days after discount end).
- Compare discounted cohort retention vs full-price cohort retention.
If it’s a Downgrade
- Identify the driver: usage drop, budget constraint, feature mismatch, organizational change.
- Offer right-sizing (not random discounting): seats, tiers, add-ons that match real usage.
- Monitor for “downgrade drift” (a second contraction within 60–90 days).
If it’s Churn
- Separate voluntary churn (choice) from involuntary churn (billing failure).
- Run churn reason analysis and map reasons to product, pricing, onboarding, and support fixes.
- Build a reactivation path that doesn’t feel like begging (and doesn’t require a 100% discount forever).
of real-world experience: where teams usually go wrong (and how to fix it)
The messiest classification debates rarely start with datathey start with incentives. Sales wants discounts to look like “wins,” Finance wants discounts to show up as revenue reality, and Customer Success wants the logo to survive long enough for the customer to feel value. Put those together and a 100% discount becomes the subscription equivalent of Schrödinger’s cat: it’s simultaneously retained and churned until someone opens the dashboard.
One pattern shows up again and again: teams treat a discount-to-zero as a harmless “temporary situation,” then get blindsided when the coupon expires and the customer vanishes. The problem isn’t the customer’s disappearanceit’s that nobody built a calendar-aware workflow. When the discount end date is not tracked like a renewal date, the business forgets to re-sell the value. You wouldn’t ignore a contract renewal; don’t ignore a discount roll-off.
Another common mistake is calling every downgrade a churn event “because revenue went down.” That language matters. When you label a downgrade as churn, you trigger the wrong playbook: panic discounts, frantic emails, and a last-minute “What if we throw in onboarding for free?” scramble. Downgrades often need a calmer response: confirm the customer’s new reality, right-size the plan, and protect expansion potential later. A customer who downgrades can still be a good-fit customer; a customer who churns is gone. Those are different beasts, and they deserve different treatment.
The best teams I’ve seen do something deceptively simple: they track two parallel truths. Truth #1: Are they active? (logo retention). Truth #2: What are they paying right now? (net revenue). A 100% discounted customer is “active = yes, paying = no.” That single line prevents a surprising number of arguments. It also creates a clean owner assignment: Success owns “active,” Revenue Ops/Finance owns “paying,” and the handoff happens at the discount end date.
Finally, discounting is rarely free, even when it feels like “just one month.” A 100% discount trains customer expectations, changes perceived price, and can quietly teach your market to wait you out. That doesn’t mean “never discount.” It means: discount with a reason, a time limit, and a measurable goal (conversion, save, onboarding completion, rollout milestone). If you can’t state the goal in one sentence, the discount is probably not a strategy so much as a reflex.
When you classify 100% discounts, downgrade, and churn correctly, you stop treating symptoms and start treating causes. And yesyour dashboards will still be dramatic sometimes. But at least they’ll be accurate drama.
Conclusion
The cleanest way to classify 100% discounts, downgrade, and churn is to separate customer status (active vs ended) from revenue status (paying vs discounted vs reduced). Churn is an ending. Downgrades are contractions with a retained logo. A 100% discount is a special contraction state that deserves its own label, reason codes, and follow-up planespecially when the discount expires.
