Which Shopify Returns Apps Can an AI Support Agent Work With? Loop, AfterShip, Redo and 9 More Compared (2026)
Of the nine Shopify returns apps we checked on 28 September 2026, five let an AI support agent look up a return by order number through a documented API with a static key, and six document at least one write, such as approving, flagging, commenting on or updating a return. Redo is the most installed at 8,433 Shopify stores, per StoreLeads. We also covered Happy Returns, Shopify's own returns and Returnly, which shut down in 2023. The matrix below shows what an agent can read and change in each app, which plans unlock the API, and which returns jobs should stay with a person because they end in money leaving your account.
Key takeaways
- Redo, Loop Returns, AfterShip Returns, ReturnGO and 8returns, five of nine Shopify returns apps checked on 28 September 2026, let an AI agent find a return by order number with a static key; six document writes.
- AfterShip Returns puts its API on the Premium plan at $99 a month, ReturnGO lists API access on its Pro plan at $297 a month, and Rich Returns keeps it for Enterprise.
- Loop Returns API keys cover return lookups, notes, cancellations and a Flag Return call that stops automated processing, but Loop's Label API and its MCP server both require OAuth.
- Macha's Shopify connector has a Create Refund tool, but it refunds every remaining refundable item plus shipping, so a partial return needs the returns app or a person to refund it.
- In our 28 September test on ticket #1139, a Macha agent's ReturnGO lookup got HTTP 403 twice with a placeholder key, so it posted a holding reply 14 seconds after the ticket arrived and never touched Shopify.
Which returns apps can an AI agent read and change?
A static key is one the merchant creates once in the app's settings and the agent sends in a header on every call, with no shopper login and no token that expires, so an agent can call it at 3 a.m. without anyone signing in. The write column lists only what the vendor's API reference documents; we didn't run a single write against a live returns account.
| App | Shopify stores (StoreLeads) · App Store rating | Auth | Static key? | Find a return by | Documented writes | API plan | Help desk AI |
|---|---|---|---|---|---|---|---|
| Redo | 8,433 · 4.9 (785) | Authorization: Bearer <secret>, scoped | Yes | Shopify order name | Create return, comment, update status, process (beta) | None stated in the docs | Gorgias sidebar integration; no AI Agent Action found |
| Loop Returns | 6,372 · 4.6 (443) | X-Authorization, scoped | Yes, except labels | Order name, order ID or return ID | Process, cancel, close, flag, add note, portal deep link; draft returns plan-gated | Return Create API "may not be available on all Loop plans" | Gorgias AI Agent: portal link, return shipping status |
| AfterShip Returns | 5,160 · 4.7 (1,542) | as-api-key | Yes | Order name or customer email | Create, approve, resolve, reject, receive items, attach shipments, portal deep link | Premium, $99/mo | Gorgias AI Agent: return status, portal links |
| Return Prime | 3,166 · 4.8 (769) | None (channel ID) | n/a | Order number plus email, as a portal redirect | None documented | Not stated | None found |
| ReturnGO | 2,615 · 4.9 (404) | x-api-key plus x-shop-name | Yes, two headers | Order name, customer ID or tracking number | Create by policy, comment, set status, shipment, transaction | Pro, $297/mo | Gorgias: tickets on RMA events |
| CWILL Returns (formerly ParcelPanel) | 2,000 · 4.9 (489) | No returns API found | No | n/a | n/a | n/a | None found |
| Narvar Return and Exchange | 555 · 4.5 (21) | Basic auth plus X-NARVAR-SHOP-DOMAIN | Yes, key from Narvar support | Customer email, via Gorgias's HTTP setup | Not public | Enterprise contract | Gorgias HTTP widget |
| Rich Returns | 418 · 4.7 (81) | Authorization: Bearer <key> | Yes | Return ID; list by status | Approve, ship, receive, resolve, reject, update | Enterprise, from $199/mo | None found |
| 8returns | Not reported · 5.0 (34) | Authorization: Bearer token="…",api_key="…" | Yes | Order name or number, email, tracking number | Update return flags and notes, update items (status, condition, return type), create or update a return by order | Not stated | None found |
| Happy Returns (UPS) | No Shopify listing | X-Hr-Apikey | Yes, self-service | Return details | Approve a mail return | Merchant dashboard key | Gorgias: returns in the sidebar |
| Shopify returns | Built into Shopify | Shopify app token | Needs an app | Order | returnCreate and more in the Admin API | Every plan | Varies by desk |
| Returnly | Shut down 1 October 2023 | n/a | n/a | n/a | n/a | n/a | n/a |
Store counts are StoreLeads app reports, each marked "Updated Sep 25 2026" and read on 28 September 2026; StoreLeads showed no install count for 8returns. Ratings and review counts are the Shopify App Store listings the same day. "Help desk AI" means what the help desk's own AI agent or integration does with the app, from Gorgias's help center, which documents the most returns integrations.
What do customers ask support to do about returns?
Returns tickets fall into five jobs, and they don't carry the same risk:
- "How do I return this?" The answer is a policy and a link. Loop, AfterShip and Return Prime can all generate a portal link that drops the shopper straight into their own order.
- "Did you get my return?" A status read: the RMA's state and the return shipment's tracking.
- "Where's my refund?" A status read plus a date. The refund usually fires when the warehouse marks the parcel received, so the honest answer is the return's state and your processing window.
- "Can I swap it for a different size?" An exchange. Every app with a portal handles these, but only some APIs create a return on the shopper's behalf.
- "Cancel my return" or "it arrived broken, what now?" A write, or a judgment call about damage, fraud or an exception to policy.
In Narvar's State of Returns 2024 survey of 1,924 US consumers, nearly 39% said they return an online purchase at least once a month. Jobs 1 to 3 are reads. Job 4 is where the apps split.
Which returns jobs can an AI agent finish end to end?
Status questions and portal links, in five apps. The mechanism is the same in each: find the return from what the customer gave you (usually an order number), read its state, and translate that state into a sentence and a date.
Loop Returns documents the widest set of support actions under a plain API key. Get Return Details accepts a return ID, an order name or a Shopify order ID. The key's Returns scope also covers Cancel Return, which lets the shopper start a new return for the same items, Close Return, Create Return Note and Flag Return. Loop's API allows 300 requests per minute per key, per its rate-limit page.
Flag Return is the most useful write for an agent. Loop's reference says flagging "will prevent automated processing and will require a human to go into the merchant admin in Loop and review this return." It's a handoff built into the returns app, so an agent that reads a suspicious ticket can freeze the return instead of approving or refunding it.
AfterShip Returns has the richest read for support. Its 2026-07 Get returns endpoint filters by order_name and by customer_email, and it looks back 365 days at most. The same API can approve, resolve or reject a return and create a portal deep link.
Redo's List Returns takes a shopify_order_name filter, so an agent can go straight from "order #1097" to the return. Redo also publishes a Loop-compatible API at loop-api.getredo.com that keeps Loop's warehouse endpoint paths, so a warehouse integration built for Loop can point at Redo instead.
8returns is more than a read API. Besides listing and getting customer returns, its REST reference has PUT /v1/customer_returns/{id} to set flags such as is_arrived and is_inspected and add notes, PUT /v1/items/{id} for an item's status, condition and return type, PATCH /v1/customer_returns/{id}/items to update or add items by SKU, and POST /v1/customer_returns to create or update a return for an order reference. For support, the useful ones are the notes and the flags; marking a parcel arrived or inspected is the warehouse's job, not an agent's. Its list takes a single search term s that matches an order ID, order name, order number, customer name, customer email or tracking number. The auth header is unusual, with one Authorization value that carries both the password and the API key.
A combined value like that still works as a fixed header, because nothing in it changes per request.
Which apps are plan-gated, and which can't be reached at all?
Four apps put the API one tier up. The incentive is an upsell. API access costs a vendor little to serve and is worth a lot to a brand automating support, so it sells the higher plan.
- AfterShip Returns: its pricing page lists "Returns webhooks & API" on Premium at $99 a month, which includes 1,200 returns a year.
- ReturnGO: the Shopify App Store listing puts "Advanced analytics & API" on the Pro plan at $297 a month; Premium at $147 a month doesn't list it. The API overview allows one key per store owner and a default of 2,000 calls a day and 5 calls a second, per its limits section.
- Rich Returns: API access sits on Enterprise, from $199 a month, on its pricing page, and its authentication article tells you to check that your plan allows it.
- Loop Returns: return lookups and actions work with a plain key, but Loop says its Return Create API "may not be available on all Loop plans", and its Label API needs OAuth.
Three can't be reached with a static key from a public reference. Narvar's developer portal redirects to a Narvar login. Gorgias's own Narvar setup page describes an HTTP integration with a Basic authorization header and an X-NARVAR-SHOP-DOMAIN header, using credentials from Narvar support, so a read is possible if Narvar issues you a key. We found no returns API for CWILL Returns; its developer docs cover tracking only. Return Prime documents one endpoint for chatbots, GET /external/fetch-order, which takes an order number, the customer's email, the store and a channel ID that Return Prime issues, and redirects to the return request page. That's a portal link, not a status read.
Two AI-specific routes don't take a static key. Loop's own MCP server uses OAuth 2.1 with PKCE, started by the merchant from their MCP client, so it isn't a static-key route. Happy Returns lists an Agentic Returns Integration of MCP tools such as startReturn and selectRefundMethods, but only "for Agentic Returns integrations" arranged with Happy Returns.
For Happy Returns itself, the API setup page says merchants can self-serve a key from the dashboard settings for Approve Return and Get Return Details, sent in an X-Hr-Apikey header.
What does the help desk's own integration already do?
On Gorgias, check it before building anything. Gorgias AI Agent has two ready-made Actions for Loop Returns: send a Loop Returns portal deep link and send return shipping status. Both need a Loop API key with the Order and Return scopes. The status Action "can confirm whether the order has been received and, if not, provide the shopper with its status and a tracking url."
Gorgias's AfterShip Returns integration lets its AI Agent give return status updates and send pre-filled portal links, and its sidebar widget shows the three most recent RMAs. ReturnGO's Gorgias integration runs the other way: it opens a ticket when a shopper submits an RMA and logs approvals, rejections and received shipments, but refund issuance doesn't create an update. Redo, Narvar and Happy Returns sync returns into the Gorgias sidebar for a person to read; we found no Gorgias AI Agent Action for any of them. Our guides to connecting Loop Returns to Gorgias and automating returns in Gorgias cover that setup.
So if you're on Gorgias and Loop or AfterShip, status and portal links are covered natively. A separate agent earns its place for the jobs those Actions don't do: reading several systems in one reply, writing notes and tags by your rules, or flagging a return for review.
What should stay with a person?
- The refund itself on a partial return. Macha's built-in Shopify connector has a Create Refund tool, and it refunds all remaining refundable items plus shipping; it can't refund a partial amount. If a shopper returns one shirt from a three-item order, that tool would refund all three. Let the returns app refund on receipt, or have a person do it. The refund safety guide covers how a Write tool should be gated.
- Suspected return fraud. In the same Narvar survey, 57% of shoppers admitted to a fraudulent return at least once. An agent shouldn't judge that; it should flag the return (Loop's Flag Return exists for this) and write a note.
- Damage claims and exceptions. Photos, a late return, a final-sale item: these are policy calls with money attached.
- Reopening a processed return. Redo's Update Return Status says reopening a processed return "does not reverse any refunds, exchanges, or other actions", so a reopen by an agent can leave a refund and an open return side by side.
- Cancellations before shipping. That's an order change, not a return. Macha's Shopify connector does have Cancel Order, which by default refunds to the original payment method and restocks; see how to handle cancellation requests.
Where Macha fits
No returns app on this list has a built-in Macha connector. Each one with a static key connects through a custom API tool that Macha's team sets up during onboarding, with the app's own header: X-Authorization for Loop Returns, as-api-key for AfterShip, a Bearer secret for Redo, and x-api-key plus a fixed x-shop-name header for ReturnGO. A custom tool can send several fixed headers, which is what ReturnGO needs; 8returns needs one fixed Authorization value plus the usual Accept and Content-Type headers. Custom tools are included on every plan, from $299/month for 750 tickets; the custom API tools guide shows how one is defined.
Macha's Shopify connector is built in and covers the order side: Get Order, Search Orders, Lookup Customer and Customer Orders for reads, plus Create Refund and Cancel Order as Write tools that ask for confirmation in chat. Each custom tool is marked Read or Write too. In our 28 September tests a custom Write tool ran in dashboard chat without a confirmation card, and on a triggered run Write tools execute directly when the instructions say to, so the safety sits in the agent's instructions: which calls it may make, and when it hands off.
Macha suits teams on Zendesk, Freshdesk, Gorgias, Front, HubSpot or Intercom whose returns app has a static-key API and who want one agent reading the return, the order and the ticket in a single reply. A team handling 3,000 tickets a month, mostly order status and returns, would sit on the 3,000-ticket tier, billed per ticket however many tool calls each one takes. The full list: $299 a month for 750 tickets, $599 for 1,500, $1,199 for 3,000, $1,999 for 5,000, $2,999 for 7,500 and $3,999 for 10,000, with custom pricing above that. If you're on Gorgias with Loop or AfterShip and only need status and portal links, Gorgias's own Actions already do that.
Here's the agent instruction we tested, written for acting:
When a customer asks about a return, an exchange or a refund for something they sent back, look the return up in ReturnGO first: call "T4-130 ReturnGO: Find RMAs by order" with the order number exactly as the customer wrote it. Only share details of an RMA whose customer email matches the ticket requester's email. - No RMA: reply with the return portal link https://returns.example-store.com and our window of 30 days from delivery. - RMA pending or approved, not yet received: tell them the status in plain words and that refunds are issued within 5 business days of the parcel reaching our warehouse. - RMA received or done: check the order with Shopify Get Order. If the order shows no refund, don't promise one; add an internal note asking a teammate to issue it and tag return_refund_due. - Exchange questions: give the exchange status from the RMA; never create a new order or a refund yourself. Never state a refund amount. Always tag the ticket returns_ai. If any app tool returns an error, don't tell the customer what went wrong inside our systems. Reply that a teammate is checking and will follow up today, add an internal note with the tool name, the HTTP status and the error message, and tag app_tool_error.
What happened when we ran it on a test ticket?
On 28 September 2026 we built a Macha agent, "T4-130-Returns status and refunds", from that instruction word for word. It had one custom tool, "T4-130 ReturnGO: Find RMAs by order" (GET https://api.returngo.ai/rmas?order_name=...), plus Shopify Get Order and the Zendesk tools to read the ticket, reply, write an internal note and tag. We left Create Refund off on purpose: the instruction hands refunds to a person, and leaving the tool off means the agent can't call it by mistake. The ReturnGO key was a placeholder, because we don't have a ReturnGO Pro account.
Run Test on the tool, with #1097, came back HTTP 403 with ReturnGO's gateway message, "User is not authorized to access this resource with an explicit deny in an identity-based policy." For comparison, we sent the same request from a terminal with no key at all and got 401 "Unauthorized", so the 403 means the key header arrived and was refused. The tool screen labels Write as "requires confirmation"; in our chat tests that card didn't appear for custom tools, which is why the instruction carries the rules.
We then used Macha's test feature, which creates a real ticket in our d3v-macha sandbox Zendesk and dispatches the agent as a ticket-created trigger would (the sandbox's own webhooks point elsewhere, so a normal trigger wouldn't fire). The customer, Lena Park, is made up. Ticket #1139 said she'd sent back a linen shirt from order #1097, tracking showed it delivered to the warehouse, and asked when the refund would hit her card and whether it would be the full amount.
From the ticket's history:
- The agent called the ReturnGO tool twice. Both calls reached ReturnGO's live API and got HTTP 403.
- It didn't call Shopify Get Order, which is correct, because the instruction only reaches for Shopify once the RMA shows received.
- It posted a public reply 14 seconds after the ticket was created: "A teammate is checking your return and refund status now and will follow up with you today."
- Its internal note named the tool, listed both 403s with ReturnGO's message, and restated the question about refund timing for #1097.
- It tagged the ticket app_tool_error and returns_ai, and it didn't answer "is it the full amount", because the instruction forbids stating a refund amount.
The customer's message carries an orange Internal badge because the test feature posts the requester's text as an internal comment; the agent's reply is public. This run shows the call path and the failure handling. It doesn't show the success path: with a real Pro-plan key, the same tool should return the RMA and its status, but we haven't seen that on a live account, and no refund or return was touched.
For the same pattern on order status, see the order-tracking apps compared; for subscriptions, the subscription apps hub; and for every Shopify app category, the Shopify app map.
Frequently asked questions
What is the best Shopify returns app for AI support automation? By documented API, Loop Returns and AfterShip Returns cover the most support jobs: lookup by order, portal links and several writes. Loop's docs set no plan requirement for lookups and return actions; AfterShip's API needs Premium at $99 a month. Redo is the most installed, at 8,433 stores.
Can an AI agent create a return label in Loop Returns? Not with an API key. Loop's authentication page says OAuth 2.0 is required for the Label API and the Webhooks API. An agent can send the shopper a portal deep link instead, and the portal issues the label.
Can an AI agent refund a returned item in Shopify? It can call a refund tool, but be careful which one. Macha's Shopify Create Refund refunds all remaining refundable items plus shipping, with no partial amount, so partial returns should be refunded by the returns app on receipt or by a person.
Which returns apps have no usable API for an AI agent? Returnly shut down on 1 October 2023. We found no returns API for CWILL Returns, Narvar's developer docs sit behind a login, and Return Prime documents only a portal redirect for chatbots.
Does Gorgias AI Agent handle Loop Returns and AfterShip Returns? Yes. It has ready-made Actions to send a Loop Returns portal link and return shipping status, and its AfterShip Returns integration gives return status updates and pre-filled portal links.
Does Macha have a built-in Loop Returns or AfterShip connector? No. Returns apps connect through a custom API tool that Macha's team sets up during onboarding, using the app's own API key. Shopify is the built-in connector.
How we researched this
On 28 September 2026 we opened each app's API reference, authentication page and pricing page, and recorded the auth header, how a return is found, the documented writes and the plan that unlocks the API; every source is linked where it's used. AfterShip's docs block plain HTTP clients, so we read them in a headless browser. ReturnGO's endpoints and headers come from its published OpenAPI file behind the Swagger page linked from its API overview. "Find a return by" lists only query parameters the reference documents; Rich Returns' list takes a status filter and a sort order, not an order number. Install counts are StoreLeads app reports marked "Updated Sep 25 2026", read on 28 September; ratings are Shopify App Store listings the same day. Prices are the vendor's pricing page or its Shopify App Store listing that day, and App Store plans may differ from the vendor's own site. Narvar's 39% and 57% are from its 2024 survey of 1,924 US consumers, a vendor self-report. Gorgias capabilities come from Gorgias's help center.
Arithmetic: five apps find a return by order number (Redo, Loop Returns, AfterShip Returns, ReturnGO, 8returns); six document a write with a static key (Redo, Loop Returns, AfterShip Returns, ReturnGO, Rich Returns, 8returns); nine apps have a Shopify listing, and Happy Returns, Shopify returns and Returnly make twelve. The only live calls were the ReturnGO tool test and ticket #1139, both refused with a placeholder key; every write on this page is documented, not tested. Ticket #1139, its customer and the agent instruction are synthetic, and no customer data was used.
To try an agent on your own help desk, start a trial with $50 of free usage (about 125 tickets), no credit card, no time limit, or compare tiers on the pricing page.
Resolve tickets automatically with AI agents
Macha's AI agents work on top of the help desk you already use — no code.
Intercom
Shopify
Stripe
Slack
Notion
Google Workspace
Confluence

