StoreBuilt’s review of Shopify promotion documentation and our discount-governance guidance starts with a simple question: what exact basket should qualify? An offer can be configured correctly yet described badly, or described clearly but implemented against the wrong products. Our approach is to compare the intended promise with a reproducible checkout result before editing the promotion.
A Shopify automatic discount not applying is not one diagnosis. The qualifying items may be absent, the reward may not be in the basket, the customer may be ineligible or the theme may show an outdated summary. This guide helps UK ecommerce teams separate those cases without turning a small promotion problem into a store-wide pricing change.
In this guide
- Write the promise as a testable sentence
- Identify the discount method and provider
- Build a clean qualifying basket
- Verify customer eligibility and timing
- Separate checkout calculation from theme display
- Check other promotions without disabling the whole sale
- An illustrative missing-gift investigation
- Use boundary tests before approving the repair
- StoreBuilt point of view
Write the promise as a testable sentence
Replace “the sale is broken” with a rule that names the products, quantities, customer group, dates and expected saving. For example: “During this campaign, an eligible customer buying two selected bath products receives the selected travel-size item free when it is also in the basket.” This is an illustrative rule, not a recommendation for any particular offer.
List what should not qualify as well. A negative case makes the diagnosis stronger: a basket missing the second qualifying item should remain undiscounted. Without that control, a rushed fix can appear successful simply because the offer now applies too broadly. Keep the commercial owner involved when deciding the intended boundary.
Identify the discount method and provider
Confirm that the offer is an automatic discount rather than a code, a sale price or a custom app promotion. A compare-at price can display a saving without creating a discount at checkout. A campaign link can populate a code without being an automatic discount. A third-party widget may have its own configuration and storefront requirements.
Shopify’s automatic discount guidance describes eligibility and supported discount types. Use that documentation for native behaviour and the app provider’s current instructions for app-managed offers. Record the discount name and provider so that everyone is testing the same promotion, not a similar campaign left active from last month.
| What the customer sees | What it might represent | Where to investigate |
|---|---|---|
| Crossed-out product price | Compare-at pricing | Product or variant price data |
| Code shown in a banner | Code-based offer | Discount code and eligibility |
| Saving applied without a code | Automatic offer | Automatic discount configuration |
| Gift selector in a drawer | App or custom interface | Widget and discount integration |
| Different checkout saving | Another applicable promotion | Active discounts and combinations |
Build a clean qualifying basket
Start with an empty basket and add the exact variants named by the campaign. Do not substitute a similar-looking product. Check the quantities and the collection or product scope recorded in the promotion. A newly created product may look like part of a range without being included in the configured offer.
For buy-X-get-Y promotions, Shopify states that customers need all qualifying and reward items in the basket. Do not assume the platform adds the free item automatically because the banner says “free gift”. If an app supplies that convenience, test the app’s addition separately from the discount calculation. One can work while the other fails.
Verify customer eligibility and timing
Record whether the test is performed as a guest or as the intended customer account. Review any customer restrictions actually configured for the offer. Avoid using the store owner’s account as the sole test subject if the campaign is meant for a different audience.
Check the start and end settings against the store’s time context. If the offer is not active yet, changing product eligibility will not help. Preserve the intended campaign dates and correct only the misunderstanding or configuration error. Our store timezone guide covers coordination with email and other scheduled tools when the issue is timing rather than basket logic.
Separate checkout calculation from theme display
Compare the basket summary with checkout after the same items have been added. If checkout applies the correct saving but the drawer does not, investigate the theme or app’s refresh behaviour. If neither applies it, focus first on the rule and eligibility. A visually stale drawer is not proof that the underlying offer has failed.
Repeat after changing quantity and removing an item. The interface should explain when the customer has crossed the qualifying boundary. Do not simply hard-code the advertised percentage into a theme label: that can show a saving that the checkout never grants. Our Shopify development service can address the calculation-to-display handoff where custom interfaces are involved.
Check other promotions without disabling the whole sale
Inventory the promotions that can apply to the same basket. Inspect their combination settings and the final checkout result. The existence of several active offers does not mean that all must stack, nor that the campaign with the largest headline percentage should determine every line’s price.
Use the discount combinations guide for the broader commercial policy. For this incident, keep the investigation narrow: identify the conflicting case, preserve configuration evidence and agree a safe test. Avoid switching off unrelated live campaigns simply to obtain a clean screenshot during trading hours.
An illustrative missing-gift investigation
Imagine a British bath-products brand advertises a travel-size gift with two eligible products. Its basket contains the two paid products but no gift. The team initially suspects the minimum quantity rule. The more useful observation is that the reward item has never entered the basket.
A native discount can correctly price an eligible reward without providing a gift-selection interface. The brand must either tell customers how to add it or implement and verify a suitable selection flow. The acceptance test includes choosing the gift, checking its quantity, seeing the final price and removing a qualifying item. This is an illustrative scenario rather than a client case or promised conversion improvement.
Use boundary tests before approving the repair
Test a valid basket, an invalid basket and the transitions between them. Include a product with multiple variants if that is part of the promotion. Where customer eligibility applies, compare an eligible customer with a deliberately ineligible control. Keep evidence of expected and observed outcomes together.
| Test basket | Expected evidence | Why it matters |
|---|---|---|
| Exact qualifying items | Intended saving at checkout | Confirms the positive case |
| One item below minimum | No premature saving | Protects the boundary |
| Reward missing | Clear route to add reward | Distinguishes selection from pricing |
| Qualifying item removed | Discount recalculates correctly | Tests live basket changes |
| Another offer present | Approved combination result | Prevents unexpected stacking |
| Mobile drawer to checkout | Consistent explanation and total | Confirms the customer journey |
After a repair, retain a small set of test baskets in the campaign brief. Give support a precise explanation and update any misleading banner wording. Track complaints and successful eligibility checks, but do not infer increased revenue from one passing test. Commercial impact needs a separate measurement window.
StoreBuilt point of view
An automatic discount should remove work for the customer, not hide the conditions they must satisfy. StoreBuilt prioritises a clear promise, an exact qualifying basket and a trustworthy final total. The most useful fix is often a small configuration or interface correction backed by a negative test, rather than a more generous offer applied everywhere.