WooCommerce coupon not working when your promotion is already live? First establish whether the code is being rejected, the discount amount is wrong, or the offer disappears before the order completes. Those are different failures. Removing restrictions until the code works can turn a checkout problem into an unintended discount.
Start with one basket that should qualify and one that should not. Keep the advertised offer, customer message, and exact error beside you. This guide gives you a controlled way to find the failing condition, decide whether to pause the promotion, and hand a useful diagnosis to your developer.
The examples below are hypothetical test cases, not results from a Webless client store. They show how to reason about the problem without guessing which plugin caused it.
WooCommerce coupon not working: identify the failure
A customer saying “the code is broken” is a starting point, not a diagnosis. Ask for the product and variation, quantity, destination country, whether they checked out as a guest, and the visible message. Do not ask for their password, full payment details, or an unredacted account screenshot.
Record the attempt time and the promotion link they followed. That makes it easier to connect the report to a recent edit or release. If several customers report the same failure, group their reports by the first point where the expected result changes.
| What the shopper sees | First comparison | What would justify a change |
|---|---|---|
| The code is rejected immediately. | Compare the exact basket with the written offer and saved coupon conditions. | An eligible basket fails while an otherwise matching control succeeds. |
| The code applies, but the amount looks wrong. | Separate the product discount, shipping, tax, and final total. | The calculated discount differs from the intended offer, not just from a shopper’s estimate. |
| The discount disappears after another step. | Record the amount before and after the address, login, quantity, or checkout change. | The same eligible basket loses the offer at a reproducible step. |
| A campaign link fails, but typing the code works. | Compare the linked entry path with manual entry in a new session. | The failure is isolated to the campaign route or its extension. |
| The order amount differs from the last checkout screen. | Preserve the order reference and the two amounts; stop further test purchases. | A developer identifies which calculation or integration changed the amount. |
This order matters. A missing coupon field calls for a different investigation from an incorrect charge. For a basket that loses products altogether, use the separate WooCommerce empty-cart diagnosis before investigating the promotion.
Build two controlled baskets before editing the coupon
Write the intended offer in one sentence. For example: “This promotion applies to the specified full-price product for eligible customers during the advertised period.” Then identify a basket that clearly meets it. Avoid starting with the largest mixed basket in the complaint because several conditions may differ at once.
- Capture the baseline. Record the product or variation, quantity, customer state, destination, subtotal, discount, shipping, and final total. Save the exact customer-facing message.
- Reproduce without changing settings. Follow the same public entry path in a fresh private browser session. A logged-in administrator is not a substitute for a shopper.
- Change one condition. Try only one different product, quantity, destination, or customer state. Keep everything else constant.
- Record the expected rejection too. A deliberately ineligible basket should still fail. A repair that accepts both baskets may have removed the offer’s boundary.
- Repeat the original case. Return to the baseline to check whether the result is reproducible rather than a one-off session change.
For example, suppose an eligible blue variation works while a red variation does not. That narrows the question to the product selection or a related rule. It does not prove that every coupon or the entire checkout is broken. Ask whether the advertised promotion includes both variations before changing anything.
Keep test evidence private. Use controlled test accounts and remove customer details from material sent to a support team. If you need to complete an order, use a staging environment with a safe payment test mode and outbound fulfillment disabled. Do not create real charges or send warehouse instructions simply to see whether a code works.
Check the saved offer, not just the campaign headline
WooCommerce’s official coupon guide documents the relevant controls. Coupon use is enabled under WooCommerce settings, and individual codes are managed under Marketing. Review restrictions and limits, including product eligibility, sale items, spend, customer email, combinations, and usage allowance. Core codes are not case-sensitive. An expiry date makes the code unavailable on that date, not after it. Minimum spend uses the cart subtotal plus tax.
Compare those saved conditions with the message in your email or advertisement. If the configuration correctly implements the intended offer but the advertisement promises something broader, the necessary repair may be the campaign copy. That is a commercial decision for the promotion owner, not a reason for a developer to silently widen eligibility.
If the configuration is wrong, record the old value and the approved replacement before saving. Retest the eligible and ineligible baskets afterwards. Avoid resetting usage limits, extending deadlines, or enabling combinations without the owner’s approval.
When a WooCommerce coupon is not working only for one customer, compare their actual checkout details with the relevant rule. Do not generalize from an administrator account that qualifies differently. Equally, a successful staff test does not invalidate a customer’s failure report.
Separate a wrong discount from a shipping surprise
Core WooCommerce distinguishes percentage, fixed-cart, and fixed-product discounts. The product discount and shipping charge are different parts of the order. Confirm the selected type against the intended offer before assuming the displayed total is a calculation bug.
A free-shipping promise also needs the correct shipping method in the matching zone. WooCommerce supports minimum-spend and valid-coupon requirements, including either/or and combined conditions. Its free-shipping documentation also explains the setting that tests minimum spend before or after a coupon discount.
Consider an illustrative basket of 100 units, a 15-unit discount, and a free-shipping threshold of 90 units. Ignoring tax for this example, the discounted amount is 85. Testing the threshold before the discount and testing it afterwards produce different eligibility results. A code can therefore apply correctly while the shopper still sees a delivery charge.
The useful question is whether that outcome matches the promised promotion. Do not remove the shipping threshold to hide the discrepancy. Have the promotion owner decide which offer is intended, then verify the relevant zone and calculation with a representative address.
Save the breakdown rather than only the final total. Two different errors could cancel each other out: an excessive product discount and an unexpected shipping charge might produce a plausible-looking amount. A correct-looking total alone is weak evidence.
If a coupon link fails but manual entry works
Automatic coupon application is not a core WooCommerce feature. Identify the extension or customization responsible for your promotion link. The official URL Coupons documentation describes cases where cached coupon URLs interfere with repeated use. It recommends targeted exclusions for the relevant route, rather than treating every store page as uncacheable.
Compare four observations: the original campaign link, the address after any redirect, manual code entry, and a second fresh session. Do not add random query parameters and declare the campaign repaired because one altered URL worked. Shoppers will keep using the real link in the advertisement.
If only the campaign route fails, preserve that link and its redirect destination for the developer. If both linked and manual application fail, return to the controlled-basket test. These branches prevent a cache investigation from distracting you from an ordinary eligibility mismatch.
Our WordPress cache-exclusion guide explains the broader boundary between public cached content and visitor-specific actions. Keep an inventory of the actual cache layers in your store before changing any exclusion.
WooCommerce coupon not working after an update?
If the same eligible case fails after the rules have been checked, note the WooCommerce, theme, promotion-extension, and checkout-extension versions. Record what changed immediately before the first confirmed failure. Timing helps choose a test; it is not proof of causation.
WooCommerce recommends backups and a staging copy for plugin and theme conflict testing. On that copy, reproduce the same action with a reduced stack, then restore components one at a time and repeat the test. Preserve the exact failing sequence throughout the investigation.
Do not disable every plugin on a live store while shoppers are paying. Also avoid pasting a snippet that forces every coupon to validate. That bypasses the business rule instead of explaining why a legitimate basket failed.
For a WooCommerce coupon not working after an update, a good handoff includes the before-and-after versions, a reproducible basket, expected amount, actual amount, and the first failing step. A developer can then investigate the responsible boundary without guessing from a screenshot of the homepage.
Use a controlled staging workflow so test orders, emails, and external integrations stay separate from live customers. Never overwrite the production order database with an older staging copy as part of a coupon repair.
Decide whether the promotion is ready to resume
Fixing one error message is not the finish line. The promotion needs to accept the right basket, reject the wrong one, retain the correct amount through checkout, and produce the expected order record. Use this sign-off before sending more traffic.
| Decision | Evidence to keep | Owner of the next action |
|---|---|---|
| Continue the campaign. | Eligible and ineligible control cases behave correctly; checkout and the test order agree. | The promotion owner approves the verified offer. |
| Correct the campaign message. | The saved rule is intentional, but the advertisement promises a different offer. | Marketing updates the message and confirms the customer response. |
| Pause the affected offer. | A valid basket fails consistently or the wrong amount reaches an order. | The owner pauses the affected promotion while a developer investigates. |
| Escalate a technical repair. | The same case changes result across sessions, checkout steps, or a controlled component test. | The developer investigates that boundary and provides a repeatable verification. |
After a technical change, repeat the original customer route on mobile and desktop. Apply and remove the offer, update the basket, enter a representative address, and confirm the order details in a safe test environment. The broader WooCommerce checkout testing checklist covers payment and order handoffs beyond the coupon itself.
Give one person responsibility for the decision to restart the campaign. Record what changed, which cases passed, and what remains unverified. That is more useful than a message saying “cache cleared” with no evidence that the original offer now works.
Get help without turning a coupon fix into a bigger problem
A WooCommerce coupon not working because of a simple mismatch may only need an approved setting correction. Professional help becomes appropriate when the amount changes between systems, the failure depends on a custom checkout, or you cannot safely reproduce it without affecting customers.
Webless can investigate the technical path and agree the repair scope with you. For ongoing testing around updates and promotions, review our WordPress maintenance services. Existing faults or custom promotion development may require separate work; a care plan should not be presented as automatic coverage for every repair.
The goal is not merely to make the warning disappear. It is to restore the intended offer while keeping its limits, the customer’s total, and the store’s order records consistent.