Features
Two ways to be sure. Kept strictly apart.
PromoProof answers two different questions about a promotion, and never lets the answers blur together. One is reasoning about rules. The other is evidence from a real cart.
The two testing mechanisms
Configuration checks
Reasoning over the discount’s rules alone. No network, no products, instant. These run for every promotion — including the ones that can’t be cart-tested.
- Usage limit already exhausted
- End date earlier than the start date
- Fixed amount larger than the smallest qualifying order
- Discount pointing at a collection with no products
- Overlapping promotions that refuse to combine
- Rules that contradict each other
Live cart testing
PromoProof predicts what should happen, then observes what Shopify does. The prediction is committed first, which is what makes the comparison meaningful.
- Read the discount's rules from the Admin API
- Generate carts below, at, and above every threshold
- Compute the expected discount before sending anything
- Build the cart through the Storefront Cart API
- Read what actually came off the total
- Compare, in integer cents, and classify
Discount analysis
Read back in a sentence you can check.
PromoProof pulls each discount from Shopify and writes out what it does — so you can confirm the promotion says what you meant, before anything is tested.
- type
- DiscountCodeBasic
- customerGets.value
- PercentageValue 0.2
- minimumRequirement
- SubtotalMinimum 50.00
- items
- Collections [Summer]
- combinesWith
- order: false · product: false
- usageLimit
- 200 · used 200
Takes 20% off the order when the subtotal reaches €50.00, and only counts items in the Summer collection. It won’t stack with any other offer.
Its usage limit of 200 is already spent, so no customer can redeem it right now.
Boundary testing
Thresholds break at the edges, not the middle.
Every threshold a promotion declares gets a cart on each side of it, plus one sitting exactly on the line. Amounts are handled in integer cents throughout, because a product that exists to catch off-by-a-cent errors can’t introduce its own.
Testing only the middle of a range proves nothing about its edges. PromoProof builds a cart on each side of every threshold a promotion declares.
Combination testing
What happens when two offers meet one cart.
Promotions rarely run alone. PromoProof puts overlapping offers into the same cart and reports which one Shopify actually applied.
20% off over €50
Combines with: nothing
€5 off orders over €40
Combines with: order discounts
The two offers can’t stack, and Shopify picked the larger one. That matches how they’re configured — worth confirming it’s what you intended, not evidence of a fault.
Results
Four verdicts, and what each one asks of you.
Nothing.
The predicted discount and the discount Shopify actually applied agreed, down to the cent. The promotion does what its configuration says it does.
Predicted and observed agree. Nothing to do.
Counts toward your store health score.
Reporting
What you get back.
Promotion health reporting
Every finding on one promotion, split into what the settings say and what a cart actually did. The plain-language verdict leads; the score is secondary.
- 2 settings · 4 cart
- PASS
Store health overview
Every promotion in the store at a glance, grouped by what each one needs from you. Only PASS and PROBLEM move the number.
- 18
- 1
Test history
Every run kept against the promotion it tested, so you can see when behaviour changed and what it changed from.
- All
- 14:32
Analytics
Aggregates over the checks you've already run: what gets flagged most, and which promotions keep coming back.
- Checks run
- None
Full store checks
Sweep every promotion in one action. How often depends on your plan — daily on Basic, every 30 minutes on Pro.
- Once a day
- Every 30 min
Improvement tips
Optional suggestions, kept structurally apart from verdicts. A tip never affects your score, and never claims to know your margins or traffic.
- No
- No
Honest states
What PromoProof will not claim to have tested.
These types are read and explained accurately. They are not cart-tested, and PromoProof marks them as such rather than letting silence imply a pass.
Buy X Get Y
Read and described accurately, but not cart-tested.
Free shipping
Needs a delivery address and live shipping rates to observe. Not simulated.
App and Function-backed discounts
Their logic lives in code Shopify doesn't expose. Listed, and marked unsupported.
Customer-segment restrictions
A signed-out test cart is not a member of your segment, so it can't reproduce the condition.
Market-specific pricing
Carts are built in your primary market. Other markets aren't varied.
Know before
they know.
Test your Shopify promotions before your customers do.
Coming to the Shopify App Store. The button opens the store while the listing is in review.