Blog

The customers who bought once and never came back

Almost no store knows how many people walked in exactly once and never returned — because the number is uncomfortable and nobody queries it. Here is how to count it honestly, and what the arithmetic says to do about it.

Ask a store owner how many customers they have and you'll get a confident number. Ask how many of those bought exactly once and never came back, and the room goes quiet. It isn't that the data is missing — most of it is sitting in the POS right now. It's that nobody has ever written the query, because everyone already suspects the answer is large.

It is worth knowing precisely, for one reason: a one-and-done customer is the cheapest revenue in the building. You already paid to acquire them and they already know where the store is. But you cannot text a group you cannot define, and every store that tries this on instinct ends up texting the wrong people — including a few who bought last Tuesday.

Step 1: define the lapse window before you count anything

“Never came back” is not a fact, it's a threshold. You have to pick it, and the honest way to pick it is from your own product's reorder cycle rather than from a calendar convention.

Supplement retail makes this easy, because the products are consumable on a predictable clock: a tub of protein is roughly a month, preworkout five to seven weeks, daily vitamins a month. A customer who bought a single tub 45 days ago is merely late; at 120 days they've made a decision. A sensible rule: two missed reorder cycles. If your typical cycle is 35 days, the lapse line sits around 70–90 days.

Write the threshold down and keep it fixed. Not for purity — because you'll run this count again next quarter, and if the window moves the comparison is meaningless. If you later decide 90 should have been 60, recount history at 60 too.

Step 2: exclude single visits that are still recent

This is the mistake that ruins the number, and it inflates it in the most flattering-to-panic direction. If you query “customers with exactly one purchase,” your result includes everyone who walked in for the first time last week. They have one purchase because they are new, not because they left.

The filter has two clauses, not one:

  1. the customer has exactly one recorded purchase, and
  2. that purchase is older than your lapse window

Everyone whose single purchase falls inside the window belongs to a third category — call them unconfirmed. Not lost, not regulars. They are the most valuable list in the store and they need a different message: a nudge timed to their reorder date, not an apology for your absence.

Timeline showing three customers with a single purchase — two older than the 90-day lapse line count as one-and-done, one inside the window is not yet lapsed 12 MONTHS AGO TODAY LAPSE LINE — 90 days ago Customer A one purchase, 9 months ago counts: one-and-done Customer B one purchase, 5 months ago counts: one-and-done Customer C one purchase, 40 days ago does NOT count — not lapsed yet
The shaded band on the right is the window where a single purchase means “new,” not “gone.” Counting customer C as one-and-done is how stores end up sending win-back texts to people who shopped last month.

Step 3: decide whether a check-in counts as a visit

If you run a loyalty kiosk you have two kinds of evidence that a person was in the store: a transaction and a check-in. They don't always agree — someone can check in, browse and buy nothing, or buy with cash and never touch the kiosk. Both definitions are defensible; choose one and know what it costs you:

  • Purchases only. Cleanest for money questions — every visit has a basket, so revenue math is honest. But it marks a loyal browser as one-and-done, and under-counts cash regulars when staff don't attach the member to the sale.
  • Purchases or check-ins. Truer to “did this person come back.” But some “returns” now carry $0, so never quote average basket from this population without saying so.

Our recommendation: count purchases for the one-and-done number, then look at check-ins as a second pass. A customer with one purchase and four check-ins is not a retention problem — they're a conversion problem standing at your counter, which is a much happier thing to discover. If your check-in rate is too low for that second pass to mean anything, fix the capture point first; we've written about why a self-serve kiosk beats asking for a phone number at the register.

Step 4: quarantine imported history from the old platform

Nearly every store doing this exercise has switched loyalty platforms or POS systems at some point, and the old data came across in a spreadsheet. That import is the single biggest source of fake one-and-done customers, for three boring reasons:

  1. Visits usually don't come across. Most exports carry a member and a point balance, not purchase history. Import 3,000 members with zero transactions and your query calls all 3,000 lapsed — or hides them entirely as zero-purchase customers.
  2. Timestamps get flattened. If the migration stamped every imported record with the import date, thousands of people appear to have visited on the same day: the day you switched systems.
  3. Old tracking was unreliable anyway. Staff forgot to look people up, and duplicate records exist for the same phone number. Pre-migration numbers are not a baseline you can compare to.

The fix is not to delete the imported rows — they're still a mailing list, and their point balances are a promise you made. The fix is to tag them as imported and exclude them from behavioral counts. That's how our migrations work: imported check-ins carry an import marker, and anything computing visit counts skips those rows deliberately, so the number only reflects behavior the current system actually observed. For the first 90 days after a migration the honest answer to “how many one-and-done customers do we have?” is “ask me in 90 days” — be suspicious of any dashboard that answers confidently on day two. Related: what survives a loyalty platform migration.

