How to Offer Different Discounts to Different Customers in WooCommerce
WooCommerce Strategy
Same Store, Five Different Offers. Here’s the Playbook.
Sending the same discount to every customer is not generosity — it’s imprecision. This guide covers five segments that reward different approaches, the targeting tools WooCommerce gives you for each, and the mistakes that quietly drain the value from otherwise well-designed campaigns.
A kitchenware brand ran a sitewide 20% off campaign for three consecutive months. Revenue held up. But so did returns. And coupon costs. When they finally looked at the order data by customer group, the picture was uncomfortable: their most loyal customers — people who bought three or four times a year without any promotion — had been receiving the discount on every single order. The promotion had quietly converted full-price regulars into sale-price regulars. Getting them back to full price took a year.
The problem wasn’t the campaign. It was that the campaign had no awareness of who it was talking to. A loyal customer spending £200 four times a year didn’t need 20% off to buy. A lapsed customer who hadn’t ordered in six months might have. Those are two different situations that call for two different offers — or, in the first case, possibly no offer at all.
WooCommerce gives you the tools to make this distinction. This guide covers five customer segments — new visitors, loyal customers, wholesale buyers, location-based audiences, and at-risk customers — with a concrete playbook for each: what the business goal is, how to target it in practice, and where the approach tends to go wrong.
What this guide covers (and what it deliberately skips)
This guide focuses on playbooks: concrete targeting approaches and the failure modes that come with each segment. It assumes you already know the basics of WooCommerce user roles and campaign-level segmentation. If you need those foundations first, the guide on setting up role-based pricing in WooCommerce covers role creation and pricing logic in detail. The guide on WooCommerce customer segmentation for discounts covers the three targeting axes (role, trust score, location) and when to combine them.
Why one discount can’t do everything
Every customer arriving at your store is at a different point in their relationship with you. That relationship — how much they trust you, how frequently they buy, what they’re worth over time, how price-sensitive they are — should shape what kind of offer you extend, if any.
A first-time visitor has no purchase history with you. They’re evaluating whether you’re worth trusting. A modest first-order incentive removes friction and gives them a reason to try. A 30% sitewide sale tells them nothing except that your prices are flexible.
A VIP customer buying four times a year already trusts you. They don’t need a discount to buy — they’ve already demonstrated that with their order history. The right offer for them is recognition: early access, a surprise reward, exclusive products. A deep public discount they happen to see alongside every other shopper is not recognition. It’s accidental.
A wholesale buyer needs stable, predictable pricing tied to volume. The psychology is entirely different from retail: they’re running a business, not responding to an impulse. Clearance-style promotions are irrelevant to them. Reliable per-unit economics are everything.
These are not edge cases — they’re the normal distribution of a growing store’s customer base. Building offers around them isn’t complicated. It just requires making explicit choices that most stores never bother to make.
Segment 1: New visitors and first-time buyers
New visitors and first-time buyers present the clearest targeting case. The goal is conversion: get someone who has never spent money with you to cross that threshold for the first time. The business logic for discounting here is sound — acquiring a customer at a lower first-order margin is often worthwhile if lifetime value follows.
The business goal
Reduce the barrier to a first purchase. Overcome the “I don’t know this store yet” hesitation. Create a reason to buy now rather than add to a wishlist and forget.
Targeting approach
The cleanest targeting mechanism for new customers is a code-gated campaign. You offer a first-order discount — say 10% or a fixed £5 off — via a welcome email or a site pop-up, delivered to unrecognised visitors. The code is shared publicly enough to reach new visitors but not promoted to existing customers.
For logged-in users, you can use role-based targeting in the opposite direction: configure a campaign to exclude any role associated with returning customers. If you assign a “returning_customer” role after a first purchase (via automation or a plugin), a new campaign in exclude mode for that role reaches only visitors who don’t yet hold it — i.e., genuinely new accounts.
Smart Cycle Discounts supports both approaches. Code-gated campaigns are available in the free version. For bulk unique codes (one per email recipient), that requires Smart Cycle Discounts Pro. Role-based exclude mode is free.
The pitfalls
Coupon leakage. A shared first-order code posted publicly — on your site, in a pop-up, in an email — will be found by existing customers who have never used it. They’ll apply it to their next order. You’ve now given a “first-order” discount to a loyal buyer. This is the most common failure mode for new-customer offers, and it compounds over time as the code spreads to coupon aggregator sites.
The fix is timeliness and uniqueness. A code that expires in 48 hours is harder to aggregate. Bulk unique single-use codes (one per recipient, generated at send time) are the most effective solution — every code works exactly once. This requires Pro, but the margin protection often justifies it.
Training price expectations. If a first-order discount is consistently available — always visible in the same pop-up, always at the same depth — new visitors quickly learn to wait for it or expect it as the default price. Welcome offers work best when they feel like genuine gestures, not structural price floors. Varying the offer, the timing, and the delivery mechanism helps maintain that perception.
The “first-order” label is an aspiration, not a guarantee. WooCommerce does not natively prevent someone from creating a second account to claim a first-order offer again. A customer who wants your welcome discount badly enough will find a way. For low-value orders, this may not be worth solving. For high-value products, consider requiring account registration and email verification before the code activates — it won’t stop determined abuse, but it raises the friction enough to deter casual exploitation.
Segment 2: Returning and loyal customers (VIP)
Loyal customers are your most mishandled segment — not because stores are indifferent to them, but because most loyalty efforts take the wrong form. The instinct is to reward loyalty with the same discount structure used for acquisition. That approach is backwards.
The business goal
Retain high-value customers and deepen their sense of being recognised. The goal is not to increase their purchase frequency through price incentives — loyal customers often already buy at a healthy rate. The goal is to make them feel like their relationship with you is worth maintaining, so they don’t drift when a competitor runs a better-looking sale.
Targeting approach
Create a custom WordPress user role — something like vip_customer or loyalty_member — and assign it to customers who meet your loyalty criteria. The criteria are your decision: it might be five completed orders, a lifetime spend above a threshold, or a manual selection of your top accounts. Once the role exists, build campaigns that activate only for customers who hold it.
The campaign itself should feel exclusive, not transactional. An auto-apply percentage discount that’s silently available every time they log in is more valuable to a loyal customer than a splash-banner “LOYALTY20” code. The discount is simply there, without fanfare. That quiet recognition lands differently than a coupon hunt.
Because user role targeting and auto-apply campaigns are both free features in Smart Cycle Discounts, this playbook costs nothing beyond the margin of the discount itself.
Role targeting applies only to logged-in customers
User role targeting in Smart Cycle Discounts evaluates the session of the logged-in user. A VIP customer who checks out as a guest will not have their role evaluated — they’ll see whatever price a non-role-targeted campaign produces. This isn’t a flaw; it’s the correct behaviour for identity-based targeting. But it means your VIP customers need to be in the habit of logging in. Worth including in any communication about the loyalty program.
The pitfalls
Cannibalising full-price purchases. If VIP customers buy regularly at full price, a standing loyalty discount converts those full-price orders to discounted ones without adding purchase frequency. You’ve made every existing order cheaper without creating new orders. Monitor whether loyalty discounts correlate with increased purchase frequency or just reduced revenue per order. If it’s the latter, the discount depth may be wrong — or the offer format should shift to early access or exclusive products rather than price reductions.
Role assignment that doesn’t reflect actual loyalty. If you assign the VIP role once and never review it, customers whose purchasing has stopped — lapsed buyers who were VIP two years ago — continue receiving the benefit indefinitely. Build a review cadence into your loyalty program. Quarterly is usually sufficient. Roles that aren’t maintained become entitlements rather than rewards.
Fairness perception. If non-VIP customers discover that some customers receive automatic discounts, the reaction depends entirely on how the program is framed. A publicly described loyalty program (“earn VIP status after five orders”) is transparent and understandable. An invisible discount for selected customers — even if the selection criteria are defensible — can feel arbitrary when it surfaces. Be intentional about whether your loyalty program is public or private, and design accordingly.
Segment 3: Wholesale and bulk buyers
Wholesale customers are a fundamentally different audience operating under different constraints. They’re not browsing — they’re procuring. They need price stability, volume economics, and private trade pricing. The discount model that works for retail loyalty doesn’t translate.
The business goal
Make trade pricing automatic, private, and reliable for approved business accounts. Wholesale customers should see their pricing the moment they log in, without entering a code and without encountering a retail promotion that conflicts with their negotiated terms.
Targeting approach
Create a dedicated user role for wholesale accounts — wholesale_customer or similar — and assign it only to verified business buyers. Configure a campaign with role targeting in include mode for that role and auto-apply delivery. The discount activates on login, silently and automatically, with no visible promotion mechanism.
You can run multiple wholesale tier roles — wholesale_tier_1 and wholesale_tier_2 — if your trade relationships genuinely require different pricing at different volume levels. Each tier gets its own campaign with its own depth. This adds operational complexity, so only introduce it when the business actually requires it.
For the full mechanics of creating wholesale roles, writing the pricing logic, and handling the tax display differences between retail and trade customers, the guide on role-based pricing for wholesale accounts covers all of it. For the broader strategic question of how to run wholesale and retail from one store without the two audiences interfering with each other, the WooCommerce B2B pricing strategy guide is the right place to start.
The pitfalls
Retail campaigns applying to wholesale customers. When you run a sitewide clearance or a seasonal promotion for retail shoppers, wholesale accounts may pick up that discount on top of their already-negotiated trade pricing — if the retail campaign is configured in “all users” mode with no role exclusion. The fix is straightforward: configure sitewide retail campaigns to exclude your wholesale role. One setting, applied consistently to every retail campaign, keeps the two pricing systems cleanly separated.
Trade pricing that leaks to retail visitors. If wholesale pricing is visible on product pages — even momentarily, through a cache or a display bug — retail customers see your trade prices and either feel overcharged or start asking for the lower price. Test your wholesale campaigns as a logged-out user before going live, and check that role-targeted auto-apply campaigns only fire when the correct role is active in the session.
Open wholesale registration. If your wholesale account registration is automated — the role assigned on form submission without human review — retail customers can self-register as wholesale accounts and claim trade pricing. This erodes the value of the program almost immediately. Manual role assignment, or an approval workflow that requires admin confirmation before the role is granted, is the only reliable defence. The full walkthrough for this is in the role-based pricing guide.
Segment 4: Location-based discounts
Location targeting is the most underused segmentation tool in WooCommerce. Most store owners think of it as a niche feature for international stores, but it has practical applications for stores of any size — from margin protection on cross-border shipping to regional competitive response.
The business goal
Vary offer depth or availability based on where a customer is buying from. This might mean protecting margin in high-shipping-cost markets, running a country-specific promotion without extending it globally, or restricting a campaign to domestic customers only while international customers see the standard price.
Targeting approach
Smart Cycle Discounts includes location targeting as a free feature on every campaign. You choose a mode — include specific countries, exclude specific countries, or all countries — and select whether to evaluate the customer’s billing country, shipping country, or either. The country is checked at checkout, not at account creation, so it reflects where the purchase is actually going rather than where the customer registered.
A domestic-only welcome offer is a clean example. A 10% first-order discount for customers shipping within your home country, with no equivalent offer for international orders, lets you invest in domestic acquisition without the economics being undercut by international orders where your shipping margin is thinner. The campaign configuration takes about two minutes.
For a more surgical application, location targeting lets you run competitive counter-offers in a specific market. If a competitor is running an aggressive promotion in Germany, you can configure a campaign that targets German billing addresses only — without changing anything for your French, UK, or US customers.
Billing vs. shipping country — which to use
Use shipping country when you’re making decisions based on where the goods are going — margin on delivery, import duty exposure, regional compliance rules. Use billing country when you care about where the payment is originating — useful for fraud signals or currency-linked pricing decisions. The “billing or shipping” option is the most permissive: a customer qualifies if either address matches. For most promotional use cases, shipping country is the right choice.
The pitfalls
Perceived fairness across markets. Location-based pricing is common in global commerce — airlines, streaming services, and software vendors do it routinely — but customers who discover the disparity can feel disadvantaged. If the difference is significant (say, 25% off in one country and nothing in another), have a ready answer if a customer asks. “Our shipping economics differ by market” is a legitimate explanation. “We just felt like it” is not.
Compliance implications of geo-targeted promotions. Some jurisdictions have rules about reference pricing, promotional duration, and the conditions under which “was/now” pricing claims are legal. Running a 30% off campaign in one country that would be non-compliant there — even if it’s compliant in your home market — is a legal risk. The post on WooCommerce deceptive pricing regulations covers the key jurisdictional differences if you’re running promotions across the EU, UK, or US markets.
VPN and address spoofing. A customer who wants to claim a country-specific offer can use a VPN or enter a false shipping address. The targeting is based on the address provided at checkout, not on verified geolocation. For most promotional contexts, the occasional circumvention is not worth losing sleep over — the economics of running a slightly suboptimal campaign in edge cases are trivial. For high-value offers with significant margin stakes, adding additional friction (requiring payment from a card issued in the target country, for instance) is possible but adds complexity that usually isn’t justified.
Segment 5: At-risk and lapsing customers
At-risk customers — buyers who were active and have gone quiet — are among the most mishandled segments in discount strategy. The instinct is to throw a deep discount at them immediately. That instinct is often expensive and sometimes counterproductive.
The business goal
Bring a previously engaged customer back before the relationship dies entirely. Not all lapsed customers are worth winning back — some have stopped because your products genuinely stopped fitting their needs. The goal is to identify the ones who stopped for extrinsic reasons (forgot about you, had a bad experience that’s fixable, bought from a competitor once and drifted) and give them a reason to return.
Targeting approach
The most practical WooCommerce approach uses code-gated campaigns sent via email. You filter your customer list by last purchase date — anyone who bought between 90 and 365 days ago but hasn’t ordered since — and send a re-engagement campaign with a personalised code. The campaign in Smart Cycle Discounts is a standard code-gated discount. The targeting happens in your email tool, not in the campaign itself.
For a more structured approach, you can use a custom user role as the delivery mechanism. When a customer crosses your “at risk” threshold (say, no order in 120 days), a background process assigns them an at_risk_customer role. A campaign with include mode for that role and a modest auto-apply discount then activates the next time they visit the store — no email required. This requires automation logic outside WooCommerce core, but the campaign-side configuration is straightforward and free.
The post on win-back campaigns in WooCommerce covers the psychology and timing of re-engagement offers in detail — including the risk of training customers to wait until they lapse before they receive a discount.
The pitfalls
Training customers to lapse on purpose. If your re-engagement discount is deep and predictable — 25% off after 90 days, consistently — a price-sensitive customer will buy, wait 90 days, and buy again at a discount. You’ve built a system that rewards churning rather than loyalty. The fix is unpredictability in both timing and depth. Some customers get a 10% offer after 90 days. Some get 15% after 120. Some get early access to a new product. The offer shouldn’t be gamed-able.
Discounting customers who were never going to stay. Not every lapsed customer is recoverable. A buyer who purchased once, during a promotion, with a heavily discounted code, and left a lukewarm review has never shown strong intent. Sending them another discount is likely to produce another discount-driven purchase with the same low margin and the same low commitment. Segment your lapsed audience before you reach out: customers with multiple completed orders at various price points are worth a win-back offer. One-time discount chasers are not.
The offer timing matters as much as the offer itself. A win-back campaign sent at the 91-day mark — the day after the “lapsed” threshold — feels mechanical. Customers can tell when they’re being processed rather than acknowledged. A slight delay, variable timing, and a message that references their actual purchase history (“You ordered our Ceramic Set back in March — we’ve restocked the matching bowls”) are significantly more effective than a generic re-engagement email with a time-pressured code.
Quick-reference: five segments at a glance
| Segment | Primary goal | Targeting method | Free or Pro? | Main pitfall |
|---|---|---|---|---|
| New visitors | First purchase conversion | Code-gated campaign; role exclude for returning customers | Free (code-gated); Pro for bulk unique codes | Code leaks to existing customers; price expectation anchoring |
| VIP / loyal | Retention and recognition | Custom role + auto-apply include campaign | Free | Cannibalising full-price purchases; role assignment drift |
| Wholesale / bulk | Stable trade pricing | Custom role + auto-apply include; exclude from retail campaigns | Free | Retail campaigns leaking to trade accounts; open registration |
| Location-based | Margin control by market | Location targeting by country (billing / shipping) | Free | Fairness perception across markets; compliance in target jurisdiction |
| At-risk / lapsing | Reactivation | Code-gated email campaign; custom role + auto-apply | Free (code-gated); Pro for bulk unique codes | Training customers to lapse; discounting non-recoverable buyers |
Note on Pro requirements: Smart Cycle Discounts Pro is only needed when you want bulk unique single-use codes — one code per email recipient, each valid once. Every other targeting mechanism in this table (role targeting in include or exclude mode, location targeting, auto-apply, shared codes) is available in the free version.
Where to start
The most common mistake when approaching customer segmentation is treating it as an all-or-nothing project — you either do all five segments properly or you do none of them. That framing leads to paralysis. The right approach is to pick the one segment that most directly maps to your current pain point and do that one well.
If your biggest problem is that loyal customers are buying on promotion when they’d have bought at full price anyway, start with Segment 2. Create a VIP role, assign it to your top accounts, and replace the sitewide campaign that currently reaches them with a role-specific auto-apply offer at a depth that doesn’t cost you on orders that were already guaranteed.
If you’re struggling with wholesale accounts who occasionally get retail promotions on top of their trade pricing, start with Segment 3. Add an exclude rule to your existing retail campaigns to filter out your wholesale role. That’s a single configuration change that prevents double-discounting immediately.
If you’re spending on acquisition campaigns that are being redeemed by existing customers, start with Segment 1. Move from a shared code to a code-gated campaign with a meaningful expiry window. Then evaluate whether bulk unique codes are worth the Pro upgrade given your acquisition volume.
Each segment can be set up independently. They don’t need to be built all at once, and they don’t need a central segmentation system to connect them. The connection is your awareness of which customers are in which group — and the consistent discipline to configure campaigns accordingly.
Key takeaways
- A blanket discount reaches every customer identically — including loyal buyers who didn’t need the incentive and at-risk customers who might exploit it. Segment-aware pricing directs depth where it earns its keep.
- User role targeting (include or exclude mode) and location targeting (country-level) are both free in Smart Cycle Discounts. Pro is only needed for bulk unique single-use codes — one per email recipient, each valid once.
- New-visitor campaigns leak to existing customers the moment a shared code circulates beyond the intended channel. Expiry windows and unique codes are the two defences.
- Loyal customers rarely need a discount to buy — they need recognition. An auto-apply role-based offer they experience silently is more valuable than a public coupon they have to hunt for.
- Wholesale and retail campaigns must be explicitly kept apart. Configure retail promotions to exclude your wholesale role, or trade accounts will inadvertently receive both their negotiated pricing and your clearance discount simultaneously.
- At-risk campaigns work best when the timing and depth are unpredictable. A consistent 25% off at the 90-day mark teaches customers to time their inactivity.
- Include mode with no roles selected matches nobody in Smart Cycle Discounts — by design, as a fail-safe. Always confirm at least one role is selected when configuring an include-mode campaign.
Frequently asked questions
Can I combine role targeting and location targeting on the same campaign?
Yes. Smart Cycle Discounts evaluates both role targeting and location targeting when both are configured on a campaign. A customer must satisfy both conditions — they must hold the specified role AND be in the target country — to receive the discount. This is useful for offers like “loyalty pricing for our VIP members, limited to domestic orders only.”
What happens to a location-targeted campaign if the customer hasn’t entered their address yet?
Smart Cycle Discounts checks the customer’s country at the point of evaluation, which is typically during cart and checkout. If no address has been entered yet, the location constraint may not fire until the customer provides their shipping or billing address. This is expected behaviour — the discount appears or disappears as the address is entered, which can feel odd to the customer. For campaigns where location is the primary gate, it is worth testing the checkout experience before going live.
Does WooCommerce have a built-in way to segment customers by purchase history for discount targeting?
WooCommerce does not provide campaign-level segmentation by purchase history natively. The practical approach for most stores is to use email marketing tools (Klaviyo, Mailchimp, etc.) to build lists filtered by last order date or purchase frequency, then deliver a code-gated campaign to those segments. The targeting happens in the email tool; the campaign in WooCommerce is a standard code-gated discount. Role-based targeting can automate this for stores that have the technical resource to assign roles via background processes when customers cross a behavioural threshold.
How do I prevent a sitewide campaign from applying to my wholesale customers?
Configure the sitewide campaign in Smart Cycle Discounts with user roles mode set to “Exclude” and your wholesale role selected. The campaign will apply to all other customers — including guests and regular retail accounts — while skipping any logged-in user who holds the wholesale role. This requires that your wholesale customers always log in before shopping, which is standard practice for any role-based setup.
Is it worth building a formal loyalty tier system, or is a single VIP role enough?
A single VIP role is almost always the right starting point. Multiple loyalty tiers — Silver, Gold, Platinum — add operational overhead that’s only justified when your customer base is large enough and your purchasing behaviour varied enough that a single tier genuinely can’t serve the range. For most WooCommerce stores, the question to ask is: “Do I actually have customers with meaningfully different levels of loyalty, or am I just building complexity because it sounds like something enterprise stores do?” If you have a handful of truly exceptional accounts alongside a broader loyal base, a single role with manual assignment for the exceptional tier is sufficient. Add formal multi-tier only when the complexity earns its keep.
The targeting tools are already in the free version
Role targeting, location targeting, and auto-apply campaigns are all available in Smart Cycle Discounts free. No subscription required to segment your first campaign.