# Turning returns data into margin: sizing, quality, and bracketing
A customer orders the same dress in three sizes, keeps one, and ships two back for free. Your storefront records this as three units sold and two returns. Your finance team sees a healthy conversion rateconversion rateThe percentage of visitors or prospects who complete a desired action (purchase, sign-up, contact form), calculated as conversions divided by total opportunities.Voir la définition complète →. Your warehouse sees a headache. And your P&L, if you read it carefully, sees margin quietly leaking out the back door.
This is the reality of fashion e-commerce in 2026. Return rates for online apparel commonly run in the 20 to 40 percent range (higher for categories like dresses and footwear), and every return carries real cost: return shipping, inspection, refurbishment, repackaging, and markdown on items that miss their selling window. The revenue line looks fine. The landed margin does not.
This lesson shows you how to turn a messy returns dataset into three decisions: fix sizing, fix quality, and manage "bracketing."
Most return-reason data is captured through a dropdown at the point of return. It is noisy, but three buckets drive the majority of apparel returns and each has a different fix.
Fit. "Too small," "too large," "didn't fit." This is a size guide and product spec problem.
Quality. "Defective," "not as described," "poor quality," "color off." This is a sourcing, QA, and product-detail-page problem.
Bracketing. The behavior described in the opening scene: a shopper deliberately buys multiple sizes or colors intending to keep one and return the rest. This is a policy and pricing problem.
Bracketing (ordering variants of the same item to compare at home, then returning most) is worth defining clearly because it hides inside your "fit" returns. A customer who orders three sizes and returns two will often tag both returns as "wrong size," even though only one was ever going to be kept.
You need to join three tables that usually live in different systems:
1. Orders (order ID, customer ID, SKU, size, color, price paid, date).
2. Returns (order ID, SKU, return reason, return date, condition on arrival).
3. Product master (style ID, category, garment measurements, supplier, landed cost).
The key trick: group SKUs by style ID, not just SKU. A single dress style has many size and color SKUs. Bracketing only becomes visible when you look at the style level within a single order and customer.
Here is the core logic for flagging bracketing orders.
import pandas as pd
# orders: one row per line item ordered
# style_id groups all size/color variants of the same product
grouped = (orders
.groupby(['customer_id', 'order_id', 'style_id'])
.agg(variants_ordered=('sku', 'nunique'),
units_ordered=('sku', 'size'))
.reset_index())
# Bracketing signal: same style, 2+ different variants in one order
grouped['is_bracketed'] = grouped['variants_ordered'] >= 2
bracket_rate = grouped['is_bracketed'].mean()
print(f"Share of style-orders that are bracketed: {bracket_rate:.1%}")Once you can flag bracketed style-orders, you can measure how they behave versus single-variant orders: return rate, keep rate, and margin.
Gross marginGross marginGross margin is the share of revenue left after subtracting the direct cost of producing goods or services, expressed as a percentage of revenue.Voir la définition complète → per unit sold is the wrong number. You want contribution margin per order after returns, sometimes called landed or realized margin.
Build it up cost by cost:
A simple per-order model:
Realized margin = revenue_kept
- landed_cost(units_shipped)
- return_cost(units_returned)
- markdown_loss(units_returned)Run this across order types and the pattern usually jumps out: bracketed orders can convert well on revenue while destroying margin, because you paid to ship and process two or three units to earn the margin on one.
For a solid primer on the economics of returns, the National Retail Federation's returns research is a useful free reference that is refreshed annually.
Fit returns are the most fixable, and the payoff is durable. The signal is in the size migration pattern: when someone returns a medium as "too small" and reorders a large that they keep, that medium ran small.
For each style, count fit returns split by direction:
A style with 80 percent of fit returns tagged "too small" is not a random-fit problem. It is a spec problem. The garment is consistently smaller than the size label implies.
Pull the actual garment measurements from your product master (chest, waist, inseam) and compare across styles in the same size. You will often find that "size M" varies by several centimeters between suppliers. Customers cannot see this, so they guess, and they guess wrong.
Concrete fixes that move numbers:
Quality returns cluster by supplier and style, not by customer. That makes them actionable in procurement.
Aggregate return reason by supplier:
The discipline here is separating product problems (fix the source) from content problems (fix the page). Both show up as returns. Only the data tells them apart.
Vérification des acquis
1. Why can a storefront's revenue and conversion metrics look healthy while landed margin quietly deteriorates?
2. A customer orders one dress in three sizes, keeps one, and returns two tagged as 'wrong size.' Why is this a problem for return-reason analysis?
3. Why does each of the three main return reasons (fit, quality, bracketing) require a different organizational response?
4. Select ALL correct answers. Which situations would appropriately be classified as 'quality' returns rather than fit or bracketing?
Sélectionnez toutes les réponses correctes.
5. Select ALL correct answers. Why is building the returns dataset by joining Orders and return data across systems valuable for decision-making?
Sélectionnez toutes les réponses correctes.
Bracketing is the trickiest because the customer behavior is rational and often produces a happy keeper. You do not want to punish good customers. You want to reduce the cost of the behavior.
Options, from lightest to heaviest touch:
Reduce the need to bracket. Better size guides and virtual fit tools mean customers order one size with confidence. This is the win-win path: fewer returns, same revenue.
Nudge at checkout. When a customer adds two sizes of one style, a gentle "Not sure of your size? Check our fit guide" can convert a bracket into a single confident purchase.
Segment your policy. Some retailers now identify chronic high-return accounts and adjust terms (for example, charging return shipping) while protecting the majority who return rarely. This is a sensitive area: be transparent, apply rules consistently, and follow the consumer-protection rules in each market you sell in. Do not treat this as legal advice; involve counsel before changing published return terms.
Measure the keeper margin. Some bracketed orders still net out profitable because the keeper is a high-margin item. Segment before you act. The goal is margin, not a lower return rate for its own sake.
For each style, place it on two axes: return rate and realized margin.
This frame keeps teams from chasing returns everywhere and lets them attack the styles that actually bleed.