Want your actual number? If you'd like to see this counted properly against your own POS history — lapse window, imported rows quarantined, the whole thing — book a demo and we'll run it on your data rather than an example store's.

The win-back arithmetic, done transparently

Now the part that decides whether this is worth your afternoon. Take a store with 2,400 customer records. Suppose the count comes back like this — substitute your own figures as you read:

PopulationCount
Total customer records2,400
Records with exactly one purchase900
— of those, purchase inside the 90-day window (unconfirmed, not lapsed)300
— of those, imported rows with no observed visit150
True one-and-done, reachable by text450

Note what just happened: the scary headline number was 900, and the actionable number is half that. Now the campaign. Assume a $55 average basket, and be deliberately stingy on response — this is a group that has already demonstrated indifference:

  • 450 texts sent. At a 92% delivery rate, ~414 land. (Delivery is not a given — see carrier filtering.)
  • At a 3% response — 12 people come in. 12 × $55 = $660 in immediate revenue.
  • Text cost: 450 messages, well inside the 5,000 included in the $200/mo platform fee. Marginal cost of the send is effectively zero; at 2¢ per text beyond the included block it would be $9.
  • The real prize is the tail. If a third of those 12 become repeat customers at, say, 5 purchases a year, that's 4 customers × 5 × $55 = $1,100/yr of recurring revenue that did not exist before the send.
Funnel narrowing from 900 single-purchase records to 450 reachable lapsed customers, 414 delivered texts, and 12 returning visits worth $660 FROM SCARY HEADLINE TO ACTIONABLE LIST records with exactly one purchase 900 minus 300 recent, minus 150 imported 450 texts actually delivered (92%) 414 3% respond 12 visits × $55 basket = $660 now Tail, if a third of the 12 become regulars at 5 purchases a year: about $1,100/yr recurring. Swap every assumption for your own.
Each step is a filter you control. The two that matter most — recent single visits and imported rows — cut the headline number in half before you send anything.

Run it at 1% and you get 4 visits and $220 — still free money, still not a turnaround. Run it at 8% and you're at $1,760 plus a much larger tail. You pick the response rate you believe; the conclusion holds across the plausible range. Anyone quoting you a specific win-back conversion rate for your store has never seen your store. The fuller version of this arithmetic, including reward liability, is in the loyalty program ROI worksheet.

Two mechanical notes. Segment before you send — smaller sends built on behavioral segments beat one 450-person blast on both conversion and complaint rate. And give the message a reason to exist that isn't a discount: what they bought, what pairs with it, what changed in the store since. Our campaign tooling makes the timing automatic; the writing is still yours.

The uncomfortable part: it's a first-visit problem

Here is the honest conclusion, and it's the reason this post isn't just “buy a texting tool.” A large one-and-done cohort is almost never a messaging failure. It's a first-visit failure, and it happened months before any text could have helped.

Think about what has to go right for a first-time customer to return. Someone had to ask what they were training for. Someone had to recommend a product that worked rather than the one with the best margin that week. The flavor had to not be terrible. They had to leave knowing they'd be welcome back with a dumb question. If a single tub was sold to a stranger by a distracted employee who never got their name, that customer had no reason to return and no mechanism to be reminded.

So use the number diagnostically, not just as a campaign list:

  • By first product. If one SKU or brand shows a much worse return rate, you have a product problem, not a customer problem.
  • By month. A spike usually maps to a staffing change, a promotion that drew bargain traffic, or a period when nobody captured contact details.
  • By whether contact details were captured at all. The customers you can't text are the real hole: a store capturing 40% of first-time buyers has a 60% problem no campaign can reach.

Fix the first visit and the cohort shrinks at the source, which is worth more than any win-back campaign. Retention tooling is there to catch the ones who still slip — not to compensate for a counter that doesn't ask questions. Same argument we make about the whole category on our supplement retail page.

When you don't need software for this

If you have fewer than a few hundred customer records, you do not need a platform to answer this question. Export the transaction list from your POS, pivot by customer, count the ones with a single row, check the date. An afternoon, no purchase order. If the number turns out to be small, congratulations — go work on something else.

Software earns its place at a different threshold: when you want the count standing rather than one-off. When the lapse line should move a member between segments automatically at day 90, when the follow-up should fire on the customer's clock instead of your calendar, and when next quarter's number is computed the same way as this quarter's so the comparison means something. Either way, do the count — the expensive version of this problem is the one where you never look, keep buying first visits, and quietly lose the same proportion of them every year.

Next step

Let's count your one-and-done customers together.

Book a 20-minute demo — we'll run the lapse window against your own POS history, show you the segment, and write the first win-back send with you.

$200/mo platform · 5,000 texts included · no contracts