You’ve spent the last hour trying to create a simple “Buy 3, get 20% off” promotion for your T-shirts. The coupon is set up, the percentage discount configured, but when you test it, the discount applies to everything in the cart, not just the qualifying items.
Sound familiar?
Maybe you’re struggling with BOGO offers that won’t calculate correctly. Or perhaps your tiered discounts require customers to juggle multiple confusing codes. Whatever brought you here, something about WooCommerce’s coupon system isn’t working the way you expected.
Frankly, that’s no surprise: WooCommerce’s native coupon framework was designed for simple, single-use discount codes, not the dynamic pricing strategies modern stores need.
This guide walks you through creating traditional WooCommerce coupons step by step. But more importantly, you’ll discover why automatic discount plugins bypass these limitations entirely, giving you visible pricing, complex discount rules, and better conversions without forcing customers to hunt for codes.
How to create your first WooCommerce coupon
Before creating any coupons, you’ll need to enable the feature. Navigate to WooCommerce → Settings → General and check the “Enable coupons” box. Save your changes.

Now, let’s create your first discount code.
- Head to Marketing → Coupons → Add Coupon and click on “Create your first coupon.”
- Enter a unique coupon code (like SAVE20) in the title field. You can also use “Generate coupon code”, but it might be easier for your customers to use something recognisable, rather than random letter/number combinations.
- Add an internal description below to help you remember the promotion’s purpose. Customers won’t see this.
- In the General tab, select your discount type: percentage discount, fixed cart discount, or fixed product discount.
- Enter the discount amount (just the number – WooCommerce adds the symbol automatically). You can also include free shipping, if needed.
- Set an expiry date if needed.
- Click Publish to save your changes and activate the coupon.
Testing your coupons before your campaign launch
Never launch a coupon without testing it first.
- Create a test order using dummy customer data.
- Apply your coupon code and verify that the discount calculates correctly.
- Check that restrictions work — minimum spend, product exclusions, and usage limits should all behave as expected.
A critical step most people miss: Clear your cache after setting up coupons, especially if you use caching plugins or CDN services. Cached prices can cause automatic discounts to display incorrectly, leading to customer confusion and panicked support tickets.
Test on multiple devices and browsers. What works on your desktop might fail on mobile if cache settings differ.
Understanding WooCommerce’s 3 discount types
When you create a coupon in WooCommerce, you’re working with 1 of 3 discount mechanisms. Each calculates savings differently, and understanding these differences prevents costly pricing mistakes.
- Percentage discounts reduce prices by a set percentage across eligible items, e.g. the coupon we just created (20% OFF) will apply to the whole cart.
- Fixed cart discounts work like a gift card applied at checkout. A $10 off coupon subtracts exactly $10 from the final total, regardless of what’s in the cart.
- Fixed product discounts reduce individual item prices. Set a $2 discount, and each eligible T-shirt drops by $2. Buy 5 shirts? That’s $10 off total.
Native coupon configuration
The coupon creation screen splits settings across 3 tabs: General, Usage Restrictions, and Usage Limits.
General tab
The General tab handles basics: your discount type, amount, and expiration. But notice what’s missing?
- There’s no way to cap percentage discounts (“20% off, maximum $30 savings”).
- Want the coupon to expire 30 days after first use? Not possible.
Usage Restrictions
These control who can use your coupon and where. You’ll find standard options like minimum and maximum spend thresholds and product/category restrictions. The latter are especially useful when you’re using the fixed product discounts and want the offer to apply to certain products or entire categories. Email restrictions accept wildcards (*@company.com), which helps with corporate discounts.
However, these also come with restrictions. For example, you can’t tell it to discount only the third item or apply discounts to specific subcategories, tags, variations, or product types.
Beyond that, no user role targeting means you can’t easily create member-only discounts. Geographic restrictions? Payment method conditions? Quantity requirements beyond basic cart totals? All require third-party solutions.
Usage Limits
As the name suggest, these settings let you apply limits:
- Usage limit per coupon: How many times can the coupon be used.
- Limit usage to X items: When you’ve added specific products in the “Usage Restrictions” tab, you can cap the number of items that the coupon can be applied to before it becomes invalid.
- Usage limits per user: How many times the coupon can be used by a specific user.
While these might seem comprehensive, in reality, they don’t go beyond basic counting. Sure, you can limit total uses or uses per customer. But monthly limits? Category-specific tracking? Household-level restrictions to prevent abuse? These common requirements exceed native capabilities.
The biggest UX problem: Every discount requires manual code entry. Customers can’t see savings until checkout, killing the impulse purchases that visible pricing creates.
Creating quantity-based and tiered discounts in WooCommerce
You need “Buy 3, get 20% off” for your bestselling products. Or maybe a “Buy 2 hoodies, get a free cap” promotion for the holidays. These quantity-based offers drive bulk purchases and increase average order values, if you can actually implement them.
Here’s the frustrating truth: Native WooCommerce coupons weren’t built for this.
A percentage discount can’t target specific quantities. Set up 20% off, and it discounts everything once conditions are met, not just items 3 and up. Your only option? Create multiple confusing codes that customers won’t understand.
Why traditional workarounds fail:
- Multiple codes (BUY2SAVE10, BUY3SAVE20) flood your checkout with options. Customers abandon carts rather than figure out which code gives them the best deal.
- Stacked restrictions turn simple promotions into spreadsheet nightmares. One wrong setting breaks everything.
- Manual calculations mean constant maintenance. Every price change requires recalculating fixed discounts across dozens of coupons.
Streamline offers with WooCommerce Discounts

