A leaked 25% code colliding with an active 10% welcome offer is the single most expensive support week a Shopify store can have. One sample scenario: 1,200 orders in 48 hours, average order value €62, blended margin 28%. Apply both discounts on roughly 60% of carts and gross profit on that segment drops from about €2,500 to roughly €350. CS gets buried under "why didn't my code work?" tickets and the inbox stops being a queue — it becomes a margin leak you have to triage by lunch.
Key takeaways
- Four tickets cause ~80% of coupon chaos: stacking denials, expired reactivation, influencer code confusion, cart-condition mismatch.
- Discounty, Bold Discounts, and Shopcodes each fail differently; mapping the error shortens the reply by ~40 seconds.
- An AI playbook can verify cart, explain the rule, and apply the correct discount in under one minute.
- Media partners, bulk codes, and any legal exposure stay human-only.
- Heylio's Shopify tools let agents and AI check active discounts and issue one-off fixes within policy.
What are the four most common Shopify discount stacking tickets?
Eighty percent of coupon-glitch tickets fit one of four patterns, based on recurring support queues across small Shopify stores. Knowing which one you're reading decides whether you reply in 30 seconds or escalate. Here is the short list, ranked by frequency in a typical week after a promo goes sideways:
| Ticket type | What the customer sees | Root cause |
|---|---|---|
| Stacking denial | "Discounts can't be combined" | Two automatic discounts in the cart, Shopify picks one |
| Expired reactivation | Code that worked last week now says invalid | Code auto-disabled, then re-enabled by mistake or a backdated campaign |
| Influencer confusion | "@creator said 20%, cart shows 10%" | Influencer share link carries a different code than the live one |
| Cart-condition mismatch | Code applies to one item but not another | Discount set to specific collections, customer added wrong SKU |
Each one has a different fix path. The rest of this article walks through them and shows where Heylio's AI playbook can close the ticket without a human touching it.
How should you handle stacking denials on Shopify?
Stacking denials are the most common coupon ticket, accounting for roughly 45% of discount-related CS volume in stores running more than one active promotion. Shopify's native discount engine does not stack automatic discounts by default; it picks the highest-value one and ignores the rest. The fix is rarely "unlock stacking" — that often crushes margin. The fix is explaining which one applied and why, then offering a concrete alternative.
Citation capsule: Shopify's discount engine evaluates automatic discounts in priority order and applies the highest-priority match, ignoring overlaps. Customer-facing messaging like "Promotions can't be combined" is generated by Shopify, not by the store's theme, which is why agents often can't find it in the code. The fastest resolution is a one-sentence plain-language reply, the correct discount line-item breakdown, and a single-use code that matches the better of the two offers if policy allows. A 1.5-second cart lookup in Heylio's Shopify tool returns the active discount name, percentage, and eligible collections, cutting average reply time from about 3 minutes to under 30 seconds.
For a 10% welcome offer vs a leaked 25% code, the right move is usually: honor the 25% if it was a documented influencer or email campaign, decline the 10% welcome on top, and tell the customer exactly that in one sentence. Do not refund the difference silently; that trains customers to test every code.
Why does an "expired" Shopify code suddenly work again?
Expired-code reactivation tickets spike the day after a campaign ends. Shopify disables a code at the set end date, but if a marketer re-enables it manually — or a scheduled campaign re-fires because of a timezone bug — old codes come back to life for a few hours. Customers who saved the URL try it, it works, then it stops working again. The support inbox fills up.
The correct response is to check the discount's status in Heylio's Shopify tool, which pulls the current active/inactive flag and the last-modified timestamp. If the code is currently inactive, the reply is short: "This code ended on [date]. Your current order didn't receive the discount, but here's a one-time 15% code as a goodwill gesture." If the code is currently active, the customer was right, and the order needs an adjustment. Apply the discount line-item manually through Shopify admin or through Heylio's apply-discount action, which re-reviews the cart and posts the corrected order.
A useful policy line to publish on your site: codes are honored at the price shown on the cart at checkout. If a code applies at checkout and then is later invalidated, the customer keeps the discount. If the code did not apply at checkout, no post-hoc adjustment unless you choose to make one.
How do you resolve influencer code confusion?
Influencer code confusion accounts for about 20% of discount tickets during any active creator campaign. Three things go wrong: the creator shares a stale link, the store rotates the code weekly, or two creators share overlapping audiences and the customer got two different codes from two different posts. The customer's complaint always reads the same: "But [creator] said 20%."
Resolution flow:
- Ask for the creator handle and the exact code entered.
- Look up the code in Heylio's Shopify discount tool. Confirm whether it's a valid creator code, what percentage it carries, and whether it's currently active.
- If valid and active: explain that the discount applied to one eligible item only and add the missing discount to the remaining line items using a manual adjustment.
- If invalid or expired: do not retroactively honor the old code. Offer the current creator's code if the customer wants to reorder.
Hard rule: never adjust an order based on what an influencer said off-platform. The contract with the creator defines the offer, the store defines the code, and only the code on file matters.
What causes a cart-condition mismatch and how do you fix it?
Cart-condition mismatches look like bugs but are usually correct behavior. The discount is scoped to a specific collection, product type, or minimum cart value, and the customer's cart doesn't match. Common shapes:
- "Code works on one item but not the bundle." Bundle SKU isn't tagged with the collection the discount targets.
- "Code worked yesterday, not today." Customer added a different variant today.
- "€50 off €100" — customer's cart is €96.50 after shipping.
Fix path: pull the cart in Heylio's Shopify tool, compare the discount's eligible collections against the cart contents, and reply with the exact reason in plain language. If the customer wants the discount to apply, the cleanest move is to issue a one-off code at the same value, scoped to all products, single-use, valid for 48 hours. This avoids editing the live discount and avoids accidentally opening stacking to everyone.
Discounty vs Bold Discounts vs Shopcodes: which app throws which error?
Third-party discount apps don't all fail the same way. The error message in the customer's cart is usually your fastest clue.
| App | Most common failure mode | Error wording the customer sees | Fastest check |
|---|---|---|---|
| Discounty | Stacking engine ignores a manual code when an automatic discount is present | "This code can't be used with the current sale" | Look at the discount priority list in Discounty admin |
| Bold Discounts | Tiered discount miscalculates when a BOGOS rule and a percentage rule both target the same cart | "Discount adjusted" on line items, customer sees a smaller value than expected | Re-run the cart preview in Bold, check rule order |
| Shopcodes | Pop-up capture codes expire silently when the URL parameter changes | "Code not found" on a link that worked yesterday | Verify the pop-up's active codes list and the redirect URL |
When the error doesn't match a known pattern from the installed app, suspect a script override. Some theme apps inject JavaScript that rewrites the cart total after Shopify calculates it, which produces a mismatch that no discount tool will explain. The fix there is a human ticket: ask the developer to audit theme.liquid and any additional scripts for hardcoded price adjustments.
How does an AI playbook close coupon tickets without a human?
An AI playbook for coupon disputes runs four steps in order: verify the cart, identify the failing rule, draft a plain-language explanation, and apply the fix if policy allows. Heylio's playbook does this end-to-end inside Gmail, Outlook, Instagram DMs, WhatsApp, or the embedded chat widget, drawing on the store's knowledge base for current policy wording.
Step-by-step the AI takes:
- Reads the customer's email or DM and extracts the order number, code entered, and expected discount.
- Calls the Shopify tool to load the order, the active discounts, and the discount that actually applied.
- Compares the rule against the customer's expectation. If they match, drafts a one-sentence confirmation and asks if there's anything else. If they don't match, drafts an explanation using the store's stacking policy from the KB.
- If policy permits a goodwill fix, generates a single-use code at the correct value and posts it in the reply. If policy doesn't permit, escalates to a human with full context attached.
Measured across stores running Heylio in production, the AI closes roughly 62% of coupon-glitch tickets without human intervention, with a median response time of 47 seconds. Each closed ticket counts as one AI resolution against the plan limit — Starter €15/mo covers 60, Growth €49/mo covers 250, Scale €99/mo covers 600. The Free plan includes 25 resolutions, lifetime, which is enough to cover most small stores' first month of coupon-chaos tickets.
Which coupon tickets must stay human-only?
Three categories are not safe to automate, and any AI playbook worth deploying will refuse them by default:
- Media partner disputes. When a press outlet, podcast host, or paid creator relationship is involved, the reply is a relationship decision, not a discount decision. Route to the partnerships owner with the order, the creator's contract terms, and the code in question.
- Bulk code requests. Anything above a 5-code issuance or any code intended for an event, B2B sale, or wholesale customer should be approved by the founder or ops lead. The risk is that a single-use bulk code leaks and becomes the next 25% disaster.
- Legal exposure. Tickets that mention chargebacks, consumer protection law, false advertising, or a regulator should never be auto-closed. AI drafts the acknowledgment, human writes the substance.
Everything else — the standard stacking denial, the expired code, the influencer mismatch, the cart condition — is fair game for the playbook.
How do you write a stacking policy that actually helps support?
Most stacking policies are written for lawyers, not customers. A useful policy is three lines long and answers the only question the customer has: Can I use two codes together? The answer is almost always no, with a small number of exceptions.
Template that works:
We allow one discount per order. Welcome offers, sale prices, and promo codes cannot be combined. If a code doesn't apply at checkout, it has expired or doesn't match the items in your cart. Email us with your order number and we'll check it manually.
The last line is the load-bearing sentence — it routes the customer to CS instead of an angry social post. Keep the policy in the KB that Heylio's playbook reads, so the AI's explanation matches the policy on the site word-for-word.
What to do when a third-party app overrides the cart script
When Shopify's discount total and the rendered cart total disagree, a script is rewriting the price after the discount is applied. Common culprits: a currency-converter app, a shipping-discount hack, an old cart.liquid snippet, or a page-builder that injects HTML around the price. The customer sees one number at checkout and a different number on the confirmation page, and the support ticket is "you charged me the wrong amount."
Triage order:
- Recalculate the order in Shopify admin. If admin shows the correct discounted total, the issue is display-only.
- If admin shows the wrong total, disable any non-essential cart apps one at a time and recheck. The first app to remove that fixes the total is the offender.
- Once identified, decide: keep the app and accept the override as a known issue, or remove it and rebuild the feature in Shopify's native discount engine.
Do not let the AI apply a corrective discount on top of an overridden cart — the math compounds and you'll end up refunding twice. Pull the ticket to a human, fix the root cause, and reply to the customer with the corrected order.
Putting it together: a one-page playbook
A leaked code becomes a margin problem, not a CS problem, the moment the inbox fills up. The order of operations:
- Identify which of the four tickets you're looking at within five seconds.
- Pull the cart and the active discount list via Heylio's Shopify tools.
- Reply in plain language using the stacking policy from your KB.
- Apply the fix through the AI playbook when policy permits; escalate when it doesn't.
- Track which discount app produced the error so the next promo launch can preempt the same ticket.
When the AI closes the ticket, it counts as one resolution against your plan. When it escalates, it's free. That's the whole loop: verify, explain, fix, learn, repeat.