Follow this integration guide to connect your Loop Returns data to SourceMedium.
Loop Returns is the returns and exchanges platform used by high-volume Shopify brands. SourceMedium syncs Loop as the authoritative source for return events. Shopify refund data lags significantly and misses exchange details. Every return is linked to its original Shopify order and customer, with outcome, financial breakdown, return reason, and timing.Requirements
- Active Loop Returns account
- Shopify store connected to Loop Returns
- Loop Returns API key
Steps
- Connect Loop Returns to your Shopify store if not already done
- In Loop Returns, navigate to Returns Management > Tools & integrations > Developer Tools and generate an API key
- Share the API key with your SourceMedium account manager or send it to support@sourcemedium.com to enable the integration
What data syncs
Return-level data (fct_returns)
| Field | Description |
|---|---|
return_outcome | exchange, refund, upsell, credit, or combined outcomes such as exchange+refund |
refund_amount | Cash refunded to the customer |
exchange_total | Value of the exchange order |
upsell_amount | Additional revenue collected during the return flow |
net_return_cost | refund_amount + gift_card_amount minus upsell_amount |
days_to_return | Days between original order and return initiation |
return_week_bucket | Return timing band: 0-7 days, 8-14 days, 15-21 days, etc. |
sm_order_key | Joins to obt_orders for full order context |
sm_customer_key | Joins to obt_customers for lifetime value analysis |
stg_loopreturns__return_line_items)
| Field | Description |
|---|---|
parent_return_reason | Top-level reason (e.g. “Item didn’t fit”) |
return_reason | Sub-level reason (e.g. “Waist too big”) |
exchange_variant_id | Shopify variant ID of the exchanged-for product |
sku | SKU of the returned item |
fct_returns joined to obt_orders for order-level return and exchange metrics today. rpt_order_returns_v1 documents the planned order-level view, but it is not yet deployed to customer Managed Data Warehouses.
Questions you can answer
- What percentage of our returns result in an exchange vs a refund?
- Which SKUs and variants have the highest return rates this season?
- What are the top return reasons this quarter, broken down by parent and sub-reason?
- How does return timing (days to return) differ between exchange and refund outcomes?
- Do customers who exchange rather than refund have higher 90-day repeat purchase rates?
- What is our net return cost as a percentage of gross revenue by month?
- How many orders have more than one return over their lifetime?
- Which acquisition channels produce orders with the lowest return rates?
Notes
- Loop Returns is the source of truth for return events. Shopify’s refund records lag by days and only capture a small fraction of exchange-outcome returns. Use
fct_returnsfor all returns analysis, not the refunds fields inobt_orders. - A single Shopify order can have multiple Loop returns (e.g. two separate return events).
fct_returnsgrain is per return, not per order. - Child exchange orders (Shopify order names starting with
EXC-) are flagged withis_child_order_return = true. This field indicates the order being returned, not the return outcome itself. - Historical data is available from the date your Loop Returns account was created.

