How to Automate Shopify Order Cancellations in Zendesk (2026): Native Options vs AI Agents, Tested Live
Zendesk's ready-made ways to cancel a Shopify order both keep an agent on the button. The Shopify sidebar app, included on Suite Team plans from $55 per agent a month, lets an agent click Cancel order once an admin has switched on refunds and cancellations. Copilot's auto assist, $50 per agent a month on Suite Growth and up, suggests the cancellation for an agent to approve. For a few cancellations a day, the sidebar is enough. To cancel with nobody clicking, you need something that can call Shopify from the ticket: an action flow or Zendesk AI agent you build yourself on Suite Growth or higher, or a third-party AI agent such as eesel AI, Yuma or Macha, which starts at $299/month for 750 tickets with setup done for you. Prices were checked on October 8, 2026, and we ran a cancellation agent on our own Zendesk sandbox and Shopify test store, including one real cancellation.
Key takeaways
- Zendesk's Shopify sidebar app can cancel unfulfilled orders, but on our sandbox its Refunds and cancellations setting was off until an admin turned it on in Admin Center.
- Shopify can't cancel an order once any part of it is fulfilled, and its API calls a cancellation irreversible, so every automation has to check fulfillment status before it acts.
- Copilot auto assist suggests the cancel and refund for an agent to approve at $50 per agent a month; action flows and Zendesk AI agents can cancel with no click if you build the logic.
- In our live test, a Macha agent canceled test order #1098 after a confirmation card, refused shipped order #1100, and sent a $228.00 order to a person because it was over its $200 limit.
- Macha starts at $299/month for 750 tickets, and done-for-you setup plus a dedicated success manager come on the trial and every plan.
Can Zendesk cancel Shopify orders on its own?
Yes, with a person on the button. Every native option either needs an agent to click or needs you to build the logic that decides when to cancel. Here is every option we found, native ones first.
| Option | Native or add-on | Who presses "cancel" | Setup | Price (checked Oct 8, 2026) | Where it falls short |
|---|---|---|---|---|---|
| Shopify sidebar app, with Refunds and cancellations on | Native, Suite Team and up (Support plans also need Chat) | The agent | Self-serve, minutes; an admin ticks one setting | Included in the plan ($55/agent/month Suite Team, billed yearly; Support Team is $19 plus Chat) | One manual cancel per ticket; unfulfilled orders only |
| Copilot auto assist with a cancellation procedure | Native add-on | The agent approves each suggestion (Zendesk's advice for actions that write data) | Self-serve: write and test a procedure | Copilot $50/agent/month on Suite Growth or higher (Suite Professional is $115) | One approval per cancel if you follow Zendesk's advice; priced per seat |
| Action flows with the Shopify connector | Native, Suite Growth and up | The flow, once you build and activate it | Self-serve builder, plus a separate Shopify connection | Steps on external connectors count toward your action limit | You write the eligibility checks and error handling |
| Zendesk AI agents with a custom action | Native, Suite Growth and up | The AI agent, through the action you configure | You build the Shopify API call | 10 automated resolutions per agent/month on Professional, then $1.50 committed or $2.00 pay as you go | No ready-made cancel skill |
| Zapier (Zendesk trigger + Shopify) | Third-party automation | A Zap you build | Self-serve | Zapier plan | Zapier's Shopify app lists no cancel action, so you'd send your own API request |
| eesel AI | Third-party AI agent | The AI agent, or a person if you require approval | Self-serve | $299/month for 500 tickets | You build and tune it |
| Yuma | Third-party AI agent | The AI agent | Sales-led | Not published | No public price or cancel rules to check |
| Macha | AI agent layer on your help desk | The AI agent | Done for you by the Macha team, with a dedicated success manager, included | $299/month for 750 tickets (about $0.40 per ticket) | Cancels whole orders; removing one item is an order edit and goes to a person |
How do you cancel a Shopify order from the Zendesk sidebar?
Zendesk's own Shopify integration is where to start, and for a small team it may be all you need. It's listed for Suite and Support Team, Professional and Enterprise plans (Zendesk notes that Support customers must also have Chat to use it), and it shows the requester's Shopify orders next to the ticket. Seeing orders and canceling them are separate settings, which the docs don't make obvious.
When we opened test order #1099 in the sidebar on our d3v-macha sandbox, there was no cancel button. In its place the app said: "To refund orders from the sidebar app, enable the refunds and cancellations feature." The switch lives in Admin Center.
Setup, as we did it:
- In Admin Center, go to Apps and integrations > Integrations > Shopify and open your store's connection.
- Under Sidebar app, click Configure next to Sidebar app for Support.
- Tick Refunds and cancellations ("Allow agents to process refunds and cancel orders in the sidebar app") and save.
- Add a macro for the reply that follows a cancellation, so the refund timeline is worded the same way every time.
After that, an agent opens the order in the sidebar, clicks Cancel order, picks a reason, clicks Review cancellation and confirms. Zendesk's guide to the integration says a cancel only works on unfulfilled orders and that a completed cancellation adds the shopify_cancelled tag to the ticket, which gives you a view and a count for free.
The dialog had two defaults. Restock 2 items was ticked, and the summary said "Order cancellation will automatically process a full refund." A sidebar cancel doesn't offer to keep the money and refund part of it later.
When this is enough: a handful of cancellations a day, read by an agent who would check the order anyway. One click in the sidebar beats any automation you'd have to configure and watch.
Where it stops: a person still reads the ticket, checks that nothing has shipped and clicks. And a cancellation ticket gets more expensive the longer it waits: if the warehouse picks the order before an agent gets to the ticket, the cancel turns into a return.
What can and can't Shopify cancel?
Every option in this guide is bound by Shopify's own cancellation rules.
- Only orders with nothing fulfilled. Shopify's canceling orders guide says that "after an order is partially fulfilled, you can't cancel it," and adds that "you can cancel the fulfillment to make the order eligible for cancellation." So one shipped item out of three blocks the cancel until someone cancels that fulfillment, which only makes sense if the parcel hasn't left. Otherwise it's a refund for the unshipped items and a return for the rest.
- It can't be undone. Shopify's orderCancel API reference says: "Order cancellation is irreversible." An automation that cancels the wrong order can't put it back.
- Three refund choices in the admin. Full refund to the original payment method (the default), full refund to store credit (which needs a permission), or refund later.
- Restock and notify are on by default in the admin. In the API,
notifyCustomerdefaults to false, so an automation that cancels through the API doesn't email the customer unless it asks to. Your Zendesk reply becomes the only message they get. - Some orders can't be canceled at all: orders with pending payment authorizations, active returns, or fulfillments that can't be canceled, per the API reference.
These rules are why "is anything fulfilled?" is the first check in Zendesk's own recipe, in eesel's Cancel Order action ("Cancels an order that has not been fulfilled") and in the instruction we ran below.
Shopify also has its own no-code route. Shopify Flow, "a free app available on the Basic, Grow, Advanced, and Plus plans," has a Cancel order action with reason, refund, restock and notify options. A Flow workflow starts from a Flow trigger inside Shopify, though, so something still has to carry the request from the Zendesk ticket to it. And on October 8, 2026, Zapier's Shopify app listed 23 actions, including Update Order and Capture Order, but no Cancel Order. A Zap that cancels would have to send its own request to Shopify's API.
Can auto assist or action flows cancel orders without an agent?
They can get close. Zendesk has three native routes, each with its own catch.
Copilot auto assist. Zendesk's workflow recipe for canceling and refunding a Shopify order is the most complete native answer. You write a procedure in plain language: verify the customer by email and order number, check the order is unfulfilled, confirm what they want canceled, then cancel and refund. Auto assist reads the ticket, runs the Shopify lookup and suggests the next step. Two rules from the recipe: "only unfulfilled items can be canceled" and gift cards can't be.
It needs the Copilot add-on, $50 per agent a month billed yearly on Zendesk's pricing page, on Suite Growth or higher. In the recipe "the agent accepts the suggestion in the Agent Workspace" before anything changes in Shopify. Zendesk lets you pre-approve actions, but its actions article says actions that write data, "such as an action that refunds an order, should be marked as agent-approved." Followed as advised, auto assist does the research and the agent still makes the call. That fits how Copilot is sold: per agent seat, as a productivity tool for the person approving.
Action flows. When our refund guide's test opened the action flow builder on the same sandbox, the Shopify connector listed 17 actions, Cancel order among them, behind its own Shopify connection. A flow can cancel with no click once you build it, but you write every branch yourself: the fulfillment check, the "already canceled" case, Shopify's error responses. Steps on external connectors such as Shopify count toward your plan's action limit. We cover that builder, with a screenshot, in how to automate refunds in Zendesk.
Zendesk AI agents with a custom action. The customer-facing AI agents can call an API action you define; custom actions, like action flows, need Suite Growth or higher. Each conversation they resolve is an automated resolution: 10 per agent a month are included on Professional, then $1.50 each committed or $2.00 pay as you go (US prices). There's no ready-made cancellation skill, so the same build work applies.
Which AI agents can cancel Shopify orders in Zendesk?
These third-party agents say they take Shopify actions on Zendesk tickets. Prices come from each vendor's own pages on October 8, 2026. We didn't run any of them.
eesel AI. eesel's Shopify docs list Cancel Order ("Cancels an order that has not been fulfilled"), Refund Order, Create Return and Update Shipping Address, and state plainly that "shipped orders are fixed." You decide whether each action runs on its own or waits for a person to approve it. eesel's pricing is $299 a month for 500 credits, where a ticket or a chat is one credit. It's self-serve: you connect it, write the rules and tune it. More in our eesel alternatives guide.
Yuma. Yuma's site says it resolves "subscription changes, order edits" and other ecommerce requests end to end inside Zendesk, Gorgias and seven other help desks, with actions in Shopify, Recharge and Loop. Its pricing is performance-based with no public numbers, and we found no public docs describing its cancellation rules.
My AskAI. My AskAI runs on Zendesk, and its Pro plan ($199 a month for 1,000 tickets) lists "AI Tasks e.g. order refunds." Its Shopify page describes answering order questions and automating returns and refunds, but on October 8 we found no Cancel Order action on its pages. Ask for a demo of a cancel before you count on one.
Our matrix of help desk AI agents that take actions compares more vendors across refunds, cancellations and order edits.
What happened when we ran a cancellation agent on our own Zendesk?
We built the agent on our Macha Demo org, which is connected to our d3v-macha Zendesk sandbox and a Shopify test store. The store had four test orders with made-up customers. Two were paid and unfulfilled (#1098 for $93.00 and #1099 for $228.00) and two had already been fulfilled (#1100 and #1101). Canceling #1098 for real was part of the plan.
The agent. We named it "P10-05 Zendesk order cancellations (Shopify)", left it inactive with no trigger, and attached six built-in tools: Get Order, Search Orders and Cancel Order from Macha's Shopify connector, and Get Ticket, Add Internal Note and Update Ticket Tags from Zendesk. There's no public reply tool, so everything the customer would read lands as an internal note first. This is the instruction, word for word:
You handle order cancellation requests on Zendesk tickets for our Shopify store. You never reply to the customer directly: everything you write goes in an internal note. 1. Read the ticket with Get Ticket. Find the order number (for example #1042). If there isn't one, use Search Orders with the requester's email. If that finds exactly one order that hasn't shipped, use it. Otherwise add an internal note asking the team to get the order number, tag the ticket cancel_needs_info, and stop. 2. Look up the order with Get Order. If it isn't found, or the email on the order doesn't match the ticket requester's email, don't cancel. (When a teammate runs you from chat, they confirm the customer's identity in their message instead.) Add an internal note saying the details don't match and tag the ticket cancel_review. 3. If anything on the order has been fulfilled or shipped, don't cancel: Shopify can't cancel a fulfilled or partly fulfilled order. Add an internal note with the order number and fulfillment status, draft a reply explaining that the order has already shipped and how to return it once it arrives, and tag the ticket cancel_shipped. 4. Cancel the order only if all of these are true: it is paid, nothing on it has been fulfilled, it hasn't been canceled or refunded already, the total is $200 or less, and the customer wants the whole order canceled. 5. Anything else goes to a person: canceling some items but not others, changing the address or items instead of canceling, an order over $200, or a customer who is angry or mentions a chargeback. Add an internal note with the order number, total, what the customer asked for and why you didn't cancel, and tag the ticket cancel_review. 6. To cancel, use Cancel Order. It refunds the full amount to the original payment method and puts the items back in stock. 7. After a successful cancel, add an internal note with the order number, the amount refunded and today's date, tag the ticket cancel_processed, and write the reply to the customer in the same note: the order is canceled, nothing will ship, and the refund usually shows up on their statement in 5 to 10 business days. Never tell a customer an order is canceled unless Cancel Order succeeded.
Step 3 comes before step 4 on purpose. A cancel request on a shipped order is common, and the useful answer there is a return, so the agent drafts that instead of a refusal.
Run 1: a real cancellation from chat. We created d3v ticket #1204 from a made-up customer, Jordan, asking to cancel #1098, then told the agent "Handle Zendesk ticket 1204" in its Try it chat. It read the ticket, matched the requester's email to the order, confirmed the order was paid, unfulfilled, not canceled and $93.00, and called Cancel Order. The call stopped at a confirmation card. Our first pass rejected it to see the wording; the second time we clicked Confirm.
The card names the order by Shopify's internal ID (#8432788603042), not the #1098 the customer wrote, so whoever approves cards needs the order open alongside. After the cancel, the agent posted its internal note with a drafted reply for Jordan, and Zendesk's own sidebar app showed #1098 as canceled.
Two parts of run 1 didn't go as expected.
- A note on the $0.00 refund entry. Our test orders were created without a real card payment behind them (the sidebar showed "Paid by customer: $0.00" on #1099, an identical test order), so Shopify recorded the cancellation with a refund entry of $0.00 and there was no money to send back. On a real order, canceling returns the payment to the card by default, which a test store can't show. If you want a person to look at any cancellation where the refund comes back as $0.00, add that as a line in the agent's instruction; we list it in the rollout section.
Run 2: an order that had already shipped. Ticket #1205, from a made-up Sam, asked to cancel #1100. The agent matched the email, saw the order was FULFILLED at $433.00 and didn't call Cancel Order. Its internal note gave the fulfillment status and a draft reply saying the order had shipped and could be returned once it arrived. That reply should point at your returns flow; ours on Zendesk is in automating returns and exchanges in Zendesk.
Run 3: the trigger path, with no confirmation cards. The agent's Test run has a mode called "Create a test ticket and run autonomously". It creates a real ticket in the connected Zendesk and runs the agent as if a trigger had fired; the panel warns that "a test run takes real actions." We used it for Priya, a made-up customer asking to cancel #1099.
It created ticket #1207, read it, looked up #1099 and found it paid, unfulfilled and owned by the requester, but $228.00, over the $200 limit in step 4. It didn't cancel. It wrote a note explaining why and added the cancel_review tag, and both writes went through without any card, which is how a live trigger run behaves.
On a live ticket nobody sees a card, so the rules in steps 2 to 5 are the whole safety net. Here the $200 cap is what stopped a cancel the agent was otherwise entitled to make.
How this differs from production. Our sandbox's Zendesk webhooks point at a development server, so new d3v tickets don't wake a production agent. That's why runs 1 and 2 started from chat and run 3 from the Test run. A live agent would fire from a Zendesk trigger on new tickets, the same way run 3 did.
Where Macha fits
Macha fits teams already running Zendesk, Freshdesk, Gorgias, Front, HubSpot or Intercom who want cancellation tickets handled inside the ticket through its Zendesk connector, with a Shopify cancel built in, without building and maintaining API actions themselves. It's the done-for-you option: the Macha team analyzes your past tickets, builds the knowledge base and the cancellation agent on your existing help desk, and runs it in safe mode, with drafts as internal notes, until the drafts are right. That setup comes on the trial and on every plan, along with a dedicated success manager who handles your changes, such as a new cap or a new rule for preorders. Paid plans run at about $0.40 per ticket (pricing).
On price: $299 gets you 750 tickets on Macha and 500 on eesel, $0.40 a ticket against $0.60, with setup done for you included. Up to 1,500 tickets a month Macha is the cheaper of the two. The agent that handles cancellations usually picks up order-status questions next; see WISMO automation in Zendesk and which AI agent suits a Shopify brand on Zendesk.
Macha isn't the right pick if your "cancellations" are mostly partial: remove one item, swap a size, change the address. Those are order edits, which Macha's Shopify tools don't do; they go to a person. eesel's address update or Zendesk's sidebar cover more of that.
Choosing between them
- A few cancellations a day: the sidebar app with Refunds and cancellations switched on. No add-on, one click per order.
- Many cancellations, a human on every one: Copilot auto assist with a cancellation procedure. At 5 agents that's $250 a month on top of your Suite plan, and each cancel still needs an approval.
- No click, and someone in-house to build API actions: action flows or Zendesk AI agents with a custom action. Model the resolution bill first: 5 agents on Professional include 50 automated resolutions, so 300 cancellations a month leaves 250 extra, which is $375 committed or $500 pay as you go.
- No click, and someone else builds it: a third-party AI agent. Macha counts every ticket it handles ($299/month for 750 tickets); eesel sells ticket bundles you configure yourself.
Each pricing unit rewards something different. Copilot's seat price grows with headcount, so a team where two people handle cancellations still pays for all twenty seats. Zendesk's automated resolutions grow with the tickets the AI closes, so the vendor has an incentive to count generously. Macha's per-ticket price grows with volume, including the shipped-order tickets the agent hands to a person.
Speed is the other variable. A cancel request is only cheap while the order is unfulfilled. If your warehouse picks orders within an hour, a sidebar queue that's read twice a day will turn many cancellations into returns, and that's the strongest argument for an agent that acts on the ticket as it arrives.
Rolling out cancellation automation safely
- Keep replies as internal notes at first. Our test agent had no public reply tool, so a person read and sent every reply it drafted. Keep it that way until a few weeks of notes match what your team would have said; drafting replies for agent review covers that setup.
- Check fulfillment first, and treat shipped as its own outcome. Shopify can't cancel anything partly fulfilled and won't undo a cancel, so this check goes before any write, and a shipped order gets a return reply, not a refusal.
- Put the money and identity rules in the instruction as plain conditions. A cap ($200 in our test), "whole order only", "not already canceled or refunded", and a requester email that matches the order. In run 3, the cap is what stopped the cancel.
- Make the agent report what Shopify did, not what it expected. After our run 1 we'd add one line: "In the note, give the refund amount from Cancel Order's result; if it's $0.00 or missing, tag the ticket cancel_review." That turns our $0.00 surprise into a ticket a person checks.
- Tag every outcome and check the help desk weekly. cancel_processed, cancel_shipped, cancel_review and cancel_needs_info give you a Zendesk view per outcome. Read a sample each week and compare the note, the tag and the Shopify order. In run 1, the chat transcript said the tag step was pending; the ticket showed it never happened.
For the help-desk-neutral version of this workflow, including 3PL holds and the Black Friday window, see our guide to order cancellation requests. If you'd rather customers cancel without a ticket at all, Shopify's self-serve cancellations cover that.
Frequently asked questions
Can Zendesk cancel a Shopify order automatically? Not out of the box. The sidebar app and auto assist both leave the cancel to an agent, as Zendesk advises for actions that write data. Action flows and Zendesk AI agents can cancel with no click if you build the Shopify action and the rules around it, or a third-party AI agent can do it from the ticket.
Why can't my agents see a Cancel order button in the Shopify sidebar? On our sandbox the button stayed hidden until an admin ticked Refunds and cancellations under Apps and integrations > Integrations > Shopify > Sidebar app for Support. The order must also be unfulfilled; the integration only cancels unfulfilled orders.
Can you cancel a Shopify order that has partly shipped? Not as it stands. Shopify says that after an order is partially fulfilled you can't cancel it, but you can cancel the fulfillment first to make it eligible, which only helps if the parcel hasn't left. Otherwise refund the unshipped items and handle the rest as a return. Zendesk's auto assist can refund selected unfulfilled items; Macha's Cancel Order can't, so those go to a person.
Does canceling a Shopify order refund the customer? In the sidebar app, yes: the dialog says cancellation automatically processes a full refund and restocks by default. Macha's Cancel Order also refunds to the original payment method and restocks by default. Shopify's admin also lets you refund to store credit or refund later.
What does automating cancellations cost in Zendesk? The sidebar app comes with Team plans and up (Support plans also need Chat). Copilot auto assist is $50 per agent a month on Suite Growth and up. Zendesk AI agents, also Growth and up, charge $1.50 per automated resolution committed ($2.00 pay as you go) after the included allowance. Macha is about $0.40 per ticket, counted on every ticket it handles, with setup included.
Which option is best for a small team? Under a few cancellations a day, the sidebar app. If cancellations pile up faster than an agent reads them and you don't want to build the automation yourself, Macha's team sets up the agent for you on the trial, which is $50 of free usage (about 125 tickets), no credit card, no time limit.
How we researched this
- Read on October 8, 2026: Zendesk help articles on using the Shopify integration, the auto assist cancel and refund recipe, and actions for auto assist and action flows; zendesk.com/pricing; Shopify's canceling orders guide, Shopify Flow overview and Cancel order action, and the orderCancel API reference; Zapier's Shopify action list; eesel's Shopify docs and pricing; My AskAI's pricing and Shopify pages; Yuma's homepage.
- Captured on October 8, 2026 on our d3v-macha sandbox: the sidebar app's settings and the cancel dialog for #1099, which we closed without confirming. We switched Refunds and cancellations on to capture the dialog and back off afterward. The action flows Shopify list (17 actions) comes from the same sandbox on the same day, in our refund guide's test. We didn't connect action flows or turn on auto assist, so those were documented, not run.
- Run live on October 8, 2026: a test agent on our Macha Demo org, inactive with no trigger, against the connected Shopify test store and made-up d3v tickets #1204, #1205 and #1207. One real cancellation (#1098, confirmed in chat); the other runs wrote only internal notes and tags on sandbox tickets. Customers, emails and addresses are made up.
- Not run: eesel, Yuma, My AskAI, Zapier and Shopify Flow. Their capabilities come from their own pages.
- Arithmetic: 5 agents × $50 = $250 a month for Copilot. 5 agents × 10 included resolutions on Professional = 50; 300 − 50 = 250 extra; 250 × $1.50 = $375, 250 × $2.00 = $500. $299 ÷ 750 = $0.40 a ticket on Macha; $299 ÷ 500 = $0.60 on eesel.
If you want cancellations handled on your own Zendesk, start a Macha trial and the team will build the agent with you, or see how Macha works on Zendesk and the Zendesk AI automation hub.

