HomeShopify & E-commerceManage Shopify From Telegram With n8n:…

Manage Shopify From Telegram With n8n: Two-Way Bot Guide

Manage Shopify From Telegram With n8n: Two-Way Bot Guide








To manage Shopify from Telegram with n8n, you build a two-way bot that answers slash commands like /orders, /lowstock, /sales, and /find right inside a chat window. Instead of unlocking your phone and loading the Shopify admin every time you want a number, you type one word and the bot queries the Shopify Admin API and replies in seconds. This guide walks through all twelve nodes, the exact build steps, the mistakes to avoid, and the running cost at real volume.

What it does

Most Shopify owners already get pushed notifications: a new order lands, a Telegram ping fires. That is one direction only. This workflow flips it around so you can ask the store questions on demand, from the same Telegram chat you already keep open.

You send the bot a command and it answers:

  • /orders returns your five most recent orders with totals and payment status.
  • /lowstock lists every variant at or below a stock threshold you set.
  • /sales reports how many orders came in today and the running total.
  • /find 1042 looks up a single order by its name or number and returns its status.

It is the difference between a notification feed and a control panel. When a customer emails asking where their order is, or a supplier asks what you need reordered, the answer is one message away instead of a login, a search, and three taps. This fits into the wider n8n Shopify automation stack as the query layer that sits alongside your existing alert workflows.

Why it beats the default

The default way to check these numbers is the Shopify mobile app. It works, but it is heavy for a quick glance: it loads a full dashboard, it wants you logged in, and it does not let you script or combine views. If you want “low stock across every variant under 5 units” you scroll and count.

A Telegram bot beats that for three reasons. It is instant, because the reply is plain text with no interface to render. It is shareable, because you can add a warehouse assistant to the chat and they get the same commands without a Shopify staff seat. And it is extendable, because every command is just an n8n branch you control, so adding a new report is a five-minute job rather than a feature request to an app vendor.

It also pairs cleanly with push alerts. Keep order alerts on Telegram for events that reach out to you, and use this bot for the questions you reach out to ask. Together they cover both directions from one chat.

What you need

  • An n8n instance, either n8n Cloud or self-hosted version 1.0 or newer.
  • A Telegram bot token from @BotFather, which takes about two minutes to create.
  • A Shopify custom app access token with read scopes for orders and products. Follow how to connect Shopify to n8n in 2026 using the Dev Dashboard method to generate it.
  • Your store domain in the form your-store.myshopify.com.

Estimated build time is 30 to 40 minutes from scratch, or under 10 minutes if you import the template and paste in your credentials.

Node-by-node list

The workflow is twelve nodes. A single Telegram Trigger feeds a parser, a Switch routes on the command, four HTTP Request nodes hit the Shopify Admin API version 2026-04, four Code nodes format the reply, and one Telegram node sends it back.

Telegram Trigger
      |
Parse Command (Code)
      |
Route Command (Switch)
  |     |      |       |
/orders /lowstock /sales /find
  |     |      |       |
