monkeyman.agency
scaling

The $1M Plateau: Why Winback Flows Beat New Ad Spend for Stalled Shopify Stores

A Shopify store stuck at $1.1M raised ad spend 40% and stayed flat. The revenue was sitting in 19,000 lapsed customers. Here's the winback playbook we ran.

July 8, 2026 8 min read

Marco runs a coffee-equipment brand on Shopify that crossed $1M in year three and then stopped. Eleven straight months between $88K and $95K. He did what most founders do, he raised ad spend, 40% more into Meta over two quarters. Revenue moved 3%. On our discovery call he pulled up Klaviyo and admitted he hadn’t emailed anyone who hadn’t bought in six months, because “they’re gone, right?” His list had 19,400 of those people.

Eleven months at the same number

The plateau has a specific shape, and once you’ve seen it a few times you can spot it from the metrics alone. New customer acquisition still works. Cost per acquisition creeps up quarter over quarter, but orders from first-time buyers hold roughly steady. Top-line revenue doesn’t move.

Which means the math has to be leaking somewhere else.

In Marco’s case, and in pretty much every plateau store we’ve audited, the leak was repeat purchase behavior. His repeat rate was 22%. Coffee equipment runs on consumables, filters, descaler, replacement gaskets, so the healthy range for his category sits closer to 35%. Every month his ads bought a cohort of new customers, and every month a nearly equal cohort of past customers quietly went dormant. The bucket filled at the same rate it drained. Flat line.

Raising ad spend attacks the filling rate, which was never the problem. And rising CPAs mean the same dollars buy fewer customers each quarter, so the strategy actually decays while you’re running it.

The audit that comes before any budget decision

We run a two-week diagnostic before we let any plateau client touch spend, and it looks at three numbers.

Repeat rate against category norms comes before anything else, because it sizes the leak. Shopify admin reports returning customer rate out of the box, but we rebuild it by cohort in a spreadsheet, because a blended average hides the story. Marco’s 2024 cohorts repeated at 31%. His 2025 cohorts were at 18% and falling, and that decline was invisible in the blended number.

Refund and delivery data comes next. A retention problem is sometimes a product or fulfillment problem wearing a disguise, and winning back a customer who left because shipping took eleven days just books a second refund.

Then list health. What percentage of your list bought in the last 90, 180, 365 days? How big is the segment that bought twice historically but not this year? That segment, high past value with long recency, is where winback revenue actually lives. Marco’s held 3,100 people with an average historical order value of $84.

Two weeks, no new tooling, and you know whether the next dollar belongs in acquisition or retention.

Not all lapsed customers are the same customer

The single biggest winback mistake we see is treating “hasn’t bought in six months” as one audience and hitting all of it with one discount blast.

Recency and historical value cut the lapsed list into segments that behave nothing alike. A two-time buyer at 7 months of silence is drifting and often just needs a well-timed reminder that costs you no margin at all. A two-time buyer at 18 months is functionally cold and needs a reason to re-evaluate you. A one-time buyer who purchased a gift last December was never really your customer in the first place, and burning discount margin on that segment is pure waste.

We build the matrix in Klaviyo with four segments: recent-valuable, recent-casual, distant-valuable, distant-casual. Value means two or more orders or top-quartile historical spend. Recent means lapsed less than roughly 1.5 times the natural reorder cycle, which for Marco’s consumables meant about five months.

Recent-valuable gets the soft touch. Distant-valuable gets the strongest offer. Distant-casual mostly gets a single attempt and then a suppression decision, because keeping dead weight on the list drags deliverability for everyone else.

What the flow actually looks like

The anatomy is three to five messages over about three weeks, escalating from reminder to incentive to goodbye.

Message one is no-offer. New arrivals, a restock note, a genuinely useful piece of content. For Marco it was a 40-second descaling video, and it alone reactivated 2.1% of the recent-valuable segment. Full margin.

Message two, four or five days later, is social proof plus a nudge, reviews, a bestseller, what changed since they last visited. Still no discount. The discount lives in message three, sized by segment: free shipping for the recent groups, a percentage or dollar offer for the distant-valuable group only.

The last message is the breakup, honest and short, “we’ll stop emailing unless you tell us otherwise.” Breakup emails routinely post the highest click rates in the entire flow, partly because loss aversion is real, partly because the subject line finally sounds like a human wrote it.

One rule we enforce on every build: the flow triggers off each customer’s own purchase cycle, not a calendar date. Klaviyo’s flow triggers handle this cleanly off a last-order date property. A batch campaign to “everyone lapsed” once a quarter is not a winback flow, it’s a fire drill.

Two mechanics make or break the sequence. Offers expire, visibly, within seven days, because an open-ended discount teaches the customer to file it away for someday. And anyone who buys at any step exits the flow immediately, back onto the regular calendar. Nothing torches trust faster than a winback discount landing three days after someone just paid full price.

When email alone won’t reach them

