Preventing Double Discounting with Automatic Conflict Protection
Which rule applies to which overlap: conflict exclusion between campaigns, prevention of Shopify amount-off discounts, and combination settings on codes.
Double discounting happens when separate promotions match the same product. In this fictional case a 20% Flat Product Discount lowered the real price to $64 and a 15% Shopify automatic discount applied on top. Discount Prime handles overlaps with fixed rules: first holder keeps a product between campaigns, an optional prevention for Shopify amount-off product discounts, and no priority setting.
At a glance
- Challenge
- Two teams targeted the same collection with a 20% Flat Product Discount and a 15% Shopify automatic discount, and the 15% applied on top of the reduced price.
- Approach
- A Flat Product Discount with conflict exclusion review, "Prevent combination with Shopify discounts" for amount-off product discounts, code combination settings, and a shared calendar.
- Discount Prime campaign types used
- Flat Product Discount
Scenario-based case study: the merchant is fictional and modeled on patterns across Discount Prime stores. Prices, costs and outcome figures are illustrative assumptions for teaching, not measured results from a real store.
Short Answer
Double discounting usually is not a bug. Two promotions, created by different people, both match the same product, and each behaves exactly as configured. Preventing it takes three separate controls, because there are three different kinds of overlap:
| Overlap | What happens by default | Control |
|---|---|---|
| Two Discount Prime price campaigns on the same product | The campaign that already holds the product keeps it; the newer one excludes it | Automatic conflict exclusion, plus manual resolution |
| A Discount Prime price change plus a Shopify "amount off products" discount | Shopify applies its discount on top of the already-lowered price | "Prevent combination with Shopify discounts" (scope limits below) |
| Discount Prime checkout discounts plus Shopify codes or order discounts | They can combine; Discount Prime's combination settings are fixed, not set per campaign | The Shopify discount's own combination settings, and a promotion calendar |
There is no campaign priority setting in Discount Prime, and the app does not apply a general "best deal wins" rule. Knowing which rule applies to which overlap is most of the work.
Scenario
Consider Urban Avenue, a fictional fashion retailer where marketing, support, and operations all create promotions.
Marketing launches "Summer Collection" with a Discount Prime Flat Product Discount: 20% off the Summer collection. A different team had already scheduled a Shopify automatic discount: 15% off products in the same collection.
| Checkout line | Amount |
|---|---|
| Summer dress, original price | $80.00 |
| Flat Product Discount (20%): new product price | $64.00 |
| Shopify automatic discount (15% of $64) | -$9.60 |
| Customer pays | $54.40 |
| Intended price | $64.00 |
| Unplanned discount per unit | $9.60 |
Why both applied: a Flat Product Discount changes the product's actual price in Shopify (by default it moves the original price into the compare-at price and sets the new price). To Shopify, the dress simply costs $64, so the 15% automatic discount applies to $64 as it would to any product. The second discount is calculated on the reduced price, so the total is 32% off, not 35%.
Illustrative margin effect (assumption: unit cost $36): intended gross profit $64 − $36 = $28; actual $54.40 − $36 = $18.40, a third less per unit.
Alternatives
| Approach | Fits when | Limits |
|---|---|---|
| Shared promotion calendar and a pre-launch check of active Shopify discounts | Few teams, few promotions | Depends on everyone checking every time |
| One owner for all discounts | Small team, centralized marketing | Bottleneck; support still needs recovery codes |
| Shopify combination settings on each native discount | Overlaps come from Shopify codes and automatic discounts that are checkout discounts | Do not help when one side is a real price change, as above |
| Discount Prime conflict controls | Overlaps involve Discount Prime campaigns | Scope limits listed below |
Most stores need a calendar and the platform controls together.
How Discount Prime Handles Each Overlap
1. Two Discount Prime campaigns on the same product
When a new price-modifying campaign includes products that a live campaign already holds, those products stay with the first campaign. The new campaign shows them under "Products excluded due to conflicts", with the campaign they conflict with. This is "first holder keeps it", not "best deal wins": a newer 30% campaign does not take a product from an older 20% one unless you move it.
- Moving products between campaigns, or resolving per product, needs the Basic plan or higher; on Starter the list is read-only.
- Bundles, cross-sell, upsell, free shipping, Tiered Spend (order), and Buy X Get Y set to combine with others are not part of this exclusion.
2. Discount Prime price changes plus Shopify "amount off products" discounts
The campaign option "Prevent combination with Shopify discounts" (Prime plan or higher; check the plan page) edits conflicting Shopify discounts while the campaign runs:
- It removes the campaign's products from active Shopify "amount off products" discounts, automatic or code. If every product in a Shopify discount is covered by the campaign, that discount is ended.
- When the campaign ends, Discount Prime restores what it changed. Check the Shopify discount afterwards, especially if it was edited in the meantime.
- It applies only to "amount off products" discounts. Shopify order discounts, free shipping discounts, Buy X Get Y discounts, and discounts created by other apps are not changed.
- If the Shopify discount targets collections, prevention applies only when the Discount Prime campaign selects the same collections.
In Urban Avenue's case both target the Summer collection, so the option covers it.
3. Discount Prime checkout discounts plus Shopify codes
Campaigns that discount at checkout (for example Tiered Quantity or Tiered Spend) are registered in Shopify as combinable with product, order, and shipping discounts. That is fixed in the app, not a per-campaign choice. Whether a Shopify code stacks with them therefore depends on the code's own combination settings in Shopify. Shopify applies product discounts first and order discounts on the reduced subtotal (Shopify Help Center).
A 10% support recovery code set to combine with product discounts will stack on the campaign price. If that is not intended, change the code's combination settings.
Inside one cart
- A unit given free by Buy X Get Y is not discounted again by other campaigns.
- Units used in a bundle, gift, cross-sell, or upsell are not counted twice.
- If several Tiered Spend campaigns qualify, the smallest order discount applies.
- For bundles and other set offers, the "Best deal wins" combination option keeps the larger of the bundle saving and the product's existing discount on that line; the "stack" option adds them. This option is specific to those offers.
Recommended Setup for Urban Avenue
| Layer | Setting | Purpose |
|---|---|---|
| Campaign | Flat Product Discount, 20% off Summer collection | The intended offer |
| Shopify overlap | "Prevent combination with Shopify discounts" on | Removes the Summer products from the 15% automatic discount while the campaign runs |
| Campaign overlap | Review "Products excluded due to conflicts" before launch | Confirms no product is silently kept by an older campaign |
| Codes | Support and recovery codes set not to combine with product discounts, or limited to full-price collections | Covers what prevention does not |
| Calendar | One shared list of planned promotions | Catches order discounts and other apps |
Pre-Launch Tests
| Test input | Expected result |
|---|---|
| Summer dress, no code | Pays $64.00 |
| Summer dress with the 15% automatic discount still scheduled | Pays $64.00; the dress is no longer in the Shopify discount |
| A non-Summer product in the 15% automatic discount | Still gets 15% |
| Summer dress + 10% support code | Shows whether the code stacks; adjust the code if it should not |
| A product in an older live campaign | Listed as excluded; keeps the older price |
| After the campaign ends | Prices revert and the Shopify discount includes the Summer products again |
Measurement
- Primary metric: orders where a campaign product received more than one discount, from Shopify order reports or Discount Prime analytics (discounts from other apps appear as unaccounted).
- Guardrail: Estimated Profit per campaign versus plan (after cost of goods, discounts, and shipping).
- Process metric: conflicts found before launch vs after.
- Change if stacked orders still appear: identify the source (order code, other app, Buy X Get Y) and close that specific path.
Takeaway
"One product, one discount" is achievable, but no single switch covers every overlap. Know which rule applies where: first holder keeps a product among Discount Prime price campaigns; prevention covers Shopify "amount off products" discounts within its scope; Shopify codes and order discounts follow their own combination settings. A shared calendar covers the rest.
Frequently asked questions
Why did a Shopify discount apply on top of my sale price?
If the sale changes the product's actual price (as a Discount Prime Flat Product Discount or Bulk Price Update does), Shopify sees the lower price as the normal price and applies any eligible discount to it. An $80 dress reduced to $64 that also matches a 15% automatic discount sells for $54.40, an unplanned $9.60 per unit. Shopify's combination settings do not stop this, because the sale is not a discount.
How do I stop a Shopify automatic discount from stacking on a Discount Prime campaign?
Turn on "Prevent combination with Shopify discounts" in the campaign (Prime plan or higher). While the campaign runs, it removes the campaign's products from active Shopify amount-off product discounts, or ends a discount whose products are all covered, and restores them when the campaign ends. It does not change order discounts, free shipping, Buy X Get Y, or other apps' discounts, and collection-based discounts only when the same collections are selected.
What happens when two Discount Prime campaigns include the same product?
The campaign that already holds the product keeps it. The newer campaign excludes it automatically and lists it under products excluded due to conflicts. This is not best deal wins: a newer, deeper campaign does not take over unless you move the product, which requires the Basic plan or higher. Bundles, cross-sell, upsell, free shipping, and Tiered Spend are not part of this exclusion.
Can I set which campaign has priority?
No. Discount Prime has no priority field. Overlaps follow fixed rules: first holder keeps a product among price campaigns, the smallest discount applies when several Tiered Spend campaigns qualify, and the larger shipping discount applies among shipping tiers. For bundles and set offers, the per-offer option Best deal wins keeps the larger of the bundle saving and the product's discount on that line.
Do Shopify discount codes combine with Discount Prime campaigns?
They can. Discount Prime's checkout discounts are registered in Shopify as combinable with product, order, and shipping discounts, and that is not configurable per campaign. Whether a code stacks therefore depends on the code's own combination settings. Shopify applies product discounts first and order discounts on the reduced subtotal, so set support or influencer codes not to combine if they should not stack.
Go deeper
Features used
From the blog
Run this architecture in your store
Every campaign type in this case study is included in Discount Prime, with profit analytics to verify the margin impact.