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

Mechanism 01

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
Reported asPromotion settings
Mechanism 02

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.

  1. 01Read the discount's rules from the Admin API
  2. 02Generate carts below, at, and above every threshold
  3. 03Compute the expected discount before sending anything
  4. 04Build the cart through the Storefront Cart API
  5. 05Read what actually came off the total
  6. 06Compare, in integer cents, and classify
Reported asReal cart behaviour

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.

As Shopify returns it
type
DiscountCodeBasic
customerGets.value
PercentageValue 0.2
minimumRequirement
SubtotalMinimum 50.00
items
Collections [Summer]
combinesWith
order: false · product: false
usageLimit
200 · used 200
As PromoProof explains it

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.

Threshold under test20% off · minimum spend €50.00
€49.00One cent short
Discount€0.00
€50.00Exactly on it
Discount€0.00
€75.00Clear of it
Discount€0.00

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.

Promotion A

20% off over €50

Combines with: nothing

Promotion B

€5 off orders over €40

Combines with: order discounts

Cart€62.00
Expected€12.40 · one discount only
Actual€12.40 · Promotion B not applied
Review

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.

Pass
Your move

Nothing.

The predicted discount and the discount Shopify actually applied agreed, down to the cent. The promotion does what its configuration says it does.

Promotion20% off · minimum spend €50
Test cart€62.00
Expected€12.40
Actual€12.40

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.

    Findings
    2 settings · 4 cart
    Verdict
    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.

    Promotions
    18
    Need action
    1
  • Test history

    Every run kept against the promotion it tested, so you can see when behaviour changed and what it changed from.

    Runs kept
    All
    Last run
    14:32
  • Analytics

    Aggregates over the checks you've already run: what gets flagged most, and which promotions keep coming back.

    Scope
    Checks run
    Forecasts
    None
  • Full store checks

    Sweep every promotion in one action. How often depends on your plan — daily on Basic, every 30 minutes on Pro.

    Basic
    Once a day
    Pro
    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.

    Affects score
    No
    Is a verdict
    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.