Customer churn is the share of customers who stop buying from you over a period. In a store without subscriptions, a customer has churned when the time since their last order is well past their usual buying cycle, so churn rate = customers who lapsed ÷ active customers at the start of the period × 100.
What customer churn means in a store without subscriptions
A subscription business knows the day a customer leaves: they cancel. A Shopify or Odoo store selling fashion, beauty or groceries never gets that signal. The customer simply does not place the next order. Churn in e-commerce is silent, so you have to define it yourself.
The practical definition is time since last order, measured against how often your customers usually buy. Someone who buys coffee every three weeks and has been quiet for three months has probably gone. Someone who buys a winter coat once a year has not. The same 90 days means different things in different categories.
Churn is the other side of retention. If you have not read it yet, start with the customer retention guide, then come back here for the customers who stop.
How to calculate churn rate
Pick a period, count the customers who were active at its start, and count how many of them have lapsed by its end:
Churn rate = customers who lapsed during the period ÷ active customers at the start × 100
"Active" means they ordered within your lapsed window before the period began. "Lapsed" means they have now gone past that window without ordering. Customers who first buy during the period are left out, otherwise a good acquisition month hides a bad retention month.
A worked example
| Step | Figure |
|---|---|
| Active customers on 1 April (ordered in the 90 days before) | 1,200 |
| Of those, ordered again by 30 June | 420 |
| Of those, no order by 30 June (lapsed) | 780 |
| Retention rate for the quarter | 420 ÷ 1,200 = 35% |
| Churn rate for the quarter | 780 ÷ 1,200 = 65% |
Illustrative numbers, not a benchmark. A one-quarter churn rate this high is normal for stores where most customers buy once; what matters is whether your own rate falls from one quarter to the next.
Churn rate and retention rate
Over the same period and the same starting group, the two add up to 100%: churn rate = 1 − retention rate. A 35% retention rate is a 65% churn rate. Report one of them, consistently, and say which window it uses.
Revenue churn
Customer churn counts people. Revenue churn weighs them by what they spent: the revenue the lapsed customers brought in before they left, as a share of the revenue the whole starting group brought in. In the example, if the 1,200 customers spent 1,920,000 EGP in the quarter before and the 780 who lapsed accounted for 1,170,000 EGP of it, revenue churn is about 61%. When revenue churn is lower than customer churn, you are keeping your bigger spenders. When it is higher, the customers you lose are the ones who matter most.
On Shopify, the customer cohort analysis report can show a customer retention rate by first-order month, which is a quick way to check your numbers before you build anything.
How to pick your lapsed window
Do not borrow a fixed number like 90 or 180 days. Work it out from your own orders:
- Take every customer with at least two orders.
- For each, measure the days between their first and second order.
- Take the median, not the average. A few customers who come back after a year would drag an average up.
- Do it per category if your catalogue mixes fast and slow repeat products, such as skincare refills and handbags.
That median is your usual buying cycle. Then judge each customer by how many cycles late they are:
| Time since last order | What it usually means | What to do |
|---|---|---|
| Up to one cycle | Not due yet, or due about now | Nothing special. A replenishment reminder if the product runs out |
| One to two cycles | Cooling | A light nudge: new arrivals, their usual product |
| Two to three cycles | At risk | A win-back message with a reason to come back |
| More than three cycles | Lapsed, counted as churned | A last offer, then stop messaging and ask why |
Nonito scores customers on the same bands, described below. If fewer than about 50 customers have ever ordered twice, your median is not reliable yet; use a sensible default for your category and revisit it as orders grow.
Signs a customer is about to churn
- Days since last order passes their usual cycle. The earliest and most reliable signal, and the one every other step builds on.
- Order frequency falls. A customer who bought monthly and now buys every three months is cooling before they go quiet.
- A refused or failed cash-on-delivery delivery. A customer who did not take the parcel rarely orders again without a reason to. See how to cut COD returns.
- A cancelled order or a refund. Each one is a moment where the customer decided against you. Treat it as a churn signal, not only an operations event.
- Messages left unanswered. Several WhatsApp or SMS messages with no reply, especially from someone who used to reply.
- An opt-out. A customer who unsubscribes or blocks your number is telling you directly. Respect it and stop messaging them.
- A low review or a complaint after delivery. An unhappy customer who is not answered is close to gone.
Why customers stop buying
The reasons are usually ordinary, and most are visible in your own data if you look by city, courier and product:
- The delivery went wrong. Late, damaged, the courier never called, or the customer was asked for more than expected at the door.
- The first order was the last contact. Many stores message heavily before the first order and say nothing after it. The customer forgets you exist.
- Price. A competitor ran a better offer, or your discounts trained them to wait for the next one.
- What they wanted was out of stock. They came back, could not find their size or product, and bought elsewhere.
- The product did not match. Size, colour or quality was not what the photos showed, and the return was hard.
- Too many messages. Daily broadcasts with nothing for them push customers to mute or block you.
Confirming cash-on-delivery orders before you pack them removes several of these at once. See COD order confirmation on WhatsApp.
How to reduce customer churn
- Define your lapsed windowWork out your median days between first and second order, by category if you need to. Write it down so everyone measures churn the same way.
- Build an at-risk segmentCustomers who are two to three cycles past their last order, with at least one order and a phone number or email. Keep it live, so people join as they cross the line and leave when they order.
- Send a win-back flow on WhatsApp, SMS or emailStart the flow when someone joins the segment. Open with their name and what they bought, not a generic promotion. Hold the discount for a second message to the ones who do not respond. On WhatsApp this is a marketing template, priced as one. Compare costs on the WhatsApp pricing page and SMS in Egypt.
- Give them a reason to reorderA back-in-stock alert for the product they wanted, a replenishment reminder timed to when a consumable runs out, or a recommendation built from what they bought last.
- Catch the moments that cause churnFollow up the same day an order is cancelled with an order cancellation save, answer refunds with a refund recovery message, and ask for feedback after delivery with a post-purchase feedback flow.
- Ask the ones who do not come back whyA single question with three or four tap-to-reply options: price, delivery, product, found another store. Read the answers monthly by city and courier. Then stop messaging the people who have clearly left.
- Measure churn every monthSame window, same formula, same starting group. Track customer churn and revenue churn side by side, and check whether customers who received the win-back flow lapsed less than those who did not.
How to spot at-risk customers in Nonito
When a Shopify store connects, Nonito imports its order history and scores every customer into a lifecycle stage every night. Each customer is judged against their own buying rhythm: the median gap between their orders, kept between a quarter and four times the store’s median days to a second order. One-time buyers are judged against the store’s median. If fewer than 50 customers have ordered twice, Nonito uses a 60-day cycle until there is enough history.
| Stage | Who is in it |
|---|---|
New | First order too recent to judge: within half a cycle, and no more than two orders |
One-Timer - Recent | One order, not yet past one cycle |
One-Timer - Cooling | One order, one to two cycles ago |
One-Timer - Churned | One order, more than two cycles ago |
Returning | Two orders, on their usual rhythm |
Loyal | Three orders, on their usual rhythm |
Champions | Four or more orders, on their usual rhythm |
Cooling | Repeat buyer, one to two cycles late |
At Risk | Repeat buyer, two to three cycles late |
Previously Loyal | Four or more orders, more than three cycles late |
Lost | Two or three orders, more than three cycles late |
One-time buyers count as churned sooner, after two cycles. Each customer also gets a value tier, High, Mid or Low, ranked against similar customers, so a lapsed high spender and a lapsed low spender can get different messages. Stage is never mixed with spend.
- Segments. Build a segment on days since last order and number of orders in the audience form, or on lifecycle stage and value tier through Nonito’s assistant or the MCP server.
- Live segments. A live segment re-checks every 6 hours. Customers who now match join it, and joining can start a flow, so an at-risk customer hears from you the same day they cross the line.
- Odoo stores. Lifecycle stages and segment conditions are built from Shopify order data. Odoo orders do not feed them today. To run win-back for Odoo customers, upload them as a list, or start a flow from an Odoo event such as an order delivered or cancelled. See Odoo and Shopify.
What the numbers show on Nonito
We do not have a win-back benchmark yet, so we do not quote one. The closest flows act at churn moments. The order cancellation save reached 2,015 customers at 6 brands and was followed by 364 attributed orders worth about 460K EGP, with per-brand conversion from 9.8% to 18.5%. Back-in-stock alerts, at one brand so far, reached 1,212 customers and were followed by 168 orders, a 13% conversion.
The full breakdown is in our flow benchmarks report.
Real results from brands on Nonito, as of 13 September 2026. Figures in EGP. Yours depend on your product and pricing, so read this as a range, not a forecast. The back-in-stock figure comes from one account and is not a range.
Frequently asked questions
What is customer churn?
Customer churn is the share of customers who stop buying from you over a period. In a store without subscriptions, a customer counts as churned once the time since their last order is well past their usual buying cycle.
How do you calculate churn rate?
Divide the number of customers who lapsed during the period by the number of active customers at its start, and multiply by 100. Leave out customers who first bought during the period. If 780 of 1,200 active customers did not order again in a quarter, churn is 65%.
What is a good churn rate for an online store?
There is no single good number. It depends on your category, how often people need to rebuy and how many of your customers buy only once. The useful comparison is your own rate, measured the same way, month after month.
What is the difference between churn and retention?
They describe the same group from opposite sides. Over one period and one starting group, retention rate is the share who bought again and churn rate is the share who did not, so churn = 1 − retention.
How long before a customer counts as churned?
Use your own data: the median days between a customer’s first and second order. A customer more than about three of those cycles past their last order is very unlikely to come back without a reason to.
How do you reduce customer churn?
Define your lapsed window, build a live segment of customers close to it, send a personal win-back message on WhatsApp, SMS or email, give them a reason to reorder, follow up cancellations and refunds, and ask the ones who leave why.