When a fashion Shopify store gets traffic but no sales, the cause is almost never mysterious. In the stores we audit it comes down to four things, roughly in this order: the traffic was never qualified, the collection page makes shoppers work too hard, the product page doesn't answer the size question, and checkout leaks between the add-to-cart and the payment confirmation. Everything else is noise. Before you touch the theme, pull four numbers and you'll know which one is costing you money.
Split the funnel into four numbers before you change anything
Open Shopify Analytics, go to the conversion funnel for the last 30 days, and write down four percentages:
- Sessions that reach any product page
- Product page views that add to cart
- Carts that reach checkout
- Checkouts that complete
A fashion store we looked at recently had 60,000 sessions a month, an average order value of ₹2,400, and a sitewide conversion rate of 0.71%. The split: 46% of sessions reached a PDP, 7% of those added to cart, 55% of carts reached checkout, 40% of checkouts completed. Multiply them out: 0.46 × 0.07 × 0.55 × 0.40 = 0.0071. That's 425 orders, about ₹10.2 lakh a month.
The 40% checkout completion is the outlier. Nothing else in that chain is unusual for apparel. Get checkout completion to 58%, which is a realistic target once COD is working properly and the payment step stops failing on UPI intent, and the maths becomes 0.46 × 0.07 × 0.55 × 0.58 = 1.03%. That's 616 orders, about ₹14.8 lakh. Same traffic, same ad spend, ₹4.6 lakh more revenue a month.
Do this arithmetic first. It stops you from redesigning a homepage that was never the problem.
Most "traffic but no sales" stores have a traffic problem
Segment your sessions by source before you blame the site. Meta broad-targeting campaigns optimised for link clicks will happily send you thousands of cheap sessions that bounce in four seconds. So will a reel that went semi-viral. If organic search and direct traffic convert at 2.4% and paid social converts at 0.3%, your store is fine and your media buying is not.
The specific thing to check on Indian fashion stores: how much of your paid traffic is landing on the homepage. If the ad showed a specific co-ord set and the click lands on a homepage carousel, you have thrown away the one thing that made the person click. We see this constantly, usually because someone set the ad up quickly and never went back.
Also check your top search terms inside Shopify's search report. If shoppers are typing "kurta set", "linen shirt", "XXL" and getting zero results, that's not a conversion problem. That's a merchandising problem with a measurable price attached.
Collection pages are where apparel stores lose the most
Fashion catalogues are big and shallow. A buyer who wants a black midi dress under ₹3,000 in size L has three constraints and most Shopify themes let them express one. The default Dawn filters give you availability, price and whatever product options you've bothered to configure. If your size variants are typed inconsistently across products, "L", "Large", "L / Black", the filter either splits into useless duplicates or doesn't appear at all.
Two fixes, neither glamorous. First, normalise your variant option names across the whole catalogue, then rebuild your filters on metafields rather than raw options so you can filter by fabric, occasion, sleeve length and fit. Second, make in-stock-size filtering the default behaviour, not an afterthought. A shopper who filters to size XS and still sees fourteen sold-out products learns that your filters lie, and that lesson is permanent.
If your theme's native filtering can't take the weight, this is one of the few cases where an app earns its keep. We built FilterPro for exactly this: metafield-driven filters and AI search on stores where the catalogue has outgrown the theme. Whatever you use, judge it on one thing: does the collection-page-to-PDP rate move within two weeks.
The size question is the one you have to answer on the page
Apparel returns in India run high and most of them trace back to fit. The shopper knows this. So they're not asking "do I like this", they're asking "will this fit me and what happens if it doesn't". A generic size chart in a tab at the bottom of the page does not answer that.
What actually works, in rough order of effort:
- Garment measurements per product, not a body-measurement chart copied across the catalogue. Chest, length, shoulder, sleeve, in inches, for every size you stock. Yes, it's a tedious data-entry job. It is also the single highest-return hour of work on most apparel PDPs.
- Model height and the size they're wearing, in the image caption, not buried in the description. "Model is 5'7", wearing S."
- A fit note in plain language: runs small, oversized, true to size. Write it from your own return reasons, not from the manufacturer's spec sheet.
The awkward case: if you're drop-shipping or reselling and don't physically hold stock, you can't measure garments and you probably shouldn't pretend to. In that situation your lever is the returns policy, not the size chart.
Photography that sells is not the same as photography that looks good
Studio shots on a white cyclorama look clean on a moodboard and tell a buyer almost nothing. For every product, a shopper wants a full-length shot, a close crop of the fabric at a distance where weave and sheen are visible, a back view, and at least one shot on a body that isn't a size S. Six to eight images. Shot on the same model where possible, because inconsistent models across sizes make people assume the sizing is inconsistent too.
Short video helps more than another still. Five seconds of a dress moving answers questions about drape and transparency that no photograph will.
Speed: the number that quietly caps everything else
Fashion PDPs are image-heavy by nature, and most of them are served over patchy mobile data. If your largest contentful paint on a 4G connection sits at 3.5 seconds, a meaningful share of your paid traffic never sees the product at all. They tapped the ad, waited, and left before anything rendered. Those sessions still appear in your analytics, which is why traffic looks healthy while revenue doesn't.
The usual culprits on apparel stores: uncompressed hero images, four review and upsell apps injecting scripts on every page, a sticky bar app, and a slideshow nobody swipes. We have taken apparel PDPs from 2.9s LCP to under 1.6s mostly by deleting things. Audit your installed apps against actual revenue contribution, then look at image formats and lazy-loading. Our approach to this is set out on the Shopify speed optimization page, and the quick version is that removing one unused app usually beats three days of theme tuning.
Checkout is where Indian fashion stores leak hardest
Back to the 40% checkout completion from earlier. Here's what we usually find behind a number like that.
COD is missing, hidden or priced badly. A large share of first-time apparel buyers in India still want cash on delivery, especially outside metros. If COD is switched off, those shoppers reach the payment step and leave. If it's on but carries a ₹100 fee that only appears at the final step, they also leave, and they feel tricked. Put the COD fee on the product page or absorb it into pricing.
Shipping surprises. A ₹1,890 cart that becomes ₹2,029 at checkout kills conversion more effectively than almost anything else. Either show the shipping cost in the cart drawer or set a free-shipping threshold and display progress toward it.
Payment failures. UPI intent on mobile, redirect back to the store, session lost. Check your Razorpay dashboard for failed and abandoned transactions separately from Shopify's abandoned checkout count. The two numbers rarely match, and the gap is usually where the money went.
Forced account creation. Still enabled on more stores than you'd expect. Turn it off.
GST display. Inclusive pricing with a clear "inclusive of all taxes" line. Apparel under ₹1,000 and above it sit at different GST rates, and a cart that recalculates tax at the last step reads as a price change to the buyer.
Returns policy is a conversion tool, not a legal page
If your return policy lives in the footer in grey 11px text, you're hiding the answer to the question that's blocking the purchase. Put the policy on the product page, one line, above the add-to-cart button. "7-day easy exchange on all sizes." If you can afford a free first exchange, say so loudly, because for fashion it converts better than a 10% discount and costs less when you work out the margin.
Be honest about the cost. Free exchanges raise your reverse-logistics bill. On a ₹2,400 AOV with a 20% exchange rate and ₹120 reverse shipping per exchange, that's ₹24 per order, or 1% of AOV. If the policy lifts conversion from 0.71% to 0.85%, which is a 20% revenue increase, the trade is obvious.
The discount habit that trains shoppers to wait
Running a sale every third week teaches your audience that full price is a suggestion. We've seen stores where organic conversion collapses in the gaps between sales because the regulars have learned the cycle. Festive discounting around Diwali and end-of-season clearance are fine. Perpetual "FLAT 30% OFF" banners are not a strategy, they're a margin leak with a countdown timer attached.
If you need urgency, use genuine scarcity: low stock on a size, a restock that sold out before. Fake countdown timers are now recognised by most shoppers and they cost you trust.
Where to start on Monday
Pull the four funnel numbers. Find the weakest link. If it's the PDP-to-cart step, the problem is size information and imagery. If it's cart-to-checkout, it's shipping cost or a cart drawer that doesn't work on mobile. If it's checkout completion, it's payment methods and COD. Fix one, measure for two weeks, then move.
Most fashion stores don't need a rebuild. They need about fifteen specific changes, done in the right order. If you'd rather have someone else find them, our free store audit covers the funnel, the speed numbers and the checkout setup, and you can see the kind of work that follows in our case studies.


