# Returns

The returns worklist and its stages, recording a return yourself, and the overview, rules, portal and settings tabs

Section: app. Audience: public. Updated: 2026-10-11.

---
**"Returns"** sits directly under **"Orders"** in the **"Orders & shipping"** section, because a return is an order's afterlife.

The page has five tabs: **"Overview"**, **"Returns"** (the worklist), **"Rules"**, **"Portal"** and **"Settings"**. The page opens on the worklist. Each tab, and each stage of the worklist, has its own address, so you can bookmark or share the one you mean.

## The worklist

### Stages

The worklist is grouped by stage: **"All"**, **"Needs review"**, **"Approved"**, **"In transit"**, **"Received"**, **"Completed"** and **"Rejected & cancelled"**. Each stage tab shows a live count.

**"Needs review"** is your queue. A return sits there until somebody decides, or until a rule decides for you.

Above the table you can search, narrow by channel, reason and country, and reset the filters.

### The table

Columns are **"Return / Order"**, **"Customer"**, **"Items"**, **"Reason"**, **"Channel"**, **"Carrier / Tracking"**, **"Status"**, **"Risk"**, **"Value"** and **"Requested"**. A row opens the return's detail panel.

**"Reason"** is what your customer chose in the portal, so the reasons you offer there decide how useful this column is. Vague options produce a column of nothing.

**"Export CSV"** downloads the returns the worklist is showing: the current stage and filters.

## Recording a return yourself

Most returns arrive through the portal, but a customer can also ask by email or by phone. Record those with **"New return"** at the top of the page, or **"Create the first return"** when the worklist is empty.

1. Optionally enter the **"Order ID (optional)"**: the order's number as shown on the **"Orders"** page. Customer, country and channel are then copied from that order. Anything you type in those fields yourself wins over the order's values, so you can correct a stale order record.
2. Fill in **"Customer name"**, **"Customer email"**, **"Country (2 letters)"**, a **"Primary reason"** and, if useful, a **"Customer note"**.
3. Under **"Items being returned"**, add one line per product: **"Item name"**, **"SKU"**, **"Qty"** and **"Unit price"**. **"Add item"** adds another line. At least one line needs a name and a quantity.
4. Press **"Create return"**.

Leave the order ID empty for a return of something sold outside Horizon. The order ID must be the plain number from **"Orders"**; anything else is refused rather than guessed at. Link the order when there is one: without it, the return has no order to buy a return label for, so **"Buy return label"** does not appear.

A return you create goes through the same intake as a portal return. It starts in **"Needs review"**, gets a risk score, and your rules run on it once, so a rule can approve or reject it straight away. Your customer gets the return-requested email if that email is switched on in **"Settings"**. You are not sent an alert for a return you typed in yourself. In the worklist, its channel shows as **"Manual"** unless it was linked to an order from a store.

## Overview

**"Overview"** is the analytics for your returns, over **"30 days"**, **"90 days"** or **"12 months"**.

- Headline figures: **"Returns"**, **"Open"**, **"Return rate"**, **"Refund exposure"**, **"Refunded"**, **"Avg. resolution"** and **"Auto-decided"**, the share of returns your rules decided.
- **"Weekly return volume"**, over complete weeks in the range.
- **"Resolutions"**: the share of returns by outcome.
- **"Top reasons"**, **"Most returned items"**, **"By country"** and **"By channel"**.
- **"Open returns by age"**: how long open returns have been waiting.
- **"Return rate vs similar stores"**: an anonymous comparison with other stores on the platform. It appears only when there are enough comparable stores to keep the comparison anonymous.

With no returns in the period, the tab says so instead of drawing empty charts.

## Rules

**"Rules"** holds the **"Automation rules"** that decide returns without a human. They run once, when a return comes in, from the top of the list down. The first rule that approves, rejects or sends a return to review decides it; the other effects of every matching rule add up.

Each rule card shows its conditions and actions, how often it has matched, and when it last did. You can reorder, edit, delete and switch each rule on or off. Deleting a rule does not undo what it already decided: those decisions stay on each return's timeline.

To build one, press **"New rule"**:

- **"Apply to"**: all returns, or only **"Portal returns"**, **"Manual returns"**, **"API returns"** or **"Returns started in Shopify"**.
- **"Conditions must"**: all match, or any one match. Conditions can test the return reason, country, channel, return value, item count, SKU, customer email, whether there is a linked order, days since the order, the customer's returns over the last 90 days, and the risk score.
- Actions: **"Auto-approve"**, **"Auto-reject with message"**, **"Require manual review"**, **"Set resolution"**, **"Set shipping method"**, **"Charge return fee"** and **"Add tag"**.

