If you sell clothing in India, the single most expensive decision in your Shopify build is not the theme. It's how you structure size and colour data, how you present measurements, and what your returns policy allows a COD customer to do. Get those three right and you take a real bite out of RTO and out of the exchange loop that quietly eats your margin. Get them wrong and no amount of homepage design saves you. So this is Shopify for clothing brands built backwards, from the returns desk to the product page.
Start at the returns line, not the homepage
Before you touch a theme, get your last 90 days of returns and refusals into a spreadsheet with a reason against each one. Not "customer changed mind" for everything. Actual reasons: refused at door, cash not ready, wrong size, fabric not as expected, wrong item shipped, delayed delivery. If you're pre-launch and have Instagram DM orders instead, use those.
You will find two separate problems that people usually lump together. Refusals, where the parcel never gets opened, are an address, expectation and impulse problem. Post-delivery returns are almost always fit and fabric. They need different fixes. Size charts do nothing for refusals. COD rules do nothing for fit.
The RTO arithmetic, with real numbers
Take a womenswear brand doing ₹1,400 AOV, mostly COD, and a 25% RTO rate. On 100 COD orders:
- 75 delivered, ₹1,05,000 collected
- 25 RTO. Forward freight ₹70 and reverse freight ₹70 per shipment = ₹3,500
- Packaging written off at ₹20 each = ₹500
- Warehouse QC and re-poly-bagging at ₹30 each = ₹750
That's ₹4,750 of pure leakage against ₹1,05,000 collected, or 4.5%. On a 55% gross margin that's roughly 8% of your gross profit gone before you've paid for a single Meta impression.
Now the fit half. Say 4 of those 25 are size-related, and better measurement data on the product page removes half of them. Two orders come back into the good column: ₹2,800 in revenue, ₹1,540 in contribution at 55%, plus ₹380 in avoided RTO cost. Call it ₹1,900 per 100 COD orders. At 3,000 orders a month, ₹57,000. A size chart system built properly takes a developer a day or two. The payback is not subtle.
Shopify variants for size and colour, structured so filters and reports work
Shopify gives you three option slots per product. For apparel that's usually Size, Colour and, occasionally, Length or Fit. Spend that budget deliberately.
Rules we apply on every apparel catalogue:
- Pick one spelling of the option name and enforce it. "Colour" on 40 products and "Color" on 60 gives you two filter facets, two sets of analytics rows, and a merchandiser who stops trusting the data. Same for "Size" vs "Sizes". This is the most common mess we find during an audit and it is tedious to unpick after 800 SKUs.
- Option values must be identical strings across products. "XL", "X-Large" and "Xl" are three different filter values. Decide the vocabulary once and put it in a shared doc your catalogue team actually opens.
- Order size values manually. Shopify keeps the order you enter, so enter XS, S, M, L, XL, XXL. Alphabetical size dropdowns look amateur and slow the customer down.
- Numeric sizes need context. If you sell shirts at 38/40/42 and trousers at 30/32/34, label the option "Chest (in)" and "Waist (in)" rather than "Size" so the customer isn't guessing what the number refers to.
Colour as a variant or as a separate product is a genuine trade-off. One product with six colourways gives you a single URL collecting all its links and reviews, and the customer can switch colour without a page load. Separate products per colour give you cleaner image sets, individual meta titles, and collection pages that show every colourway as its own tile, which usually lifts click-through on paid traffic. Our default: keep colourways of the same garment as variants; split them when the prints are different enough that a customer would search for them separately. On Shopify Plus you can have both with Combined Listings, linking separate colour products into one product page experience.
One more thing that matters more in apparel than anywhere else: turn off "continue selling when out of stock" at the variant level. A brand selling a size L that no longer exists creates a cancellation, a refund, and a customer who never returns. And once your catalogue crosses a few hundred SKUs, in-stock-aware size filtering stops being a nice-to-have. Most themes filter on the product, not on whether your size is actually available, which sends people to a page where every button is greyed out. That's the gap our FilterPro app was built to close.
How to set up size charts on Shopify as data, not a JPEG
The lazy version is an image uploaded to Files and dropped into the description. It's unreadable on a 5-inch screen, it can't be translated into inches or centimetres, it can't be filtered, and it gets stale the moment your tailor changes a block.
Build it with metaobjects instead. The structure we use:
- A Size row metaobject: size label, chest, waist, hip, shoulder, length. Store every measurement as a number in centimetres.
- A Size chart metaobject: name (say "Women's Relaxed Kurta"), measurement basis, and a list-of-references field pointing at its size rows.
- A product metafield of type "metaobject reference" so each product points at the right chart.
- A theme block that renders the referenced chart in a drawer, opened from a link sitting next to the size selector, not buried in a tab or the footer.
Because the values are numbers, Liquid can divide by 2.54 and give you an inch/cm toggle for free. And you edit one chart to update every product that references it, which is the whole point when you have 30 kurta styles cut on the same block.
Two details that reduce fit returns more than the chart itself. State the basis in plain words: "garment measured flat, laid out, in cm" or "these are body measurements, add ease". Indian customers have been burned by both and will assume the wrong one. And add a tolerance line, ±1 cm for stitched garments, because a customer whose measuring tape reads 0.5 cm off does not then raise a return.
If you want a paid tool, sizing apps that recommend a size from height, weight and age work reasonably well on fitted categories and poorly on drapey ones. We'd fix the chart first and only then test a recommender against the returns data.
Returns and exchanges that survive COD
Shopify's admin handles the return object properly: you raise the return, mark items received, restock, refund. What it does not do in India is book your reverse pickup. That runs through Shiprocket, Delhivery or whichever aggregator you use, and the two systems need to talk or your ops team ends up maintaining a parallel spreadsheet, which they will, and then it will be wrong.
The policy design matters more than the app. What works for Indian apparel:
- Exchange first, refund second. Make size exchange a one-tap self-serve option and free. Make a refund available too, but a step behind. A size exchange keeps the revenue and costs you one reverse pickup plus one forward leg.
- Same-size-different-colour is not an exchange, it's a return. Say so, or your reverse logistics bill doubles.
- Refunds on COD orders go to a bank account or UPI ID, and that collection step is where returns stall. Ask for it inside the return request form, not over email three days later. Store credit, offered at a premium of say 10%, converts a meaningful share of refund requests and is worth testing.
- 7 days from delivery, tags intact, unwashed. Longer windows sound generous and mostly generate end-of-season dumping.
- No returns on final-sale styles, and say it on the product page, not only in the policy page nobody reads.
Return Prime is the app most Indian apparel brands settle on because the reverse pickup integrations are local. Whatever you pick, insist on reason codes at the item level. Reasons are the only input that tells you which block, which fabric and which product photo is lying.
COD rules that cut refusals without killing conversion
Every brand wants to switch COD off. Almost none can afford to. So constrain it instead.
The levers, roughly in order of effect per hour of work:
- A ₹49 or ₹99 COD handling fee, and free shipping on prepaid. This alone moves a chunk of orders to Razorpay or UPI.
- A partial advance on COD, ₹100 to ₹200 collected upfront. Refusals drop sharply because there's skin in the game.
- An order confirmation on WhatsApp with a cancel button. Cheaper to have someone cancel in the first hour than refuse at the door on day four.
- COD off above a value ceiling. Pick the ceiling from your own data, not from a blog post.
- A blocklist of pincodes with a history of refusals, reviewed monthly. Fifteen or twenty pincodes usually account for a surprising share.
- Address quality checks at checkout. A six-word address with no landmark is a failed delivery waiting to happen.
UPI at checkout via Razorpay, PayU or Cashfree is the highest-leverage prepaid nudge you have, because it's one tap and no card details. Make sure it's above the fold in your payment list, not below wallets nobody uses.
Choosing a theme for a clothing store
Dawn is a legitimate answer, especially for a small clothing business launching this quarter. It's free, it's fast, it's maintained by Shopify, and it handles swatches and quick-add adequately. Among paid themes, the ones we see hold up under real apparel catalogues are Impulse, Prestige, Symmetry and Broadcast. They differ in styling far more than in capability.
The blunter point: on Indian traffic, mostly Android, mostly 4G, theme choice affects revenue less than image weight and app scripts do. A homepage carrying eight uncompressed lifestyle images at 400 KB each will lose more orders than any layout decision. Serve WebP, size images for the container, lazy-load below the fold, and audit every app that injects JavaScript on the product page. If your mobile LCP sits above 2.5 seconds, fixing that comes before redesigning anything, and our speed work almost always starts with removing things rather than adding them.
The apps a fashion store actually needs
Apparel brands over-install more than any other category. A workable stack is small:
- Reviews with customer photos. Judge.me or Loox. Photo reviews on a body that isn't a model's does more for fit confidence than any copy you write.
- Returns and exchanges with reverse pickup wired to your aggregator.
- Shipping: Shiprocket, Delhivery or Blue Dart, plus branded tracking. Tracking pages cut "where is my order" tickets significantly.
- Search and filters once your catalogue is large enough that browsing by collection stops working.
- Email and WhatsApp. Omnisend or Klaviyo for lifecycle flows; Interakt or Wati for WhatsApp order updates and abandoned-cart nudges, which in India outperform email on open rate by a wide margin.
- GST-compliant invoicing with HSN codes on the invoice.
On tax: apparel sits in a price-banded slab, so a ₹999 tee and a ₹1,299 tee can fall into different brackets. Check the current threshold before you set price points, because pricing a style just above the line costs you real margin for no customer benefit.
Shopify vs WooCommerce for a clothing brand
WooCommerce is cheaper on paper and it does variants well. The gap shows up in the parts of apparel that are operational rather than technical: checkout reliability on festive traffic spikes, the payment and logistics app ecosystem, and how much of your week goes to plugin conflicts and hosting. Woo's variation handling on a 300-SKU catalogue with size, colour and inventory per variant gets slow without caching and tuning, and someone has to own that.
Our honest read: if you have a technical co-founder who enjoys the maintenance, Woo is defensible. If your scarce resource is attention, Shopify wins, and it wins hardest in October when your ad spend is at its peak and you cannot afford a checkout outage. Brands moving across usually come to us with a variant taxonomy that needs rebuilding anyway, which is the part of a migration that takes real time. The product import is the easy bit.
What an apparel store costs to set up in India
Rough bands, and they assume you supply photography and copy:
- Dawn or a paid theme, lightly customised, 40 to 60 SKUs, Razorpay and Shiprocket connected, GST invoicing, a proper metaobject size chart system: ₹60,000 to ₹1.5 lakh, three to four weeks.
- Custom design, multi-collection merchandising, 300+ SKUs with structured filters, exchange flow, WhatsApp and email lifecycle set up: ₹2.5 lakh to ₹6 lakh, six to ten weeks.
- Then a monthly retainer for merchandising, speed and CRO if you're spending seriously on Meta and Google.
A small clothing business with 20 styles and no funding should spend nothing on custom development. Dawn, good photos, a real size chart, Razorpay with UPI, Shiprocket, and one clear returns policy. Put the money into product photography instead. We've broken the variables down further in our Shopify development cost guide, including what genuinely pushes a build to the upper band.
Where to start this week
Pull your returns and refusals for the last quarter, tag them by reason, and split fit problems from refusals. Then fix the top reason. If it's fit, build the metaobject size chart and add the measurement basis line. If it's refusals, put a COD fee and a WhatsApp confirmation live before your next campaign burst.
If you'd rather someone look at the catalogue structure and the product page with you, our free audit covers variant hygiene, size chart implementation and the COD levers you're not using yet.


