What we find · Specimen 05

The ad's discount code is rejected at checkout

An ad, an email or a banner promises a code. The shopper types it into the cart and the store answers that the code is not valid for these items. Money was spent to bring someone to a promise the checkout will not honour.

It is the defect with the shortest path from a marketing decision to a lost order, and the one the store is least likely to notice, because the shopper does not write in. They leave.

  1. Specimen 05 · The ad's code is rejected

    Subtotal$164.00
    WELCOME-OFFERApply
    That code isn’t valid for these items.

    the ad that sent them here promised it

    Money spent to bring someone to a promise the checkout will not honour.

The specimen is drawn — our own type, our own palette, an invented product, no screenshot and no store's interface reproduced. It shows what the defect class looks like, not what any storefront looked like.

What a shopper sees

They saw the offer, they came for the offer, they built a cart around the offer, and the last screen before payment tells them it does not apply. A few will email. Most will assume the store is not honest, abandon the cart, and remember the name for the wrong reason.

The variant where the code expired is only slightly better: the ad or the seasonal collection is still live, still indexed, still promising, and the checkout is the first place anyone learns otherwise.

Why it happens

On Shopify

The discount was created with a condition the ad does not mention: a minimum subtotal, specific collections, first order only, one use per customer, or excluding sale items. Or the discount had an end date and the ad, the announcement bar and the seasonal collection page did not. Or the code in the ad was typed differently from the code in the admin, with a hyphen where there is none. Automatic discounts and code discounts do not combine by default, so a shopper already receiving one is refused the other with the same message.

On WooCommerce

Coupons carry usage restrictions by product, category, email, and cart total, plus an expiry, plus a checkbox excluding sale items, and a coupon copied from last season's inherits all of them. A plugin that sets prices or bundles can mark items as not eligible. A currency switcher can push the cart total under the minimum in the shopper's currency while the admin sees it above. Caching can serve an expired coupon banner for days after the coupon is gone.

Check your own store in two minutes

  1. List every promise — Every place a code is printed right now: ads, the announcement bar, the popup, the last three emails, the seasonal collection page, the packaging insert.
  2. Apply each one — Logged out, with a typical cart, on a phone. Do it with a cart that includes a sale item and one that is under your usual order size.
  3. Read the restrictions — Open each discount in the admin and compare its conditions with the words in the ad. Any condition the ad does not state is a rejection waiting to happen.
  4. Find the leftovers — Search your store for last season's code. If a collection or page still carries it, it is live to search engines whether or not it redeems.

What the fix involves

Make the ad and the discount say the same thing: the conditions in the ad, or no conditions in the discount. Give every promotional page and banner the same end date as its code and take them down together. Where a code is rejected, have the theme say why in plain words, so the shopper can add the missing item or drop the excluded one instead of leaving. Then test the live codes once a month with a real cart.

Effort in the published audits: under an hour to retire an out-of-season promotion and its collection. Aligning a live campaign is an afternoon with the ad account open.

Where we found it

Audit No. 002, a powersports retailer on Shopify: a seasonal gift collection was live and indexed out of season, carrying an active offer with a discount code in the collection description. We did not attempt checkout, so whether the code still redeemed is not something the audit could tell the store, which is itself the problem: a shopper finds out by trying.

Not sure about yours?

Send the URL. We read the storefront from the outside, write down every finding with the page it came from, and send you the document. It is free, ungated, and yours to keep.