Ecommerce SEO mistakes: how to spot 15 common store problems and fix each one
Ecommerce SEO mistakes rarely come from strategy. They come from how a store is built: supplier descriptions pasted onto every product, filters that turn one category into thousands of URLs, variants that compete, sold-out products deleted, and product markup that disagrees with the price on the page. This guide covers fifteen of them for UK online shops, each with how to spot it in Search Console or a crawl and how to fix it, including the Shopify and WooCommerce defaults behind several, Google’s documented rules, and the UK’s 2025 ban on fake and selectively published reviews.
Ecommerce SEO mistakes usually start in the catalogue, not in the blog
Ecommerce SEO mistakes are rarely dramatic. Most are side effects of how an online store is put together: a filter that creates a new URL for every colour and size, a supplier feed that pastes the same description onto hundreds of product pages, a theme that writes the price into the page with JavaScript after it loads, or a discontinued range deleted in a spring clean. Across a catalogue, they decide which URLs Google crawls, which version of a product it treats as the original, and whether the price and stock it shows match what the till says.
This guide works through fifteen of them. Each has three parts: what the mistake is, how to spot it on your own store with Search Console or a crawl, and how to fix it. Where Shopify or WooCommerce behaves in a particular way by default, I say so, and where Google has written a rule down, I quote Google rather than a rule of thumb.
I am Moeez Abbas. BoltClicks is my one-person SEO, Google Ads and Meta Ads practice; I work remotely from Lahore for businesses in the UK and the US, with no office and no team. If you sell a service and want enquiries rather than orders, the problems are different, and I have covered them in the common SEO mistakes that cost service businesses their leads. This page is only about shops: products, categories, baskets and feeds.
Common ecommerce SEO mistakes, as the ranking guides list them
I checked the search on google.co.uk with UK settings on 8 October 2026. The five organic results at the top were all list posts.
- Reflect Digital, “Top 10 eCommerce SEO Mistakes That Are Harming Your Sales”: the wrong CMS, the user journey, search demand, URLs, duplicate content, image search, reviews, customer support, event tracking and speed. No publication date is shown.
- Logeix, “eCommerce SEO: 22 Mistakes from Auditing 1,200 Stores”, by Daryl Rosser, dated 31 August 2026 in its markup. Its percentages come from its own scrape, which I cannot check, and the HTML it served me stopped part-way through mistake 13.
- Unframed Digital, “Top 10 eCommerce SEO Mistakes Hurting Your Rankings”, by Maggie Swift, 13 August 2026: thin product content, categories, buyer intent, faceted navigation, out-of-stock products, structured data, reviews, architecture, speed and mobile.
- Midsummer, “The Top 7 eCommerce SEO Mistakes (And How to Actually Fix Them)”, by Chiara Ciarrapico, a senior PPC manager there, 25 August 2025: categories, duplicate descriptions, filter and variant pages, schema, intent, out-of-stock and seasonal products, technical basics.
- Yoast, “7 common technical ecommerce SEO mistakes to prevent”, by Edwin Toonen, published in September 2024 and updated in March 2026: structure, mobile, schema, speed, canonicals, sitemaps and robots.txt, international SEO, and a closing section on its own Shopify app.
The gaps are more useful than the overlap: none of the five mentions indexed site search pages, Google Merchant Center, or the UK’s law on fake and selectively published reviews. Only Yoast mentions INP, the responsiveness metric, and only Unframed Digital and Midsummer say what to do with a sold-out product. Those gaps are filled below.
Three checks that surface most technical ecommerce SEO mistakes
The Page indexing report in Search Console. Under Indexing, open Pages and read the “Why pages aren’t indexed” table. On a store the statuses tell a story. “Duplicate without user-selected canonical” and “Duplicate, Google chose different canonical than user” usually point at variants, collection paths or copied descriptions. “Crawled – currently not indexed” full of filter parameters means Google is spending visits on pages it then declines to keep. “Soft 404” often means empty categories, or sold-out products returning a normal page that says nothing is there. “Alternate page with proper canonical tag” is usually fine: Google confirming that a variant or tracking URL points where you told it to.
A crawl, compared with the catalogue. Run a crawler such as Screaming Frog SEO Spider or Sitebulb as Googlebot Smartphone, then compare the number of crawlable URLs with the live products and categories in your admin or feed. If a shop with 2,000 products produces 60,000 crawlable URLs, the problem is URL generation, not content. Sort the list by path and parameter, and the culprits (filters, sort orders, search pages, collection paths) group themselves.
Crawl stats and server logs. The Crawl Stats report, under Settings in Search Console, shows how many requests Googlebot made and of what kind. Raw Apache or Nginx access logs, if your host provides them, show exactly which URLs it asked for, and they give the fullest view of Googlebot spending its visits on sort and colour combinations instead of new products.
One more check belongs at the start: purchases recorded properly in Google Analytics 4 (mistake 15), so you can tell later whether the fixes worked.
Mistakes 1 and 2: copied product text and empty category pages
Mistake 1: the supplier’s description on every product page. A manufacturer writes one description and sends it to every stockist. Paste it in unchanged and you publish the same paragraphs as dozens of other shops. Google’s Search Central documentation on canonicalisation describes what happens: when Google finds pages whose main content is the same or very similar, it clusters them, picks the one it judges most complete and useful as the canonical, and crawls the duplicates less often. Google says some duplicate content on a site is normal and not a breach of its spam policies, so this is not about a penalty. It is about giving Google no reason to choose your page over the brand’s or a bigger retailer’s.
How to spot it. Copy a distinctive sentence from three best-selling product pages and search for each in quotation marks on Google. If other shops come back, so does the problem. A crawler with near-duplicate detection also shows pages on your own site that differ only in the product name.
How to fix it. Rewrite in order of commercial value: start with products that already earn impressions in Search Console and the lines that carry the most margin. Keep the specification table, which shoppers expect to match the maker’s, and write what the supplier cannot: who the product suits, how it fits or sizes against similar items, what comes in the box, compatibility, care, and the questions your customer service inbox answers every week. Resist pushing the whole catalogue through an AI rewriter overnight. Google’s spam policies give “using generative AI tools or other similar tools to generate many pages without adding value for users” as an example of scaled content abuse; the test is added value, not the tool.
Mistake 2: category pages that are only a grid. Category and collection pages target the broad, commercial searches (“women’s walking boots”, “oak dining tables”), yet many stores give them a heading, some filters and product tiles, and nothing else. Google’s ecommerce documentation describes how it reads a shop: it follows links from menus to categories, on to subcategories and then products, and as a general rule, the more internal links a page has, the more important it looks relative to the rest of the site. A category linked from the main menu usually has the internal weight to rank. What it lacks is anything that tells Google and the shopper why this range differs from the one on the next site.
How to spot it. In the Performance report, filter pages to your category path (/collections/ on Shopify, /product-category/ on a default WooCommerce install) and look for queries with plenty of impressions and an average position between about 8 and 20. Then look at the pages: a title such as “Products – Shop Name”, an H1 that says “Shop all”, or no text at all.
How to fix it. Give each category a specific title and H1, two or three sentences above the grid on what the range is and who it suits, and buying guidance below it: sizing, materials, how to choose between the main options. Link to subcategories and to the related categories a shopper might want next. If a category is empty, Google’s URL guidance for ecommerce sites is to keep it out of the index with a noindex robots meta tag, or to consider a 404 if your shop drops empty categories from navigation automatically.
Mistakes 3 and 4: filter URLs and pagination that waste the crawl
Mistake 3: every filter combination is a crawlable URL. Faceted navigation is the set of filters on a category page: colour, size, brand, price, material. Most platforms record each choice in the URL, and the combinations multiply fast. Five filters with five values each allow 7,775 filtered versions of one category page when only one value per filter can be ticked, and far more when shoppers can tick several. Google’s documentation on faceted navigation says the usual parameter-based approach can generate infinite URL spaces, leading to overcrawling and slower discovery of new pages, because a crawler cannot tell that a filtered URL is useless until it has fetched it.
How to spot it. Look for filter parameters in the crawl and the Page indexing report. On Shopify, storefront filters write parameters such as filter.v.option.color=red; on WooCommerce, the classic attribute filters add parameters beginning filter_ and query_type_ followed by the attribute name.
How to fix it. Google gives two preferred options when filtered URLs do not need to be indexed: disallow them in robots.txt while leaving product pages and an unfiltered listing crawlable, or move the filters into URL fragments (the part after #), which Google Search generally ignores. It calls rel="canonical" and rel="nofollow" generally less effective in the long term. If a filtered page deserves to rank, because “black leather Chelsea boots” is a real search, turn it into a proper subcategory with its own linked URL and copy. For any filter URLs you do allow, follow Google’s rules: & as the separator, a fixed order for filters in the URL path, and a 404 for combinations with no results.
Two cautions. Google cannot read a noindex tag on a page robots.txt stops it fetching, so if filter URLs are already indexed, noindex them first and add the disallow once they drop out. And check your platform’s defaults: Shopify generates a robots.txt, editable through a robots.txt.liquid template, and on the Shopify stores I checked on 8 October it already disallowed sort_by and multi-filter collection URLs.
Mistake 4: pagination and sort orders handled the wrong way. Three habits cause trouble. The first is pointing the canonical tag of pages 2, 3 and 4 at page 1, which tells Google that those pages are duplicates of the first. Google’s guidance on pagination and incremental page loading says the opposite: give each page a unique URL, for example with a ?page=n parameter, and its own canonical. The second is a “Load more” button or infinite scroll with no linked pages behind it; Google says its crawlers don’t click buttons and generally don’t trigger JavaScript that needs a user action. The third is letting sort orders such as ?order=price into the index, which Google suggests preventing with a noindex robots meta tag or a robots.txt rule.
How to spot and fix it. Read the canonical tag in the source of page 2 of a large category, then switch JavaScript off and see whether an ordinary link still reaches page 2. Link the pages in sequence with <a href> links, consider linking every page back to the first, and never put page numbers after a #, because Google ignores fragments. Google no longer uses rel="next" and rel="prev" either, although other search engines may still read them.
Mistakes 5 and 6: variants, canonicals and the traps platforms set
Mistake 5: variants that compete with each other, or vanish. A coat in three colours and five sizes is one product with fifteen variants. Shops go wrong in two opposite directions: publishing every colour as a separate product with the same text and its own canonical, so the pages compete, or hiding every variant behind one URL that cannot show a particular colour, so Google never sees the green one’s price, photo or stock. Google’s URL guidance for ecommerce asks that each variant can be identified by a separate URL, either a path such as /t-shirt/green or a parameter such as ?color=green, and that when optional parameters identify the variant, the URL without them is the canonical. Its product variant markup uses ProductGroup with variesBy, hasVariant and productGroupID, and requires that each variant can be preselected through its URL, showing the right image, price and availability, ready to add to the basket.
How to spot it. Open a variant URL in a private window and check that the page shows that variant, not the default. In Search Console’s URL Inspection tool, compare the User-declared canonical with the Google-selected canonical for a handful of product and variant URLs. When they differ, Google has overruled you, usually because the canonical points at a redirect, a noindexed page or a page with different content.
How to fix it. Decide range by range whether colours deserve their own pages. They can, when people search for the colour and the photos, copy and stock really differ; sizes rarely do. Then make canonical tags, internal links and the sitemap agree, because Google asks for the same URL in all three, and add ProductGroup markup so Google sees one family rather than fifteen near-identical products.
Mistake 6: platform defaults nobody checked. Shopify and WooCommerce each have one worth knowing.
- Shopify collection paths. Products live at /products/handle, but themes that build product links with Liquid’s within filter create a second address, /collections/handle/products/handle, for the same page. Shopify’s developer documentation cautions that this puts the same content on separate URLs and that you should consider the SEO implications. On the Shopify stores I checked on 8 October 2026, the collection-path versions declared the plain /products/ URL as canonical, so the bigger cost is crawl effort and internal links split across two addresses. The fix sits in the theme: link to the product URL without the collection context.
- WooCommerce attributes. Global attributes such as colour or size can have archives enabled, and WooCommerce documents that this creates a page listing every product with a given term, such as yourstore.com/color/black/. Switched on across many attributes, that is a set of thin listing pages nobody planned. Check which product taxonomies your SEO plugin, usually Yoast SEO or Rank Math, lets into search results and the XML sitemap, and turn archives off for attributes that only exist to filter.
Mistake 7: sold-out and discontinued products handled by deletion
When a product sells out or is discontinued, the quickest admin action is to delete it, or to redirect it to the homepage. Both throw away what the page had built up: rankings, links, reviews, and shoppers arriving from an old result or a gift guide. Google’s site move guidance warns against redirecting many old URLs to one irrelevant destination such as the homepage, which can confuse users and may be treated as a soft 404, and its crawl budget guidance says a permanently removed page should return 404 or 410, a strong signal not to crawl that URL again. The right answer depends on the situation.
| Situation | What the URL should do | What the page and markup say |
|---|---|---|
| Out of stock, coming back | Stay live, returning 200 | Says so plainly, offers a back-in-stock alert and alternatives; availability OutOfStock, BackOrder or PreOrder |
| Discontinued, direct replacement | 301 redirect to the replacement | The replacement page names the model it replaces |
| Discontinued, no replacement, still earning visits or links | Stay live for a period | Says it is discontinued and links to the closest alternatives; availability Discontinued |
| Discontinued, no replacement, no visits or links | 404 or 410 | A useful not-found page with search and the main categories |
| Seasonal, returns each year | Stay live and be reused | Dates and stock updated each season, not a new URL each year |
| Category with no products | noindex, or 404 if removed from navigation | Links to related categories |
How to spot it. Filter the Page indexing report for Soft 404 and Not found (404), then check which of those URLs still have links from other sites or impressions in the Performance report.
How to fix it. Agree a written rule with whoever manages stock, so the decision is not made product by product under pressure. Keep the availability value in your markup and your Merchant Center feed in step with the page; Google’s merchant listing documentation lists the values it accepts, from InStock and OutOfStock to Discontinued, BackOrder, PreOrder and SoldOut, and asks for one value only. On WooCommerce, know what the Out Of Stock Visibility setting does: it hides out-of-stock items from the store catalogue, which removes them from category pages and with them the internal links that kept those pages found while the stock was away.
Mistake 8: product markup and feeds that disagree with the page
Google supports two kinds of product structured data, and its introduction to Product structured data explains when each applies. Product snippets are for pages where people cannot buy the product directly, such as an editorial review. Merchant listings are for pages where a customer can buy from you, and carry details such as apparel sizing, shipping and returns. A shop’s product pages belong in the second group, and Google notes that adding the merchant listing properties generally makes a page eligible for product snippets too. The mistakes worth looking for:
- Markup added by JavaScript after load. Google recommends Product markup in the initial HTML and warns that dynamically generated markup can make Shopping crawls less frequent and less reliable, which hurts most when price and availability change often.
- Markup that contradicts the page. A price, sale price or stock status in the JSON-LD that differs from what the shopper sees, usually because an app writes one block and the theme another. Two Product blocks on one page is the same fault.
- Markup on the wrong pages. Google recommends Product markup on product pages rather than on pages listing many products, so category pages should carry BreadcrumbList and their own content instead.
- No return or delivery policy. Google recommends one return policy for the business, under Organization markup with MerchantReturnPolicy, overridden on an individual Offer only where a product differs. Shipping and returns can also be set at account level in Search Console or Merchant Center.
- Several currencies on one URL. Google asks for a distinct URL per currency, which matters to any UK shop that also sells in euros or dollars.
Merchant Center is the other half. Participation in Google Merchant Center is required to appear in the Shopping tab, and Google says providing both on-page structured data and a feed maximises eligibility and helps it verify the data. Its automations feature can correct price, availability and condition from the landing page, but Google calls it a fix for occasional mismatches, not a replacement for a current feed, and warns that a product whose price changes more than once a day may be disapproved instead; for fast-changing prices it points shops to the Merchant API.
How to spot and fix it. Run the Rich Results Test or the Schema Markup Validator on one product per template, then watch the Merchant listings and Product snippets reports in Search Console, which Google keeps separate because the requirements differ. Two recent changes matter. In July 2026 Google documented how merchant listing markup can carry a category, aligned with the feed’s product_type and google_product_category attributes, and how sale prices can be dated with validFrom, validThrough and priceValidUntil. And FAQ rich results stopped appearing in Google Search on 7 May 2026, so FAQ markup on product pages no longer produces them.
Mistake 9: site search result pages in Google’s index
Your shop’s search box produces a page for every query typed into it. Google’s ecommerce documentation says Googlebot generally doesn’t try to submit searches into a search box while crawling, so search pages that end up indexed nearly always got there through links: from your own templates (a “shop by brand” menu that points to a search for each brand, say), or from other websites. The second is the nasty one: anyone can link to a search URL on your domain with their own phrase in the query, and the page repeats it back. On episode 113 of Google’s Search Off the Record podcast, in July 2026, John Mueller said Google’s policies no longer require blocking search pages, though it still makes technical sense; Martin Splitt called open search pages “a vector for other people to spam”, and Mueller said Google has seen that done at scale.
How to spot it. On Shopify, search results live at /search?q=; on WooCommerce, the product search form submits ?s= with post_type=product. Look for those patterns in the Page indexing report, the crawl and a site: search of your own domain. Google Analytics 4 helps in a different way: its enhanced measurement records a view_search_results event when it sees a search parameter such as q or s in the URL, so you can see what real shoppers look for.
How to fix it. If search pages are already indexed, add a noindex robots meta tag to the search template first and let Google recrawl them; once they have dropped out, block the search path in robots.txt. Done the other way round, the noindex is never seen. Replace menu links that point at search results with real brand or category pages, and treat what shoppers type as research: a frequent search with no matching category is a category you have not built yet.
Mistake 10: product pages that fail Core Web Vitals on phones
Core Web Vitals measure three things: loading (Largest Contentful Paint, good at 2.5 seconds or less), responsiveness (Interaction to Next Paint, good at 200 milliseconds or less) and visual stability (Cumulative Layout Shift, good at 0.1 or less), each judged at the 75th percentile of real page loads. Interaction to Next Paint replaced First Input Delay as a Core Web Vital on 12 March 2024. A product page is mostly interactions: choosing a size, swapping a colour, opening the gallery, adding to the basket, applying a filter. Every one of those taps now counts, not only the first.
How to spot it. PageSpeed Insights shows field data from the Chrome User Experience Report, covering the previous 28 days, for a URL or a whole origin, and Search Console’s Core Web Vitals report groups similar URLs, so a failing product template shows up as one group rather than four thousand pages. Test a product page, a category page and the basket separately, because they fail for different reasons. Lab tools such as Lighthouse or WebPageTest help explain a failure, but the pass or fail comes from real-user data.
How to fix it. On stores the causes are usually specific. The main product image is lazy-loaded, which web.dev warns against because it always delays the Largest Contentful Paint; load it normally and consider fetchpriority="high". Review stars, delivery badges or a cookie banner are injected after the page draws, pushing content down. And scripts from review, chat and upsell apps, plus tags loaded through Google Tag Manager, run on every tap. Remove or defer the ones nobody can justify, then give the field data four weeks to show whether it worked.
Mistake 11: product photos Google cannot read or reuse
Product photos also appear on their own in Google Images and Google Lens, where Google can annotate them with price and availability from your markup. Google’s image documentation says it finds images in the src attribute of <img> elements, including those inside <picture>, and that it does not index CSS images, so a gallery that sets each photo as a CSS background is invisible to Google Images.
How to spot it. Use the URL Inspection tool on a product page and look for the gallery’s <img> tags in the rendered HTML. In a crawl, export images with missing alt text, and check that image URLs, often on a separate CDN host, are not blocked by robots.txt.
How to fix it. Use real <img> elements, with srcset for responsive sizes, in a supported format; Google lists BMP, GIF, JPEG, PNG, WebP, SVG and AVIF. Give each file a short descriptive name, and write alt text that describes that particular photo, such as “Navy wool duffle coat, back view with the hood up”, rather than the product name again, and never a string of keywords, which Google’s own examples mark as bad practice. For merchant listings, Google recommends several high-resolution images of at least 50,000 pixels (width multiplied by height) in 16:9, 4:3 and 1:1 ratios.
Mistake 12: orphaned products and links Google cannot follow
An orphaned product is live, and perhaps in the sitemap, but no ordinary link on the site leads to it. In shops this happens quietly: a product removed from every collection but left published, a range reachable only through filters or the search box, later category pages hidden behind a “Load more” button, or a related-products widget that builds its links in JavaScript. Google’s ecommerce documentation says that if category pages do not link to all their products, Googlebot might not find them by crawling alone, and it strongly recommends linking to every product you want indexed. Its documentation on crawlable links adds that Google can reliably follow only <a> elements with an href attribute.
How to spot it. Export every live product URL from your platform or feed and compare it with the product URLs your crawler found by following links. Anything on the first list and missing from the second is orphaned. Then look at click depth: Google says the number of links it must follow to reach a page is one of the things it uses to judge that page’s relative importance.
How to fix it. Put every live product in at least one category linked from the navigation, render related-product links as plain HTML links, and link your bestsellers from the homepage and relevant buying guides, which Google itself suggests. Use breadcrumbs with BreadcrumbList markup on product pages. Since January 2025 Google has shown breadcrumbs in desktop results only, but the links still help shoppers and crawlers move up the hierarchy. A sitemap or Merchant Center feed helps Google find products that links miss; it does not replace them.
Mistake 13: reviews collected or shown in ways the law now bans
Product reviews help shoppers decide and add text no competitor has. In the UK they are also a legal exposure. Since 6 April 2025, Schedule 20, paragraph 13 of the Digital Markets, Competition and Consumers Act 2024 has banned outright: submitting or commissioning fake consumer reviews; reviews that conceal they were incentivised; publishing reviews in a misleading way, which the Act says includes suppressing negative reviews while publishing positive ones and giving positive reviews greater prominence; and publishing reviews without reasonable and proportionate steps to prevent and remove fake or misleading ones. The Competition and Markets Authority’s fake reviews guidance, CMA208, published on 4 April 2025, sets out what it expects from any business that publishes reviews.
How to spot it. Read your review settings as the regulator would. Are only four- and five-star reviews published, or shown first by default? Do review requests offer a discount without the resulting reviews saying so? Is the product rating pulled from another website?
How to fix it. Invite every buyer after delivery, not only the ones you expect to be happy. Publish every review that meets a written moderation policy and keep a record of what was removed and why. Label incentivised reviews. In your markup, follow Google’s review snippet guidelines: mark up reviews of a specific product rather than a category, keep the reviews and rating visible on the page, and don’t aggregate reviews or ratings from other websites. In July 2026 Google added a guideline to the same documentation barring fake and undisclosed incentivised reviews from the page and its markup, so the British legal rule and Google’s rule now point the same way.
Mistake 14: replatforming without a redirect map
Moving from WooCommerce or BigCommerce to Shopify, off Magento Open Source, or between themes that change URL patterns is where stores lose the most search traffic in one go. A WooCommerce site using pretty permalinks puts products under /product/ and categories under /product-category/ by default, while Shopify uses /products/ and /collections/. Unless every old URL redirects to its closest new equivalent, the rankings, links and bookmarks attached to the old addresses are lost.
How to spot the risk. Before a move, crawl the old site and export every indexable URL, the pages with clicks or impressions in Search Console (which keeps 16 months of data), and the pages other sites link to. After a move, a rising Not found (404) count shows what was missed; if it has already gone badly, an old crawl, a saved XML sitemap or the Internet Archive’s Wayback Machine can help rebuild the list.
How to fix it. Google’s guidance on site moves with URL changes sets out the order: map each old URL to its new one, use permanent server-side redirects, update internal links, canonical tags and sitemaps, and keep the redirects for as long as possible, generally at least a year. Map products to products and categories to categories; send many URLs to one irrelevant page and Google may treat them as soft 404s. Include image and paginated category URLs in the map, keep the staging site out of the index (Google names an accidentally crawlable demo site as one source of duplicates), and use the Change of Address tool only when the domain or subdomain changes, not for an http to https move or path changes within one site. Plan the move for a quiet trading period, not the run-up to Christmas.
Mistake 15: revenue that GA4 counts twice, or not at all
SEO for a shop is judged in orders and revenue, so the purchase data is the number everything else rests on. Google Analytics 4 measures ecommerce through recommended events such as view_item_list, view_item, add_to_cart, begin_checkout, purchase and refund, each carrying an items array. Two details decide whether the totals can be believed. Google asks you to set currency at the event level whenever you send a value; a UK shop sends GBP. And each purchase needs a transaction_id unique to the order: Google Analytics deduplicates purchase events that share a transaction ID, so a refreshed thank-you page is counted once. That works for web data streams only, and never send an empty transaction ID, because Google says all purchases sent with an empty ID are deduplicated against each other.
How to spot it. Compare a month of purchase revenue in GA4 with the orders in your platform’s admin. Some gap is expected, because not every visitor accepts analytics cookies, but a GA4 total above the platform’s, or purchases with no transaction ID, are configuration faults.
How to fix it. Use either the platform’s own GA4 integration or a single tag set-up, never both, and confirm in DebugView, with Tag Assistant switched on, that a test order fires one purchase event with the right ID, value and currency. Link Search Console to the GA4 property, which adds organic queries and landing pages to Analytics, and build a simple report in Data Studio (the name Google restored in April 2026, replacing Looker Studio) that splits organic revenue by page type: product, category and guide. That split tells you whether the category work in mistake 2 or the filter clean-up in mistake 3 changed anything.
Which of the fifteen to fix first
The order matters, because some fixes waste effort if they come before others.
- Measurement. Purchase tracking you can rely on (mistake 15), so every later change can be judged.
- Anything stopping products being indexed or shown correctly. Templates blocked or noindexed by accident, markup that contradicts the page, and broken redirects left by an earlier migration (mistakes 8 and 14).
- Crawl waste. Filter, sort and search URLs (mistakes 3, 4 and 9), because until those are under control Google spends its visits on them rather than on your products.
- Duplicates. Variants, collection paths and attribute archives (mistakes 5 and 6).
- Content. Category pages first, then product descriptions for the lines that earn the most (mistakes 2 and 1).
- Habits. Stock rules, speed, images, internal links and reviews (mistakes 7 and 10 to 13), which need a routine rather than a project.
Small shops with a few dozen products rarely have the crawl problems in steps 3 and 4 and should spend most of their time on step 5. Large catalogues are the reverse.
Getting a store checked by one specialist
When I look at a shop, I ask for user access to Search Console, GA4, Merchant Center and the store itself, never passwords. I crawl the site, read the indexing reports and Merchant Center diagnostics, and come back with the problems grouped by template, each with its evidence and fix, in the order above. The technical side of that work, from crawl control and structured data to migrations, is what I describe on my technical SEO service page.
My SEO packages are published in full: £299 a month for Basic, £449 for Standard, which adds technical fixes and a monthly strategy call, and £649 for Professional. Monthly retainers are £650 for Starter, £1,200 for Growth and from £4,000 for Full stack. All run month to month, and I do not promise rankings, because nobody honestly can. If the problems sit beyond organic search, in the product feed, the checkout or paid catalogue ads, my page on what an ecommerce growth agency should be selling explains how I approach those.
Questions shop owners ask about store SEO
What are the most common ecommerce SEO mistakes?
The ones that come from platform defaults and catalogue habits rather than strategy: supplier descriptions reused unchanged, empty category pages, filter and sort URLs left crawlable, variants competing with each other, sold-out products deleted or redirected to the homepage, and product markup that disagrees with the visible price or stock. Most show up in Search Console’s Page indexing report and a crawl within an afternoon.
Do I need to rewrite every manufacturer product description?
No. Start with products that already get impressions in Search Console and those with the best margins, and add what the supplier text lacks: fit, use, compatibility, what is in the box and answers to repeated customer questions. Slow-selling lines can wait.
Should out-of-stock product pages be deleted?
Not if the product is coming back. Keep the page live, say it is out of stock, offer an alert and alternatives, and set availability to OutOfStock in the markup and feed. Return a 404 or 410 only for discontinued products with no replacement, links or visits, and redirect to a genuine replacement when one exists.
Is it a problem if filtered pages are indexed?
Usually, when it happens by accident. Google says parameter-based faceted navigation can create infinite URL spaces that cause overcrawling. A few filtered pages matching real searches are worth keeping, ideally rebuilt as subcategories; block the rest in robots.txt or move them into URL fragments, after noindexing any already in the index.
Does Shopify create duplicate content?
It can create duplicate addresses. Themes using Liquid’s within filter put each product at a /collections/ path as well as /products/, and Shopify’s developer documentation flags the SEO implications. On the stores I checked, those pages declared the /products/ URL as canonical, so the main cost is crawling and split internal links. Linking to the plain product URL removes it.
Do I need product structured data if I already have a Merchant Center feed?
Yes, where you can. Google says providing both on-page markup and a feed maximises eligibility and helps it verify your data, and participation in Merchant Center is required for the Shopping tab.
Can my product markup show ratings collected on another website?
No. Google’s review snippet guidelines say not to aggregate reviews or ratings from other websites, and marked-up ratings must be visible on the page and relate to that product. UK law adds that reviews must not be fake, hide an incentive or be displayed selectively.
How long after fixing these mistakes will rankings change?
There is no fixed timescale and I would not promise one. Google has to recrawl the affected pages first, which on a large shop may take weeks for low-priority URLs, and its canonicalisation troubleshooting guide says Google might hold pages in a duplicate cluster for up to two weeks even after the content issues are fixed. Track impressions and revenue by page type rather than single positions.
Do SaaS websites make the same SEO mistakes?
Some, in a different form. A software company has no catalogue, so filters, stock and Merchant Center do not apply, but it has its own versions: near-identical integration pages, help-centre articles competing with feature pages, and trial sign-ups that analytics records twice or not at all. The same principles fix them.
Can I find these mistakes myself?
Most of them, yes, with Search Console, a crawler and a careful look at your templates. What takes the time is agreeing the rules, such as which filters may be indexed, and getting the theme changed to follow them.
Want these fifteen checked on your store? Send me the shop first
Send your store’s address, the platform it runs on and roughly how many products it lists, and I will tell you which of these mistakes I would look at first and why, in plain English. My prices are published, the work runs month to month, and if the honest answer is that your shop does not need outside help yet, I will say so.

