Ecommerce SEO ranking: URLs, facets, duplicates and internal linking on Shopify, WooCommerce, PrestaShop, IdoSell and Shoper — minus the penalty myths.

Ranking an online store in Google Search differs from ranking a blog or a company site in scale, not in kind: visibility depends first on technical order — URL structure, filters, product variants — and only then on the quality of the product pages themselves. Links from other sites matter too, but they won't fix the problems a store creates for itself: filters, variants and duplicates. Some of the SEO advice that circulates about online stores — for example, that Google "penalises" duplicate content — doesn't hold up against Google's current documentation. This article breaks ecommerce SEO ranking down into mechanisms you can actually verify: structure, filters, duplicates, internal linking, the platform a store runs on, and cost.

Screenshot: the Ecommerce section of Search Central
Google Search Central, developers.google.com/search/docs/specialty/ecommerce, screenshot 2 October 2026
Google has a dedicated page on designing URL structures for e-commerce, and it recommends a few concrete things. First: "Minimize the number of alternative URLs that return the same content to avoid Google making more requests to your site than needed." Second: "Use ?key=value URL parameters rather than ?value, where possible," and avoid repeating the same parameter twice in one URL. Third, on product variants: each variant — colour, for instance — can be structured either as a path segment (/t-shirt/green) or a query parameter (/t-shirt?color=green); Google doesn't prefer one form over the other. Fourth, on internal links specifically: "Avoid internally linking to temporary parameters, such as session-IDs, tracking codes, user-relative values... and the current time" (Search Central, designing a URL structure for e-commerce sites, read 1 October 2026).
Google describes the link structure the same way: menus lead to category pages, categories to subcategories, subcategories to every product page. Where category pages don't link directly to every product, "Googlebot might not find all of your products by crawling alone," and Google's advice is plain: "If it's not possible to link to all pages, use a sitemap or a Google Merchant Center feed." Google also repeats a general rule: "the more links a page has to it within a site, the higher the relative importance of the page" — in practice, bestsellers should have more paths leading to them than niche products, not be buried deeper in the hierarchy (Search Central, help Google understand your e-commerce site structure, read 1 October 2026).
Sort and filter controls (price, size, colour) are convenient for the shopper and risky for Google. The most common implementation of faceted navigation, based on URL parameters, "can generate infinite URL spaces." Google names two specific consequences — over-crawling, because the URLs created by filters "seem to be novel" to crawlers, and slower indexing, because crawlers spend time on useless combinations that would otherwise go to new, valuable pages. The recommendation is specific: "allow crawling of just the individual items' pages along with a dedicated listing page that shows all products without filters applied," and return an HTTP 404 status code when a filter combination doesn't return results. The weaker methods are rel=canonical and nofollow, which Google calls "generally less effective in the long term" than robots.txt rules and URL fragments (Search Central, managing faceted navigation, read 1 October 2026).
Shopify gives a concrete, documented example of this mechanism: the platform's default robots.txt includes rules such as Disallow: /collections/*+* and .../*sort_by*, meant to keep filtered and sorted collection-page variants out of the index. The file is editable through a theme-level robots.txt.liquid template, added to the platform on 21 June 2021 — but Shopify warns that it's "an unsupported customization" and that incorrect use "can result in loss of all traffic" (Shopify, editing robots.txt; release date: Shopify changelog, read 1 October 2026).
Faceted navigation — what to index and what to block
Search Central, managing faceted navigation (crawling-managing-faceted-navigation), read 1 October 2026
Every page of a paginated product list should have a unique URL — for example with a ?page=n parameter; Google treats these as separate pages and explicitly advises against setting the first page of a sequence as canonical for the whole thing: "give each page its own canonical URL." If you use incremental loading ("load more", infinite scroll) instead of pagination, each loaded chunk should also get its own persistent URL, with the address bar updated through the History API (Search Central, lazy-loading and infinite scroll, read 1 October 2026). That matters because "Google's crawlers don't 'click' buttons and generally don't trigger JavaScript functions that require user actions to update the current page contents" (Search Central, pagination and incremental page loading, read 5 October 2026). On rel="next"/rel="prev": "Google no longer uses these tags, although these links may still be used by other search engines" — the documentation doesn't say when this changed, so no specific year is attached to the claim (Search Central, pagination and incremental page loading, read 1 October 2026).
Pagination, "load more" and infinite scroll — what Googlebot finds
Digital Vantage, own diagram based on Search Central (pagination and incremental page loading, lazy loading), read 2026-10-05
For product variants (colour, size), Google doesn't give one explicit rule to "canonicalise every variant to a single URL" — the URL-structure page only says a variant can have its own address. The general rule is that "indicating a canonical preference is a hint, not a rule": Google names "a handful of factors that play a role in canonicalization" — HTTP or HTTPS, redirects, presence of the URL in a sitemap, rel="canonical" annotations — and may still pick a different page than you do (Search Central, what is canonicalization, read 1 October 2026). In practice: if variants differ only by colour or size and share an identical description, it's sensible to have one "main" URL with rel="canonical" on the others — that's our own practical recommendation, not a Google rule, because the documentation doesn't formulate one.
One of the most repeated beliefs in the industry — that "Google penalises duplicate content" — doesn't match Google's current documentation. The current position: "Your site will likely do just fine without specifying a canonical preference." Google still lists four reasons to set one anyway: choosing which URL people see in search results, consolidating signals (such as links) from similar or duplicate pages into one URL, simpler tracking of metrics for a piece of content, and not having Googlebot spend crawling time on duplicates instead of new or updated pages (Search Central, consolidating duplicate URLs, read 1 October 2026).
Historically, the position was stated even more forcefully. In September 2008, the Google Search Central blog wrote: "Let's put this to bed once and for all, folks: There's no such thing as a 'duplicate content penalty.'" — quoting the help article in force at the time: duplicate content "is not grounds for action on that site unless it appears that the intent of the duplicate content is to be deceptive and manipulate search engine results" (Google Search Central Blog, September 2008). That exact 2008 wording no longer appears on any current documentation page — it's historical material; the current documentation expresses it more softly, in the sentence quoted above.
For a store with colour variants and identical descriptions, this means: duplication by itself isn't grounds for a penalty. The real issue is that with many near-identical URLs, Google has to pick which one to show — and you lose control over that choice. Setting a canonical URL isn't "defending against a penalty"; it's keeping control over what actually shows up in results.
As a rule, Google can only crawl a link that's an <a> HTML element with an href attribute — links rendered purely through onclick or location.href in JavaScript aren't links Google reliably follows. That applies to "related products" or "frequently bought together" sections too, if they're loaded asynchronously: without a real <a href> in the markup, they can be invisible to Googlebot regardless of how well they work for the shopper (Search Central, crawlable links, read 1 October 2026).
Anchor text is "the visible text of a link," and it "tells people and Google something about the page you're linking to." Good anchor text is "descriptive, reasonably concise, and relevant to the page that it's on and to the page it links to" — Google warns against generic text like "click here," against cramming in keywords (keyword stuffing is a spam-policy violation), and against chaining links next to each other, which strips each one of its surrounding context; an image link inherits its anchor text from the alt attribute (same source).
Breadcrumbs also have a formal structured-data format: BreadcrumbList with at least two ListItem elements, each with position, name and item (the URL — not required on the last item in the trail). Google recommends "providing breadcrumbs that represent a typical user path to a page, instead of mirroring the URL structure" (Search Central, breadcrumb, read 1 October 2026).
A sitemap "helps search engines discover URLs on your site, but it doesn't guarantee that all the items in your sitemap will be crawled and indexed." Google treats a sitemap as optional only for a "small" site — roughly 500 pages or fewer; an e-commerce catalogue usually exceeds that, so for a store a sitemap is a standard element in practice, not an optional one. Technical limit: a single sitemap file can't exceed 50MB uncompressed or list more than 50,000 URLs — larger catalogues get split across several files, optionally tied together by a sitemap index file (Search Central, sitemaps overview; limits: Search Central, build and submit a sitemap, both read 1 October 2026).
Beyond these four verified mechanisms, we don't cite specific figures for how much internal linking lifts conversion or basket value — industry articles on this topic, including an earlier version of this article on our own site, quoted named-but-unverifiable customer case studies and unsourced percentages. If you want to measure the effect of internal linking in your own store, do it on your own Google Analytics and Search Console data, not on percentages quoted elsewhere.
On 5 March 2024, Google announced three new, named anti-spam policies, including "scaled content abuse." The current policy text: "Scaled content abuse is when many pages are generated for the primary purpose of manipulating search rankings and not helping users." One listed method is "using generative AI tools or other similar tools to generate many pages without adding value for users" (Search Central, spam policies for Google Web Search; announcement date: Search Central Blog, March 2024, read 1 October 2026). The sanction Google describes for spam-policy violations generally: sites "may rank lower in results or not appear in results at all."
This isn't a ban on using AI for product descriptions. Google separately writes that "generative AI can be particularly useful when researching a topic, and to add structure to original content" — but mass-generating pages without added value "may violate Google's spam policy on scaled content abuse" (Search Central, AI-generated content, read 1 October 2026). For a store with thousands of SKUs, that's a real risk: automatically rewriting a manufacturer's description with AI for every one of those SKUs, without adding anything specific to your own store, can fall squarely within that definition. How to write descriptions that also meet Merchant Center requirements is covered in our article on SEO product descriptions.
We found no dedicated Search Central page on out-of-stock or seasonal products — the e-commerce section doesn't have one. For structured data, Google's product snippet documentation lists the availability value https://schema.org/OutOfStock: "The item is currently out of stock" (Search Central, product snippet structured data, read 5 October 2026). For product data in Merchant Center, Google is more concrete: pausing products "temporarily prevents your products from appearing in Shopping ads and free listings for up to 14 days," and setting availability to "out of stock" "is a good alternative to pausing, if the product will be unavailable for longer than 14 days" (Merchant Center Help, manage products, read 5 October 2026). The commonly repeated advice for the page itself — keep it live with that marking and suggest alternatives, rather than redirecting or deleting it — is industry practice, not a quoted Google recommendation for Search.
Shopify automates part of SEO: it adds automatic canonical tags "to prevent duplicate content from appearing in search results," generates sitemap.xml and robots.txt, has themes build page titles that include the store name, and generates structured data. Recommended URL style: "descriptive, hyphen-separated URLs," e.g. /collections/organic-skincare (Shopify, SEO overview, read 1 October 2026). The path structure itself is fixed: Shopify's redirect documentation lists /products, /collections and /collections/all as "fixed Shopify paths" that URL redirects can't be applied to (Shopify, URL redirects, read 1 October 2026). The robots.txt file is editable through a robots.txt.liquid template, added to the platform on 21 June 2021 — but Shopify warns it's "an unsupported customization" and an error in it can cost all your traffic (Shopify, editing robots.txt, read 1 October 2026).
In WooCommerce, you set the URL structure yourself, in WordPress's own permalinks. The vendor's guidance: "Keep permalink structures as short as possible and include keywords that relate to the content they categorize." There are four product-base options: default (?product=111, only with plain permalinks), shop base (/shop/product-name), shop base with category (/shop/category/product-name), or a custom base. WooCommerce warns directly: changing permalink structure changes the URLs of existing products, and old links or search-engine index entries without redirects "will return 404 errors" (WooCommerce, permalinks, read 1 October 2026).
PrestaShop generates uninformative URLs by default (product.php?id_product=27) and offers "friendly URLs" that turn them into something like 2-music-players/27-ipod-nano-green. This requires server-side URL-rewriting support (Apache mod_rewrite or equivalent) — the documentation warns that enabling friendly URLs without it "can make your shop completely unavailable to customers." PrestaShop also has a built-in canonical redirect setting — a standard rel="canonical" tag, with a choice between a 301 redirect (recommended once configuration is final), a 302, or no redirect; since version 1.7.6, the product's canonical URL is called by default (PrestaShop, v8 documentation, SEO and URLs, read 1 October 2026). This is version 8 documentation — we didn't check whether version 9 keeps identical SEO settings. The official page for PrestaShop's Google Shopping integration module couldn't be read (addons.prestashop.com blocked every attempt) — if you run a store on this platform, verify the current module in your own back office.
IdoSell generates friendly URLs automatically, in a format close to domain.pl/pl/produkty/Product-Name-123.html, with separate settings for products, blog posts and menu items. Changing the URL structure "always generates an automatic 301 redirect from the old URL to the new one" (the vendor's wording, translated) — in WooCommerce you have to set the redirect yourself. The sitemap "is generated automatically" (IdoSell, friendly URLs; IdoSell, SEO and SEM in the store, read 1 October 2026). The recommended meta tag lengths (title about 65 characters, description about 160) are guidance from IdoSell and its agency partner, not a Google limit — Google publishes no hard limit for meta description length.
We could not read Shoper's documentation (`pomoc.shoper.pl`) — every attempt ended in a Cloudflare error. Only Shoper's educational page was available, which describes the "Pozycjonowanie" (SEO) tab in the admin panel as the place to set "meta descriptions, meta keywords, the page title and a friendly URL" (translated; Shoper, SEO tab, read 1 October 2026). That is marketing-and-education material, not formal documentation, and the least well-confirmed part of this section. If your store runs on Shoper, check the settings in your own panel.
Technical SEO by platform: what it does itself, and what you set
Shopify, WooCommerce and PrestaShop v8 documentation, read 2026-10-01; Digital Vantage, own comparison
There is no independent, methodology-based survey of ecommerce SEO pricing in Poland — only the price lists of agencies that sell SEO. Two of them publish amounts for online stores: Widoczni lists a range of "2500 - 5250 zł" per month for its "medium business / e-commerce" segment (Widoczni price list), and Sempire writes that prices may start from "PLN 1500 for online stores operating very broadly in the ecommerce industry" (Sempire price list, both read 5 October 2026). These are asking prices, not prices clients actually paid, and neither page says how much work the amount covers. We don't give a Digital Vantage price here, and we don't offer these figures as a "market" reference point.
Instead of a number — five components that build the price, regardless of who you buy the service from:
Each of these five variables moves the price independently of the others, which is why comparing two quotes purely by their final figure, without the scope spelled out, rarely tells you anything useful. If you want a quote sized to your own store, get in touch — we'll scope the work before we put a number on it.
Measuring ecommerce SEO results starts with the same free Search Console reports you'd use for an audit: the Page indexing report — how many URLs are indexed and why the rest aren't (documentation, read 1 October 2026); the Core Web Vitals report — Chrome User Experience Report data for groups of similar URLs, where a group's status "is that of the worst performing metric for that URL group" among LCP, INP and CLS (documentation, read 5 October 2026; more detail in our Core Web Vitals for online stores article, and you can check individual URLs in PageSpeed Insights); and the rich-results reports for products (product snippets and merchant listings), plus the "Shipping and returns" setting under Settings > Shopping, available to owners and full users of the property — if you have a Merchant Center account, it has to be linked to the property (documentation, read 1 October 2026). If you'd rather work from a step-by-step checklist than go through the reports yourself, see our self-audit checklist.
Search Console shows only traffic from Google. Visits from Bing and other search engines don't appear there — check them in your own analytics, split by source. None of these numbers replace your own business data — organic traffic to category pages, conversions from product pages, revenue per organic session. Treat Search Console reports as diagnosing causes, and your sales data as measuring the effect.
There's no such penalty in Google's current documentation. The current position is that a site "will likely do just fine without specifying a canonical preference" — setting a canonical URL gives you control over which URL is shown and keeps Googlebot from spending crawl time on duplicates; it doesn't protect you from a sanction.
There is no reliable, methodology-disclosed survey of this service's pricing. The price is really set by five variables: the billing model, the audit's scope, the size of the product catalogue, the platform's technical baseline, and whether the quote includes ongoing maintenance. Compare quotes by scope, not just the final figure.
Links from other sites won't fix problems a store creates for itself — filters, variants and duplicates — so start with technical order and product-page quality. Internal linking — crawlable links, descriptive anchor text, breadcrumbs, a sitemap — is what you actually control, and it's worth doing first.
Differently on each. Shopify automates canonical tags, the sitemap and basic structured data; in WooCommerce you set the permalink structure (and redirects after changing it) yourself; in PrestaShop, friendly URLs have to be enabled and require server support.
Mark it with the OutOfStock availability value in structured data. In Merchant Center, Google suggests pausing products for short gaps (up to 14 days) and setting availability to "out of stock" when the product will be unavailable for longer. Keeping the page itself live with alternatives, rather than redirecting or deleting it, is common industry practice, not a Search rule.
We'll go through your structure, filters and platform's technical baseline together, and tell you what's actually holding back your rankings — before we propose a scope of work.
Ecommerce SEO in three layers: technical, product content and Merchant Center data. What makes a shop different from a regular site, and where to start.
An ecommerce SEO audit runs mostly on free Google reports: indexing, Core Web Vitals, rich results, duplicates and Merchant Center data.
Google Merchant Center: site verification, product data, shipping and landing page rules, disapprovals, and Shopify, WooCommerce and IdoSell integrations.
Core Web Vitals for ecommerce: LCP, INP and CLS thresholds, their ranking weight, field vs. lab data, and the platform gap from the 2025 Web Almanac.
Product description SEO: what Google expects, Merchant Center title/description limits, the 500×500 px image rule, GTIN and the duplicate content myth.
Table of Contents · 10 sections · 14 minutes read
Rate this article

We found no independent Polish benchmark for SEO cost. How to turn a fee and its hours into an hourly rate, and what to ask before signing.

What each part of the PageSpeed Insights report means: 28 days of user data, the Lighthouse score, phone vs desktop, and why the score keeps changing.

Google Search Console without guesswork: verification, agency access, CTR and average position by Google's own definitions, and page indexing statuses.

Omnichannel in e-commerce: the definition versus multichannel, the shared-inventory mechanism between a store and a till, and when to implement it.

What a product page needs: photos, the EU 30-day lowest-price rule, mandatory GPSR information, delivery, returns, reviews and Google structured data.

An ecommerce SEO audit runs mostly on free Google reports: indexing, Core Web Vitals, rich results, duplicates and Merchant Center data.

Google Merchant Center: site verification, product data, shipping and landing page rules, disapprovals, and Shopify, WooCommerce and IdoSell integrations.

WordPress themes are not chosen on looks: three fields in the directory tell you what a theme will cost you in a year, and what disappears when you switch.

A 502 Bad Gateway, 500, 503 or 504 error tells you which part failed: the application, the link between servers or an overload. And who to call.