Checkout rule not applying
In short
Most rules that do nothing are missing the Rules Executor block in the checkout editor, or are still set to Draft. If both are fine, test with a checkout that really matches the conditions, and check whether the rule uses All or Any. Then check the action itself, such as the payment method name or product availability.
✓ Applies to
- Rules under Rules in Checkout Ninja
- Shopify Plus checkout (and development stores)
✕ Doesn't apply to
- Custom Blocks that don't show. Those have their own checklist
The Rules Executor isn’t in your checkout
Rules only run inside the Rules Executor app block. Without it, no rule does anything.
How to check: open Shopify’s checkout editor and look for the Rules Executor block. The app’s setup text calls it “Rule Executor”, but the block in Shopify is named Rules Executor.
Fix: click Add app block, choose Rules Executor and click Save. Full steps.
The rule is still a draft
New rules start as Draft, and the Rules Executor only loads Active rules.
How to check: in Rules, look at the Status column.
Fix: open the rule, set Status to Active and click Save. Then open a new checkout.
Your test checkout doesn’t match the conditions
How to check: read each condition against your test checkout. Common mismatches:
- Condition Match Type is Only apply when All Conditions Pass, but your checkout only meets some of them.
- Cart Total is compared with the cart subtotal, in your store currency.
- Text operators such as Contains and Equal are case-sensitive.
PO Boxdoesn’t matchpo box. - Address conditions only match once the buyer has entered the address.
Fix: adjust the conditions or the test checkout. To isolate a problem, remove all but one condition and test again. Every condition.
The Rules Executor is on a different checkout step
On three-page checkout, the executor only runs on the step where you placed it.
How to check: in the checkout editor, see which page the Rules Executor is on.
Fix: move it to the step where the buyer has entered what your conditions check, or to a later step.
The action can’t do what it’s set to
The rule matches, but the action has nothing to act on.
| Action | Check |
|---|---|
| Hide payment method | The text in Payment Method name contains appears in the method’s name. Use one method per action. |
| Modify Cart: Add Product | The variant is for sale and in stock. With Prevent adding duplicate products on, nothing happens if it’s already in the cart. |
| Modify Cart: Set Product Quantity | The variant is already in the cart. This action doesn’t add it. |
| Show Error Message | The Rules Executor is allowed to block checkout progress. Fix. |
| Validate Via API | Your endpoint allows cross-origin requests and returns an actions array. Contract. |
A Validate Via API call is failing
If a Validate Via API action fails, for example your endpoint is down or returns no actions array, the whole rules run fails for that checkout update. Every other rule’s actions from that run are skipped too.
How to check: set the API rule to Draft and test again. If your other rules start working, the API is the cause.
Fix: make your endpoint always return valid JSON with an actions array, even when it has nothing to report.
You have more than 10 rules
The Rules Executor reads 10 rules from your store, drafts included, and then drops the drafts. Rules beyond those 10 never load.
How to check: count the rules in Rules, including drafts.
Fix: delete rules you no longer use, especially old drafts, so you have 10 or fewer.
After any fix, open a new checkout to test. The executor loads rules when the checkout opens, so a checkout that was already open keeps the old rules.
Frequently asked
How quickly do rule changes reach checkout? +
The Rules Executor loads rules when a checkout opens. Save the rule, then open a new checkout or reload the checkout page to test.
Can I see which rule matched? +
Not in the app. Test one rule at a time by setting the others to Draft.
Do rules run on the thank-you page? +
No. The Rules Executor only runs in the checkout.