Shopify webhooks in n8n explained, without the jargon: a webhook is a message your store fires to a URL the instant something happens, like a new order landing or a product selling out. Instead of your automation nagging Shopify every few minutes to ask what changed, Shopify pushes the event to you the moment it occurs. This guide shows what webhooks are, why they beat scheduled polling for a Shopify store, and how to build a validated three node workflow that pings your phone on Telegram the second an order comes in.
What it does
The demo workflow watches a single Shopify event, the orders/create topic, and turns every new order into an instant Telegram message. When a customer checks out, Shopify delivers the full order payload to n8n, a Set node formats it into a short human readable summary, and a Telegram node sends it to your chat. You get a ping like this within a second of the sale:
🛒 New order #1042 Customer: Emily Rodriguez Total: 128.40 USD Items: 3
No dashboard refreshing, no email digest that arrives an hour late. The order alert reaches you while the customer is still on the thank you page. Once you understand this pattern, the same webhook plumbing drives every other real time Shopify automation you will ever build in n8n.
Why it beats the default
The common alternative is polling: a Schedule trigger that asks Shopify for recent orders every few minutes. Polling works, but it has three real costs. It is slow, because your alert is only as fresh as the interval, so a five minute schedule means a five minute delay. It is wasteful, because most of those requests return nothing new yet still count against your Shopify API rate limit. And it is fragile, because you have to track which orders you already saw to avoid sending duplicate alerts.
A webhook flips all three. Shopify only contacts you when the event genuinely happens, so the alert is near instant, you spend zero API calls waiting for nothing, and every delivery is a distinct event so there is no de-duplication logic to maintain. For anything that should feel live, a webhook is the correct tool.
| Concern | Polling on a schedule | Shopify webhook |
|---|---|---|
| Latency | As slow as the interval | Under a second |
| API usage | Constant, mostly empty checks | Only on real events |
| Duplicate handling | You track seen order IDs | Each delivery is one event |
| Setup in n8n | Schedule + list orders + filter | One Shopify Trigger node |
What you need
- An n8n instance, either n8n Cloud or self hosted, version 1.0 or newer.
- A Shopify store where you can create a custom app for API access. Follow our 2026 guide to connecting Shopify to n8n first, since the Shopify Trigger needs an access token credential.
- A Telegram account and a bot token from BotFather, plus your numeric chat ID for the destination.
- About 15 minutes to build from scratch, or 2 minutes with the ready made template.
Note: the Shopify Trigger node only registers its webhook when the workflow is active. While you build and test in the editor, n8n uses a temporary test webhook. The permanent subscription is created the moment you toggle the workflow on.
Node-by-node list
Three nodes, one straight line. Here is what each one is and why it exists.
Shopify order webhook— a Shopify Trigger node set to theorders/createtopic. This is the webhook. It registers the subscription with Shopify and fires once per new order, handing the full order object to the next node.Build alert message— a Set (Edit Fields) node that reads the order fields and composes one tidy string. This keeps the message logic separate from the sending, so you can restyle the alert without touching Telegram.Send Telegram alert— a Telegram node that posts the composed message to your chat. Swap it for a Gmail node later if you prefer email; the first two nodes stay identical.
┌──────────────────────────────────────────────────────────────┐ │ SHOPIFY WEBHOOK → TELEGRAM ORDER ALERT │ │ │ │ [Shopify order webhook] → [Build alert message] → [Telegram] │ │ orders/create Set / Edit Fields send │ └──────────────────────────────────────────────────────────────┘
Step-by-step build
- Create a new workflow in n8n and add a Shopify Trigger node. In its settings, set Authentication to Access Token and pick the Shopify credential you created in the connection guide.
- In the same node, set the Topic to
orders/create. That single choice tells Shopify to notify n8n every time an order is placed. Leave everything else at its default. - Add a Set node (also called Edit Fields) and connect the trigger to it. Add one assignment named
messageof type String. - Paste this expression as the value of
message, using the expression editor so the{{ }}parts resolve against the order:🛒 New order {{ $json.name }} Customer: {{ $json.customer.first_name }} {{ $json.customer.last_name }} Total: {{ $json.total_price }} {{ $json.currency }} Items: {{ $json.line_items.length }} - Add a Telegram node and connect the Set node to it. Choose your Telegram credential, set Resource to Message and Operation to Send Message.
- In the Telegram node, set Chat ID to your numeric chat ID, and set Text to the expression
{{ $json.message }}so it sends the string the Set node built. - Click Save, then toggle the workflow Active. Activating it is what registers the real webhook with Shopify. Place a test order, or use Shopify’s webhook test button, and watch the alert arrive in Telegram.
Tip: to see the raw data before you format it, open the Shopify Trigger node and use “Listen for test event”, then place a test order. n8n captures one real payload so you can browse every available field like financial_status, shipping_address, or each line item’s title.
Common mistakes
- Building the whole thing but never toggling the workflow Active. In test mode the webhook is temporary, so live orders never reach it. The permanent subscription exists only while the workflow is on.
- Referencing a customer field on a guest checkout that has none. If some orders come in without a customer object, guard the expression, for example
{{ $json.customer?.first_name || "Guest" }}, so the Set node never errors. - Using the wrong topic.
orders/createfires on new orders;orders/paidfires only after payment clears. Pick the one that matches the moment you actually care about. - Expecting duplicate protection from n8n. Webhooks are one event per delivery, so if you also keep an old polling workflow running you will get two alerts. Retire the poller once the webhook works.
Cost at realistic volume
This workflow is close to free at any small store volume. Shopify does not charge for webhook deliveries. Telegram bot messages are free. On n8n Cloud, each order alert is a single execution, so a store doing 40 orders a day uses about 1,200 executions a month, which sits inside the entry paid tier. Self hosted n8n has no per execution cost at all.
| Volume | n8n executions / month | Shopify + Telegram cost |
|---|---|---|
| 10 orders / day | ~300 | $0 |
| 40 orders / day | ~1,200 | $0 |
| 150 orders / day | ~4,500 | $0 |
The only line item to watch is your n8n Cloud plan’s execution allowance. If order volume climbs into the thousands per day, self hosting removes that ceiling entirely.
Ready-to-import template
The guide above is free to follow, node for node. If you would rather skip the build, the downloadable template is the exact validated workflow from this post, ready to import in one click. Attach your Shopify and Telegram credentials and you are live in about two minutes. Want it built and connected for you end to end? See our done for you automation service.
Instant download · Works on n8n Cloud and self-hosted
Frequently asked questions
What is a Shopify webhook?
A Shopify webhook is a message your store sends to a URL the moment a specific event happens, such as an order being created or a product being updated. Instead of you asking Shopify for changes, Shopify pushes the event data to your automation the instant it occurs.
Do I need code to use Shopify webhooks in n8n?
No. The n8n Shopify Trigger node registers and manages the webhook for you when you pick a topic and activate the workflow. You never touch the Shopify admin webhook settings or write any listener code yourself, so a store owner with no backend can wire this up.
How many webhook topics can one workflow listen to?
Each Shopify Trigger node listens to exactly one topic, like orders/create or products/update. To react to several events, add one Shopify Trigger node per topic, or run separate workflows. Keeping one topic per trigger keeps your logic and your alerts clean and easy to debug.
Why use a webhook instead of polling Shopify on a schedule?
Polling means asking Shopify for new data every few minutes, which adds delay and burns API calls even when nothing changed. A webhook fires only when the event actually happens, so the alert is near instant and you stay well under Shopify API rate limits at any order volume.
Will the webhook still fire if my n8n instance is offline?
Shopify retries a failed webhook delivery several times over roughly two days, so a brief outage usually recovers on its own. If your instance stays down past the retry window, Shopify removes the subscription. Reactivating the workflow re-registers a fresh webhook automatically.
Related guides
- How to connect Shopify to n8n in 2026 — the credential setup this workflow depends on.
- Shopify alerts on Telegram with n8n — more real time notifications built on the same trigger.
- The complete guide to n8n Shopify automation — every store workflow in one hub.
- Browse all Shopify automation guides.
- The n8n template library
- Best n8n AI agent templates for Shopify