Browse the docs

Agent setup guide

E-commerce Returns Assistant

Checks each return request against the Shopify order and your policy, and drafts the decision for approval.

Available About 15 min to set up

What it does

Checks each return request against the Shopify order and your policy, and drafts the decision for approval.

  • Receives each return request (order number, email, items, reason) from your returns form or help center through a webhook.
  • Looks up the order in Shopify by number and email, so the decision uses what was really bought, paid and fulfilled.
  • AI applies your return policy (window, condition, final sale, refund method, fees) and drafts the decision, the returned items with their price paid, and the customer reply.
  • The refund estimate is recalculated in code before anyone sees it — never by the AI: each returned item (quantity × price paid) minus the restocking or return-shipping fees your policy states; anything the AI got wrong is corrected and flagged to the reviewer.
  • Orders that can't be matched, unclear cases and high-value or high-risk returns go to your Slack support channel with the customer's request, the order match and the analysis.
  • Days since the order was fulfilled (for the return window) are worked out in code, never by the AI.
  • Clear decisions wait in Reviews; once a teammate approves and the reply passes a check in code (one valid customer email, the order id, no placeholders left), the customer is emailed (Reply-to your support inbox) and a return-approved or return-denied tag and note are added to the Shopify order.

What it needs

  • A paid plan (agents run live on paid plans).
  • An AI provider key (Settings → AI Providers).
  • Shopify and Slack, connected in Settings → Integrations.
  • A returns form or help center that can send requests to a webhook URL.

What it doesn't do

  • It doesn't issue refunds, create exchanges or generate return shipping labels; you do that in Shopify after approving.
  • It doesn't update inventory or read your support inbox.
  • It never emails a customer without a person approving the reply.

Availability and plans

Available

Its workflow is built and tested, and every app it needs is live. You can get it and set it up now.

Included free on the Enterprise plan; on other paid plans it's a one-time purchase per workspace (the price is on the Agents page). The Agents page in the app always shows its current status.

Before you start

  • A paid plan: agents run live, and the Free plan only runs Dry Runs.
  • An AI provider key (OpenAI, Anthropic, Google and more) in Settings → AI Providers. AI usage is billed by your provider.
  • These apps, connected in Settings → Integrations: Shopify and Slack.
  • A form, app or system that can send each new item to a webhook URL (the agent starts from a webhook).
  • About 15 minutes.

Set it up step by step