[Get   [Get    [Get   [Find
 Recent Products Today  Order]  <- HTTP Request (Admin API)
 Orders]      Orders]
  |     |      |       |
[Format][Format][Format][Format] <- Code (build reply text)
  \     |      |      /
     Send Telegram Reply
# Node Type Job
1 Telegram Trigger telegramTrigger Receives every message sent to your bot
2 Parse Command code Splits the message into command and argument, grabs the chat ID
3 Route Command switch Sends the run down one of four branches by command
4 Get Recent Orders httpRequest GET last 5 orders
5 Get Products httpRequest GET products with variant inventory
6 Get Today Orders httpRequest GET orders created since midnight
7 Find Order httpRequest GET one order by name
8 Format Orders code Turns the order list into a text reply
9 Format Low Stock code Filters variants under the threshold
10 Format Sales code Sums today's order totals
11 Format Order code Formats a single order lookup
12 Send Telegram Reply telegram Sends the formatted text back to the chat

Step-by-step build

  1. Add a Telegram Trigger node. Attach your Telegram credential, set Updates to message, and save. n8n gives it a webhook that Telegram will call on every message.
  2. Add a Code node named Parse Command. Paste the parser below. It reads the message text, splits off the first word as the command, keeps the rest as the argument, and stores the chat ID so the reply goes back to the right place.
    const msg = $input.first().json.message || {};
    const text = (msg.text || '').trim();
    const parts = text.split(/\s+/);
    const command = (parts[0] || '').toLowerCase();
    const arg = parts.slice(1).join(' ');
    return [{ json: { command, arg, chatId: msg.chat ? msg.chat.id : '' } }];
  3. Add a Switch node named Route Command. Create four rules, each a String equals check on {{ $json.command }} matching /orders, /lowstock, /sales, and /find. Name the outputs so the canvas stays readable.
  4. On the first output add an HTTP Request node named Get Recent Orders. Method GET, URL https://your-store.myshopify.com/admin/api/2026-04/orders.json, authentication set to Generic Header Auth with your Shopify token credential. Add query parameters status=any, limit=5, and a fields list of name, total_price, financial_status, fulfillment_status, created_at.
  5. On the second output add Get Products, same auth, URL ending /products.json, with limit=250 and fields=title,variants. Variant inventory rides along in the response.
  6. On the third output add Get Today Orders, URL ending /orders.json, with status=any, limit=250, fields=total_price,created_at, and a created_at_min value of {{ $now.startOf('day').toISO() }} so only today's orders return.
  7. On the fourth output add Find Order, URL ending /orders.json, with status=any, limit=1, and a name parameter of {{ $('Parse Command').item.json.arg }} so it searches for whatever number the user typed.
  8. Behind each HTTP node add a Code node that builds the reply text. For Format Low Stock, the code loops every variant and keeps those at or below the threshold:
    const products = $input.first().json.products || [];
    const threshold = 5;
    const low = [];
    for (const p of products) {
      for (const v of (p.variants || [])) {
        if (typeof v.inventory_quantity === 'number' && v.inventory_quantity <= threshold) {
          low.push(p.title + ' - ' + v.inventory_quantity + ' left');
        }
      }
    }
    const message = low.length
      ? 'Low stock (<= ' + threshold + '):\n\n' + low.join('\n')
      : 'All variants are above the low-stock threshold.';
    return [{ json: { message } }];
  9. Add one Telegram node named Send Telegram Reply. Set Chat ID to {{ $('Parse Command').item.json.chatId }} and Text to {{ $json.message }}. Wire all four Format nodes into it, since only one branch ever runs per message.
  10. Save, toggle the workflow Active, and message your bot /sales to confirm it replies.
💡

Tip: to make the bot answer only you, add a line in Parse Command that compares msg.chat.id to your own chat ID and returns an empty command otherwise. That single check stops strangers who find the bot handle from pulling your store data.

Common mistakes

  • Leaving the Shopify token with write scopes it does not need. This bot only reads, so grant read_orders and read_products and nothing more.
  • Forgetting the created_at_min value on the sales branch. Without it the node returns your entire order history and the total is meaningless.
  • Wiring the Format nodes into separate Telegram nodes. One shared Telegram node is cleaner and avoids four near-identical configs drifting apart.
  • Using an old Admin API version in the URL. Stick to a current version like 2026-04 so field names and behavior match this guide.
  • Testing before the workflow is Active. The Telegram Trigger only receives live messages once the workflow is switched on.

Cost at realistic volume

The running cost is close to zero. Telegram charges nothing for bot messages. Each command is one or two Shopify Admin API calls, and Shopify's REST limit is two calls per second per store, so even rapid checking never comes near the ceiling.

Usage Commands per day Shopify API calls n8n executions
Solo owner ~20 ~30 20
Owner plus assistant ~60 ~90 60
Small team ~150 ~230 150

On n8n Cloud's Starter plan the small-team column still fits inside the monthly execution allowance, and self-hosted users pay only their server cost. There is no per-message fee anywhere in the chain.

🚀 Manage Shopify From Telegram template

The full guide above is free to follow. If you would rather skip the build, the ready-to-import template gives you all twelve nodes wired and validated, so you only paste in your Telegram and Shopify credentials and set your store domain. Prefer it done for you? Our done-for-you service installs and configures it on your instance.

Download the template ($19) →

Instant download · Works on n8n Cloud and self-hosted

FAQ

Can I manage Shopify from Telegram without writing code?

Yes. The two Code nodes in this build are already written for you, so once you import the template and attach your Telegram and Shopify credentials the bot works. You only edit your store domain and, if you want, the low-stock threshold. No coding experience is required to run it.

Is a Telegram bot secure enough to query my Shopify store?

It is safe when you lock it down. The bot talks to Shopify through a private access token stored in n8n, never in Telegram. Add a chat ID check in the Parse Command node so the bot answers only your own account, and the token never leaves your n8n instance.

Will this bot let me change orders, or only read data?

This version is read-only by design. Every command runs a GET request against the Shopify Admin API and reports back. That keeps it safe to hand to staff. You can extend it later with write actions like tagging or fulfilling an order by adding a POST request node behind a new command.

How many Shopify API calls does the bot use?

One command triggers one or two Admin API calls. Even a busy owner checking the bot 100 times a day stays far under Shopify's rate limits and the free n8n execution tiers. There is no per-message cost from Telegram either, so the running cost is effectively zero.

Does this work on n8n Cloud and self-hosted?

Both. The workflow uses only core n8n nodes, so it imports cleanly on n8n Cloud and any self-hosted instance. The Telegram Trigger needs a public webhook URL, which n8n Cloud provides automatically and self-hosted users get through a tunnel or a reverse proxy.

Related guides