Coupons are the one WooCommerce feature where I have watched the same mistake play out on maybe thirty different stores. A founder runs a 25% site-wide sale to hit a quarterly number, traffic spikes, the revenue graph looks great, and nine months later we are rebuilding their pricing strategy because their customers refuse to buy without a discount. The tool is fine. The discipline around it is almost never fine.
This guide is how I actually set up coupons, discounts, and sales on client stores. I will cover what core WooCommerce gives you, which four addons I trust, the coupon patterns that actually grow revenue, and the trap patterns that erode your margin every quarter until you notice.
What comes with WooCommerce core
Out of the box, WooCommerce ships three discount types and a surprisingly deep list of restrictions. Navigate to Marketing, then Coupons, to create one. Most of my clients never outgrow this baseline for their first year.
The discount types:
- Percentage discount, for example 20% off. Applies to the cart subtotal or to selected products you choose.
- Fixed cart discount, for example $10 off the entire cart. Good for minimum-order incentives.
- Fixed product discount, for example $5 off each matching product. Useful for category-specific promotions.
The built-in restrictions:
- Minimum and maximum spend
- Individual use only, meaning the coupon cannot combine with any other coupon on the same cart
- Exclude sale items so a discount never compounds on already-discounted products
- Product and category inclusion and exclusion
- Allowed email addresses, with wildcard support like
*@company.comfor corporate bulk orders - Usage limit per coupon, per user, and per line item
- Expiry date
For a small to mid-sized store, this is genuinely enough. The main things core cannot do: buy one get one free, automatic cart-level discounts without a code, URL-applied coupons, scheduled start dates (only expiry), and tiered quantity pricing. If you need any of those, you are in addon territory.
Six coupon patterns that actually grow revenue
After running dozens of stores through holiday seasons, these are the six patterns I come back to repeatedly. Anything outside this list, I am skeptical of.
Welcome discount for email signup. A 10% off code in exchange for a newsletter subscription. Keep it modest. The temptation is to push to 20% or 25% because the conversion rate ticks up, but I have seen $2M stores where the welcome discount crept up over years and now the first-purchase margin is gone. Ten percent is plenty.
Cart abandonment recovery. A time-limited 10% to 15% code sent 4 to 24 hours after the cart was abandoned. This is one of the highest-ROI automations in all of e-commerce. The last client I set this up for recovered about $7,400 in the first month on a store doing $48,000 monthly revenue. That is pure incremental. You need an email tool for this, FluentCRM, Mailchimp, or a dedicated abandonment plugin like CartBounty.
Wholesale customer pricing. Never hand out a coupon code for wholesale. Codes leak, always. Use a wholesale plugin that discounts based on user role, or create role-restricted coupons that require the customer to be logged in with a specific role.
Seasonal scheduled sales. For site-wide or category-wide seasonal events, I use the product-level Sale Price and Schedule fields rather than coupons. The reason is subtle but important, scheduled sale prices update the structured data, hit the product display with a strikethrough, and do not require the customer to remember anything.
Referral codes. One-per-customer codes that reward both the sharer and the buyer. You need an affiliate or referral plugin for this, AffiliateWP is the one I keep reaching for.
VIP segment coupons. Exclusive codes sent to customers who have hit a specific order count or lifetime value threshold. This is where coupons do their best work, rewarding retention instead of buying new traffic. If you are running a membership model alongside your store, pair this with the advice in my membership site setup guide to gate the best codes behind paid tiers.
The four addons I actually trust
Four plugins cover almost every advanced coupon scenario I run into. Pick one that fits the specific gap. Do not stack them, I promise you do not want two coupon engines fighting over the same cart.
Advanced Coupons sits at $49 to $99 per year. It is the mainstream upgrade for stores that have outgrown core. Adds BOGO, cart conditions, URL coupons, scheduled start dates, and a loyalty program. This is my default recommendation when a client says “we need more coupon options” and cannot articulate exactly what they need.
Smart Coupons by StoreApps sits around $99 per year. Strongest for gift card functionality, store credit, and automatic coupon application based on purchase history. Worth it if you are running a gift card program, overkill if you are not.
Discount Rules for WooCommerce by Flycart is $59 per year and is the best value on the list for tiered pricing, bulk discounts, and automatic cart-level rules. This is the one I reach for when a client wants “buy 3 get 10% off, buy 5 get 20% off” without a code.
YITH WooCommerce Dynamic Pricing is niche. I only use it when the first three cannot handle a very specific customer-group pricing scenario.
URL coupons without an addon
A URL coupon applies a discount automatically when a customer arrives via a specific link, like yourstore.com/?coupon=SUMMER20. The customer never sees the code, never types it, and the friction drops to zero. Every affiliate campaign and every paid ad I run uses URL coupons.
Advanced Coupons ships this feature. If you are not ready to pay for the addon yet, here is the 20-line PHP snippet I drop into a site-specific plugin on client installs.
Register the coupon in WP admin as usual, then send customers links with ?coupon=CODE. Affiliate tracking, email campaigns, and paid ads all benefit enormously from this. One client saw conversion rate on their paid social audience jump from 1.8% to 3.1% just by removing the manual code entry step.
BOGO and cart-condition discounts
“Buy 2, get 1 free” is the discount pattern core cannot handle cleanly. You need Advanced Coupons or Discount Rules. Here is the practical setup I use with Advanced Coupons:
- Create a new coupon and restrict it to the eligible product category
- Enable BOGO Deals and set the trigger, for example “Customer adds 2 items from Category A”
- Set the reward, for example “Give the lowest-priced matching item free”
- Enable auto-apply so the customer does not need to type a code
The auto-apply flag is the difference between a BOGO offer that works and one that doesn’t. If the customer has to remember and type a code, most will not bother, and you are paying for a feature nobody uses.
Scheduled sales the right way
For product-level sales, use the Sale Price and Schedule fields on the product edit screen, or bulk update through Products, Bulk Edit. This is more reliable than coupons for three reasons:
- The sale price shows in the product price display with a strikethrough, which affects how Google renders your rich results, which affects click-through from search
- No code is required, so the conversion rate on first-time visitors is higher
- The sale starts and ends automatically on the schedule you set
For cart-level sales like “10% off everything this weekend,” use Discount Rules for WooCommerce with a scheduled rule. The rule applies automatically and the discount line shows on the cart. If you are running Black Friday or a seasonal event and your product pages depend on schema for search rankings, remember to check the sale prices against the guidance in my WooCommerce product page SEO guide, because badly rendered sale structured data is a silent ranking killer.
Tracking whether coupons actually pay
Core reports show coupon usage totals but not real revenue attribution beyond the gross sales figure. For honest ROI tracking, you need three things:
- UTM tagging on every coupon-carrying URL so Google Analytics attributes the session to the right campaign
- Revenue per coupon tracking, which WooCommerce reports provide, minus the discount amount to see net revenue
- New-vs-returning mix per coupon. A welcome coupon driving 80% new customers is healthy. A site-wide sale where 80% of coupon users were returning customers is cannibalization, you just paid a discount to people who would have bought anyway
I run this analysis monthly on every store I manage. The worst offenders are the “evergreen” 10% off codes founders leave active for years. One client had a permanent code that, when I ran the numbers, was costing them about $1,200 per month in margin on existing customers who used it on every order.
The mistakes I see on almost every store
- Site-wide sales with no expiry date. Trains customers to never pay full price. Kills your margin permanently.
- Forgetting to enable “Individual use only.” Customers stack codes and you hand out 40% discounts you never intended.
- Not excluding sale items. You end up discounting already-discounted products, sometimes below cost.
- Letting coupon codes leak to public coupon sites like RetailMeNot. If the code is supposed to be private, use email restrictions or user ID lists, not obscurity.
- No expiry on any coupon, ever. Every code gets an expiry date, no exceptions. I do not care if it is a wholesale code, it gets an expiry and you renew it manually when the relationship is still active.
Treating coupons as a budget line
Here is the discipline that separates stores with healthy margins from stores that gradually price themselves into unprofitability. Every coupon has a specific job, acquisition, retention, cart recovery, seasonal, and every coupon has an expiry. Nothing is evergreen except wholesale and VIP tiers. You track performance monthly. You kill the ones that do not move the needle.
Is this more work than just firing off a 20% off email whenever sales dip? Yes. Does it preserve your margin and protect the perceived value of your catalog? Also yes. Coupons used well grow revenue. Coupons used carelessly become the reason your average order margin erodes every quarter until the math stops working. Treat them like a budget line, not a marketing reflex, and you will be one of the stores that is still healthy five years in.
Core Web Vitals Email Marketing Optimize WordPress performance
Last modified: April 14, 2026









