Test your Shopify
promotions before
your customers do.
PromoProof reads your Shopify discounts, predicts how they should behave, then tests them with real carts — so you can find problems before your customers do.
Built for Shopify merchantsNo ordersNo paymentsNo inventory changes
| Scenario | Cart total | Expected discount | Actual discount | Result |
|---|---|---|---|---|
| SCN-01 | €49.00 | €0.00 | €0.00 | Match |
| SCN-02 | €50.00 | €10.00 | €10.00 | Match |
| SCN-03 | €75.00 | €15.00 | €15.00 | Match |
The gap
A promotion can look perfect in Shopify.That doesn’t mean it behaves perfectly at checkout.
The promotion editor validates what you typed. It doesn’t run your promotion against a cart. The first thing that does is a customer — and by then the discount has already been too large, or missing, or silently blocked by another offer.
- Stated
Shopify configuration
The rules as you saved them: the value, the threshold, the dates, the collections.
- Stated
PromoProof prediction
What that configuration should produce, worked out and committed to in advance.
- Observed
Real Shopify cart
A cart built through the same discount engine your customers hit at checkout.
- Observed
Comparison
Prediction against observation, in cents. No interpretation, no rounding.
- Result
Verdict
One of four levels, each implying a different thing for you to do.
How it works
From configuration to proof.
Four stages, always in this order. The order is not a detail — it’s what makes the result evidence instead of an opinion.
Read
PromoProof reads the promotion's rules from Shopify — value, thresholds, dates, collections, combination settings — and explains each one in plain English.
PredictBefore the cart runs
It calculates what the discount should do, and commits to that number, before a single cart exists.
Test
It builds real carts through Shopify's Storefront Cart API: just below the threshold, exactly on it, above it, and mixes of eligible and excluded products.
Compare
The committed prediction is compared with what Shopify actually returned. Where they disagree, PromoProof shows both numbers and the cart that produced them.
€12.40
Computed from the rules
€12.40
Returned by Shopify
PASS
They agree, to the cent
Two readings
What it says. What it does.
PromoProof keeps these apart and never blurs them. Inspecting settings is not evidence of what Shopify does — so findings from each side are reported separately, and labelled.
Promotion settings
What Shopify says the promotion is configured to do.
- Discount
- 20% off
- Minimum spend
- €50.00
- Applies to
- Collection: Summer
- Combines with
- Nothing
- Active
- 1 Jun – 31 Aug
Real cart behaviour
What Shopify actually did with a real test cart.
- Cart built
- €62.00
- Eligible items
- 3 of 3
- Expected discount
- €12.40
- Actual discount
- €12.40
- Result
- Pass
The verdict system
Four levels. Each one implies a different move.
Deliberately few. A result you have to interpret is a result you’ll learn to ignore.
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.
Restraint
If PromoProof can’t prove it, it won’t pretend.
When PromoProof can’t reliably test a promotion, it says so. No guessing. No false problems. No pretending that an unusual configuration is broken.
A false alarm costs more than a missed one. It sends you looking for a bug that was never there, and a tool that does that twice stops being worth opening.
Discount restricted to a customer segment. A signed-out test cart cannot be a member of that segment.
The cart got no discount — so call it broken.
The condition couldn’t be reproduced, so nothing was proven either way.
Not tested is the absence of a claim, not a failing grade. It never counts against your store health.
No customer risk
Test without touching the customer.
PromoProof uses Shopify’s cart engine to observe behaviour without creating an order or taking a payment. The test ends where a real checkout would begin.
No orders created
A cart is never turned into an order.
No payments taken
Checkout is never reached, so nothing is charged.
No inventory changed
Carts reserve nothing and release nothing.
Every permission the app requests, and why it needs it.
read_discountsRead the discounts you already created. PromoProof never edits one.
read_productsFind real products to build test carts from.
unauthenticated_read_product_listingsMint a storefront token, the same way your storefront does.
unauthenticated_read_checkoutsRead what a cart came back with.
unauthenticated_write_checkoutsBuild the test cart itself. Carts are never turned into orders.
Deliberately not requested, so it cannot be used by accident.
- No write scopes
- No order scopes
- No customer scopes
Reading who a discount is restricted to would need customer access. Reading only the shape of that restriction is enough to know the discount can’t be tested — so PromoProof requests no customer access at all.
Under the hood
Built around Shopify’s actual discount engine.
PromoProof tests through Shopify’s Storefront Cart API, not draft orders. Carts run through the same discount engine that prices a real customer’s checkout — and nothing is saved. Draft orders would have been simpler to authorise, but they diverge on automatic discounts, which are half the problem.
Promotion rules
Read from the Admin API. Never edited.
Expected result
Computed from the rules and fixed before any request goes out.
Shopify cart engine
The same engine that prices a real customer's cart at checkout.
Observed result
What actually came off the cart, in cents.
Verdict
The two readings, compared.
Worked examples
Four promotions. Four different answers.
Pick one and watch it go through a run. These are real classes of finding, including the one where PromoProof declines to answer.
20% off over €50
20% off over €50: pass. The threshold holds on both sides: €49.00 got nothing, €50.00 got exactly €10.00. Predicted and observed agree to the cent.
- Discount
- 20% off order
- Minimum spend
- €50.00
- Applies to
- Entire order
Cart built just above the threshold
- Cart total
- €62.00
- Expected
- €12.40
- Actual
- €12.40
The threshold holds on both sides: €49.00 got nothing, €50.00 got exactly €10.00. Predicted and observed agree to the cent.
Limitations
Sometimes the right answer is “not tested.”
Some promotion types can’t be verified reliably by a signed-out test cart. PromoProof reads and explains them, then marks them as not tested rather than implying they’re fine — or that they’re broken.
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.
We’d rather say “not tested” than give you a false answer.
Pricing
Priced by how often you need proof.
Every plan runs the same checks. What changes is how many promotions you can test, and how often the whole store is swept.
€0
Enough to see what PromoProof finds in your store.
- 3 promotion checks in total
- Full store check not included
- Configuration checks and live cart tests
- Plain-English explanation of every discount
€9.99/ month
For a store running a handful of promotions at a time.
- 25 promotion checks per week
- Full store check once a day
- Configuration checks and live cart tests
- Test history for every promotion
- Store health overview
€29.99/ month
For stores where a broken promotion is expensive.
- Unlimited promotion checks
- Full store check every 30 minutes
- Configuration checks and live cart tests
- Test history for every promotion
- Store health overview and analytics
NoteShopify Billing is not connected yet. Choosing a plan changes your limits immediately and takes no payment. Prices are shown so you know what each plan will cost once billing goes live.
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.