help1
shopify-discount-codesshopifycheckoutdiscount-stacking

Shopify Discount Codes: Where the Silent Failures Hide

Shopify discount codes fail silently at checkout, and the admin logs nothing. Here is what we find and why a broken code hurts more than no code at all.

help1 Team
Shopify Discount Codes: Where the Silent Failures Hide

A broken Shopify discount code hurts your checkout more than showing no discount field at all. Customers who successfully apply a code convert at 94 percent. Customers who fail to apply one convert at 35 percent. Customers who never touch the field sit between at 64 percent. The Shopify admin logs none of the failures.

Open your Shopify admin. Go to Analytics, then Reports, then Discounts. Look at the last thirty days. Every row is a code that was used. Nothing on the page tells you a code was tried and failed. If a customer typed something at checkout, hit Apply, saw an error, and closed the tab, you have zero record of it. That is where our data went missing on one of the brands we help, and we spent two weeks working the wrong angles before we found the shape of it.

The symptom we could not explain

A DTC skincare brand we help had run a small influencer campaign in late April. Fifteen thousand link clicks from Instagram Stories, a healthy ad-side click-through rate, and four orders. The influencer had posted a personalised code, tagged the products, and left an honest review. On paper the campaign should have converted. In the discount report, we could see the four redemptions and nothing else.

The obvious hypotheses were the ones we walked through first. Pixel misfires. Klaviyo attribution. A bot problem inflating the click count. Ad platform double-counting. Every check came up clean. The store had a working Facebook CAPI feed. Klaviyo attribution matched Meta on baseline campaigns. GA4 traffic looked real. The product page passed a fresh Core Web Vitals audit. Whatever was happening was happening between the click and the order.

What we checked first, and why none of it was the answer

We ruled out the platform-side plumbing before we looked at the discount setup. The checkout was returning the same load times as the previous month. The shipping rates were rendering. Apple Pay and Shop Pay were both firing on the mobile flow. We even sat with one of the sample buyers on a screen share to watch the funnel from her side. Everything felt normal until she hit the discount field.

Then we hit the discount code side and found nothing wrong with the setup either. The code was live. It was the right percentage. The end date was three weeks out. Combinations were left at the default. Shopify's admin showed a green Active indicator, and the "can combine with other product discounts" checkbox was ticked.

So we opened the checkout in incognito, added the qualifying product, typed the code. It failed. "Cannot be used with your existing discounts."

There were no existing discounts.

The Zuko number that made us change directions

That was the moment we went looking for anyone who had measured this. There is a post from ZukoAlun on r/shopify from late April 2026 with what turned out to be the most useful piece of Shopify checkout research we had read all year. Zuko is a third-party analytics platform that instruments checkout forms across a large merchant sample. Their numbers, from that thread:

  • Customers who successfully apply a Shopify discount code complete the purchase at 94 percent.
  • Customers who fail to apply a code complete at 35 percent.
  • Customers who never interact with the discount code field at all complete at 64 percent.

The 35 percent number is the one that reframed the whole audit for us. A failed Shopify discount code is measurably worse for conversion than showing no discount field at all. The customer has been primed for a price cut, sees a vague error, and reads it as a signal that the store is either broken or fake. The default reaction is to leave.

We do not have the underlying methodology on that dataset. Zuko has not published the sample size or the checkout mix, and we have not been able to reproduce the exact number independently. The direction is consistent with what we see, though. Once we started counting failed-code attempts across the brands we help using a small checkout-side monitoring script, the pattern held. Stores with high discount-attempt failure rates had proportionally worse checkout conversion than stores with clean discount funnels.

Where the failures actually were

We went back to the influencer-campaign store and instrumented a small script that fired whenever the checkout returned an error to the discount input. Over the next week, we counted three separate silent failure paths on that single store.

The first was a usage limit we did not know was set. A previous campaign had used the same code prefix, and the per-code cap had rolled over with the naming. Our influencer code inherited a limit from a January flash sale that we had forgotten to strip when we duplicated the setup. It hit its ceiling on day two of the run. The campaign kept driving traffic. The code kept rejecting it.

The second was a collection scope mismatch. The code was scoped to a "New Arrivals" collection that had been re-tagged during a merchandising cleanup two weeks earlier. Half the products the influencer was pointing at were no longer in that collection. The code applied to some products and failed on others, and the customer had no way to see which was which.

The third was Klaviyo. The brand's welcome flow was auto-generating a 10 percent code for new subscribers that new subscribers were expected to be able to stack with the influencer campaign. That does not work by default. Codes generated through Klaviyo's API have no Combinations settings at all. Any customer who had subscribed and then tried to redeem two Shopify discount codes at checkout was hitting the same silent decline. A merchant on the Shopify Community had documented this exact behavior in early 2025, and the workaround they landed on was a small webhook app called RM Combinable that adds Combinations settings to Klaviyo codes as they are generated. Auto Combine Discounts is a similar option on the App Store.

