Most stores that ask us to "fix Shopify SEO" have spent a year publishing blog posts and no time at all on their collection pages. That's backwards. On a typical D2C catalogue, the collection URLs are the pages with commercial search intent behind them, they're the pages Google will actually rank for head terms, and they're usually the thinnest pages on the site: an H1, a grid of products, nothing else. Fix those first. Then fix crawl waste, then speed, then internal links. Blog content comes fifth, and for a lot of brands it never earns its keep.
Start with collection pages, not blog posts
A category page for "cotton kurta sets" competes for a query with buying intent. A blog post titled "5 ways to style a kurta" competes for a query with browsing intent, and even when it ranks, the click converts at a fraction of the rate. Yet the blog gets the attention because it's easier to write.
What a collection page needs, in order of impact:
- A title tag that matches how people search, not how you name things internally. If your buyers type "bridal silk saree" and your collection is called "Wedding Edit", you've lost before you started.
- 150 to 300 words of genuinely useful copy, placed below the product grid if you don't want to push products down the fold. Sizing guidance, fabric notes, care instructions, what distinguishes this collection from the adjacent one. Nobody reads it. Google does.
- Pagination that Google can follow. Infinite scroll with no crawlable page-2 link means everything after product 24 is invisible unless it's linked from somewhere else.
- Products that are actually in stock. A collection where two-thirds of the grid is sold out will bleed rankings, because the behavioural signals are terrible.
We'd rather rewrite the twenty collection pages that already get impressions in Search Console than launch a content calendar. The lift shows up faster and it shows up in revenue, not sessions.
The URL structures Shopify hands you, and which ones matter
Shopify's URL scheme is fixed in ways that irritate people who came from WooCommerce. You cannot remove /collections/ or /products/ from the path. Stop trying. It costs nothing in rankings and the workarounds break more than they solve.
What does matter: Shopify generates a second URL for every product viewed inside a collection, of the form /collections/kurtas/products/blue-kurta. Shopify canonicals those to the clean /products/blue-kurta automatically, so it isn't a duplicate-content emergency. But your internal links and your sitemap should both point at the canonical version, and a lot of themes and app-injected widgets don't. Every link that points at the collection-scoped URL is a link whose value gets passed through a canonical rather than directly. Small leak, easy fix, worth doing once.
The one URL decision you own outright is the handle. Change it after the page has been indexed and Shopify creates a redirect for you, which is fine, but the ranking history takes a hit either way. Get handles right at launch. Short, lowercase, the actual search term, no dates, no SKU codes.
Product pages: the four things worth the effort
Product page SEO is where most of the advice on the internet is padding. Here's the short version of what we change on an audit.
Unique descriptions. If you're a reseller pasting the manufacturer's copy, you're one of forty stores with identical text and Google will pick someone else. Two hundred original words beats eight hundred copied ones.
Variant handling. Shopify appends ?variant= parameters. Those are self-canonicalising in most themes, which is correct behaviour, but if you sell the same garment in six colours and each colour has real search volume, separate products beat variants for SEO. The trade-off is inventory management gets uglier and your collection grids get repetitive. Decide deliberately rather than by default.
Structured data. Check what your theme emits with Google's Rich Results Test, not by reading the theme docs. Themes vary enormously. You want product schema with price, currency, availability and aggregate rating if you have real reviews. Review apps often inject their own schema, and now you have two competing blocks on one page.
Out-of-stock policy. Discontinued products should 301 to the parent collection or the nearest replacement. Temporarily out-of-stock products should stay live with availability marked correctly. Deleting a product that ranks and letting it 404 throws away links you paid for.
Crawl waste is the quiet killer of Shopify SEO
Here's the arithmetic that convinces people. Say you have 1,400 products and 45 collections. That's roughly 1,450 URLs you want crawled. Now add faceted filters: six colours, five sizes, four price bands, three fabric types. Filter URLs on Shopify look like /collections/kurtas?filter.v.option.colour=blue, and if they're crawlable and linked, the combination count on a single collection runs into the hundreds. Multiply across 45 collections and you've handed Googlebot tens of thousands of near-identical pages to chew through instead of the 1,450 that matter.
Add Shopify's default extras: /collections/all, tag-filtered blog archives at /blogs/news/tagged/, internal search result pages, and the vendor and type collections that generate automatically. On a mid-size catalogue we routinely find that under 15% of crawlable URLs are pages anyone would want in an index.
Shopify lets you edit robots.txt.liquid in the theme, so you can disallow parameter patterns and tag archives directly. Do that, keep a copy of the rules in version control, and re-check it after every theme update because it's a file people forget exists. Where filters genuinely deserve to be landing pages, and "blue kurta" sometimes does, build a real collection with its own handle and copy rather than relying on a parameter.
If your filtering itself is the problem, badly built filters that reload the page, produce no shareable URL, or return zero results for common combinations, that's a merchandising fix before it's an SEO fix. Our own FilterPro app handles filters and on-site search for large catalogues, which is worth a look if your current setup is a tag-based hack from three themes ago.
Speed is an SEO tax you pay every month
Core Web Vitals won't take a bad page and rank it first. They will separate two pages that are otherwise equal, and more importantly they decide whether the visitor stays. On Indian mobile networks, where a fair share of traffic is on a mid-range Android on 4G, an LCP of 4.2 seconds is not a subtle problem.
The usual culprits on Shopify, in the order we find them: hero images uploaded at 3000px and served at 750px, four review and upsell apps each loading their own JavaScript bundle on every page, a slider on the homepage that nobody scrolls past slide two of, and third-party fonts loading render-blocking. Cutting a 2.4s LCP to under 1.5s is normally an afternoon of image work and app auditing, not a rebuild. Getting from 1.5s to 1.0s is where the real engineering starts.
Two honest caveats. First, uninstalling an app often leaves its script tags behind; check the theme code, don't trust the uninstall. Second, the PageSpeed score in your Shopify admin is a lab measure on one URL and it moves for reasons that have nothing to do with your changes. Field data in Search Console is what Google uses. Our SwiftStore app scans, fixes what can be fixed automatically and tracks the score over time, and for stores that want the deeper work we do it as a dedicated speed engagement.
Internal linking beats new content nine times out of ten
Your collection pages have almost no links pointing at them except from the main nav. Meanwhile your homepage collects every backlink the brand ever earns. Move some of that authority.
Practical moves: link from high-traffic product pages to their parent collection with descriptive anchor text, not "shop now". Add a short related-collections block on each collection page, curated rather than automated. If you run a blog, every post should link to at least one collection and one product, in the body copy, above the fold where possible. And check your footer: fifty links to policy pages and two to categories is a strange set of priorities to advertise.
Selling into more than one country
If you're an Indian brand shipping to the UAE and the US, Shopify Markets will give you country-specific domains or subfolders with hreflang handled for you. That's the easy part. The parts that go wrong: pricing shown in the wrong currency because a geolocation app fights the Markets setting, duplicate title tags across three market versions of the same page, and a GBP store indexed for Indian queries because someone forgot to set the right market as canonical.
Query language differs too. A shopper in Dubai searches for "22k gold chain price", a shopper in Bengaluru searches for "22 carat gold chain online", and the same page rarely wins both. If a market is more than about 15% of revenue, it deserves its own collection copy and its own title tags, not a translated clone.
How to tell if any of this worked
Ignore rank trackers. Use Search Console, filtered to the pages you changed, comparing 28 days after to the same 28 days before, and look at impressions before clicks. Impressions move first.
Then do the revenue arithmetic before you commit budget. Assume a collection page sits at position 8 with 12,000 monthly searches for its head term, and your own Search Console data shows you take roughly 2.5% of clicks at that position and 9% at position 3. That's 300 clicks against 1,080, a difference of 780. At a 1.6% conversion rate on category traffic and an average order value of ₹2,400, the gap is 12.5 orders, about ₹30,000 a month. Worth two days of work on the page. Not worth a ₹3 lakh content retainer on its own. Run that sum for your top ten collections before anyone signs anything, and use your store's real CTR and conversion numbers rather than the ones above.
The uncomfortable truth is that for some catalogues the answer comes out small. A brand selling one product in a category nobody searches for by name should spend on paid social and email, not SEO and content. We say that more often than clients expect.
Where to start this week
Open Search Console, sort your pages by impressions, and find every collection page in the top fifty that has a click-through rate under 2%. Those are pages Google is already willing to show and users are declining to click. Rewrite the title tags and the meta descriptions on those first, add the body copy, and check back in a month.
If you'd rather have someone else find the crawl waste and the schema conflicts, our team in Bengaluru runs a free store audit that covers indexation, speed and on-page structure, and tells you which of the three is costing you the most.


