Skip to content
On this page
Fix Troubleshooting 2 min read Updated Sep 28, 2026

Error message not blocking checkout

In short

Shopify only lets an app stop a buyer if you allow it. Open the checkout editor, select the Rules Executor block, allow it to block checkout progress, and save. If buyers still get through, check the executor is on the step they're on, and for Validate Via API, that your response is valid.

✓ Applies to

  • Rules with a Show Error Message action
  • Rules with a Validate Via API action that returns errors
  • Shopify Plus checkout (and development stores)

✕ Doesn't apply to

  • Required fields in Custom Blocks
No error appears at all? Start with the rule checklist →

The Rules Executor isn’t allowed to block checkout progress

This is the most common cause. The Rules Executor asks Shopify for permission to block progress, but Shopify only grants it when you turn it on for that block. Without it, Shopify ignores the block request and the buyer continues.

How to check: open Shopify’s checkout editor and select the Rules Executor block. Look at its checkout behavior setting for blocking checkout progress.

Fix: allow the block to block checkout progress, then click Save in the checkout editor. Test with a new checkout.

i

If you have more than one Rules Executor block, for example one per checkout step, allow blocking on each one.

The Rules Executor is on a different step

On three-page checkout, the executor only runs, and only blocks, on the step where it’s placed. If the rule starts matching on a later step, for example after the buyer picks a shipping method, an executor on an earlier step can’t stop them.

How to check: in the checkout editor, see which step the Rules Executor is on, and compare it with where the buyer enters the data your rule checks.

Fix: place the Rules Executor on that step or a later one, and allow it to block checkout progress there too.

The rule doesn’t match when the buyer continues

The error only blocks while the rule’s conditions match. If the buyer changes something so they no longer match, the error clears and they can continue. That’s expected.

How to check: reproduce the buyer’s checkout with the same cart, address and email, and compare it with the conditions. Watch for Condition Match Type: All needs every condition to match.

Fix: adjust the conditions. Every condition.

Your API response isn’t valid (Validate Via API)

For Validate Via API, errors only block when the response is valid. If the call fails or the JSON has no actions array, the rules run fails and nothing is blocked.

How to check: open the browser’s network tab at checkout and inspect the call to your API URL. Look for a failed CORS preflight, a non-JSON body, or a missing actions array.

Fix: always return JSON like this, with actions present even when empty:

{
  "actions": [],
  "errors": [{ "message": "We can't deliver to this postcode.", "target": "$.cart.deliveryGroups[0].deliveryAddress.zip" }]
}

The HTTP status code doesn’t matter. Full contract.

The rule is a draft or the executor is missing

If no error appears at all, the rule isn’t running. Check the rule’s Status is Active and the Rules Executor is in your checkout. Full checklist.

Frequently asked

Why does Shopify need my permission to block checkout? +

It's a Shopify safeguard. An app can ask to block checkout progress, but only the merchant can allow it, per app block, in the checkout editor.

When does the buyer see the error? +

When they try to continue while the rule matches. Checkout stays on the current step until they change what the rule checks.

Can a buyer skip the error with an express checkout button? +

The Rules Executor only runs on the checkout page where you placed it. Anything that completes the order without loading that page isn't checked.

Related guides

Still stuck? Open the app and use Support to chat with the team, or contact us. Don't have the app yet? Install Checkout Ninja.