The Shopify admin flagged none of these. All three showed a green indicator. All three were rejecting real customer attempts. If we had not been sitting on our own checkout-side monitor, we would have had no way to see any of it.

Why Shopify will never surface this in its admin

The core issue is that the discount report was designed as a redemption ledger, not a friction log. Shopify tracks the codes that worked so you can count revenue and attribution. It does not track the codes that were attempted. The distinction sounds semantic; the operational consequence is a permanent blind spot.

We have looked at this from three angles across our client base. There is no admin export, no Flow trigger, and no built-in webhook that fires on a failed discount code attempt. The Shopify Functions runtime returns a discount rejection to the checkout without emitting a merchant-visible event. Shopify Staff have not, in any thread we can find, committed to closing this gap. In the September 2025 Discounts AMA on Shopify Community, DavidWolf confirmed that multi-discount-per-line support via Functions was "planned early next year." Q1 2026 has passed. As of the day we are writing this, we have not found a public changelog entry announcing the enhancement shipped. Whether that is a slipped roadmap item or a quietly deprioritized one, we cannot tell.

The practical read is that if you sell on Shopify and you use discount codes, you are running a channel with no failure telemetry. The analytics silence is not a bug that is about to be patched. It is the current shape of the product, and the platform team has had roughly three years of open community threads on it to say otherwise.

The manual audit we now run before every campaign

We do not have a magic fix for this. What we have is a checklist we run for every discount-heavy campaign on the brands we help. If any of it sounds like something you have not walked through recently on your own store, the first fifteen minutes with a help1 expert is free and a checkout-side discount audit is one of the runs a chat session can turn around inside that window.

  1. Pull every active discount in the admin. For each one, note the usage limit, the current usage count, the collection scope, and every Combinations setting. Compare against your planned promotion. Any code you inherited from a prior campaign should have its cap re-checked.
  2. Test the code in incognito with the exact product mix you are advertising. If the campaign points at four products, add all four. If it points at a landing page, add whatever the landing page pushes. Apply the code, walk the checkout to the payment step, and look at the total.
  3. If you use Klaviyo or another email tool that auto-generates codes, decide before the campaign whether those codes need to combine with anything else on the store. If they do, either pre-generate a batch of codes with Combinations settings enabled and hand them to Klaviyo as a static list, or install a webhook app that patches Combinations settings onto codes as they are created. RM Combinable is the option a merchant in a January 2025 Shopify Community thread confirmed working end to end.
  4. If you run a sitewide automatic discount and a customer-loyalty code at the same time, one of them will silently override the other. In practice the automatic sitewide sale wins. That means a returning customer's better personal code will be quietly declined while a first-time visitor gets the sitewide rate. If your loyalty program depends on layered discounts, pause the automatic sitewide sale during loyalty pushes.
  5. If your store is on Shopify Plus and you were still using Shopify Scripts for discount logic, June 30, 2026 was the hard stop. Any Scripts that were running same-item stacking are done. If you have not migrated the equivalent Shopify Functions, the logic is off and your Shopify discount codes are now failing paths that used to work.
  6. For any campaign of consequence, deploy a checkout-side monitoring script that logs the "cannot be used" error to your own analytics before the customer bounces. The Zuko data is the strongest external signal we have that the friction is expensive. Your own data is what you will actually act on.

For an adjacent audit shape that surfaces conversion damage from popups rather than codes, see our earlier piece on the Shopify discount popup conversion trap. Different failure surface, same "the admin will not tell you" problem.

What we still do not know

The Zuko conversion number is directional, not proven. A published methodology would help. The Discount Function API enhancement that was supposed to make multiple product discounts per line work is either shipped and undocumented, or slipped past Q1 with no announcement, and we have not been able to get a clean answer from Shopify. The Shop app discount drop that two merchants reported in the same week of March 2026 has no root cause we can point to. Whether Shopify will ever expose failed-code attempts as a metric in the admin is not something we would bet money on.

Until any of that changes, assume your Shopify discount codes are failing in ways your dashboard cannot see, and treat the audit above as recurring maintenance instead of a one-time cleanup. Run it before every campaign, and re-run it inside every campaign that runs for more than a week.

If you ran that six-step checklist on your live store this afternoon, how many of your currently-active Shopify discount codes would come back clean?

Still stuck? Talk to an expert.

Our vetted Shopify experts can fix this issue for you in a live session. $39 per session. Your first 15 minutes are free.