AboutAll ServicesFree EmailOur WorkGuidesFAQContact
Services
SEO ServicesEcommerce RankingSpeed OptimizationWebsite AuditGoogle Ads ManagementMeta Ads ManagementSocial Media ManagementAnalytics & TrackingShopify Catalogue SEO
Build & Solutions
WordPress DevelopmentEcommerce DevelopmentCustom EcommerceFlying CartFlying AdsFlying Blog
Dedicated Sites
ServicesCareFirstlightTruefeedWoo2ShopifyShopify

Ecommerce Ranking

Product and category pages, ranked

General SEO advice breaks on a store. You have thousands of near-identical variant URLs, filters generating infinite paths, and products that go out of stock and quietly take their rankings with them. This is that problem, sold separately, because it needs different work.

The problem, as we usually find it

What is actually going wrong on most of the sites we are called into — before anything about what we would charge.

General SEO advice assumes a site with pages. A store is not that. It is a database with a template pointed at it, and the problems that follow are structural rather than editorial.

You have thousands of near-identical variant URLs competing with each other. Filters generating paths nobody intended. Products going out of stock and quietly taking their rankings with them. None of that is fixed by writing better copy.

This is sold separately from our SEO plans because it needs different work, and because bundling it hides how much of the job is catalogue engineering rather than marketing.

What the work covers

Everything below is included. If something is not on this list, we quote it separately rather than leaving you to find out later.

Category pages that can rank

Real copy above the fold, a crawlable structure, and pagination that does not strand page four.

Variant and duplicate control

Canonicals across colours and sizes so forty URLs stop competing for one search.

Faceted navigation

Filter URLs either made useful or made invisible — never left to generate a million thin pages.

Out-of-stock strategy

A discontinued product is a ranking asset. It should redirect or stay up with alternatives, not 404 silently.

Product schema

Price, availability and reviews marked up so the listing earns its rich result.

Pagination handling

So page four of a category is reachable and indexable rather than stranded behind infinite scroll.

Crawl budget control

Filter and sort URLs stopped from eating the crawl allowance your actual products need.

Category page copy

Real content above the fold on the pages that carry commercial intent, not a bare product grid.

What we have actually found

Real numbers from real accounts. We never publish client names, so the businesses are described rather than identified — the figures are exactly as we found them.

3,222

SKUs in the largest catalogue we have taken through this end to end

67%

of one store's search clicks were landing on URLs that no longer existed

30 → 2

product disapprovals cleared without changing a single page on the website

102

variants still taking orders at zero stock on a store set, on every product, not to sell out of stock

500 of 500

variants sampled on a migrated store carrying invented barcodes — a timestamp with a random number after it

The detail that decides it

The part most quotes leave out, because it takes experience rather than a price list.

Variants: forty URLs fighting over one search

A shirt in five colours and four sizes can generate twenty URLs, and on some platforms every one of them is indexable. Each is a near-duplicate of the others. Google has to pick one, and its pick is frequently not the one you would have chosen.

The fix is canonical tags pointing every variant at the parent, applied in the template so new products inherit it. It is unglamorous and it is often the single largest ranking gain available on a store.

Shopify and WooCommerce create this problem differently — Shopify hands you variant URLs by default, WooCommerce hands you faceted ones — but the resolution is the same shape on both.

Faceted navigation, and the million pages you did not mean to make

Filters are useful for shoppers and dangerous for crawlers. Colour plus size plus price plus brand, in any order, is a combinatorial explosion of URLs that all contain roughly the same products.

Left alone, Google spends your crawl budget on those instead of on your actual products. On a large catalogue that means new products take weeks to get indexed.

Each filter gets a decision: made genuinely useful and indexable, because people search that way; or made invisible. What it does not get is left to chance.

Out of stock is not the same as gone

A discontinued product with years of links and rankings is an asset. Letting it 404 throws that away permanently, and it is the default behaviour on most platforms.

The right answer depends on the product. Coming back in three weeks: keep the page up and say so. Gone for good with a successor: 301 to the successor. Gone with no equivalent: keep the page and show alternatives.

What is never right is a mass redirect to the homepage. Google treats that as a soft error, and it is one of the fastest ways to lose a set of rankings.

The inventory setting that silently overrides your inventory setting

A store told us products were selling after they had sold out. Every one of its 278 variants was already set not to continue selling when stock hits zero, which is the setting everyone reaches for. It was doing nothing.

When tracking is switched off for a variant, the platform never consults the quantity or the out-of-stock rule at all. The item is simply always purchasable. On that store 102 variants across 58 products were untracked — the rule was correct everywhere and enforced nowhere.

The merchant-visible symptom points straight at the backorder setting, which is the wrong knob entirely. And the fix has a blast radius worth planning for: turning tracking on makes every zero-quantity product read *Sold out* the same second, so real quantities go in during the same sitting, not the following week.

The identifiers that decide whether you appear in a price comparison

Automated migration tools do not always leave the barcode and SKU fields empty. Sometimes they fill them with invented values, and the tell is a thirteen-digit timestamp with a random number after it. On one migrated store we sampled 500 variants across every brand and found not one real value.

