> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://developer.shipbob.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://developer.shipbob.com/_mcp/server.

# What Your Customers See: Portal Walkthrough

> A step-by-step walkthrough of the ShipBob Returns customer portal experience

This guide walks through the returns portal exactly as your customers experience it. Use it to answer customer questions, train support staff, and understand where your policy settings surface. To brand the portal, see [Setup ShipBob Returns](/labs/returns/setup).

## Step 1: Order Lookup

![ShipBob Returns Portal](https://fdr-prod-docs-files-public.s3.us-east-1.amazonaws.com/ship.docs.buildwithfern.com/a89a7ca0037ba4365d8c3a913dd20e3c4cb9a5b92c12946a6dcf30e65763d748/docs/assets/images/returns-portal-first.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIA6KXJSKKNFOCF7G4B%2F20260727%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260727T164256Z&X-Amz-Expires=604800&X-Amz-Signature=de7dd88fe377ef8f460496c9c67074f4b090fa67179e4dec602df3867a99dc6a&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject)

The customer lands on your portal (for example, `https://your-store.returns.shipbob.app` or your custom domain) and enters:

* **Order number** — with or without the `#`
* **Email** — the email address on the order

Both must match the Shopify order. If the customer already has a return open for that order, they see *You already have a return for this order* with a link to its status page instead of starting a duplicate.

## Step 2: Selecting Items

![ShipBob Returns Portal Order Lookup](https://fdr-prod-docs-files-public.s3.us-east-1.amazonaws.com/ship.docs.buildwithfern.com/74d7b91f390172f2380a1380339dc8d13ba8cdf3f157727ca3e90ea58cdccafa/docs/assets/images/returns-portal-order-lookup.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIA6KXJSKKNFOCF7G4B%2F20260727%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260727T164256Z&X-Amz-Expires=604800&X-Amz-Signature=6d383adeb69508c34e621e7ec798a2b6c555aca4fd8974ac8873d8423c0ada22&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject)

Eligible items appear with checkboxes and a **Return qty** selector for multi-quantity lines. Items that cannot be returned are listed separately under **Non-returnable items**, each with the reason it is blocked:

| Situation                          | What the customer sees                                                                                                          |
| ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| Outside the return window          | The order is outside your configured return window and cannot be submitted.                                                     |
| Order/item not shipped yet         | *This order hasn't shipped yet* — items become eligible once they're on the way (when **Require order to be fulfilled** is on). |
| Non-returnable tag or excluded SKU | The item is marked non-returnable.                                                                                              |
| Hazmat item                        | Blocked from return shipping automatically — this safety block is built in.                                                     |
| Already returned                   | Quantities already on another return can't be selected again.                                                                   |

**Bundles:** items sold as a bundle are handled according to your settings — either returned as a complete set (*Bundles are returned as a set*) or, if you allow it, partially with a proportional refund.

A running **Estimated refund** total updates as items are selected.

Encourage support teams to reference this step first when customers question refund amounts; it resolves many tickets early.

## Step 3: Reason, Condition & Photos

![ShipBob Returns Portal Reasons](https://fdr-prod-docs-files-public.s3.us-east-1.amazonaws.com/ship.docs.buildwithfern.com/3ac02c21d86b7bbffc65df50ae3dd35943935c85f4635858ed0ca7970cb601f2/docs/assets/images/returns-portal-reasons.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIA6KXJSKKNFOCF7G4B%2F20260727%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260727T164256Z&X-Amz-Expires=604800&X-Amz-Signature=450ff46793fb1b5aa05a67cd2fa960969f062fb25aef5d9a6ef042f80f407583&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject)

For each item, the customer:

1. Picks a return reason from your configured list.
2. Answers condition questions, if you have them enabled: **Has the item been opened?**, **Has it been used or worn?**, **Is the item damaged?**
3. Uploads photos when required — either by your condition settings or by an **Ask Customer** flow.

These answers and photos appear on the return detail page in your dashboard and feed your flow conditions.

## Step 4: Choosing an Outcome

![ShipBob Returns Portal Outcome](https://fdr-prod-docs-files-public.s3.us-east-1.amazonaws.com/ship.docs.buildwithfern.com/4d45878d49194dc63be5a2c5ecfd1179e46b66a79ecd8a94c68b078b58d60cee/docs/assets/images/returns-portal-outcome.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIA6KXJSKKNFOCF7G4B%2F20260727%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260727T164256Z&X-Amz-Expires=604800&X-Amz-Signature=361074da109af2dcb863108187eed574a2d699897ff4b42a5bab8f6762ee0dce&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject)

Depending on what you allow (and any **Block Exchange** / **Block Refund** flows), the customer chooses:

* **Refund to original payment**
* **Exchange for another item** — with a product/variant picker

"Send me a replacement" and "Store credit" are not available yet.

See [Exchanges and Upcoming Outcomes](/labs/returns/outcomes) for details.

## Step 5: Review and Submit

![ShipBob Returns Portal Submit](https://fdr-prod-docs-files-public.s3.us-east-1.amazonaws.com/ship.docs.buildwithfern.com/4fbdcb0f386bd51bf7b9be350e8396722e0f69289e40ec2b6ae87837eb68e04d/docs/assets/images/returns-portal-submit.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIA6KXJSKKNFOCF7G4B%2F20260727%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260727T164256Z&X-Amz-Expires=604800&X-Amz-Signature=52f9f1af80c38c74b6cd874b614c1a4cee2a53b7779fbceae872c6fb30c2e5da&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject)

The **Review your return** page summarizes everything:

* The items and reasons
* **Estimated Refund** — already net of any refund deduction you configured (see [Refunds, Fees & Deductions](/labs/returns/refunds))
* For exchanges, the **Resolution** (Product Exchange) and any **Price difference to pay**, with a payment link if the new item costs more

## Step 6: Confirmation

![ShipBob Returns Portal Submit](https://fdr-prod-docs-files-public.s3.us-east-1.amazonaws.com/ship.docs.buildwithfern.com/82469e29c9e2d7ada9a33be9993cdd1eb96f812cf42e3e88629212ee885a1602/docs/assets/images/returns-portal-success.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIA6KXJSKKNFOCF7G4B%2F20260727%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260727T164256Z&X-Amz-Expires=604800&X-Amz-Signature=9057b4cb078c27797faa4e3edd56b97c128bf234d9681037f1dba10224a4a527&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject)

After submitting, the customer sees **Return Submitted!** with their **Reference Number** (an `RB-` number) and a **What's next?** summary:

* **Standard path:** the return will be reviewed; once approved, the prepaid shipping label is emailed; pack the items, drop the package at any authorized shipping location, and the refund is processed after the items are received.
* **Keep-item path:** if a **Keep Item** flow matched, the customer is told they don't need to send anything back.

A confirmation email is sent immediately.

## Step 7: Tracking the Return

The customer can follow progress on the **Return Status** page (linked from their emails). It shows:

* A **Timeline** through Submitted → Awaiting Arrival → In Transit → Arrived → Completed
* **Return Details** — order, customer, submission date, carrier and tracking number
* The **Items** being returned, and for exchanges, an **Exchange for** section with the items they'll receive
* A **Download Shipping Label** button once the label is ready

## Emails Along the Way

![ShipBob Returns Email Notifications](https://fdr-prod-docs-files-public.s3.us-east-1.amazonaws.com/ship.docs.buildwithfern.com/4fb7c0e825c351d48149c2970ae6fd498160761358e08f18f8884af0e1be4405/docs/assets/images/returns-email-notifications.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIA6KXJSKKNFOCF7G4B%2F20260727%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260727T164256Z&X-Amz-Expires=604800&X-Amz-Signature=93495078402298e1e4ab7c65b610b5ea619dc044c369eadbed2fc8b9c8b0562f&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject)

Customers receive automatic emails at each stage: **Confirmation** at submission, **Label ready** when the label is created, **In transit** at first carrier scan, and **Completed** when the return closes. All templates are customizable — see [Return Statuses & Lifecycle Reference](/labs/returns/statuses).

## FAQ

#### Can a customer open multiple returns for the same order?

If a return is already open for that order, customers are directed to the existing return status page instead of creating a duplicate.

#### Why is an item shown as non-returnable?

Common reasons include being outside the return window, not yet fulfilled, tagged non-returnable, hazmat restrictions, or quantities already used on another return.

#### When can customers download the return label?

The **Download Shipping Label** action appears after label creation succeeds, either automatically or after manual approval.

## Related Guides

* [Return Statuses & Lifecycle Reference](/labs/returns/statuses)
* [Exchanges and Upcoming Outcomes](/labs/returns/outcomes)
* [Configure Return Policies](/labs/returns/policy)