Get the agent first (buy it, or it's already yours when your plan includes it), then in Agents → My agents press “Set up this agent”. That creates the agent's workflow in your workspace (it counts towards your plan's workflow limit) and opens the canvas with a setup checklist above it. Each item links to the exact place to go and ticks itself off when it's done.

1. Connect your AI provider

The AI steps run on your own key (OpenAI, Anthropic, Google and more). Add one in Settings → AI Providers.

2. Connect Shopify

Connect your Shopify store (Settings → Integrations → Shopify) with access to orders.

3. Connect Slack

Connect the Slack workspace your support team uses (Settings → Integrations → Slack).

4. Paste your return policy

Open “Check it against your return policy” and replace the placeholder with your full policy and store name. Decisions follow exactly what you write.

SettingWhat to enterIn step
Your return policyReplace the placeholder in the AI step's instructions with your full return policy: window, condition, final-sale items, refund methods, restocking fees, who pays return shipping, any value that needs a manager, and your store name. It starts as “[PASTE YOUR RETURN POLICY HERE]” until you replace it.“Check it against your return policy”

5. Pick your Shopify store

Open “Look up the order in Shopify” and “Note the decision on the order” and pick your store in each.

SettingWhat to enterIn step
Shopify store (order lookup)The Shopify store orders are looked up in. Pick your connected Shopify account.“Look up the order in Shopify”
Shopify store (order note)The Shopify store the decision is noted in (the same store). Pick your connected Shopify account.“Note the decision on the order”

6. Pick the Slack account and channel

Open “Send it to the team in Slack” and pick your account and channel. Invite the app to private channels first (/invite @Fluxo Flow).

SettingWhat to enterIn step
Slack accountThe Slack workspace returns needing a person are posted to. Pick your connected Slack account.“Send it to the team in Slack”
Channel for returns that need a personPick the channel your support team watches, e.g. #returns.“Send it to the team in Slack”

7. Add your support email address

Open “Email the customer” and enter the address customers should reply to.

SettingWhat to enterIn step
Your support email addressCustomers' answers to the reply come back to this address (Reply-to).“Email the customer”

8. Test it with Dry Run

Press Dry Run: the agent runs on sample data with no messages sent and nothing written to your apps.

9. Switch the trigger on

Open the trigger, switch the webhook on and send your returns form's submissions (order_number, email, items, reason) to its URL.

How it works

The agent is a normal workflow with 14 steps (1 AI step, with a person approving in Reviews). You can open, edit and monitor it like any other workflow.

  • New return request — Starts when your form or app sends data to the agent's webhook URL. Your returns form or help center posts each return request (order number, email, items, reason) to the webhook URL.
  • Look up the order in Shopify — Shopify: Find orders. Finds the order by its number and the customer's email, so the decision is based on what was really bought, paid and delivered.
  • Work out the order dates — Step. In code, not AI: how many days ago the order was fulfilled (shipped) and placed, in the trigger's time zone, for the return-window check.
  • Check it against your return policy — AI step (runs on your AI provider key). AI checks the request against the Shopify order and your policy (window, condition, final sale, refund method), and drafts the decision, the customer reply and an order note.
  • Check the refund math — Step. Recalculates the refund estimate in code — not by AI — from each returned item's price paid (quantity × unit price) minus the policy's restocking or return-shipping deductions, writes it into the reply and order note, and flags anything the AI got wrong.
  • Clear case? — Decision: picks the branch to follow. Uncertain or high-risk returns go to your team in Slack; clear approvals and denials go to Reviews for a final check.
  • Send it to the team in Slack — Slack: Post a message. Branch: Needs investigation. Posts the request, the order match, the reasons and the draft reply to your support channel for a person to handle.
  • Escalated — Kept in the run history. The run history keeps the request and the analysis.
  • Confirm the return decision — A person approves or rejects it in Reviews (the run waits). Branch: Clear case. A teammate checks the decision, refund estimate and reply in Reviews, edits them if needed and approves.
  • Check before sending — Step. Branch: Approved. In code: exactly one valid customer email, an approve or deny decision (not “review”) and a reply with no placeholders left. Anything that fails is held, with the reason in the run history.
  • Send it? — Decision: picks the branch to follow. Replies that pass the checks are emailed and noted on the order; the rest are held for a person.
  • Held — Kept in the run history. Branch: Held. The reply failed a check (recipient, order id, placeholders) or the decision is still “review”; handle it by hand. The reason is in the run history.
  • Email the customer — Sends an email from your workspace's sender. Branch: Passes. Sends the approved reply to the customer, with replies going to your support inbox.
  • Note the decision on the order — Shopify: Update an order's tags or note. Branch: Passes. Adds a return-approved or return-denied tag and a note with the decision to the Shopify order (existing tags and note are kept).

Test it with Dry Run

Press Dry Run in the canvas. The agent runs on the sample data stored on its trigger (the “Sample data for Dry Run” box), so you can check every step's output before anything is live. Edit the sample to match the fields your own form or app sends.

Sample data fields

name, email, order_number, items, reason, details, requested_resolution, source.

  • Nothing is sent or written: app actions, emails and Slack posts are simulated, and AI steps don't call your AI provider.
  • Approval steps use the Dry Run decision you pick in the step's settings (approved, rejected or timeout), so you can try each branch.

Go live

  • Open the trigger, switch the webhook on and send your returns form's submissions (order_number, email, items, reason) to its URL.
  • The webhook is protected by a secret: send it in the header shown in the Activation panel (requests without it are refused with 403). Each request starts one run.
  • The setup checklist adds a “paid plan” item before activation: live runs need a paid plan (the Free plan only runs Dry Runs).
  • When every checklist item is done and the trigger is on, the checklist says “Live — this agent is running”. Follow its runs in the workflow's History tab and in Analytics → Agents.

Questions

Does it issue refunds or return labels?

No. After you approve, it emails the customer and notes the decision on the order; you issue the refund, exchange or label in Shopify.

What if the order number and email don't match?

The request is treated as high risk and sent to your team in Slack instead of being answered.

Troubleshooting

  • “No AI provider connected” or a rejected key: connect or fix the key in Settings → AI Providers, then press Test there.
  • A checklist item stays unticked: the setting is still empty or still contains its placeholder text. Open the step from the checklist and fill it in.
  • An app step fails with “Needs reconnect”: the account's access was revoked or expired. Reconnect it in Settings → Integrations.
  • Slack says the app isn't in the channel: in Slack, type /invite @Fluxo Flow in that channel (always needed for private channels).
  • Nothing happens when your form sends data: check the webhook is switched on and the request carries the secret header (403 means it's missing or wrong).
  • A run shows as paused: it's waiting for someone in Reviews to approve or reject it.
  • A step failed: open the run in History and check that step in the Trace tab for the error and what it received.

Generated from the agent's own workflow, so it always matches what the agent does. Last updated .