WooCommerce Coupon Code Not Working: 12 Reasons and How to Fix Each
WooCommerce Troubleshooting
Your Coupon Code Isn’t Broken. But Something Specific Is.
When a WooCommerce coupon code stops working, the cause is almost always one of a small set of silent failure modes. Here are the 12 most common ones — with exactly where to check and what to change.
Quick-reference diagnostic table
Use this table as a starting point when a coupon fails. Each row maps the symptom to the most likely cause and where to check it in the WooCommerce admin.
| Symptom | Most likely cause | Where to check |
|---|---|---|
| “Coupon has expired” | Expiry date passed, or timezone mismatch | Coupon → General → Expiry date; Settings → General → Timezone |
| “Coupon usage limit has been reached” | Total or per-user usage cap hit | Coupon → Usage Limits → Usage count vs. limit |
| “The minimum spend for this coupon is $X” | Cart subtotal below the threshold | Coupon → Usage Restriction → Minimum spend |
| Coupon rejected on high-value cart | Maximum spend field is set | Coupon → Usage Restriction → Maximum spend |
| “Coupon is not applicable to your cart” | Product restriction: no qualifying items in cart | Coupon → Usage Restriction → Products / Product categories |
| Discount applies to some items but not others | Excluded products or categories in cart | Coupon → Usage Restriction → Exclude products / Exclude categories |
| Coupon fails only when items are on sale | “Exclude sale items” is checked | Coupon → Usage Restriction → Exclude sale items checkbox |
| Fails for some customers, works for others | Email address restriction | Coupon → Usage Restriction → Allowed emails |
| Second coupon won’t apply | “Individual use only” enabled on one coupon | Coupon → Usage Restriction → Individual use only |
| Free shipping never appears at checkout | Free shipping method missing from zone | Settings → Shipping → Shipping zones → add Free shipping method |
| No coupon field visible at checkout | Coupons disabled globally | Settings → General → Enable coupons checkbox |
| Coupon valid but discount disappears or is zero | Plugin conflict overriding price calculation | Deactivate plugins one by one on a staging copy |
If the exact message says the cart has an active payment session, use the dedicated ongoing payment session coupon error guide. That problem concerns a total already tied to a payment attempt, not ordinary coupon eligibility.
Start with the exact error and the coupon’s configuration. Expiry, usage limits, product restrictions, stacking and checkout conflicts can each prevent a valid-looking code from applying. Use the diagnostic table first, then follow the matching check below.
Why WooCommerce coupon errors are so hard to diagnose
WooCommerce’s coupon system has a lot of moving parts. A single coupon can have expiry dates, usage caps, spend thresholds, product restrictions, category exclusions, email locks, and stacking rules — each of which can independently cause the coupon to fail at checkout.
Record the exact checkout error before changing settings. WooCommerce can report specific expiry, spend and usage failures, while themes and extensions may alter the wording. Match the error to the diagnostic table, then check the relevant rule.
The good news is that there are only 12 realistic culprits, and most of them take under a minute to confirm. Work through them in order.
First decide whether you are debugging a native coupon or an SCD campaign code
A native WooCommerce coupon is managed under Marketing → Coupons. A Smart Cycle Discounts code-required campaign is managed inside its campaign editor. Customers can enter either kind of code through WooCommerce’s familiar coupon field, but SCD validates its own campaign state, schedule, usage rules, and code before its pricing engine delivers the discount. Knowing which system issued the code tells you where to start looking.
1. The coupon has expired
Check the coupon’s expiry date and the store timezone together. Test the boundary you intend to advertise instead of assuming the code remains valid throughout the selected date; the exact behavior must match your WooCommerce version and any coupon extension.
Where to check
Go to Marketing → Coupons, open the coupon, and look at the General tab. The “Coupon expiry date” field shows when redemptions stop. Cross-reference this against your store’s timezone: Settings → General → Timezone.
How to fix it
If the deadline was configured incorrectly, correct it to match the promotion you advertised and test the cutoff on staging. Do not automatically extend every coupon by a day: that can create a different offer from the one you intended.
If the code belongs to a promotion with a defined start and end, a scheduled campaign removes much of this ambiguity. Smart Cycle Discounts keeps the code, product selection, discount, timezone-aware schedule, and lifecycle in one campaign: draft, scheduled, active, then expired. The campaign activates and deactivates automatically instead of relying on someone to edit or retire a coupon at the right moment.
2. The usage limit has been reached
WooCommerce coupons support two types of usage limits: a total redemption cap across all customers, and a per-customer limit. Either can stop a coupon from working silently once the cap is hit. A coupon set to “100 uses” that was distributed to an email list of 3,000 people will stop working for the remaining 2,900 the moment the 100th person checks out.
Where to check
Open the coupon in Marketing → Coupons, then go to the Usage Limits tab. You’ll see three fields:
- Usage limit per coupon: total times this code can be used across all customers.
- Limit usage to X items: how many individual items in the cart the discount applies to.
- Usage limit per user: how many times a single customer account can redeem the code.
Below those fields you’ll see “Usage count” — the number of times the coupon has already been redeemed. If this matches the limit, the coupon is exhausted.
How to fix it
Increase the usage limit, or set it to blank (unlimited) if you want no cap. If the per-user limit is blocking a genuine repeat customer, you can raise that too. For future campaigns, think about whether the limit should be set tighter or looser than you initially estimated — unlimited coupons on a shared code carry real abuse risk once the code escapes into the wild.
SCD code-required campaigns make that choice at campaign level. The free version supports a shared campaign code; Pro adds bulk generation of up to 50,000 unique codes, CSV export, and single-use enforcement per code or customer. Those controls are useful when the real problem is not a broken coupon but a public code that has travelled far beyond the audience it was meant for.
3. The minimum spend requirement isn’t met
Many coupons are configured with a minimum cart subtotal — the coupon only applies once the cart reaches a certain dollar amount. If a customer’s cart total is $48 and the minimum spend is $50, the coupon fails. WooCommerce will say something like “The minimum spend for this coupon is $50.00” — this one at least produces a slightly more helpful error.
Where to check
Open the coupon’s Usage Restriction tab and check Minimum spend. WooCommerce’s documentation describes the minimum as cart subtotal plus tax. Shipping is not the qualifying product subtotal. Compare the cart’s tax/subtotal values with the rule; do not assume the checkout grand total is the value being tested. Source: WooCommerce coupon settings.
How to fix it
If the threshold is intentional, no change needed — the coupon is working correctly. If the threshold is misconfigured or set higher than you intended, lower it. If customers are confused about why their cart total doesn’t seem to qualify, check whether another discount is reducing the subtotal below the threshold before the coupon applies.
4. The maximum spend has been exceeded
Less well-known than the minimum spend, WooCommerce coupons also support a “Maximum spend” field that caps the cart value at which the coupon is valid. A customer with a $300 cart won’t be able to apply a coupon configured with a $200 maximum. This is rarely set intentionally, but it can get enabled by accident — particularly if someone fills in the wrong field when building a coupon.
Where to check
Open the coupon, go to the Usage Restriction tab, and check the “Maximum spend” field. If it has a value in it, that’s your ceiling. Carts above that value will be rejected.
How to fix it
Clear the maximum spend field entirely if you don’t intend to cap the cart value. If you do want to set a ceiling (for margin protection on very large orders), make sure the value is set deliberately and that your marketing copy reflects it clearly — “valid on orders under $X” — so customers aren’t surprised.
5. The coupon is restricted to specific products not in the cart
WooCommerce coupons can be restricted to specific products or product categories. When a coupon is product-restricted, it will only apply if at least one qualifying product is in the cart. A customer whose cart contains items that don’t match the restriction will get a “coupon is not applicable” error even if they have a valid code.
Where to check
Open the coupon, go to Usage Restriction, and look at the “Products” and “Product categories” fields. If either field has entries, the coupon is scoped to those specific items. A completely different product in the cart won’t make the coupon apply.
How to fix it
If the product restriction is intentional, confirm that the customer actually has a qualifying product in their cart. If the restriction is too narrow, add more products or categories to the allowed list. If you want the coupon to work storewide, clear both restriction fields entirely.
The “fixed product discount” type works differently
If the coupon type is “Fixed product discount” (rather than “Fixed cart discount”), the discount applies to specific products at the line-item level, not the whole cart. A customer with a mix of qualifying and non-qualifying items will see the discount apply to qualifying items only — the rest are untouched. This can look like the coupon “partially doesn’t work” but is actually correct behavior.
6. Products or categories are excluded from the coupon
The inverse of reason #5: a coupon that applies broadly to the store can still exclude specific products or categories. If all items in the customer’s cart fall into an excluded category — say, the coupon excludes “New Arrivals” and the cart contains only new arrival products — the coupon will fail entirely. This is one of the more invisible failure modes because the customer has no way of knowing which products are excluded.
Where to check
Open the coupon, go to Usage Restriction, and scroll past the “Products” and “Product categories” fields to the “Exclude products” and “Exclude categories” fields. Any entries there will silently block the coupon for matching cart items.
How to fix it
Remove the exclusion if it was set in error. If the exclusion is deliberate (protecting margin on certain product lines), consider whether your marketing copy makes that clear — “not valid on new arrivals” in the promotion email prevents the confused support ticket from arriving. WooCommerce does not automatically tell customers which items are excluded from a coupon.
7. “Exclude sale items” is enabled
This is the most common silent killer of WooCommerce coupons, and it catches store owners more than any other setting. The “Exclude sale items” checkbox on every coupon prevents the coupon from applying to any product that currently has a sale price set — including products discounted by a campaign plugin. The customer enters a perfectly valid code. The cart contains products that are already on sale. The coupon silently refuses to apply.
The reason it’s so easy to miss: many store owners check “Exclude sale items” without fully thinking through what counts as a “sale item.” If you run seasonal campaigns, use a discount plugin, or have products with manually set sale prices, you may have far more “sale items” in your catalog than you realize — and a coupon with this setting will quietly fail for a large percentage of checkouts.
Where to check
Open the coupon, go to Usage Restriction, and look for the “Exclude sale items” checkbox. If it’s ticked, the coupon will not apply to any product that currently has a sale price in WooCommerce’s price system, regardless of whether that sale price came from manual editing, a scheduled sale, or a discount plugin.
How to fix it
Uncheck “Exclude sale items” if you want the coupon to work regardless of whether items are on sale. If you genuinely want to prevent coupon stacking on already-discounted products, leave it enabled — but be aware that every product touched by a campaign or sale price will be excluded. A safer approach for margin protection is to use the “Exclude products” or “Exclude categories” fields for specific items you want to protect, rather than a blanket sale-item exclusion.
“Exclude sale items” affects campaign-discounted products too
Campaign plugins do not all represent sale prices in the same way. Smart Cycle Discounts does not write a stored _sale_price when a campaign activates; it applies the active price through WooCommerce’s runtime price filters. WooCommerce still sees that filtered price in storefront view context, so themes can show sale badges and strikethrough pricing, while database-driven “On Sale” queries may not include the product. If a native coupon also has “Exclude sale items” enabled, test the exact cart rather than assuming the stored product field tells the whole story.
8. The coupon is restricted to specific email addresses
WooCommerce coupons can be locked to one or more email addresses. If the customer checking out is using a different email address than the one the coupon was issued to — or if they’re not logged in and their email doesn’t match — the coupon will fail. This also catches customers who have multiple email addresses and are using one that isn’t in the coupon’s allowed list.
Where to check
Open the coupon, go to Usage Restriction, and look at the “Allowed emails” field. If there are email addresses listed there, the coupon will only work for customers whose billing email matches one of those addresses. WooCommerce checks against the billing email entered at checkout, not the account email on file — so a customer who fills in a different address than the one their account uses will be blocked.
How to fix it
If the email restriction is intentional (a loyalty reward or a targeted offer), add the correct email address to the list. If the customer is using a different email than the one they were sent the offer on, they need to enter the matching email at checkout. If you want to remove the restriction entirely, clear the field. Be aware that clearing email restrictions on a code that was distributed privately makes it effectively a public coupon — anyone with the code can use it.
9. “Individual use only” is blocking another active coupon or discount
WooCommerce coupons have an “Individual use only” checkbox that prevents other coupons from being applied in the same cart. If a customer has already applied one coupon and tries to add a second, the second may be blocked if either coupon has this setting enabled. This is coupon-on-coupon blocking — it doesn’t prevent campaign-level discounts from combining with the coupon.
Less obviously: if coupon A is marked “Individual use only” and a customer tries to apply coupon B afterward, WooCommerce may block coupon B. But if a customer applies coupon B first and then tries coupon A (the individual-use one), coupon A will remove B and apply itself. The order of entry matters.
Where to check
Open the coupon, go to the Usage Restriction tab, and check the “Individual use only” checkbox. Also check whether there are any other active coupons in the customer’s cart — you’ll be able to see these in the order detail if you check a test checkout or a recent failed order.
How to fix it
If coupons should combine, review Individual use only under Usage Restriction. Core WooCommerce does not document a field for listing exceptions to this setting; any selective stacking feature must come from an extension or customization. See the discount stacking guide for the broader combination policy.
Campaign discounts add a second combination decision. In Pro, Smart Cycle Discounts lets a campaign allow or block native WooCommerce coupons, while SCD-issued campaign codes remain valid for their own campaign. Its priority system also resolves overlapping SCD campaigns deterministically, and Campaign Intelligence warns about overlap and priority ties before launch. That is more predictable than discovering an unintended double discount from a completed order.
10. Free shipping coupon isn’t connected to a shipping zone
If a coupon is set up to grant free shipping but the free shipping option never appears at checkout, the most common reason is a missing configuration in your shipping zones. A WooCommerce “free shipping” coupon type doesn’t override all shipping methods — it enables the “Free shipping” method in WooCommerce’s shipping settings, but only if that method exists and is enabled in the relevant shipping zone for the customer’s address.
Where to check
Go to WooCommerce → Settings → Shipping → Shipping zones. Open the zone that covers the customer’s shipping address and look at the shipping methods listed. There needs to be a “Free shipping” method present and set to “A valid free shipping coupon” (or the combined option that allows both coupons and minimum spend). If the zone only has Flat rate and Local pickup, a free shipping coupon will do nothing at checkout.
How to fix it
Add a “Free shipping” method to the appropriate shipping zone(s). Edit the method and set its “Requires” field to “A valid free shipping coupon.” Once that method is present and enabled in the correct zone, the coupon will surface it as a shipping option when customers apply a valid free shipping code.
If free shipping is part of a broader promotion rather than a standalone coupon, Smart Cycle Discounts can keep it inside the same campaign as the percentage, fixed, or BOGO offer. The free shipping toggle is included in the free version and can target all shipping methods or selected methods, so the promotion’s products, dates, code requirement, and shipping benefit are reviewed together.
Also check the “Allow free shipping” box on the coupon itself
On the coupon’s General tab, there’s a checkbox labeled “Allow free shipping.” This must be checked for the coupon to activate the free shipping method. It’s easy to overlook when building a coupon that’s primarily a percentage or fixed-amount discount with free shipping added as a bonus.
11. Coupons are disabled at the store level
WooCommerce has a global setting that disables the coupon system entirely. If this is turned off, the coupon code field won’t appear at checkout and no coupons will work at all — regardless of how they’re configured. This is occasionally disabled intentionally by store owners who don’t use coupons, but it can also be toggled off by a plugin, a theme setting, or during a site migration without anyone noticing.
Where to check
Go to WooCommerce → Settings → General. Look for the “Enable coupons” checkbox (in recent WooCommerce versions this may be labeled “Enable the use of coupon codes”). If it’s unchecked, no coupon will work anywhere in the store.
How to fix it
Check the box and save. The coupon input field will reappear at checkout immediately. If you’re unsure why it was disabled, check your site’s activity log (Jetpack or WP Activity Log both track settings changes) to see if a recent plugin update or theme change touched this setting.
If your coupon field isn’t showing up at all
Everything on this page assumes the coupon field is visible and a customer can actually type a code into it. If the field itself is missing entirely — not just this global setting, but also after checking block checkout, theme template overrides, and plugin conflicts — that’s a different diagnosis path with its own set of causes. See the guide to a WooCommerce coupon field missing at checkout for the full breakdown of why the field itself can disappear.
12. A plugin conflict is overriding or blocking the discount
A WooCommerce coupon that appears correctly configured but still fails at checkout — after you’ve ruled out all the reasons above — is usually the result of a plugin conflict. Dynamic pricing plugins, discount campaign plugins, checkout customization plugins, and some page builder integrations can all interfere with WooCommerce’s coupon processing in ways that aren’t immediately obvious.
The most common mechanism is a plugin that hooks into WooCommerce’s price calculation or cart validation and either overrides the final price (making the coupon’s discount disappear into the calculation), or fails to pass through the coupon validation correctly.
How to diagnose
-
Test in a clean environment
Create a staging copy of your site. Deactivate all plugins except WooCommerce and your theme. Try applying the coupon. If it works, a plugin is the cause. Reactivate plugins one at a time until the coupon breaks — the last one you reactivated is the conflict.
-
Check your discount campaign plugin’s settings
If you use a campaign discount plugin alongside native coupons, check whether it has a setting that controls coupon compatibility. Some plugins have priority rules or stacking controls that affect whether WooCommerce coupons apply on top of campaign prices. The plugin’s documentation should explain how its discounts interact with native coupons.
-
Test with the default WooCommerce theme (Storefront or Twenty Twenty-Four)
Occasionally a theme’s checkout customization interferes with coupon field processing. Switching to a default theme for a test checkout can rule this out.
-
Check for block checkout compatibility issues
If your site uses WooCommerce’s block-based cart and checkout, some older discount plugins may not apply correctly — they were built for the legacy shortcode checkout and may not hook into the block checkout’s price pipeline. This is a known compatibility issue. See the guide on discount plugins and block checkout for the architectural explanation.
A note on Smart Cycle Discounts and native coupons
Smart Cycle Discounts code-required campaigns bridge into WooCommerce’s coupon pipeline as virtual coupons. That means customers use the normal coupon field and the code works with classic and block-based carts, while SCD remains responsible for campaign-state, usage-limit, and single-use validation and its pricing engine delivers the actual savings. If an SCD code fails, inspect the campaign’s status, schedule, delivery mode, assigned code, eligibility rules, and combination policy—not the native Coupons list. The coupons vs. campaign discounts guide explains where the two systems meet.
Fixed but still looks broken: cache and session state
Sometimes the coupon configuration is already correct, but a customer still sees the old error because the storefront is serving stale page, object, cart-fragment, or WooCommerce session data. The quickest way to separate stale state from a real coupon failure is to rebuild the same cart in a fresh private window. If the code works there, the coupon itself is no longer the problem.
Clear the site and CDN page caches, then clear the object cache if the store uses Redis or Memcached. Under WooCommerce → Status → Tools, clear WooCommerce transients, empty and rebuild the test cart, and confirm that cart, checkout, and My Account pages are excluded from full-page caching. If the code still fails in a clean session, return to the twelve checks above rather than repeatedly flushing caches.
A stale success state matters too
Caching can also make an expired or disabled coupon appear active on a promotional page. Purge the same cache layers after ending a campaign so the storefront message and the checkout result do not contradict each other.
When a code-required campaign is safer than another native coupon
Native coupons are still the simplest answer for a one-off cart discount. The problem starts when the code is only one part of a promotion: it has a product scope, a start and stop time, a recurring schedule, a free-shipping promise, a campaign priority, and a team that needs to know whether it is safe to launch. At that point, managing each concern in a different WooCommerce screen creates more places for the promotion to drift.
Smart Cycle Discounts is available free on WordPress.org and treats the promotion as one lifecycle-managed campaign. Its practical advantages for coupon troubleshooting are:
- One code path for every discount type: percentage, fixed amount, and BOGO are included free; Pro adds tiered pricing, spend thresholds, and bundles. Any type can be auto-applied or require a code.
- Native checkout experience: the customer enters an SCD code in WooCommerce’s existing coupon field; the coupon bridge supports both classic and block cart/checkout.
- URL auto-apply: campaign links can carry
?wsscd_code=YOURCODE, so an email or social link applies the code through WooCommerce’s own cart API instead of asking the customer to retype it. - Automatic timing: campaigns can start, expire, and recur on a timezone-aware schedule. The code is not left active because someone forgot the end date.
- Conflict control before launch: Campaign Intelligence checks overlap, priority ties, timing, product readiness, and discount integrity; the priority system determines which SCD campaign wins.
- Clear separation from native coupons: Pro combination policies decide whether third-party WooCommerce coupons may combine with the promotion, reducing accidental margin loss.
- Draft-first review: you can keep the campaign inactive, preview affected products, review its health score, and schedule it only after the rules look right.
Use the simplest tool that fits the promotion
Do not migrate every native coupon just because a campaign system exists. Keep simple service-recovery or one-customer coupons in WooCommerce. Use Smart Cycle Discounts when timing, product targeting, BOGO logic, recurring delivery, overlap control, or reliable cleanup are part of the job. That division keeps both systems understandable.
Frequently asked questions
Why does WooCommerce say “coupon is not valid” without a specific reason?
Error wording depends on the validation failure and the checkout or coupon extensions in use. Preserve the exact message and test in a clean session before assuming all failures have the same cause.
Why does a WooCommerce coupon work for some customers but not others?
The most common reasons are email address restrictions (the coupon is tied to specific email addresses), per-user usage limits (the customer has already hit their individual redemption cap), or cart contents differences (the customer’s cart contains excluded products or sale items that other customers’ carts don’t). If the failure pattern is truly random, a plugin conflict is worth investigating — some caching or session plugins can interfere with coupon validation inconsistently.
Can a WooCommerce coupon code be applied automatically without the customer entering it?
Not natively. WooCommerce coupons require manual entry at checkout unless a plugin or custom integration applies them. Smart Cycle Discounts offers both delivery modes: an auto-apply campaign that needs no code, or a code-required campaign that customers can enter normally or receive through a ?wsscd_code=YOURCODE URL. The URL is sanitized and passed through WooCommerce’s own apply_coupon() validation path rather than bypassing checkout rules.
Does WooCommerce’s “Exclude sale items” setting affect products discounted by a campaign plugin?
It depends on how the plugin integrates with WooCommerce. A plugin may write a stored sale price, filter the product’s sale price at view time, or calculate only in the cart. Smart Cycle Discounts uses WooCommerce price filters and cart calculation hooks rather than writing a stored _sale_price. Its filtered price can still make the product appear on sale in storefront view context, so test the native coupon against the actual campaign cart whenever “Exclude sale items” is enabled.
What’s the difference between “Fixed cart discount” and “Fixed product discount” coupon types in WooCommerce?
“Fixed cart discount” reduces the entire cart total by a set dollar amount — the $10 comes off the whole cart. “Fixed product discount” reduces the price of specific products by the set amount at the line-item level. If a coupon uses “Fixed product discount” and the restricted product isn’t in the cart, the coupon will not apply at all. If there are multiple qualifying items, the discount applies to each one (up to the “Limit usage to X items” setting if that field is configured).
How do I test whether a coupon is working without placing a real order?
Use WooCommerce’s built-in test mode (available with some payment gateways like Stripe) or place a test order with a “Cheque” payment method — it doesn’t process a real payment. Add the products you want to test to a cart, apply the coupon, and check the cart totals before reaching the payment step. You can cancel or delete the test order from the WooCommerce admin afterward without any financial impact. A staging environment is even better for this — you can test freely without creating real order records.
Is there a log in WooCommerce that shows why a coupon failed?
Not by default. WooCommerce does not write coupon validation failures to a log. However, if WooCommerce logging is enabled (go to WooCommerce → Status → Logs), some events are captured. For detailed coupon failure logging, you’d need a plugin specifically designed to audit coupon usage — there are a few available in the WordPress plugin repository. For most troubleshooting purposes, working through the diagnostic table above is faster than reading raw logs.
For a deeper look at how each individual restriction behaves — including the calculation details behind minimum spend and the interaction rules between allowed and excluded lists — the guide to WooCommerce coupon restrictions covers every field in the coupon editor with its specific gotcha and the right way to configure it.
The vast majority of WooCommerce coupon failures come down to one of the twelve reasons above. A coupon that was working and then stopped is almost always a usage limit, an expiry, or a change in the cart contents that no longer qualifies. A coupon that was never working is usually a configuration issue — product restrictions, the exclude sale items setting, or the free shipping zone setup.
If you’ve worked through this list and the coupon still won’t apply, the last resort is a clean plugin-deactivation test on staging. Plugin conflicts are the one cause that can’t be diagnosed by looking at the coupon settings alone — they require isolating the environment.
What to take from this
- WooCommerce coupon errors are almost always caused by one specific setting — the challenge is knowing which one to look at first.
- The “Exclude sale items” checkbox is the most common silent killer: if any product in the cart has a sale price, the coupon fails for that item — including prices set by campaign plugins.
- The “Allowed emails” restriction and per-user usage limits explain why a coupon works for some customers but not others.
- Free shipping coupons require a “Free shipping” method to be present and enabled in the correct shipping zone — the coupon alone is not enough.
- If the coupon settings look right but it still fails, a plugin conflict is the next thing to test — deactivate plugins on staging until the coupon works, then reactivate one at a time to find the conflict.
- For promotions with schedules, multiple discount types, recurring dates, or stacking risk, an SCD code-required campaign keeps validation, timing, priority, and cleanup in one place while preserving WooCommerce’s familiar coupon field.
- WooCommerce’s “Coupon is not valid” message is deliberately vague. Use the diagnostic table in this post to systematically check each possible cause rather than guessing.
Turn fragile coupon setups into managed campaigns
Smart Cycle Discounts combines code-required or automatic delivery with scheduling, BOGO, conflict checks, priority control, block-checkout support, and automatic cleanup. Percentage, fixed, BOGO, recurring schedules, free shipping, role targeting, location targeting, and shared campaign codes are included free.