The first person to test your order rules should not be a customer.

Rulestage enforces minimums, order limits and per-customer caps inside Shopify's server-side checkout validation. Simulate any cart against your draft, see which rule wins, and publish it as a version. Nothing changes until you publish, and every change is one you can read back and roll back.

Guard plan, $29 a month, 14-day trial. No theme script; uninstall leaves nothing behind.

Frozen meals5 × Frozen lasagna 6-pack· 65.00 USD· ships to DE
Blockedblocked by r_de_mov

Subtotal 65.00 USD is below the minimum order value 80.00 USD.

Germany minimum orderr_de_movv_a5278b04f5d3

Shopper sees at checkout

Orders shipping to DE need a subtotal of at least 80.00 USD.

r_global_movoverridden by priority: priority 100 loses to r_de_mov at priority 10

Try a rule set on a cart

Three sample stores are loaded: a frozen-meal shop with a Germany minimum, a limited drop with a one-per-customer cap, and a retail store that keeps stock back for clinic accounts. Change the cart, the country or the buyer, then read the decision.

Frozen meals

Sample loaded
Rules in this set3
  • p100Global minimum orderr_global_mov
    minimum order value 50.00 USD · every cart
  • p10Germany minimum orderr_de_mov
    minimum order value 80.00 USD · country DE
  • p10France minimum orderr_fr_mov
    minimum order value 60.00 USD · country FR

Lower priority number wins when two rules share the same check.

Cart1 line

LineQuantityUnit price
Frozen lasagna 6-pack
lasagna · frozen
13.00 USD
Frozen curry 4-pack
curry · frozen
9.00 USD
Subtotal 65.00 USD

Buyer and context

Identified

This is the engine that runs at checkout, not a preview. Install to run it on your own rules.

Loading the checkout engine…

Enforced where Shopify checks the cart

Rules run inside a Shopify checkout validation function. That is the server-side layer Shopify applies to these paths. A cart that breaks a rule cannot complete checkout on them. The shopper sees one message per cart, written by you.

Rulestage adds no script to your theme. Uninstalling removes the validation with the app; your cart and checkout keep working the way they did before.

Shopify applies validation to

  • Online-store cart and checkout
  • Shop Pay
  • PayPal, Google Pay and Apple Pay
  • The Storefront API
  • B2B and draft-order checkouts

Shopify does not apply validation to

  • POS
  • Order editing
  • The orderCreate API
  • Subscription renewals
  • Pre-orders

Rulestage cannot enforce anything there.

01

See which rule wins before it runs

Edit a cart, a buyer and a country in the simulator. The result names the winning rule, its version, the customer message, and every other rule that matched. Contradictory or unreachable rules block publishing. Shadowed rules need your acknowledgement, and the acknowledgement is recorded on the version.

02

Every publish is a version

Publishing writes an immutable rule set and the checkout projection in one step. Saved scenarios run against the draft and the published version and show what a publish would change. Rolling back publishes the earlier content as a new version, so history is never rewritten.

Affected scenarios2

ScenarioPublishedDraftExpectedDiff
F1 — Frozen meal shipping economicsallowedblockedblockedchanged
F3 — Mixed retail/clinic supplyallowedblockedblockedchanged

03

Reproduce a block instead of guessing

A support ticket says a customer was blocked. Open the version that was live, load that cart into the simulator, and read the winning rule and reason. Every simulator and scenario run is stored with its version and its source. If you still need to write to us, export the diagnostics bundle from that entry instead of describing what happened.

Shopify sends no event when a real checkout is blocked, so the audit log is a replay of decisions Rulestage ran, not a live feed of your checkouts.

The rules Shopify's built-in limit cannot express

Shopify's own order value limit sets one minimum or maximum for the whole store. Rulestage is for the rules that need a scope.

  1. Per-customer limit for a drop
  2. Minimum order value by country
  3. Minimum or maximum by product or collection
  4. Capacity floor across channels
  5. A floor that blocks card-testing orders
  6. Store-wide minimum and maximum quantity and value, too

Seven rule families

  • min_quantity
  • max_quantity
  • min_order_value
  • max_order_value
  • per_customer_limit
  • capacity_floor
  • identified_customer_required

Scope any rule by country, customer tag, product or collection. Give it a priority, a message, and what to do when buyer history or capacity data is unavailable.

Templates

Start from a template if you are moving from another limits app: a country minimum, a per-product cap, one per customer for a drop, or a floor that blocks the tiny orders card testers place.

Timing

Per-customer history and capacity pools are written from order and inventory webhooks and can lag a few seconds behind two rapid checkouts. Each affected rule states which way it fails.

Two plans, one difference

Guard

Recommended
$29/ month

14-day trial

Rule families and rule countAll seven, unlimited
Server-side checkout enforcementYes
Simulator on your own draftYes
Conflict, shadow and unreachable check before publishYes
Scenarios with run all and diffYes
Version history and rollbackYes
Audit log with version and sourceKept up to 90 days
JSON exportYes

Enforce

Enforcement only
$9/ month

No trial

Rule families and rule countAll seven, unlimited
Server-side checkout enforcementYes
Simulator on your own draftSample fixtures only
Conflict, shadow and unreachable check before publishNo
Scenarios with run all and diffNo
Version history and rollbackCurrent version only
Audit log with version and sourceNo
JSON exportNo

Billed monthly through Shopify. Uninstalling ends the subscription. Development stores are free. If your subscription ends, your admin stays readable and the published version keeps enforcing for 7 more days, then stops.

Install from the Shopify App Store

Questions

Does it add anything to my theme?

No. There is no storefront script. Enforcement runs in Shopify's validation function; the only shopper-visible text is the message you write per rule.

Can a shopper get around a rule?

Not on the paths Shopify validates. The check runs server-side at checkout, not in the cart page. The excluded paths are listed above.

What does Rulestage store?

Your rules, versions, scenarios, settings, and decision records that carry a hashed customer id. Per-customer purchase history is stored on the customer record inside Shopify as an app metafield. No names, emails, phone numbers or addresses are read or stored.

Where does the shopper's message come from?

You write one per rule, with placeholders for the limit, the quantity and the country. Rulestage shows the winning rule's message and nothing else.