Your best customers can tell when you haven't noticed them
← Blog

Your best customers can tell when you haven't noticed them

This is their fifth order this year, sixth for some, a fourth subscription renewal in a row for others. Nothing about it feels any different from the first. They get the same generic thank-you as someone buying once, and they start quietly wondering why they bother staying loyal at all.

A pattern that shows up across founder interviews

I went looking for a founder on record saying this exact thing out loud: "I couldn't tell who my best customers were until it was too late." I read through Shopify Masters transcripts, Starter Story interviews, Indie Hackers threads, a stack of Shopify and Yotpo case studies. I didn't find one clean, verbatim quote that nails this specific pain, so I'm not going to dress one up and put a name on it.

What I found instead is a pattern that repeats across a lot of founder writing on customer retention, even when nobody phrases it this bluntly: a brand hits a few hundred repeat customers, and the person running it realizes they have no actual system for knowing who those people are. Not a hunch, a system. Revenue by customer sits in the order platform, spend history sits somewhere else, and nobody's cross-referencing it in real time. The founder finds out a customer was on their ninth order only because that customer mentioned it in a support ticket, sounding a little hurt that nobody else had noticed first.

That's the composite version. It's close to something Brendan Gorman, head of ecommerce at the floral brand Venus et Fleur, said in a Shopify case study about a related but broader problem: "Without a holistic view of our customers' journeys, we knew it would be very difficult to tailor recommendations, personalize communications, and reward loyalty across every sales channel." His context was multi-channel data fragmentation, not a spend threshold specifically, but the shape of the problem is the same: you can't reward what you can't see.

Why this keeps happening even when brands know better

Almost every founder running a repeat-purchase business will tell you their best customers matter more than their newest ones. Very few have a system that acts on that belief in real time.

Identifying top spenders manually means someone opening the order platform, sorting by lifetime value, and doing something about the names at the top. That happens in bursts, maybe once a quarter if a marketing calendar reminds someone, and then it stops happening for months because whoever owned that task got busy with something else. The list goes stale. New customers cross into VIP territory and nobody adds them. Old VIPs churn and stay on a segment they've outgrown in the wrong direction.

Loyalty tiers make this worse in a specific way, not better, because they create the appearance of a system without the mechanism underneath it. A brand can have "Gold," "Platinum," and "Diamond" tiers written into their loyalty app's settings and still have nobody watching for the moment a real customer crosses from one into the next. The tier exists on paper. The recognition, the actual moment where the brand does something because a customer earned it, depends on a person remembering to check, which is exactly the failure mode a tier system was supposed to remove.

The cost of getting this wrong is not dramatic. Nobody cancels their account over one missed thank-you email. But a repeat customer who spends materially more than a first-time buyer and gets treated identically is being told, indirectly and repeatedly, that their loyalty isn't registering. Over enough orders, that reads less like an oversight and more like a fact about the relationship.

What a solution could look like

There are a few honest ways to solve this, and none of them are wrong exactly, they just solve different slices of the problem.

A points-based loyalty app like Smile.io or Yotpo Loyalty is the most common starting point, and for good reason. It gives customers a visible reason to keep buying, and it gives the brand a built-in mechanism for rewarding engagement. The limitation is opt-in: the app only recognizes customers who actively engage with points, redeem them, or check a dashboard. A customer who has spent more than anyone else on your list but never touched the points widget is invisible to a points-based system, even though they're arguably the customer most worth recognizing.

A manual VIP list, a spreadsheet someone updates when they remember to, is the lowest-effort option and the least reliable. It works for exactly as long as the person maintaining it stays engaged with the task, which in most small teams is a matter of weeks before something more urgent takes over.

A tiered rewards program without a real-time trigger sits in between. The tiers exist, the perks are defined, but crossing from one tier to the next doesn't do anything on its own. Someone still has to notice and act, which puts you back at the manual-list problem with better branding.

A fully custom automation, tracking spend or order count continuously and triggering an action the moment a threshold is crossed, solves the part the other three miss: it catches every customer, not just the ones who opted into a points program, and it acts the same day instead of whenever someone next looks. What it doesn't solve is the actual reward decision. Software can tell you someone crossed a line. It still takes a person to decide what crossing that line is worth.

The solution I'd build

Here's how I'd build this, in the way I actually think about it, not the marketing version.

Start with the tracking layer. Every order that comes in updates two running numbers per customer: lifetime spend and lifetime order count. Most order platforms already expose this through their API or a webhook on order creation, so it's data that already exists and isn't being watched, not new data. The automation listens for every new order, pulls the updated customer totals, and checks them against a threshold table you've defined ahead of time. That table might say: $500 lifetime spend triggers tier one, $1,200 triggers tier two, a sixth order triggers a separate order-count-based recognition regardless of spend, because for some brands (a coffee subscription, for instance) order count is a better proxy for loyalty than dollar amount.

The moment a customer crosses a threshold they haven't crossed before, the system fires a trigger, and that's the part worth being precise about: a trigger is a decision to start a reward, not the reward itself. For a straightforward tier, the trigger can generate a personalized discount code automatically and queue an email that says, plainly, why they're getting it. For a higher tier, the trigger might instead create a task for a person, someone on the team writes an actual note, because a template starts to feel exactly like what it is once someone's spent four figures with you.

