Macha

Which Shopify Returns Apps Can an AI Support Agent Work With? Loop, AfterShip, Redo and 9 More Compared (2026)

Abbas, Customer Support & AI, Macha

Written by

Ankeet Guha, Co-founder & CTO, Macha

Reviewed by

Published September 28, 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 Shopify Returns Apps Can an AI Support Agent Work With? Loop, AfterShip, Redo and 9 More Compared (2026)

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.

AppShopify stores (StoreLeads) · App Store ratingAuthStatic key?Find a return byDocumented writesAPI planHelp desk AI
Redo8,433 · 4.9 (785)Authorization: Bearer <secret>, scopedYesShopify order nameCreate return, comment, update status, process (beta)None stated in the docsGorgias sidebar integration; no AI Agent Action found
Loop Returns6,372 · 4.6 (443)X-Authorization, scopedYes, except labelsOrder name, order ID or return IDProcess, cancel, close, flag, add note, portal deep link; draft returns plan-gatedReturn Create API "may not be available on all Loop plans"Gorgias AI Agent: portal link, return shipping status
AfterShip Returns5,160 · 4.7 (1,542)as-api-keyYesOrder name or customer emailCreate, approve, resolve, reject, receive items, attach shipments, portal deep linkPremium, $99/moGorgias AI Agent: return status, portal links
Return Prime3,166 · 4.8 (769)None (channel ID)n/aOrder number plus email, as a portal redirectNone documentedNot statedNone found
ReturnGO2,615 · 4.9 (404)x-api-key plus x-shop-nameYes, two headersOrder name, customer ID or tracking numberCreate by policy, comment, set status, shipment, transactionPro, $297/moGorgias: tickets on RMA events
CWILL Returns (formerly ParcelPanel)2,000 · 4.9 (489)No returns API foundNon/an/an/aNone found
Narvar Return and Exchange555 · 4.5 (21)Basic auth plus X-NARVAR-SHOP-DOMAINYes, key from Narvar supportCustomer email, via Gorgias's HTTP setupNot publicEnterprise contractGorgias HTTP widget
Rich Returns418 · 4.7 (81)Authorization: Bearer <key>YesReturn ID; list by statusApprove, ship, receive, resolve, reject, updateEnterprise, from $199/moNone found
8returnsNot reported · 5.0 (34)Authorization: Bearer token="…",api_key="…"YesOrder name or number, email, tracking numberUpdate return flags and notes, update items (status, condition, return type), create or update a return by orderNot statedNone found
Happy Returns (UPS)No Shopify listingX-Hr-ApikeyYes, self-serviceReturn detailsApprove a mail returnMerchant dashboard keyGorgias: returns in the sidebar
Shopify returnsBuilt into ShopifyShopify app tokenNeeds an appOrderreturnCreate and more in the Admin APIEvery planVaries by desk
ReturnlyShut down 1 October 2023n/an/an/an/an/an/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:

  1. "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.
  2. "Did you get my return?" A status read: the RMA's state and the return shipment's tracking.
  3. "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.
  4. "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.
  5. "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.

Loop Returns API reference for Flag Return: POST /warehouse/return/{id}/flag with an X-Authorization key, which stops automated processing
Loop Returns API reference for Flag Return: POST /warehouse/return/{id}/flag with an X-Authorization key, which stops automated processing

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.

AfterShip Returns API reference: Get returns at api.aftership.com/returns/2026-07 with an as-api-key header and a customer_email filter
AfterShip Returns API reference: Get returns at api.aftership.com/returns/2026-07 with an as-api-key header and a customer_email filter

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.

Redo's List Returns reference: GET /stores/{storeId}/returns with a Bearer token and a shopify_order_name query parameter
Redo's List Returns reference: GET /stores/{storeId}/returns with a Bearer token and a shopify_order_name query parameter

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.

8returns REST API docs: one Authorization header combining token and api_key, and an s search parameter matching order number, email or tracking number
8returns REST API docs: one Authorization header combining token and api_key, and an s search parameter matching order number, email or tracking number

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.
ReturnGO API overview: keys come from Settings > API, one key per store owner, and a default limit of 2,000 calls a day and 5 a second
ReturnGO API overview: keys come from Settings > API, one key per store owner, and a default limit of 2,000 calls a day and 5 a second
Rich Returns API authentication article: keys under Account / Developers, a Bearer header, and a note to check your plan allows API access
Rich Returns API authentication article: keys under Account / Developers, a Bearer header, and a note to check your plan allows API access

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.

