10 SEO Mistakes I See on Almost Every DTC Shopify Store


Every DTC founder I know is juggling product development, inventory, ads and customer service. SEO sits at the bottom of the list, and it shows. After auditing dozens of Australian DTC stores, I can walk into almost any Shopify site and find the same ten Shopify SEO mistakes within ten minutes.

The examples below are all real. I checked each one against the live site in September 2026. These are patterns, not verdicts. The same brands appear as both cautionary tales and examples of what good looks like, sometimes in the same audit.

One more thing before the list: you do not need to fix all ten.

You only need to fix five of these

Most stores see real movement from fixing five or six of these mistakes. The highest-leverage ones, based on what actually moves organic revenue:

  • Start with #1 (collection pages). Collections carry your buyer-intent keywords. Nothing else comes close.
  • Then #4 and #5 (out-of-stock handling and schema). Both are cheap fixes with outsized returns.
  • Then #2 (junk URLs) if your store is more than a year old.
  • #9 and #10 are the compounding ones. Guides bring new traffic, Search Console tells you what's working.

Daryl Rosser ran one of the bigger studies on this, auditing 1,200 ecommerce sites with a custom scraper. His numbers line up with what I see in Australian stores, and I've used them below where they add weight. The mistakes, though, are the ones from my own audits.

1. Collection pages treated as folders, not landing pages

A collection page is where someone searching "buy tie dye oodie online" should land. On too many stores, it's a bare grid with a theme-default heading.

The Oodie's tie-dye collection page has a heading, a grid of products, and nothing else. No intro, no buying guidance, not a word of copy above or below the grid. Culture Kings' Tall Tees collection has the same empty grid, and its meta description is literally the words "Culture Kings US". Frank Body does it halfway: a well-written title tag on its body scrubs collection, then a one-line tagline and a bare grid. Nothing that tells Google, or a cold visitor, what the range actually covers.

The Oodie tie-dye collection page: heading and product grid with no intro copy
Frank Body body scrubs collection: one-line tagline above a bare product grid

Rosser's study found 37 to 42 percent of audited sites had no description at all on their category pages. The average was around 130 words, most of it nav and footer.

Why it costs you: collections are the only pages that can rank for the broader buyer-intent terms ("summer dresses", "body scrubs") that product pages will never win. They're also often the first page a visitor sees. A grid with no copy gives Google nothing to rank and gives the visitor no reason to stay.

The fix: keyword-led title tag, 50 to 100 words of intro above the grid, then long-form content below it: how to choose, materials, care, delivery, FAQs. Meshki's dresses collection runs around 4,200 words and Black Milk's goth clothing collection around 5,600. That's the bar. Write for the buyer who landed cold, not for a word count.

2. Indexable junk URLs from tags and auto-generated pages

Shopify turns your product tags into public URLs whether you want them or not. Most stores never think about this until the index bloat shows up.

Kip & Co has tag URLs like /collections/all/bfcm2025 and /collections/all/30box22 returning HTTP 200, self-canonical, with no noindex. Each tag on a product spawns one thin, indexable page. LSKD has a stranger version: tag URLs on lskd.com canonicalise cross-domain to lskd.co, a configuration mess that splits signals between two domains. MESHKI's sitemap lists 2,156 collections for 2,549 products, and around 696 of those are auto-generated per-product collections that point at products which no longer exist. MESHKI at least noindexes them. They still sit in the XML sitemap.

Kip & Co BFCM2025 tag URL page showing 393 products

One thing that's changed since the old guides: /collections/vendors now returns 404 on current Shopify. The vendor-page bloat vector from the 2019-era articles is dead. The tag problem isn't.

Why it costs you: thousands of thin URLs dilute Google's crawl and your site's relevance signals. On one US store I checked, Google had about 404 URLs indexed against roughly 200 real pages. More than half the index was junk.