The system also needs a memory of who's already been recognized for which tier, so a customer doesn't get the same "welcome to VIP status" email three orders in a row. That's a small detail that's easy to skip in a first build and obvious the first time a customer replies "you already told me this."

None of this requires anything exotic. It's an order webhook, a running total per customer, a threshold table, and a routing decision between "automated action" and "flagged for a human." The hard part is deciding, ahead of time, what each threshold is actually worth to the business, not the code, because that decision is the one piece of this a workflow tool can't make for you.

Setting that threshold well usually starts with the data already sitting in the order platform, not a guess. Pull the last year of order history, sort customers by lifetime spend or order count, and look for where the curve actually bends, a top 10% cutoff, a top 1% cutoff, wherever the real break sits, rather than a round number picked because it sounds nice. Margin is worth checking too, where that data exists: a customer who spends a lot on heavily discounted items isn't the same customer as one spending less at full price, and a threshold set purely on top-line revenue can end up rewarding the wrong behavior. None of this is a one-time decision either. A threshold calibrated against a $2M-revenue year reads differently once the brand doubles, so it's worth planning to revisit the table on a schedule, not just at launch.

Flowchart of the VIP recognition logic: an order updates lifetime totals, a threshold check against a table defined ahead of time, a dedup check against tiers already recognized, a routing split between an automated reward and a human-written note for higher tiers, and an automated discount code and email for the rest.

Pros and cons

The upside is real: every customer gets tracked, not just the ones who engage with a points widget, and recognition happens on the day it's earned instead of whenever a quarterly review happens to land. It scales without adding manual work as the customer base grows, and it can run alongside an existing loyalty app rather than replacing it.

The downside is just as real, and worth saying plainly rather than skating past it.

A threshold-triggered reward can feel exactly as automated as it is if the message reads like a template with a name inserted. The fix for that is on the copy and workflow side, not the tracking side, and it's easy to underinvest in.

Thresholds create gaming edge cases. A customer who returns half their orders can still cross a spend threshold before the returns process, and now they're getting VIP treatment for revenue the brand never actually kept. The threshold logic needs to run against net spend, not gross, or this becomes an expensive blind spot.

This kind of system does nothing for a customer whose fifth order arrived late or damaged. Recognition doesn't repair a bad experience, and treating it as a retention fix on its own, independent of actual product and fulfillment quality, is a mistake I'd flag to anyone building this.

It depends entirely on accurate lifetime-spend data, which sounds trivial until you've dealt with guest checkouts, merged customer accounts, or a platform migration that reset order history. Bad underlying data means a system that confidently recognizes the wrong people.

And the reward itself is still a human decision. What a threshold is worth, in dollars or in access, is a policy question, and no amount of automation removes the need for someone to set that policy and revisit it as the business changes.

How it gets implemented

The shape of this, practically, has four pieces. A data source, usually the order platform's API or webhook feed, providing per-customer spend and order count in near real time. A threshold table defining what triggers what, kept somewhere editable without touching code, because these numbers should change as average order value and margins change. A trigger action, which could be an auto-generated discount code, a tag that grants early access to a product drop, or a queued task for a person to send a note, depending on the tier. And a review step before anything with real cost or a real human message goes out, so the system flags and proposes rather than silently executing every time.

None of this needs to be built as one large system on day one. The narrowest useful version tracks one threshold, for one action, and proves the pattern before adding tiers or additional triggers on top of it.

The cost of the pain, and what's actually been measured

The clearest data point I have on this comes from Rivo's 2026 research on VIP customer repeat rates: customers who redeem loyalty points have a 50% repeat purchase rate, versus 10.7% among those who don't.

Repeat purchase rate: 50% for customers who redeem loyalty points, versus 10.7% for those who don't, per Rivo's 2026 research.

That's a real gap, and it's worth being precise about what it measures: point redemption specifically, not spend-threshold or tier-crossing recognition, which is the mechanism this piece is actually about. It's directionally relevant, not a direct measurement of the automation described above, and I'd rather say that plainly than let the two blur together.

I looked for additional verifiable numbers specifically about spend-threshold or order-count-triggered recognition and came up short. Several loyalty platforms publish figures like "tiered programs see 80% higher ROI than flat programs" or "VIP customers generate 73% higher average order value," and I checked those against their own sourcing before deciding not to use them here: they trace back to the same blog network citing itself, with no underlying study or dataset linked. That doesn't mean the numbers are wrong. It means I can't verify them, and I'd rather leave a gap in this section than fill it with something that only looks like evidence.

The pattern documented across beauty and cosmetics, fashion and apparel, and food and beverage brands is consistent even without a single unifying statistic: the trigger mechanism differs by category (a spend threshold in beauty, a loyalty tier in fashion, order count for a subscription business), but the underlying logic is the same in every case. Watch for the moment someone crosses from customer to repeat customer who's earned something, and act on it the same day instead of whenever someone happens to look.

I write about building automation systems for D2C operators: what the operations actually look like and what makes the difference between something that sticks and something that doesn't. If you're working through something similar and want to think it through, LinkedIn is open.