Initial assessment without passwords Quote before intervention One accountable specialist from start to finish

Sessions Cache Customer State

Coupons Apply in the Cart but Disappear at Checkout

Diagnose a WooCommerce coupon that applies in the cart but vanishes at checkout through sessions, recalculation, restrictions, cache and custom code.

A coupon accepted on the cart page can disappear when checkout recalculates prices against the final address, shipping, tax, user and product state. It can also be lost with the WooCommerce session or removed by custom code during an AJAX update.

Record the exact coupon and cart conditions. Repeatedly creating replacement coupons can hide the original rule conflict and introduce unintended discounts.

Confirm whether the coupon is removed or only hidden

Compare the cart total, discount line and checkout total. Inspect the checkout request response and WooCommerce notices after the address loads.

If the total still includes the discount but the line is absent, review the theme or checkout block display. If the total increases and the coupon no longer appears in the cart object, investigate validation or session state.

Use a controlled coupon and test product; do not publish live codes in screenshots.

Reproduce the recalculation trigger

Apply the coupon, then change one factor at a time: billing country, shipping postcode, shipping method, account login or payment method. Note the moment it disappears.

Stable comparison:
coupon code and type
product IDs and quantities
customer/guest state
address region
shipping method
subtotal before tax

This isolates a real eligibility change from a general checkout failure.

Review coupon restrictions

Check minimum and maximum spend, individual-use setting, excluded sale items, products, categories, email restrictions, usage limit and expiry. WooCommerce may evaluate spend before or after particular discounts depending on configuration.

Product variations and parent products can interact differently with inclusion rules. Confirm the actual variation ID in the cart.

If an email restriction applies, a guest may not become eligible until a billing email exists. The checkout should explain the rejection rather than silently removing the code.

Follow the customer session

Inspect whether the same WooCommerce session cookie survives from cart to checkout. A host, HTTPS or cookie-consent transition can create a new session with no applied coupons.

Verify the cart itself remains identical. If products also disappear, repair session continuity rather than coupon configuration.

Do not clear all sessions to test one coupon; preserve the failing browser and active customer carts.

Exclude checkout from shared cache

Cart and checkout totals are customer-specific. Inspect response cache headers and ensure both pages plus WooCommerce AJAX endpoints bypass full-page cache.

A cached checkout can display an earlier total even while the current server session contains the coupon. Test after cache has warmed, not only immediately after purging.

Currency and language caches must also vary correctly if coupon restrictions depend on converted totals.

Inspect custom validation and removal hooks

Discount, membership and checkout plugins may remove coupons during recalculation. Search maintained code for coupon validation filters and calls such as:

WC()->cart->remove_coupon( $coupon_code );

Determine which condition runs during update_order_review. Avoid code with side effects in a filter that WooCommerce may execute several times.

Log the coupon identifier and rule outcome during a controlled test, not customer emails or full cart data.

Repair the rule and customer message

Correct the session, cache, restriction or custom condition demonstrated by the test. If the coupon is genuinely invalid after an address or product change, keep the rule and show a clear reason.

Do not weaken usage limits or excluded-product rules globally to resolve a display problem.

Complete checkout with an eligible coupon and verify the discount appears in the WooCommerce order and provider total. Then test an ineligible case, refunds and tax rounding.

Recurring care should include coupon acceptance tests after pricing, tax, currency, checkout and promotion-plugin changes. The definitive result is the stored order total, not a temporary cart message.

BEFORE YOU SEND THE REQUEST

Frequently asked questions.

Do you ask for passwords in the form?+

No. The public form never requests access. Secure credentials are requested only after the scope and quote are approved.

Who reviews the incident?+

The request goes to Jordi Ensenyat, founder of Code Barcelona and a WordPress specialist with more than 15 years of experience.

Is anything changed before the quote?+

No. Visible symptoms and scope are reviewed first. Intervention begins after approval and with a rollback path prepared.

Do you work internationally?+

Yes. WP Repair handles WordPress and WooCommerce incidents in English and Spanish through a remote service.

Assess my incident