Some of your most valuable lapsed customers stopped opening email entirely, and no amount of subject line cleverness fixes an unopened message.

SMS reaches the segment email lost, with the hard caveat that you need existing consent and should reserve it for the distant-valuable group, one or two touches, never a drip. For Marco, SMS added 130 reactivations from a segment his emails hadn’t reached in a year.

Retargeting audiences synced from your lapsed segments let Meta and Google do the reminding for the non-openers, and a lapsed-buyer audience usually costs a fraction of a cold prospecting audience because the platform already knows the relationship exists. Direct mail sounds antique until you run the numbers on a $200-AOV segment; a $1.40 postcard against a top-decile lapsed segment is one of the quietly best-performing plays we ship. Almost nobody does it.

The stack matters less than the sequencing. Email first because it’s nearly free, SMS and retargeting for the high-value remainder, direct mail for the top decile only.

Proving the revenue is real

Winback reporting is where most agencies flatter themselves, so this is worth being strict about.

Opens and clicks are diagnostics, not results. Attributed revenue is better but still lies, because some lapsed customers would have come back anyway, and your flow just happened to be the last thing they clicked on the way in.

The honest measurement is a holdout. Hold back a random 10% of every winback segment, send them nothing, and compare purchase rates over 60 or 90 days. The gap between the two groups is your incremental revenue, and it’s the only number that deserves a line on a board slide.

The holdout needs no extra tooling. A random property assigned at segment entry, a filter on the flow, and a saved report comparing the two groups covers it. What it does need is discipline: the holdout stays untouched for the full window, even when a promo week makes it tempting to email everyone. One contaminated holdout and the quarter’s numbers are unreadable.

Marco’s flow attributed $61,000 in its first quarter. The holdout comparison said $38,000 was incremental. That’s a less impressive number and a far more useful one, because it survives due diligence, and because it told us the recent-casual segment was reactivating on its own and didn’t need the flow at all.

Feeding what you learn back into acquisition

The winback flow pays twice if you let it.

The segments that reactivate tell you which acquisition cohorts were worth buying in the first place. Marco’s distant-valuable reactivations skewed heavily toward customers originally acquired through search rather than paid social, which reshaped the next quarter’s budget split more credibly than any attribution model had.

Winback also produces the cheapest customer research you’ll ever run. The breakup email asked one question, “what happened?”, and the replies surfaced a shipping-cost complaint at a rate nobody expected. Fixing the threshold for free shipping lifted conversion for brand-new customers too.

And your suppression list is an asset. The segment that never responded becomes a lookalike exclusion, which quietly improves prospecting efficiency, so nothing in the flow is wasted, including the silence.

What we keep telling clients

The plateau feels like an acquisition problem because acquisition is the dial founders know how to turn. It almost never is one. If your ads still produce first orders at tolerable CPAs, the growth you’re missing is standing in your own customer file, already acquired, already paid for.

A merchant on an onboarding call last month put it better than we usually do: “a neglected list responds surprisingly well to a proper winback flow.” That’s the whole thesis. The list isn’t dead, it’s ignored, and those are different conditions with different cures.

Sequence the work in the boring order. Audit first, because winback can’t fix a product or delivery problem. Segment second, because the offer that rescues a distant-valuable customer is wasted margin on a casual one. Measure with holdouts, because a flow you can’t prove is a flow you’ll eventually cut in a budget meeting it deserved to survive.

Marco’s store did $1.34M over the following twelve months, with ad spend down 15% from its peak. The winback flow is a permanent fixture now, four segments, holdouts always on. And the 19,400 people he’d written off as gone turned out to include about 900 of his next year’s customers.

Questions we get every week

How long should a customer be inactive before winback kicks in?

Tie it to your reorder cycle rather than a fixed number; we trigger at about 1.5 times the median time between a customer’s first and second purchase, which for consumables often means 90 to 150 days. A calendar-based 180-day rule fires too late for fast-cycle products and too early for durable goods.

Do winback discounts train customers to wait for coupons?

Only if every message carries one, which is why the first two touches in our flows are offer-free. Reserve discounts for the distant-valuable segment and cap frequency, and the training effect stays negligible. The customers who reactivate at full margin were never coupon-waiting anyway.

Is it worth running winback on a list under 5,000 subscribers?

Yes, but as three simple emails rather than a segmented matrix, because small segments produce unreadable results. The audit matters at every size though; a small store with a repeat-rate leak has exactly the same disease as Marco, just cheaper to cure.

What repeat rate should a Shopify store aim for?

It varies hard by category, consumables run 30 to 45% while durable goods can be healthy at 15%. Benchmark against your own cohort history first, category averages second. A falling cohort trend matters more than any absolute number.

Stuck at the same revenue for three quarters or more? Talk to us about a two-week retention audit and we’ll show you exactly how much revenue is sitting in your lapsed list before you spend another dollar on ads.

Need help with this?

Send us your store. We'll send back an audit.

Send us your store URL. We'll send back a free audit within 48 hours.

Phone (optional)