TL;DR: This Shopify dispute chargeback alert n8n workflow watches your Shopify Payments disputes and pings Slack the second a chargeback opens. It pulls the order, customer, amount, reason code, and the evidence-due date, logs everything to Google Sheets, and optionally drafts a rebuttal with OpenAI. You stop discovering disputes after the response window closes, and you win more cases by acting within hours instead of days.
What it does
A chargeback is a race against a clock you usually cannot see. When a buyer disputes a charge, Shopify Payments gives you a fixed window to submit evidence, often around seven to ten days depending on the card network and reason. Miss it and the dispute resolves against you automatically, which means lost revenue plus the disputed amount and, in many cases, a fee on top. Most store owners only find out when they happen to open the Shopify admin or read a digest email days later.
This workflow closes that gap. It connects to your Shopify store, listens for new and updated disputes, and the moment one appears it sends a structured alert to a Slack channel your team actually watches. The message includes the order number, the customer name and email, the disputed amount, the network reason code, the dispute status, and the exact date your evidence is due. It also appends a row to a Google Sheets log so you have a running record of every dispute, its outcome, and how fast you responded. If you turn on the optional OpenAI step, it drafts a first-pass rebuttal summary using the order details so your team starts from a draft instead of a blank page.
Why it beats the default
Shopify does email you about disputes, but those emails land in the same inbox as every order confirmation, payout notice, and app notification. They are easy to miss and easy to misjudge, because the subject line rarely makes the deadline obvious. By the time someone notices, half the response window can be gone.
Routing disputes into Slack changes the behavior. A dispute alert in a dedicated channel is visible to the whole team, it is timestamped, and it carries the due date right in the message so nobody has to dig for it. You can assign it with a thread reply, react with an emoji to claim it, and keep the whole conversation attached to the event. Pair that with a Google Sheets log and you get something Shopify does not give you out of the box: a clear view of how many disputes you get per month, which products or reason codes drive them, and your win rate over time. That history is what lets you fix the root cause instead of fighting the same fight every week.
Compared with paid chargeback apps that charge a percentage of recovered funds or a monthly fee per store, an n8n workflow runs on infrastructure you already own and costs effectively nothing per dispute. You also keep full control of the logic, so you can route high-value disputes differently, escalate to a manager above a threshold, or branch by reason code.
What you need
Before you build this, make sure you have a few things ready. You need a Shopify store on a plan that uses Shopify Payments, since the dispute resource lives there. You need admin access to create a custom app or private credentials so n8n can read disputes. You need a running n8n instance, either self-hosted or cloud. You need a Slack workspace where you can add an incoming app and a channel such as #chargebacks. You need a Google account for the Sheets log. The OpenAI step is optional and only needed if you want auto-drafted rebuttal notes.
Node-by-node list
Here is every node in the workflow and what each one is responsible for:
- Schedule Trigger that runs the check on a fixed interval, for example every 30 minutes.
- Shopify node (or HTTP Request node) that fetches disputes from the Shopify Payments dispute endpoint.
- Code node that filters out disputes already seen and keeps only new or newly updated ones.
- Shopify node that looks up the full order behind each dispute to enrich the alert.
- Set node that builds a clean payload with order number, customer, amount, reason, status, and the evidence due date.
- OpenAI node (optional) that drafts a short rebuttal summary from the order details.
- Slack node that posts the formatted alert to your chargebacks channel.
- Google Sheets node that appends the dispute as a new row in your log.
- NoOp or Set node at the end that records the processed dispute IDs so they are not alerted twice.
Step-by-step build
- Create a Shopify custom app in your admin under Settings, then Apps and sales channels, then Develop apps. Give it read access to orders and to Shopify Payments disputes, install it, and copy the Admin API access token.
- In n8n, add a Schedule Trigger and set it to run every 30 minutes. Chargebacks are not second-by-second events, so a short poll is plenty and keeps you well inside any response window.
- Add an HTTP Request node pointed at your store dispute endpoint, for example https://your-store.myshopify.com/admin/api/2024-10/shopify_payments/disputes.json. Authenticate with a header named X-Shopify-Access-Token set to your token. If your n8n version has the dispute resource in the native Shopify node, you can use that instead.
- Add a Code node that compares the returned dispute IDs against the IDs you stored on the last run. Keep only disputes that are new, or whose status changed, so you alert once per meaningful event rather than every poll.
- Add a Shopify node set to get a single order, using the order_id field from each dispute. This pulls the customer name, email, and line items so the alert is useful on its own.
- Add a Set node that assembles the final fields you care about: order number, customer, amount and currency, the network reason, the dispute status, and the evidence_due_by date. Format the date so a human can read it at a glance.
- Optional: add an OpenAI node with a prompt that takes the order summary and the dispute reason and returns a three sentence draft of the evidence you would submit. Keep it short so your team edits rather than rewrites.
- Add a Slack node, connect your Slack credential, choose your #chargebacks channel, and build a message that leads with the amount and the due date. Put the order link and customer details below so the urgent facts are first.
- Add a Google Sheets node set to append a row. Map each field to a column: date detected, order number, customer, amount, reason, status, due date, and a blank outcome column you fill in later.
- Finish with a node that writes the processed dispute IDs back to your store of choice, such as a static data field, a database, or a dedicated sheet, so the next run knows what it has already handled. Activate the workflow and run it once manually to confirm the first alert lands.
Common mistakes
The most frequent error is alerting on every poll instead of every new event. If you skip the dedup step, your team gets the same chargeback ping every 30 minutes and quickly mutes the channel, which defeats the purpose. Store the processed IDs and compare against them.
The second mistake is forgetting to surface the evidence due date. An alert that says only “you have a dispute” is barely better than the default email. The due date is the single most important field, so lead with it. The third is requesting too little API scope, which makes the order lookup fail silently and leaves your alerts missing customer details. Grant read access to both orders and disputes when you create the app. Finally, do not hardcode a single currency in the amount field. Pull the currency from the dispute so a multi-currency store shows the right symbol.
Cost at realistic volume
For a store doing a few hundred orders a month, disputes usually land somewhere between two and fifteen per month. At that volume the workflow is essentially free to run. n8n on a small self-hosted instance handles a 30 minute poll without noticeable load, Slack alerts cost nothing, and Google Sheets is free. If you enable the optional OpenAI draft step, a short rebuttal summary on a current model costs a fraction of a cent per dispute, so even at fifteen disputes a month you are looking at pennies. Compare that with dispute-management apps that take a percentage of every recovered charge, and the workflow pays for itself the first time it helps you respond on time.
Ready-to-import template
You do not have to wire all of this by hand. The ready-to-import JSON template for this Shopify dispute chargeback alert n8n workflow, along with a setup guide and a credentials guide, is available on our downloads page. Import it, paste in your Shopify token, connect Slack and Google Sheets, and you are alerting on disputes in minutes. If you would rather have it installed, configured, and tested on your own n8n instance, our team does that for you through our n8n setup service. For the bigger picture on automating your store end to end, start with our n8n Shopify automation hub.
FAQ
Does this work without Shopify Payments?
The dispute resource used here is specific to Shopify Payments. If you process card payments through a third-party gateway, disputes live in that provider instead, so you would point the workflow at that gateway’s dispute API. The Slack alert, Google Sheets log, and OpenAI draft steps stay the same regardless of where the dispute data comes from.
How fast will I get the alert after a dispute opens?
With a 30 minute schedule, you learn about a new dispute within half an hour at most. You can shorten the interval to every 10 or 15 minutes if you want faster alerts, though disputes are not high-frequency events and a sub-hour poll is already well inside any evidence deadline you need to meet.
Can I send the alert to Telegram instead of Slack?
Yes. Swap the Slack node for a Telegram node and point it at your chat or group. The rest of the workflow is unchanged, since the fields you assemble in the Set node are channel-agnostic. Many store owners run both, sending a Slack message to the team and a Telegram message to the owner.
Will it tell me the deadline to submit evidence?
Yes, and that is the point. The dispute object returned by Shopify includes an evidence due date, which the workflow maps into the alert and the log. Leading the Slack message with that date is what turns a passive notification into something your team acts on before the window closes.
Is the OpenAI rebuttal step required?
No, it is optional. The core workflow alerts and logs without any AI. The OpenAI node simply drafts a short starting point for your evidence response using the order details, which saves time on the writing. You can leave it out entirely and the alerts still arrive with everything your team needs to act.
Related guides
For more store automations, browse the full Shopify automation category. You might also like our guides on the Shopify order AI risk alert and the Shopify refund tracker in Google Sheets, both of which pair naturally with dispute monitoring to give you a complete view of risky orders and lost revenue.