The fix: treat product tags as an admin tool, not a taxonomy. Keep them clean and internal-facing. For the URLs Shopify generates anyway, set noindex or a canonical back to the parent collection, and prune anything auto-generated from your sitemap. Then check the Page Indexing report monthly (see mistake #10).

3. Product pages as an afterthought

The copy on most product pages reads like it was written for a shelf label. Charming, sometimes. Optimised for search or conversion, rarely.

Go-To Skincare's meta description for Face Hero: "A terrifically powerful, fantastically nourishing face oil." Their spelling, and their charm. No buy modifier, no delivery hook, nothing about the purchase. Bondi Boost's Elixir Pre-Wash Oil has a 92-word description and the same pattern. These are good brands with good products writing copy that assumes the visitor is already sold.

Rosser's data puts numbers on it: 29 percent of audited product pages had no description at all, and 55 percent had under 50 words.

Why it costs you: product pages are your "buy [product name]" landing pages, and the description is doing sales work for cold visitors. Under 50 words gives Google almost nothing to rank and gives a first-time visitor no reason to trust you.

The fix: title template with purchase intent: "Buy [Product] Online | [Store]". Meta description with a reason to click: delivery terms, returns, a guarantee. Then 150 to 300 words minimum that do sales work: features paired with benefits, use cases, the objections your support inbox already answers. MESHKI's product metas do this well, with "Shop now" calls to action and online purchase modifiers, which makes it a useful foil. Copy specs from the manufacturer where they're factual. Never copy the description.

4. Discontinued products that hard 404

When a product sells out or gets retired, most stores do one of two wrong things: nothing (the URL 404s) or a blanket redirect to the homepage.

TRIANGL, the Australian swimwear brand, has exactly this. Three discontinued bikini styles, /products/vinca-melon-stripe, /products/vinca-maca and /products/mima-choc-mint, all return a hard 404. No redirect, no alternatives, no message. Just Google's 404 page for anyone who followed an old link, and a slow leak of any equity those pages had built.

TRIANGL 404 page for a discontinued bikini product URL

Why it costs you: a product page that ranked or collected links doesn't lose its search demand when stock runs out. People keep searching discontinued products for reviews, dupes and secondhand listings. A 404 hands all of that to whoever still has a live page.

The fix: keep the page live. Say it's out of stock, suggest the closest current alternative, offer a back-in-stock email. Black Milk does this properly: its sold-out Cathedral Pocket Tee stays at a live URL with OutOfStock marked up in the product schema. If a product is truly gone for good, 301 it to the closest equivalent, never to the homepage.

Black Milk sold-out Cathedral Pocket Tee page staying live with out-of-stock messaging

5. Product schema missing the good bits

Product schema is what gets you stars, price and availability in the search results. Most stores have the schema. What they lack is the fields that make it valuable.

Frank Body's Original Coffee Scrub serves proper Product JSON-LD: name, price, availability, the works. What it doesn't serve is aggregateRating. No reviews in the schema, despite Yotpo review code appearing 157 times in the page HTML. The reviews exist. Google just can't see them, so no stars in the SERPs.

Rosser's study found only 20 percent of sites had an aggregate rating set, and only half had product schema at all.

Why it costs you: rich results stand out. A listing with stars, price and "in stock" beats a plain blue link on the same page every time. This is pure CTR you're leaving on the table.

The fix: check what your theme and review app actually output. The schema needs offers, price, availability, and reviews (or aggregateRating) at minimum. Validate a few product URLs in Google's Rich Results Test. If your review widget renders via JavaScript and doesn't feed the static JSON-LD, switch apps or patch the theme. This overlaps with the technical basics in my technical SEO checklist, which covers schema validation alongside the rest.

6. Slow pages, heavy images, app bloat

Shopify stores get slow in a specific way: every app you install injects scripts, and product photography ships straight from the camera to the CDN.

Petzyo's homepage weighs 24.2MB, and 21MB of that is PNG. A single review image, dog_review.png, is 2.2MB, and there's a near-duplicate 2MB variant loaded beside it. Eleven third-party script domains load on that page. Meshki's homepage serves 2.10MB of HTML alone with 267 script tags and five PNGs between 1.9 and 2.4MB each. Bondi Boost's best-selling product page references 51MB across 473 resources from 15 third-party domains.

Why it costs you: Google has been blunt about this: going from one to three seconds of load time increases bounce probability by 32 percent, and it gets worse from there. Slow pages lose rankings and sales at the same time, which is rare for a single factor.

The fix: compress and resize images before upload, convert to WebP, and lazy-load anything below the fold. Then audit your apps. Each one is a script tax on every page. Petzyo's stack (reviews, loyalty, chat, subscriptions, personalisation) is typical, not extreme, which is the point: the bloat is the default, not the exception. Delete apps you don't use and check what remains loads asynchronously.

7. Internal linking that stops at the navigation

Most stores rely on the nav menu and leave it there. Product pages become dead ends, and authority never flows to the pages that need it.

Petzyo's product page for its lamb pantry pack has no breadcrumbs and no related products section at all. Bondi Boost and Princess Polly both skip breadcrumbs on product pages, though they do show related items. Black Milk runs the opposite pattern: breadcrumbs, but no related products on the page I checked. Meanwhile Ergopouch, The Oodie and Frank Body all ship both. This isn't a Shopify limitation. It's theme settings nobody touched.

Why it costs you: every product page you don't link to is a page Google values less and visitors never find. Related products also do commercial work: "complete the look" and "pairs well with" are cross-sell prompts, not just SEO plumbing.

The fix: turn on breadcrumbs in your theme (most Shopify themes ship with them disabled). Add a related products section to every product template. Then link from content to commerce: every blog post and buying guide should link to the collections and products it mentions, with descriptive anchors. A store with hundreds of products and no links between them is a catalogue, not a site.

8. A blog with no strategy

The most common blog mistake isn't bad writing. It's a blog that exists in name only.

The Oodie's blog has been an empty shell since 2018. The index page returns 200, the sitemap last-modified date is April 2018, and there are zero article links on a 447-product store. Tri House, a furniture store with 4,658 products in its sitemap, has no blog posts at all. Black Milk, a brand with a genuinely engaged audience, has exactly one: "Mini Strappys in the Wild".

Why it costs you: the blog is how you reach the informational queries that collections can't ("how to tie-dye at home", "what to wear to a festival"). Those readers are your future buyers, and the posts are also your best shot at being cited by AI search tools when they summarise products in your category. The overlap between classic SEO and AI search is smaller than most teams assume, and I covered where they diverge in SEO vs AI search.

The fix: pick three to five topic clusters that map to what you sell. Publish two to four posts a month in those clusters, every post linking to a money page. A post that doesn't point at a collection or product is content with no funnel role. Consistency beats volume: four posts a month for six months beats thirty posts in one week and silence after.

9. No buying guides or comparison content

Almost nobody searching for products goes straight to a product page. They search "sugar scrub vs coffee scrub" first. Most stores have nothing for that moment.

Frank Body is the exception that proves the rule, and it's the example I show clients. "Glycolic vs Lactic Acid". "Chemical vs Physical Exfoliation". "Sugar Scrubs vs Coffee Scrubs". Real comparison content, written in their voice, each piece linking to products. It works because it answers the exact question the searcher typed, one step before they're ready to buy.

The Oodie and Tri House have none, but that's because they have no blog at all. The more common version I see is stores with plenty of posts, all of them announcements and lookbooks, and zero content targeting commercial-investigation queries.

Why it costs you: "X vs Y" and "best X for Y" are high-intent queries with weak competition in most Australian niches. They're also the pages that earn links, which is how you build authority to the money pages they link to.

The fix: list the ten questions customers ask before buying (your support inbox already has them). Turn the comparison questions into "X vs Y" posts, the shortlist questions into "best X for Y" guides, the anxiety questions into how-to-choose articles. Link each one to the relevant collection. This is the content that makes mistake #8's clusters actually convert.

10. Search Console ignored

Every mistake above is invisible if nobody looks at the data. And in most stores I audit, nobody has opened Search Console in months.

The evidence is the mistakes themselves. LSKD's tag URLs canonicalising to the wrong domain would light up the Page Indexing report. MESHKI's sitemap carrying around 696 URLs for products that no longer exist would show in the sitemap coverage stats. Kip & Co's indexable junk tags would appear in the index count creeping up. None of these are exotic edge cases. They're all things a monthly 30-minute GSC review catches.

Why it costs you: Search Console is the only place Google tells you what it sees: which queries show your pages, which pages it won't index, where your CTR is leaking. Stores that ignore it repeat the same mistakes for years and can't tell you which fix worked.

The fix: calendar a monthly review. Three things, in order: the Page Indexing report (what's excluded and why), queries with high impressions and low CTR (rewrite those title tags and metas), and queries sitting at positions 4 to 10 (those are your fastest wins). Rankings alone answer the wrong question; what you own versus what you could own matters more, which is the argument I make in share of voice over rankings.

Where to start

If this list felt long, reread the section above the first mistake. Fix your collections, handle out-of-stock products properly, complete your product schema, clean up your tag URLs, and put a monthly GSC review on the calendar. For most stores, that's the difference between an SEO program and an SEO hope.

And if you want to know which of these your store is actually running, that's an audit. It's the fastest way to stop guessing. See how I work, or get in touch and I'll tell you what I'd check first.

Tell Me What You Need to Win.

I will tell you honestly whether I am the right person for it.