Stocky shut down on 31 August 2026. See your replacement options Stocky closed 31 Aug: export window and replacements
Pricing verified: 15 October 2026
Published: 25 March 2026 ·Updated · 11 min read · Workflow

Reliable Shopify Automations: How to Make Every Failure Visible

A Shopify automation is reliable when every failure is either retried or reported, never silently skipped. In Make.com that means error handlers that store failed runs instead of ignoring them, independent branches so one dead API cannot block the rest, deduplication on order ID, and a daily check that your log's order count matches Shopify's.

Getting a Make.com scenario to run once is easy. The hard part is knowing, a month later, that it is still doing what you think. The dangerous failures are not the ones that stop a scenario with a red error. They are the ones that let it finish green while nothing reaches the destination.

What we got wrong, and what it taught us

This site’s own CAPI Shield blueprint is the clearest example we have. Its request to Meta was written against a specific Graph API version. Meta retires versions about two years after release, and once that version was retired every request returned an error. Nobody saw it for about four months, because three settings combined to hide it:

  1. The HTTP module was told not to treat error responses as errors, so a rejected request looked like a successful one.
  2. The step had an Ignore error handler, so even a real error would have been discarded.
  3. Storing incomplete executions was off, so there was no record of failed runs to retry or inspect.

Each of those settings is common advice for keeping a scenario “running smoothly”. Together they made a broken integration look healthy. The blueprint now uses a current version and visible failures, and the rest of this guide is built around not repeating that.

The four ways Shopify automations fail

A hidden failure. As above: the run is green, the destination received nothing. The only defence is checking outcomes, not statuses.

A blocked branch. In Make.com, if a module fails with no error handler, the run stops there. Later steps never execute, including unrelated ones such as logging the order to a spreadsheet.

A missed event. Shopify’s developer documentation says it waits five seconds for a webhook response and retries a failed delivery up to eight times over four hours. If failures continue, the subscription can be removed entirely (Shopify: troubleshooting webhooks). So if your scenario is switched off, out of credits or erroring for an afternoon, you can lose orders, and possibly the webhook itself.

A duplicate event. Shopify tells receivers to handle duplicate deliveries. One order arriving twice can write two rows or send two purchases to an ad platform.

Pattern 1: Choose error handlers by what a failure costs

Make.com offers several error handlers. They behave very differently:

HandlerWhat it doesUse it for
BreakStops this run and, if incomplete executions are stored, keeps it for automatic or manual retryCalls to outside services that fail temporarily: Meta, TikTok, Google, Sheets
ResumeCarries on using a substitute output you defineSteps where a default value is genuinely acceptable
IgnoreDiscards the error and carries onOnly steps whose failure you would never want to know about
Rollback / CommitStops the run, marking it failed or successfulRarely needed for Shopify order flows

To make Break useful, open the scenario’s Settings and turn on Allow storing of incomplete executions. Failed runs then appear under the scenario’s incomplete executions, where they can be retried once the outside service is back.

On HTTP modules, leave error responses treated as errors. If a 400 or 500 response is allowed through as a success, no error handler will ever see it.

Pattern 2: Keep branches independent

Put a Router straight after the webhook and give each destination its own branch, each with its own error handler:

Shopify webhook (orders/create)
    ↓
Router
    ├── Branch 1: Meta Conversions API    → Break handler
    ├── Branch 2: TikTok Events API       → Break handler
    ├── Branch 3: Google Sheets order log → Break handler
    └── Branch 4: P&L sheet               → Break handler

A failing Meta branch then cannot stop the order being logged. Put the cheapest, most important branch (usually the order log) first, because a Router runs its branches in order.

Pattern 3: Deduplicate on order ID

Before acting on an order, check whether you have already processed it:

Webhook receives order
    ↓
Google Sheets: Search rows where order_id = this order's ID
    ↓
Filter: continue only if no rows were found
    ↓
Process the order

This costs one extra credit per order. For ad platforms, also send a stable event ID (the Shopify order ID works) with every purchase. Meta and TikTok use it to merge a browser event and a server event for the same purchase, so even if a duplicate slips through, it is counted once.

If your scenario writes to shared sheets and several orders can arrive at once, consider turning on sequential processing in the scenario settings so runs happen one at a time.

Pattern 4: A daily count check

This is the one pattern that catches every failure, including the silent kind:

  1. Create a second scenario, scheduled once each morning.
  2. Ask Shopify for yesterday’s paid orders. Make.com’s Shopify app can search orders by date; if you call the Admin API directly, use a currently supported API version, because Shopify retires versions on a published schedule.
  3. Count the rows your order log recorded for yesterday.
  4. If the two numbers differ, email yourself both.

When the check finds a gap, look at the scenario’s history and incomplete executions for that day. For ad platforms, a missed purchase can often be sent late: Meta’s Conversions API accepts events up to seven days old, so a gap found the next morning can still be filled.

Pattern 5: Watch the things that switch automations off

Before you call a scenario finished

The Make.com for Shopify guide covers first-time scenario setup, and the Google Apps Script quotas guide covers the limits that apply if any of your automation runs in Apps Script.

Key facts, checked on the source

How to cite this page: Sandelands, L. (2026). Reliable Shopify Automations: How to Make Every Failure Visible. Stack Architect. https://stackarchitect.xyz/blog/the-complete-guide-to-reliable-shopify-automations/ These facts are published as open data under CC BY 4.0: key-facts.json. Found one out of date? How we check and correct.

Luke Sandelands
Written by Luke Sandelands
Founder, Stack Architect · Shopify Automation Specialist
Developer of StockLog and author of the open-source shopify-capi-validator npm package. Builds Shopify server-side tracking, Meta CAPI and Google Apps Script automations.
Full profile

Updated

Frequently Asked Questions

Why do Make.com Shopify automations fail without anyone noticing?

Usually because the failure is being hidden on purpose. An error handler set to Ignore, or an HTTP module told not to treat error responses as errors, makes a rejected request finish as a successful run. The scenario history stays green while nothing reaches its destination. Check the output of a real run, not just its status.

How many times does Shopify retry a failed webhook?

Shopify's developer documentation says it waits five seconds for a response and retries a failed webhook up to eight times over four hours. If failures continue, the webhook subscription can be removed, after which it receives nothing until it is created again. An automation that is down for an afternoon can therefore stop for good.

What is webhook deduplication and why does it matter for Shopify?

Shopify asks receivers to handle duplicate webhook deliveries, so the same order can arrive more than once. Without a check, one order can write two spreadsheet rows or send two purchase events to an ad platform. Deduplication means looking up the order ID before acting and skipping it if it has already been processed.

Which Make.com error handler should I use for Shopify automations?

For calls to outside services that can fail temporarily, such as ad platform APIs, use Break with storage of incomplete executions turned on in the scenario settings, so a failed run is kept and retried rather than lost. Use Ignore only where losing the data truly does not matter, and never on a step whose failure you would want to know about.

How do I know my Shopify automation missed an order?

Compare counts. Once a day, count yesterday's paid orders in Shopify and the rows your automation logged for the same day. If they differ, an order was missed or duplicated. This check catches every kind of failure, including ones that never produce an error, which is why it matters more than any single error handler.