Instead of fighting WooCommerce’s limitations, WooCommerce Discounts by Studio Wombat rewrites how discounts work entirely. The plugin calculates prices dynamically based on what’s actually in the cart – no codes required.
Key differences that matter:
- Visible savings: Pricing tables appear directly on product pages. Customers see “Buy 2 save 10%, Buy 5+ save 25%” before adding anything to the cart.
- Automatic application: Meet the conditions, get the discount. No code hunting, no checkout surprises.
- Complex logic support: Need to offer big discounts on specific product variations for wholesale customers? These kinds of complex scenarios work natively, without workarounds.
- Performance-focused: One smart pricing rule replaces dozens of database-heavy coupon objects that slow down checkout.
Setting up tiered discounts in WooCommerce Discounts
Let’s create that “10% off 2 products, 25% off 5+” promotion:
- Navigate to Marketing → Discounts → Add New. Select “Quantity Discounts” as your discount type.
- Name your discount and schedule it if you want to – perfect for holiday offers.
- Decide whether you want this to be a storewide discount or a discount for selected products only. Let’s make this one apply for red T-shirts only. To do this, select “Apply this discount to selected products only” and add 2 conditions: Variation attribute → is → Color – Red, and Product category → is → Tshirts.
- In the same step, you should also define the Count Mode: Apply discounts per product or across products.
- Next, select the pricing type (price discount, percentage discount, or unit price) and add your tiers. Minimum quantity 2, discount 10%. Click “Add Tier” and create your second level: minimum quantity 5, discount 25%.
- Adjust the content settings, which include the discount table and additional promotional content (e.g. a message on the product page that says “25% OFF when you buy more than 5 red T-shirts”). You can adjust the table columns and its location.
- Add extra conditions if needed. For example, you can add a cart minimum or make the discount available to certain user roles. You can also exclude items already on sale.
- Save your discount.
The pricing table automatically appears on selected product pages, showing customers exactly how much they’ll save at each quantity level.

No codes, no confusion – just clear, motivating prices that drive larger orders and show clearly on the product page and the cart.

Creating BOGO offers
Native WooCommerce BOGO attempts involve painful workarounds. Some merchants create hidden “free” products with complex coupon logic, while others try negative fee hacks that break during updates. Manual bundle products require constant inventory management.
None of these solutions scale.
WooCommerce Discounts handles BOGO naturally. One rule defines everything and triggers products, free products, quantities, and conditions. The system automatically calculates when customers qualify and applies discounts without codes.