Before saving, **"Simulate on last 90 days"** tells you how many of your recent returns the rule would have matched, with examples. **"Save rule"** makes it active.

An auto-approved return gets the shipping method the rule set or, failing that, the preferred method from **"Settings"**. An auto-rejected return sends your customer the message you wrote.

## Portal

**"Portal"** configures the public page where your customers start and track returns, and shows a live preview of it. What your customers see and do there is described in [The returns portal your customers use](/app/returns-portal).

### The portal's own settings

Under **"Return portal"**:

- **"Portal live"** switches the portal on or off.
- **"Portal address"** is the last part of your public link: lowercase letters, digits and hyphens.
- **"Brand name"** and **"Accent color"** brand the page.
- **"Instructions for your customers"** appear above the form, for example how to pack items.
- **"Return policy link"** and **"Help link"** point to your own pages.

Once saved, the public link is shown with **"Copy link"** and **"Open portal"**. Press **"Save changes"** to apply edits.

**"Resolutions offered"** summarises what the portal offers: exchange first, store credit and keep-it refunds. It is read-only here; **"Edit in Settings"** takes you to where they are set.

**"Portal preview"** is the real public page, framed as a phone or a desktop. It appears once the portal is live and has an address.

### Where shoppers find it

**"Where shoppers find it"** puts the portal in front of customers who need it, so a return starts without a support email. It needs the portal switched on and saved first.

- **"Link in the delivered email"**: Horizon's delivered email carries a Start a return link that opens the order without typing. The switch saves as soon as you change it.
- **"Your Shopify order emails"**: a line to paste into your Shopify order confirmation or shipping confirmation email. It opens the portal on that order. **"Copy the line"** copies it.
- **"Packing slips and insert cards"**: a QR code of the portal address to print on the slip or a card in the box. **"Download the QR code"** saves it as an image.

## Settings

**"Settings"** holds the rest of the returns configuration, in cards. Save with **"Save changes"**.

- **"Return defaults"**: the **"Return window (days)"**, enforced in the portal, the **"Default parcel weight (kg)"**, and the **"Preferred method for manual returns"** and **"Preferred method for portal returns"**. These prefill when you approve a return, and you can change them for any single return.
- **"Resolutions & incentives"**: whether the portal offers exchange first and store credit, the **"Store credit bonus (%)"**, and the **"Keep-it threshold"**, below which an approved return defaults to keep-it, with no parcel sent back.
- **"Approvals & exports"**: the **"Member refund limit"**, above which team members need the account owner, and a **"Scheduled export"** that emails the same CSV as the export button, weekly or monthly.
- **"Customer emails"**: which of the branded emails your customer gets, one switch per step of the return.
- **"Return policy"**: when **"The return window starts"** (on delivery or on the order date), a **"Return fee"** taken off the refund and optionally waived for exchanges or store credit, **"Final sale SKUs"** that cannot be returned, and the **"Return reasons"** the portal offers, each with a switch for whether it **"Needs a photo"**.
- **"Getting the parcel back"**: **"Follow return parcels"** moves a return to **"In transit"** at the first carrier scan and to **"Received"** on delivery, telling your customer both times. **"Send the label automatically"** buys the return label and emails it as soon as a rule approves a return, except a keep-it return, where nothing is sent back and no label is bought. **"Most a label may cost"** stops it buying a label quoted above the amount you set; you can still buy that one yourself.
- **"Shopify"**: **"Show returns on the Shopify order"**, **"Refund in Shopify when you complete a return"**, and **"Give store credit as"** a one-use discount code or Shopify store credit.
- **"Your alerts"**: **"Email me"** for each new return, once a day with a summary, or never. Alerts cover returns started in the portal or through your API.

## Inspecting what came back

Marking a return received records the goods arriving, one line per returned product, and the return then asks you to **"Inspect what came back"**. Choose an outcome for each item: **"Restock"**, **"Quarantine"**, **"Rework"**, **"Return to supplier"** or **"Scrap"**. Each is pre-filled from the reason the customer gave: damaged or quality reasons suggest a hold for a check, anything else a restock. **"Confirm inspection"** records them.

Only restocked items go back into sellable stock, at the location the return was received into. A return marked received before you had an active location has nothing to inspect yet; it says so, and offers to create the receipt once a location exists. See [Inventory, batches and locations](/app/inventory-and-warehouse).

This used to be a separate Warehouse page, where every item stayed in quarantine because there was no way to choose an outcome. Old links to its returns view open the **"Received"** stage here.