Happy Returns API setup: merchants self-serve keys for Approve Return and Get Return Details, while headless and agentic returns need Happy Returns' approval
Happy Returns API setup: merchants self-serve keys for Approve Return and Get Return Details, while headless and agentic returns need Happy Returns' approval

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 help center: AI Agent Action to send return shipping status from Loop Returns, which needs an active Loop account and its API key
Gorgias help center: AI Agent Action to send return shipping status from Loop Returns, which needs an active Loop account and its API key

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.

Macha custom tool for ReturnGO: GET /rmas by order_name, an API key header, a fixed x-shop-name header, and ReturnGO's 403 reply to Run Test
Macha custom tool for ReturnGO: GET /rmas by order_name, an API key header, a fixed x-shop-name header, and ReturnGO's 403 reply to Run Test

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.

Test ticket 1139 in our d3v-macha sandbox: internal note listing two ReturnGO 403 errors, the holding reply, and the app_tool_error and returns_ai tags
Test ticket 1139 in our d3v-macha sandbox: internal note listing two ReturnGO 403 errors, the holding reply, and the app_tool_error and returns_ai tags

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.

Macha

About Macha

Macha is an AI agent platform that works on top of the help desk you already use — Zendesk, Freshdesk, Gorgias, or Front — and connects to the rest of your stack, even your own internal systems. Its AI agents resolve tickets and automate entire workflows end to end, all set up in plain English, no code. Learn more about Macha →

Zendesk
5.0 on Zendesk Marketplace

Loved by support teams worldwide

See what support teams are saying about Macha AI.

The application seems excellent to me! We are still testing, and we need support for some details and they were extremely efficient too!

Daniela Costa

Daniela Costa

Head of Support, Seabra

Macha has been a great addition to our support toolkit. It generates clear, well-organized responses that fit naturally into our workflow. One feature we particularly appreciate is its ability to automatically reply in the same language as the ticket.

Marius F

Marius F

Support Head, Zentana

We've been using Macha for a little while now and it's been really great addition so far! It's powerful, convenient, and makes getting work done a lot easier for our agents.

Alexander Wedén

Alexander Wedén

Head of Support

Support team is very helpful and responsive. Really enjoy how lightweight this is within Zendesk itself vs other more intrusive tools.

Cathleen Wright

Cathleen Wright

Zendesk Admin, Cortex IO

So far it's pretty good! Our queries are a little nuanced, so we can't always use it, but it's got enough utility for us. It can even incorporate our bilingual country with greetings in a second language.

Jae Oliver

Jae Oliver

Head of Support, Wise

Really enjoying using Macha, it has made a noticeable difference to our support team in a short amount of time. I really like the ticket summary feature, saves us a lot of time.

Harry Jackson

Harry Jackson

Head of Support, Crumb

Macha AI is a great addition to my workspace! It's powerful, convenient, and it really makes productivity so much easier for our agents!

Dave G

Dave G

Head of Support, Cyber Power Systems

Very impressed! AI integration for Zendesk has certainly come a long way and Macha seems to set the standard for now. This will for sure save lot of time in our support team.

Pauli Juel

Pauli Juel

Head of CS, Dokument24

Macha has been working great for us so far! The auto-responses are accurate and our resolution time has dropped significantly.

Lana T

Lana T

Zendesk Admin, Swotzy

Macha AI is a great addition. The knowledge base feature means our agents always have the right answers at their fingertips.

Mischa Wolf

Mischa Wolf

Head of Support, Topi

We're enjoying this integration so far. It's made our support team more efficient and our customers get faster responses.

Paula G

Paula G

Head of Customer Support, Xly Studio

The team enjoys using it. It saves considerable time on common questions and the integration options are excellent.

Kilian Leister

Kilian Leister

Support Head, Didriksons

Ready to supercharge your team with AI?

Get started in minutes. Connect your tools, configure your agents, and let AI handle the rest.

$50 in free credits · no time limit, no credit card