Need specific BOGO variations?
- Complete Buy X Get Y setup guide – including different product combinations
- BOGO implementation strategies – from simple doubles to complex category mix-and-match
The difference? Customers see “Buy 2 pizzas, get a free drink” messaging while shopping, not after entering a code at checkout.
Native coupons vs. WooCommerce Discounts
Not every store needs advanced discount features. Sometimes native coupons work perfectly and knowing when helps you avoid unnecessary complexity.
When native WooCommerce coupons work perfectly
Your need | Native solution |
---|---|
20% off everything this weekend | Create 1 percentage coupon |
$10 off orders over $50 | Fixed cart discount + minimum spend |
VIP customers get INSIDER15 | Email-restricted percentage coupon |
Single-use welcome codes | Usage limit = 1 per customer |
These scenarios share a couple of crucial elements: simple rules, manual code entry, and no quantity logic. Native coupons handle them efficiently without plugins or custom code.
When you need more than WooCommerce coupons
Your need | Why native fails | WooCommerce Discounts solution |
---|---|---|
Buy 3 shirts, save 20% | Percentage hits all shirts, not just 3+ | Quantity-based rules, visible on product pages |
Spend more, save more tiers | Requires multiple confusing codes | Automatic tiered pricing tables |
BOGO deals without codes | Can’t auto-apply based on cart | Real-time cart analysis, no code entry |
Show savings before checkout | Discounts hidden until final step | Strike-through pricing everywhere |
The pattern is clear: Whenever you need quantity-based logic, automatic application, or visible pricing, native coupons fall short.
The performance factor nobody talks about
Here’s what happens behind the scenes when customers apply coupon codes: WooCommerce will store coupons as custom post types in your database.
The coupon code itself lives in the post_title field, which isn’t indexed by default. Every time someone enters a code, WordPress searches through all coupon titles to find a match.
20 coupons? No problem. But what about 100? Or 500 during Black Friday?
On shared hosting with limited MySQL resources, this becomes critical. Concurrent users validating coupons trigger multiple unindexed queries per checkout. The result:
- Database bottlenecks during peak traffic
- Checkout timeouts when you need sales most
- Angry customers watching spinning wheels
Each active coupon means another database row to search. Complex restrictions multiply the queries. A store with 100 coupons might run 300+ queries just to validate 1 checkout.
WooCommerce Discounts sidesteps this entirely. Instead of storing hundreds of coupon objects, it uses efficient rule-based calculations. Whether you have 5 discount scenarios or 500, performance stays consistent because rules are calculated in memory, not through database lookups.
Your 30-second decision framework
Stick with native when:
- Simple percentage or dollar-off discounts meet your needs
- Customers expect traditional coupon codes
- You’re managing under 20 active promotions
- Your hosting can handle the database load
Upgrade to WooCommerce Discounts when:
- Promotions involve quantities, tiers, or product combinations
- Visible pricing drives your conversion strategy
- You want automatic discounts without code friction
- Performance matters more than saving plugin costs
Make your WooCommerce discounts work harder
Your discount strategy directly impacts revenue, yet most stores run promotions without measuring their true effectiveness.
Quick wins to implement today:
- Create your first coupon in minutes: Follow the steps above to launch a simple weekend sale. Even basic discounts beat no promotions at all.
- Audit your active coupons immediately: More than 20 active codes? You’re creating database drag that slows checkout exactly when customers are ready to buy. Archive expired promotions now.
- Test visible pricing impact: Add strike-through prices or “Save $X” badges to just 5 products. Track conversion rates for 2 weeks. Most stores see a significant lift when savings display during browsing, not just at checkout.
Native coupons excel at simple percentage discounts and exclusive email codes. They’re free, familiar, and work well for basic promotions.
But if you need quantity breaks (“Buy 3, save 20%”), automatic application without codes, or visible pricing that drives impulse purchases? Dynamic pricing plugins like WooCommerce Discounts deliver capabilities native coupons simply can’t match. Ready to transform your promotional strategy? Download WooCommerce Discounts and start creating discounts that actually drive sales, no coupon codes required.