ShopCanary / Guides

Shopify discount not applying. Work out why, in order.

Start with the settings that silently disqualify a cart, then check it against a real order. Most of the time the discount is doing exactly what it was configured to do.

Last reviewed 24 August 2026

Work through these first

Each of these produces the same symptom: the code is accepted or the automatic discount exists, and the total does not change.

If it used to work and now does not

Something changed, and it was probably not the discount. Look at what else moved: a new app that owns pricing, a collection that was edited, a Script that was retired on 30 June 2026, or a customer segment that refreshed. The discount is often the thing that reports the problem rather than the thing that caused it.

Check it against a real order

Settings tell you what should happen. An order tells you what did. Pick an order that qualified and put the two side by side.

RuleSPRING takes 15% off the Spring collection
Order subtotal$88.00
Discount expected13.20
Discount applied0.00

Do this for a handful of orders across a couple of weeks. One order proves nothing. A rule that fires on none of the orders that qualified is broken, whatever the settings page says.

The part that costs money

A discount that fails at checkout is usually caught within a day, because the customer is standing there and they complain.

A discount that fails after checkout is not. The order completes, the customer pays more than they expected and says nothing, and the next hundred orders do the same. By the time someone notices, the money is spread across a month of orders and there is nothing to refund against without going back through all of them.

The same is true in the other direction. A discount applying more widely than intended is a margin leak that no customer will ever report to you.

Where ShopCanary fits

ShopCanary is a monitoring app for Shopify stores, built by HJB CodeForge. You declare the rules that should always hold, in plain terms. It checks every order against them as the order arrives.

When a rule does not fire, the alert names the order and the rule, with expected against actual. That is the comparison in the table above, done for you, on the first order rather than the fiftieth.

It keeps a timeline of discount changes alongside the findings, so a rule that stops firing two hours after someone edited a discount reads as exactly that.

It reads your orders, products and discounts. It has no write access, so it cannot change a discount or a price.

Know on the first order, not the fiftieth

Free plan checks every order against one rule and shows every issue it finds. Pro adds real-time alerts with the evidence attached, Google Merchant Center monitoring, Slack, and the discount change timeline.

FREE PLAN · NO CARD · READ ONLY, NEVER EDITS YOUR STORE