HomeShopify & E-commerceShopify refund alert to Telegram with…

Shopify refund alert to Telegram with n8n

Shopify refund alert to Telegram with n8n









A Shopify refund alert to Telegram built in n8n pings your phone the second any refund is issued, with the order ID, the amount returned and the reason attached. Most store owners only find out about refunds when they scan the admin or reconcile at month end, by which point a spike in returns has already been quietly draining margin for days. This guide builds the alert from scratch with three nodes, then hands you a ready-to-import template if you would rather skip the wiring.

What it does

The workflow listens for Shopify’s refunds/create event. Every time you or a staff member issues a refund, whether it is the full order or a single returned item, Shopify sends the refund payload to n8n. The workflow reads the transaction amounts, sums them into one clean total, pulls the order ID and the refund note, and sends a formatted message straight to your Telegram chat.

You end up with a running feed of refunds in the same place you already check messages. No dashboard to open, no report to wait for. A typical alert reads like this:

💸 Refund issued
Order ID: 5081234567890
Amount: 49.00 USD
Reason: Wrong size sent
Time: 2026-09-02T14:30:00-04:00

Seeing refunds as they happen changes how you react to them. A single refund is noise, but three in an afternoon for the same product is a signal, and you catch that pattern hours earlier when the alerts are stacking up in front of you instead of buried in a report you read on Friday. Faster awareness means you can pause a listing, flag a supplier, or check a shipment before the same problem refunds ten more orders.

Why it beats the default

Shopify does send a staff email on some refund actions, but those land in a shared inbox, they are easy to filter away, and they say nothing about how the day’s refunds are trending. If three refunds hit in an hour because a batch shipped with the wrong variant, an email digest will not make that obvious. A live Telegram feed will, because you watch the messages stack up in real time.

Telegram also travels better than email. The alert reaches your phone as a push notification, it works for a whole team if you point it at a group, and it stays readable on a two inch lock screen. Because the message is built from the raw webhook, you control exactly what it says, so you can strip it down to the three facts that matter or add order tags, customer email, or a link back to the order in Shopify admin.

What you need

  • An n8n instance, either n8n Cloud or self-hosted (version 1.0 or newer).
  • A Shopify store with a custom app and Admin API access token. If you have not connected Shopify to n8n yet, follow how to connect Shopify to n8n in 2026 first. It uses the current Dev Dashboard method, not the removed legacy custom-app flow.
  • A Telegram account, a bot created through @BotFather, and the chat ID you want alerts sent to.
  • About 20 minutes to build it by hand, or under 5 minutes with the template.

Node-by-node list

Three nodes, one straight line. No branches, no code node.

[Refund created (Shopify)]  -->  [Format refund message]  -->  [Send Telegram alert]
   shopifyTrigger                 set (Edit Fields)              telegram (sendMessage)
   topic: refunds/create          builds the message text        posts to your chat
  
Node Type Job
Refund created (Shopify) shopifyTrigger Fires on the refunds/create webhook
Format refund message set (v3.4) Sums transaction amounts and composes the alert text
Send Telegram alert telegram (v1.2) Sends the message to your Telegram chat

Step-by-step build

  1. Add the Shopify trigger. Drop a Shopify Trigger node onto the canvas. Set Authentication to Access Token and pick your Shopify credential (created during the connect guide above). Set the Topic to Refund created (refunds/create). When you save, n8n registers the webhook with Shopify automatically.
  2. Add the Edit Fields node. Connect an Edit Fields (Set) node after the trigger. This is where you turn the raw refund payload into a clean sentence. The refund webhook carries a transactions array, and each entry has its own amount and currency, so a single refund can span more than one transaction. You sum them so the alert shows one figure.
  3. Build the message field. In the Set node add a String field named message and paste this expression:
    =💸 <b>Refund issued</b>
    Order ID: {{ $json.order_id }}
    Amount: {{ ($json.transactions || []).reduce((s, t) => s + parseFloat(t.amount || 0), 0).toFixed(2) }} {{ ($json.transactions && $json.transactions[0]) ? $json.transactions[0].currency : ($json.currency || '') }}
    Reason: {{ $json.note || 'No reason provided' }}
    Time: {{ $json.created_at }}

    The reduce adds every transaction amount, toFixed(2) keeps it to two decimals, and the fallbacks stop the message breaking when a field is empty.

  4. Add the Telegram node. Connect a Telegram node, set Resource to Message and Operation to Send Message. Select your Telegram credential. In Chat ID paste the chat you want alerts in. In Text use ={{ $json.message }}.
  5. Turn on HTML formatting. Open Add Field in the Telegram node, add Parse Mode and set it to HTML. That renders the <b> tag as bold. Save the workflow and toggle it Active.