That is worse than empty. Google accepts brand plus manufacturer part number as the substitute when a product genuinely has no barcode — but junk in the SKU field closes that fallback too. The product ends up with no valid identifier at all, which costs it price comparison, competitor benchmarking and product matching. Nothing in the feed dashboard says so.

Categories matter for a stranger reason. A tripod on one store was struck under a firearms policy. That is not a bug: monopods are genuinely sold as shooting sticks, and the classifier falls back to a guess when the product data gives it nothing better. Setting a proper product category cleared it within minutes with no appeal filed. On a second item the category alone was not enough — the description used the word "shooting" about a dozen times, and it took a feed-only description to remove the ambiguity.

One more that costs image traffic outright: we found 47 images on an Indian store carrying German alt text, from a bulk generation run left on the wrong locale. Invisible in the admin unless you open each product's media, and it forfeits image search entirely. Feed work at this depth is its own service — it lives on our Truefeed site — but we check it here because a catalogue that cannot be identified cannot rank.

What Google reads versus what your page says

Product schema tells Google the price, availability and rating directly. When it disagrees with the visible page, you lose the rich result and sometimes the listing.

That disagreement is more common than people expect. We have proven the same wrong-direction price error twice, on unrelated stores run by different agencies — a feed price above the page price, passing validation silently and losing every comparison it entered.

So schema, page and product feed get reconciled together. Fixing one and not the others is how a store ends up with three versions of its own price.

What we need from you

Short, and worth reading before you start. What delays this work is almost never the work — it is waiting on access or a decision.

Store admin access

Enough to change templates and theme files. Most of this work is structural, and it cannot be done from outside.

Search Console and the product feed

Read access to both. Feed and site have to be reconciled together — fixing one alone is how a store ends up with two versions of its own price.

A decision on discontinued products

Whether they redirect, stay up with alternatives, or go. We will recommend, but it is a commercial call about your catalogue.

A staging site if one exists

Not essential, but template changes are far less nerve-wracking when they can be seen before they are live.

Whether this is right for you

We would rather lose the enquiry than take work we would do badly, so the right-hand column is as honest as the left.

This is for you if

  • You run a store with more than a few hundred products
  • Your category pages do not rank and you cannot work out why
  • Traffic dropped after a redesign, replatform or catalogue change
  • You are on Shopify or WooCommerce and want the structure fixed at template level

This is not for you if

  • You have a handful of products; our standard SEO plan covers you more cheaply
  • You are not willing to let us change templates — most of the fix lives there
  • Your store is brand new with no history; get the build right first instead
  • You want this instead of fixing a broken product feed, when the feed is the bigger problem

How it runs

Four steps, in this order, every time.

  1. We crawl the store and separate the URLs that should rank from the ones that should never have existed.
  2. Duplication and faceted paths get resolved at the template level, so new products inherit the fix.
  3. Category pages get the copy and internal links they need to compete.
  4. Product schema and feed alignment last, so what Google reads matches what the page says.

The Stack We
Work In Every Day

Every platform below is one we build on, maintain, rank and report from — not a logo wall.

WordPress
WooCommerce
Shopify
Elementor
Cloudflare
Google Ads
Analytics
Search Console
WordPress
WooCommerce
Shopify
Elementor
Cloudflare
Google Ads
Analytics
Search Console
WordPress
WooCommerce
Shopify
Elementor
Cloudflare
Google Ads
Analytics
Search Console
WordPress
WooCommerce
Shopify
Elementor
Cloudflare
Google Ads
Analytics
Search Console
Merchant Center
Meta Ads
Instagram
Tag Manager
Razorpay
Next.js
MySQL
PHP
Merchant Center
Meta Ads
Instagram
Tag Manager
Razorpay
Next.js
MySQL
PHP
Merchant Center
Meta Ads
Instagram
Tag Manager
Razorpay
Next.js
MySQL
PHP
Merchant Center
Meta Ads
Instagram
Tag Manager
Razorpay
Next.js
MySQL
PHP
WordPress
WooCommerce
Shopify
Elementor
Cloudflare
Google Ads
Analytics
Search Console
WordPress
WooCommerce
Shopify
Elementor
Cloudflare
Google Ads
Analytics
Search Console
WordPress
WooCommerce
Shopify
Elementor
Cloudflare
Google Ads
Analytics
Search Console
WordPress
WooCommerce
Shopify
Elementor
Cloudflare
Google Ads
Analytics
Search Console

Questions

Yes. SEO plans cover a site. This covers a catalogue — variants, filters, stock states and schema. Most stores need both, and we will say which comes first.

Both. The problems differ — Shopify hands you variant URLs, WooCommerce hands you faceted ones — but the method is the same.

Usually yes, at the template level. We tell you exactly what changes and we keep a rollback.

Want free stats on your site first?

Send us the URL. We pull the numbers from your own accounts and tell you what is wrong before there is any quote, and before there is any contract.

No pitch deck, no obligation. Bring your URL and we will look at it together.