How to test a Shopify discount before publishing it
The usual way to test a discount is to place a real order and read the receipt. A simulator lets you build a cart, run every live and draft offer against it, and see which ones apply and which ones lose, before anyone is charged.
- Volume
- Spend goal
- $42.00
Radiance Vitamin C Serum
50ml / Qty 1
- $34.00
Hydra-Dew Moisturizer
Qty 1
- $18.00
Gentle Foaming Cleanser
Qty 1
Nothing, and that is the point. The preview runs entirely on the merchant side, so no test orders are placed and no customer sees a half-configured promotion.
How to set this up
- 1
Tools > Simulator
Open the simulator. It runs against the same engine the storefront uses, so the arithmetic is the same arithmetic.
- 2
Build a cart
Add the products, variants, and quantities you want to test, including the awkward cases rather than only the happy path.
- 3
Include draft campaigns
Turn on draft campaigns so an unpublished offer is included in the run. This is how you test before publishing rather than after.
- 4
Read the result
The result shows which offers applied and which were dropped. A dropped offer is usually a combination setting, so the answer is normally in the stacking switches rather than in the tiers.
stacking = check the combine switches first
- 5
Test the boundaries
Run one unit below and one unit above every threshold. Off-by-one threshold errors are the most common discount bug and the cheapest to catch here.
- 6
Publish
Publish once the awkward carts behave. Then re-run the simulator after publishing as a final confirmation.
Every setting, spelled out
These are the real configuration keys the offer is saved with, so you can check your own setup against this table field by field.
| Setting | Value | Config key |
|---|---|---|
| Runs against | the same engine as the storefront | type |
| Includes draft campaigns | optional toggle | schedule |
| Honours combination rules | yes, non-combining offers do not both apply | stacking |
| Places a test order | no | discountMethod |
| Best used on | threshold boundaries and mixed carts | tiers |
See it built end to end
The episode is not up yet
We are recording this one. The written recipe above is complete, so you can build it today.
What Shopify does natively
You can place a real test order, or use a draft order, to see what a discount does. For a single simple discount this is perfectly adequate.
A test order tells you the outcome for one cart after the discount is already live. It does not let you test an unpublished offer, and checking every threshold boundary by placing orders is slow enough that nobody does it.
Watch out for
- The preview honours combination rules, so two non-combining offers will not both appear. If you expected both, the preview is telling you the truth and the storefront would do the same.
- A dropped offer is usually a stacking setting rather than a targeting mistake. Check the combine switches before rebuilding the tiers.
- The preview cannot know things it has no visibility of, such as customer identity on an anonymous cart. Test audience-targeted offers signed in as a qualifying customer.
- Test the boundaries, not the middle. A cart comfortably over a threshold proves much less than one a cent under it.
Common questions
- Can I test a discount before publishing it?
- Yes, by including draft campaigns in the simulator run. The offer does not have to be live to be evaluated.
- Why does the preview show only one of my two discounts?
- Because they are not set to combine. The preview honours the same combination rules as checkout, so it is showing you what would really happen.
- Does previewing place a test order?
- No. It runs entirely on the merchant side and charges nothing.
- What should I test?
- Threshold boundaries above all: one unit and one cent either side of every tier. Then mixed carts that trigger several offers at once.
Related examples
How the active-discount cap is counted, and how to model a big sale so you never hit it.
A sale that starts and ends on schedule, with a countdown and no manual intervention.
Two product-class discounts on two collections, both applying in one cart, with the per-line rule spelled out.
Build this in your own store
Every recipe in this library runs on the same server-side engine, so the cart total and the checkout total agree.