An online store now spots customers going quiet before they are gone

Nobody cancels in e-commerce. They just stop ordering. We defined "lapsed" for each product category, found which customers were drifting, and sent the store a weekly win-back list its email tool could use.

5 min readPublished with the client's approvalUpdated September 2026

Customer order timelinesSample data
C-1042
C-0877
C-1310
Going quietWin-back sent
C-0561
C-2204
Order historyToday
[x] pts

higher repeat-purchase rate within [n] weeks of launch.

Client
Online retailer, [product category]
Industry
E-commerce
Region
[Region]
Timeline
[n] weeks
Services
Churn analytics, Segmentation
Engagement
Project, [n] weeks
[x] ptshigher repeat-purchase rate, within [n] weeks
[n]customer segments synced to the email tool
[x]%less discount spend on customers who buy anyway
1"lapsed" rule per product category, replacing a single 90-day guess
In one minute

The short version

Problem

Customers quietly stopped buying, and discounts went to everyone, including loyal buyers.

What we did

Defined "lapsed" per category from real reorder cycles, segmented customers by value, and built a weekly win-back list.

Result

[x] points higher repeat-purchase rate, with discount spend moved to customers actually at risk.

The challenge

Customers never cancelled. They just went quiet.

The store used one rule for everyone: no order in 90 days means lapsed. But coffee buyers reorder monthly and furniture buyers every year or two, so the rule flagged loyal customers too early and missed drifting ones too late. Win-back emails went out long after the moment had passed.

Silent revenue lossLost customers never showed up in any report.
Wasted discountsCodes went to people who were going to order anyway.
Late win-backsBy day 90, most drifting customers had already switched stores.
Starting point

What we had to work with

Order history was complete, but a large share of orders came from guest checkouts with no customer account.

Store orders[n] months of orders, products and refunds from the store platform.
Email platformCampaign sends, opens and discount codes redeemed.
Web analyticsGA4 sessions and product views for signed-in customers.
ConstraintGuest checkouts had no customer ID, so customers were matched by hashed email and phone.
What we did

Four steps, one decision that mattered

  1. Matched customersJoined account and guest orders into one customer view using hashed contact details.
    Week 1
  2. Measured reorder cyclesCalculated the typical time between orders for each product category.
    Weeks 1 to 2 Led to finding 1
  3. Segmented by value and rhythmGrouped customers by spend, frequency and how overdue they were.
    Weeks 2 to 3 Led to finding 2
  4. Shipped the win-back listA weekly list of drifting customers, pushed to the email tool with a suggested offer.
    Weeks 4 to 5
The key decision

We set a different "lapsed" threshold for each product category, based on its real reorder cycle, instead of one 90-day rule for the whole store.

Results

What changed

Before

  • One 90-day rule for every customer
  • Discounts sent to the whole list
  • Win-back emails after customers had left

After

  • A lapsed rule per product category
  • Offers only for customers at risk
  • A weekly list while customers can still be won back
Finding 1 from step 2

Customers who missed their second-order window rarely came back

The first repeat purchase was the moment that decided most customers' future.

Day [n]: second order window closesFirst orderDays since first order
Sample data shape. Replace with the anonymised chart from the project.
So what: the store now nudges first-time buyers before day [n], not at day 90.
Finding 2 from step 3

[x]% of discount spend went to customers who would have ordered anyway

The most loyal segment redeemed the most codes.

NewDriftingOccasionalLoyal
Sample data shape. Replace with the anonymised chart from the project.
So what: discounts were moved from loyal buyers to drifting ones.

"[One or two sentences from the client about the result, in their own words. The most specific number wins.]"

[Name][Role], [online retailer]
Approved for publishing
Facing a similar problem?Tell us what's going on. We'll say honestly whether we can help, and how.
What they received

Everything stayed with the client

Lapsed rule per categoryDocumented thresholds based on real reorder cycles.
Customer data modelAccount and guest orders joined into one customer view.
Segments in the email toolValue and rhythm segments, refreshed weekly.
Retention dashboardCohorts, repeat rate and win-backs over time.
What it took

The engagement, and what it would take for you

EngagementProjectQuoted from a written scope
Timeline[n] weeksFrom first call to handover
Client time~1 hr / weekOne owner answering questions
Price rangefrom $6,000Estimate your project

Services used

Recommendations and impact

What the client did next

RecommendationExpected effectConfidence
Nudge first-time buyers before their second-order window closes[x]% more second ordersHigh
Stop blanket discounts for the loyal segmentLower discount cost, same revenueHigh
Review category thresholds each quarterRules stay right as the range changesMedium
Honest limits

What this project can't tell you

  • Guest-order matching covered about [x]% of orders; the rest could not be linked to a customer.
  • Seasonal peaks such as Ramadan and Black Friday need at least a year of data to model properly.
  • Figures are rounded and anonymised with the client's approval.
Technical appendix

For the analysts in the room

Buyers can skip this. Technical reviewers usually want to see it.

Definitionslapsed, reorder cycle, segments
Reorder cycle: the median days between orders for a product category. Lapsed: a customer whose time since last order passes 1.5× their category's reorder cycle.
Methodwhy this approach, not another
A per-category rule was simpler to explain than a model and caught most drifting customers. A prediction model is the next step once the rule has a year of history to learn from.
Data and toolssources, volumes, stack
Store orders, email platform events and GA4, joined in SQL; segments built in Python; dashboard in Power BI.
Check the workcode sample
The core of the method: the typical number of days between orders, per category.
-- Median days between consecutive orders, per product category
WITH gaps AS (
  SELECT customer_id, category,
         order_date - LAG(order_date) OVER (
           PARTITION BY customer_id, category ORDER BY order_date) AS gap_days
  FROM orders
)
SELECT category,
       PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY gap_days) AS reorder_cycle
FROM gaps WHERE gap_days IS NOT NULL
GROUP BY category;
View the sample repository
Questions

Questions readers ask about this project

Could this work for our store on Salla, Zid or Shopify?
Yes. Any platform that exports orders and customers works. Guest checkouts are matched by hashed email or phone.
We don't sell subscriptions. What does churn mean for us?
A customer who has gone past their normal reorder time for what they buy. We set that rule per category from your own data.
How much of our team's time did it take?
About an hour a week from one owner, plus access to the store, email tool and analytics.
What would a similar project cost us?
Projects start at $6,000 and are fixed from a written scope. The pricing page has an estimator.

Customers going quiet, and you only notice at month end?

Most online stores we talk to have no idea which customers are drifting until they are gone. In 30 minutes we can tell you whether your order data can support a weekly win-back list.

  • One "lapsed" rule for every product
  • Discount codes sent to the whole list
  • Repeat-purchase rate nobody tracks weekly

On the call we will

  • Look at how you define a lapsed customer
  • Check what your order data can support
  • Outline a first step and its cost
Book a free 30-minute call Or start with a $1,800 Health CheckOr read about churn & retention analytics
Similar problem? 30-minute call, freeBook a call