💡

Tip: To make each alert clickable, add one line to the message: Order: https://admin.shopify.com/store/YOUR-STORE/orders/{{ $json.order_id }}. Tapping it opens the order in Shopify admin from your phone.

Common mistakes

  • Reporting only the first transaction. If you reference transactions[0].amount directly, a refund split across two transactions under-reports the total. Summing the array with reduce is what keeps the figure honest.
  • Forgetting Parse Mode. Leave it off and the alert shows a literal <b> in the text. Set Parse Mode to HTML so the tag renders.
  • Using the wrong chat ID. A personal chat ID is a positive number; a group ID is negative and includes the minus sign. Sending to a group without the minus sign returns a “chat not found” error.
  • Bot never messaged first. Telegram bots cannot start a conversation. Send your bot any message once (or add it to the group) before the first run, or the send silently fails.
  • Expecting alerts on unpaid cancellations. Cancelling an order that was never paid issues no refund, so no webhook fires. That is Shopify behavior, not a bug in the workflow.

Cost at realistic volume

This is one of the cheapest workflows you can run. The Telegram Bot API is free, and the caps it does have (dozens of messages per second) are far beyond any refund volume a normal store produces. Shopify’s webhook is included in every plan.

Volume Telegram Shopify webhook n8n executions
50 refunds / month $0 $0 50
500 refunds / month $0 $0 500
2,000 refunds / month $0 $0 2,000

On self-hosted n8n each of those executions costs nothing. On n8n Cloud they count toward your plan’s execution quota, and even at 2,000 refunds a month you are well inside the entry tier. There is no per-message fee anywhere in the chain.

Compare that to a paid refund-notification app from the Shopify App Store, where a recurring monthly fee buys you roughly the same alert. Once the workflow is built you own it outright, you can change the message wording whenever you like, and you can point it at any channel your team already uses. The only ongoing cost is the n8n instance you are almost certainly running other automations on already.

Ready-to-import template

🚀 Shopify refund alert to Telegram (n8n template)

The exact three-node workflow from this guide, exported and ready to import. Drop in your Shopify and Telegram credentials, set your chat ID, and you are live in a few minutes. The guide above is free to follow; the download just skips the build.

Download the template ($9) →

Instant download · Works on n8n Cloud and self-hosted · Prefer it done for you? See our done-for-you setup service.

Frequently asked questions

Does this alert fire for partial refunds too?

Yes. Shopify fires the refunds/create webhook for every refund, whether you return the full order total or a single line item. The workflow sums the transaction amounts, so a partial refund shows its own smaller figure instead of the full order value.

Will I get a message when an order is cancelled?

Only if the cancellation actually issues a refund. Cancelling an unpaid order creates no refund transaction, so no alert fires. When you cancel a paid order and refund it, Shopify records a refund and the Telegram message arrives as normal.

Can I send the alert to a group or channel instead of my personal chat?

Yes. Add your bot to the Telegram group or channel, then use that chat ID in the Send Telegram alert node. Group IDs start with a minus sign. Everyone in that chat then sees each refund the moment it is issued.

How much does it cost to run?

Nothing beyond n8n itself. The Telegram Bot API is free with no message caps that a normal store would reach, and the Shopify webhook is included in your plan. On self-hosted n8n the whole workflow runs at zero marginal cost per refund.

What if my n8n instance is down when a refund happens?

Shopify retries a failed webhook delivery for up to 48 hours, so a short outage rarely loses an alert. If n8n is offline for longer, that refund notification is missed. For a permanent record, pair this with a refund tracker that logs every refund to Google Sheets.

Related guides