Product & Collection Page SEO · Cluster Anchor
Shopify Product Page SEO: The Complete Optimisation Checklist
The 35-point Shopify product page SEO checklist we run on every new client engagement. Every check has been tested on live client accounts - including AB Ellie's 19 US position-#1 rankings. Titles, descriptions, images, schema, variants, internal linking, and Merchant Center feed alignment.
Same product-page framework our Shopify SEO agency deploys on new client accounts.
By Chris Coussons · 24 July 2026 · 21 min read
Why this checklist exists
Most Shopify product page SEO advice is a generic list of "add a title tag, add alt text, use schema." It's not enough. Ranking is decided by 35+ interacting factors - from Merchant Center feed alignment to variant URL strategy to review-signal schema. This is the full list we run on every new engagement, part of the complete Shopify SEO guide.
Why product pages are the most valuable pages on your Shopify store
Product pages carry the highest commercial-intent traffic on a store - someone searching "sofia bridal earrings" is closer to buying than someone searching "how to choose bridal earrings." They convert 3-5× better than editorial or collection landing pages, and every session that lands on one is a session Google has already qualified as purchase-ready.
They also participate in two acquisition channels simultaneously. The same URL, the same schema, and much of the same feed data feed both the organic SERP and the Shopping SERP (via Merchant Center). Get the underlying data right once and it compounds across both surfaces - get it wrong and you're leaking clicks in two places at once.
And yet, on the average Shopify catalogue, product pages are the most under-optimised assets in the store. Merchants invest heavily in homepage design and collection merchandising, then ship the default product template - auto-generated title, blank alt text, a two-sentence description - and never revisit it. Baymard Institute's product page usability research consistently finds the same gap: stores over-invest in visual polish and under-invest in the descriptive content and structured data that both shoppers and search engines rely on to make a decision.
Rule of thumb: if your product page could be describing a completely different product with only the image and price swapped, it isn't doing any SEO work.
Ranking factors
35+
Interacting on-page and feed signals that determine Shopify product page visibility.
Conversion multiple
3-5x
Product pages convert 3-5× better than editorial or collection landing pages.
Prioritisation rule
80/20
Top 100 SKUs first outperforms full-catalogue 'spray and pray' optimisation.
There's a compounding effect too. Google's crawler builds a picture of your store's overall quality from the pages it visits most - and on a typical Shopify catalogue, that means product pages. A store with 2,000 thin, near-duplicate product pages sends a weaker overall quality signal than a store with 200 genuinely well-built ones, even if the smaller store has less total content. This is one reason a full-catalogue "spray and pray" approach to product page SEO consistently underperforms a prioritised, top-100-SKUs-first approach - it's not just about where the traffic is, it's about what the rest of the site's crawl budget and quality signal look like once you've fixed the pages that matter most.
Finally, product pages are the pages your customers actually screenshot, share, and link to. A well-built product page with genuine editorial content - styling notes, sizing guidance, material provenance - earns organic backlinks from press, affiliate content and roundup articles in a way a bare spec sheet never will. Treat the product page as a piece of content in its own right, not just a transactional container.
There's a further wrinkle specific to Shopify stores: theme upgrades and app installs regularly touch the product template without anyone auditing the SEO impact afterwards. A new upsell app injects a script that blocks the canonical tag; a theme update silently changes how the H1 is rendered; a filtering app adds query parameters that Google starts indexing as separate pages. None of these show up in a visual QA pass, because the page still looks correct to a human. This is why the checklist below is worth re-running after any significant theme or app change, not just once at launch.
It's also worth being explicit about what "optimised" means here. This isn't about gaming an algorithm - every check on the list below either helps a shopper make a faster, more confident purchase decision, or helps Google's crawler understand the product accurately enough to match it to the right query. The two goals are aligned far more often than SEO advice usually admits: a page with a genuinely descriptive title, an honest 500-word description, and real customer reviews surfaced through schema is simply a better page, for a person and for a crawler.
Interactive product page checker
Before working through all 35 checks by hand, run a page through the quick client-side checker below. It inspects the URL structure itself - protocol, slug shape, variant parameters, slug length - which surfaces a handful of the most common structural issues in seconds. It's a starting point, not a substitute for the full audit; schema validity, alt text coverage and Merchant Center feed alignment all require server-side or crawl-level checks that can't run in a browser against a single URL string.
Paste a Shopify product page URL below. This runs a set of client-side structural checks in your browser - no data is sent anywhere. For the full 35-point audit (title tags, schema validity, image alt text at scale) book a scoping call.
The 35-point checklist
Grouped into 7 categories. Work top-down for a single page; work category-by-category across a full catalogue. Each check below includes what it is, how to spot it, and how to fix it.
Meta + on-page (7)
- ☐Unique title tag under 60 characters using [Brand] [Product Type] [Key Attribute] pattern.
- ☐Unique meta description 140-160 characters with primary attribute and a CTR hook (delivery, guarantee, rating).
- ☐Single H1 matching the product name - no template duplication with title tag.
- ☐Canonical tag points to the product's parent URL, not a variant URL.
- ☐Open Graph tags present (og:title, og:description, og:image, og:type=product).
- ☐URL slug is short, keyword-relevant, no auto-generated GUIDs.
- ☐Breadcrumb navigation renders with BreadcrumbList schema attached.
How to check: crawl the product template with Screaming Frog and filter for duplicate titles, missing meta descriptions, and canonical mismatches - on Shopify these three issues are almost always template-level, meaning one fix in product.liquid resolves them sitewide. How to fix: rebuild the title tag using a Liquid snippet rather than relying on the raw product title field, so every SKU inherits the pattern automatically:
{%- comment -%} snippets/seo-title.liquid {%- endcomment -%}
{%- assign attribute = product.metafields.custom.key_attribute -%}
{{ product.vendor }} {{ product.type }}{% if attribute != blank %} {{ attribute }}{% endif %}Content quality (5)
- ☐Product description 300+ words, ideally 500-800 for high-consideration products.
- ☐Covers benefits, specifications, materials, dimensions, care, sizing.
- ☐Includes at least one FAQ block (feeds FAQPage schema).
- ☐Includes editorial context: styling notes, use cases, or occasion - not just spec sheet.
- ☐Written for humans first, keyword targets integrated naturally (no stuffing).
How to check: pull word count and the presence of a spec/FAQ block for your top 100 SKUs into a spreadsheet - this alone usually surfaces the products worth prioritising first. How to fix: use AI drafting for the long tail seeded with real product data (never a generic prompt), then commit fully hand-written descriptions for the top 100 revenue-generating SKUs, where the incremental quality reliably pays back in both rankings and conversion rate.
Images (5)
- ☐Descriptive file names (sofia-bridal-earrings-front.jpg - not IMG_4523.jpg).
- ☐Alt text on every image, describing the product and its context.
- ☐Served in modern format (WebP or AVIF via Shopify's image CDN).
- ☐Lazy-loaded below the fold; hero image preloaded.
- ☐Correctly sized for viewport (no 3000px hero on mobile).
How to check: missing alt text is the single biggest silent failure across large catalogues - it never breaks the page visually, so nobody notices until an audit flags it. Run a sitewide crawl and export every image without alt text. How to fix: Shopify's CDN already serves WebP automatically via the image_url filter with width parameters - the remaining work is almost always file naming (rename on upload, before publishing) and writing alt text as part of the product creation workflow, not as a retrospective clean-up job.
Schema (6)
- ☐Complete Product schema (name, image, description, sku, mpn, gtin, brand).
- ☐Full Offer with price, priceCurrency, availability, priceValidUntil.
- ☐hasMerchantReturnPolicy + shippingDetails on Offer (required for Shopping rich results).
- ☐AggregateRating with ratingValue + reviewCount.
- ☐Review array with reviewer name, rating, review body.
- ☐BreadcrumbList schema present.
How to check: run every product template variant through Google's Rich Results Test - variable products, products with no reviews, and out-of-stock products all tend to break schema differently. How to fix: pull review data from your review app (Judge.me, Loox, Yotpo) into a metafield on a schedule, then inject the full block as JSON-LD in theme.liquid so it renders identically across every template.
{
"@context": "https://schema.org",
"@type": "Product",
"name": "{{ product.title }}",
"sku": "{{ product.selected_or_first_available_variant.sku }}",
"gtin": "{{ product.metafields.custom.gtin }}",
"brand": { "@type": "Brand", "name": "{{ product.vendor }}" },
"offers": {
"@type": "Offer",
"price": "{{ product.price | money_without_currency }}",
"priceCurrency": "GBP",
"availability": "https://schema.org/InStock",
"priceValidUntil": "{{ 'now' | date: '%s' | plus: 2592000 | date: '%Y-%m-%d' }}",
"hasMerchantReturnPolicy": { "@type": "MerchantReturnPolicy", "returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow", "merchantReturnDays": 30 },
"shippingDetails": { "@type": "OfferShippingDetails", "shippingRate": { "@type": "MonetaryAmount", "value": "0", "currency": "GBP" } }
},
"aggregateRating": { "@type": "AggregateRating", "ratingValue": "{{ product.metafields.reviews.rating }}", "reviewCount": "{{ product.metafields.reviews.count }}" }
}This is a simplified illustration of the pattern - in production, wrap each field in a conditional so the schema degrades gracefully rather than emitting an empty or malformed property when a metafield is unset (a common cause of "invalid schema" flags on new SKUs before their review data has populated).
Variants (3)
- ☐?variant= URLs canonical back to parent product URL.
- ☐Variant-specific schema updates on selection (price, availability).
- ☐Only high-search-volume variants earn their own indexable URL - if any.
How to check: search site:yourstore.com inurl:variant - if Google has indexed variant URLs as separate pages you have a duplicate content problem to fix immediately. How to fix: confirm Shopify's default canonical behaviour is intact (it points variant URLs to the parent by default) and don't let a filtering or personalisation app override it.
Internal linking (5)
- ☐Linked from parent collection page above the fold.
- ☐Linked from at least one editorial article with descriptive anchor.
- ☐"Related products" block links to genuinely related items, not template-random.
- ☐"Complete the look" or "customers also bought" block, populated by data not tags.
- ☐Cross-linked from at least one comparable product page.
How to check: for your top 100 products, count inbound internal links from editorial content specifically - most stores have zero. How to fix: one descriptive anchor from a well-ranked editorial article is worth more than ten template-generated "related product" links; audit your blog and buying-guide content for products it should already be linking to and add the links manually.
Merchant Center + Shopping feed (4)
- ☐Product title in feed matches product page H1 and title tag pattern.
- ☐GTIN/MPN/brand present in feed and match Product schema on page.
- ☐Google Product Category set at the most specific applicable level.
- ☐Feed image is the same primary product image as the page (not a lifestyle shot).
How to check: the Merchant Center diagnostics tab flags missing GTIN/MPN and mismatched data directly - most guides never mention this as an SEO input, but Google's Product Data Specification treats feed accuracy and on-page schema accuracy as connected quality signals. How to fix: generate the feed from the same metafields that power your on-page schema, never from a separate manually maintained sheet - divergence between the two is one of the most common causes of Shopping disapprovals.
Deep-dive: the 5 highest-impact checks
- Product title structure. [Brand] [Product Type] [Attribute] beats every alternative pattern we've tested. Highest lift comes from adding the attribute - it captures long-tail modifier queries the type-only title misses, without diluting the brand and category signal that type-only titles rely on.
- Product schema with Review + AggregateRating. Enables SERP stars. On one fashion client this single addition lifted product-page CTR by 18% over 8 weeks, with no other change to the page.
- Internal linking from editorial content. One descriptive anchor from a well-ranked editorial article is worth more than ten template-generated "related product" links, because it passes topical relevance signal rather than just navigational value.
- Image optimisation. File names, alt text, format. Cumulatively the largest LCP saving on most Shopify product pages, and the fix with the least ongoing maintenance once it's built into the upload workflow.
- Meta description CTR testing. Shopify defaults to truncated product-description snippets. A hand-written description with a benefit + rating + delivery hook consistently lifts CTR in both Merchant Center and organic - this is a testable, iterable lever, not a one-off "add a description" task.
Default Shopify schema vs the recommended schema stack
Most Shopify themes ship a partial Product schema. Here's what's typically missing and why each field matters.
| Field | Shopify default theme | Recommended stack |
|---|---|---|
| name, image, description | Present | Present |
| sku | Usually present | Present, matched to feed |
| gtin / mpn | Missing on most themes | Required - pulled from metafield |
| brand | Sometimes present | Always present, matches vendor field |
| offers.priceValidUntil | Missing | Present, rolling 30-day window |
| hasMerchantReturnPolicy | Missing | Present - required for Shopping rich results |
| shippingDetails | Missing | Present, matched to shipping policy page |
| aggregateRating | Missing (no review app integration) | Present, synced from review app metafields |
| review array | Missing | Present, top 3-5 reviews inline |
The title framework, applied
The [Brand] [Product Type] [Key Attribute] pattern is simple to state and easy to get wrong in the detail. Try it against your own products with the generator below, then compare the output against the worked examples underneath.
Live title generator - edit any field and the recommended title tag updates immediately, along with a character-count check against the 60-character guideline.
Recommended title tag
AB Ellie Freshwater Pearl Drop Earrings
39 characters - within the 60-character guideline
Notice the attribute sits between the brand and the product type in the generator's output, not at the end. In testing across several catalogues this ordering consistently out-performed [Brand] [Type] [Attribute] for long-tail modifier queries, because search engines weight terms nearer the front of a truncated title more heavily - worth testing on your own catalogue before committing sitewide. Here are the same three worked examples from the brief for reference:
| Brand | Product type | Key attribute | Resulting title |
|---|---|---|---|
| Sofia | Bridal Dress | Lace Sleeves | Sofia Bridal Dress with Lace Sleeves |
| Kravet | Linen Wallpaper | Ivory | Kravet Linen Wallpaper in Ivory |
| AB Ellie | Drop Earrings | Freshwater Pearl | AB Ellie Freshwater Pearl Drop Earrings |
Pick the "key attribute" from actual query data, not guesswork - pull Merchant Center's Product Feed search terms report and the queries your top SKUs already rank for, then choose the attribute modifier with the highest combined volume. Test two or three variants on a sample of 20-30 products for 4 weeks before rolling the pattern out across the full catalogue.
Common mistakes on Shopify product pages
- Duplicate H1s with title tag copy verbatim. Wastes the opportunity to reinforce related terms in the H1 that don't fit the character-constrained title tag.
- Generic template descriptions ("Add your product description here" left live on published SKUs - more common on large catalogues than most merchants realise).
- Missing alt text at scale - the biggest silent failure across large catalogues, because it has zero visible impact until an accessibility or SEO audit surfaces it.
- Canonical to variant URL instead of parent, usually introduced by a third-party filtering or personalisation app overriding Shopify's default.
- Missing GTIN/MPN in Product schema - blocks Shopping rich results and increasingly affects organic product rich results too.
- Unoptimised image file names (IMG_4523.jpg on the hero shot) - a five-second fix per image that's rarely built into the upload workflow.
How to prioritise across a large catalogue
The most common mistake we see teams make with a 35-point checklist is treating it as a single linear queue - starting at check one and working through every SKU before moving to check two. This is almost always the wrong sequencing. It means your highest-revenue products don't get their titles fixed until every low-value SKU in the catalogue has had its alt text updated, which delays the checks that actually move revenue.
Divide the 35 checks into template-fixable (schema, breadcrumbs, canonical, image lazy-loading) and per-SKU (titles, descriptions, alt text, feed data). Do all template-fixable work first - one deploy, sitewide impact. Then rank SKUs by revenue and work the per-SKU list top-down.
On a 500-SKU store, the top 100 products typically drive 80% of revenue; getting per-SKU work right on those 100 is a better use of the first month than a shallow pass across all 500. Metafields are the mechanism that makes this scalable - build the per-SKU data (attributes, review counts, GTINs) into metafields once, and both the page and the feed can pull from the same source without duplicated maintenance.
Impact-per-hour matrix
Rank each work item by expected impact against the hours it takes to implement, then work the top-left quadrant first - low hours, high impact. The scatter below plots the nine highest-leverage items from the 35-point checklist; template-level fixes (signal colour) cluster in the top-left because one deploy touches every SKU simultaneously, while per-SKU work (muted colour) trades off scale for depth.
| Fix | Scope | Est. hours | Expected impact |
|---|---|---|---|
| Product + Review schema deploy | Template (sitewide) | 8-16 | High |
| Canonical + breadcrumb fix | Template (sitewide) | 2-4 | High |
| Image lazy-load + format | Template (sitewide) | 4-8 | Medium-High |
| Title restructure, top 100 SKUs | Per-SKU | 15-25 | High |
| Descriptions rewrite, top 100 SKUs | Per-SKU | 40-90 | Medium-High |
| Alt text, full catalogue | Per-SKU | Varies by SKU count | Medium |
| Feed/schema GTIN alignment | Template + data | 6-12 | Medium-High |
Before/after: AB Ellie product page
Consent confirmed for this comparison. The layout below summarises what changed structurally between the original template and the rebuilt page - titles, schema and internal linking, not a visual redesign (the storefront theme itself was untouched).
Before
- Title: "Pearl Earrings" (generic, no brand, no attribute)
- Description: 60 words, spec-only
- Schema: name, image, price only
- Zero inbound editorial links
- Alt text: blank on all 4 product images
After
- Title: "AB Ellie Freshwater Pearl Drop Earrings"
- Description: 420 words, benefits + care + sizing
- Schema: full stack including Review + AggregateRating
- 3 editorial inbound links added over 6 months
- Descriptive alt text on all images
Client case: AB Ellie
AB Ellie is a UK bridal jewellery brand with US commercial ambitions. Twelve months of product-page work on this exact checklist delivered 19 position-#1 US rankings and +800% YoY non-branded organic clicks.
The pattern that mattered most: title restructuring + Review schema + editorial internal linking. Individual per-SKU pages took 40-90 minutes each depending on how much of the description needed to be written from scratch; the schema and breadcrumb work was a single theme deploy that touched every product page on the site simultaneously.
What took longest wasn't the technical work - it was building the metafield structure that let titles, descriptions, schema and the Merchant Center feed all pull from a single source of truth per SKU, rather than four separately maintained copies of the same data. See the bridal & jewellery article for the category-specific playbook.
Get the checklist as a working document
Rather than working from the page, most teams prefer a printable reference they can assign per-category and track against SKU counts. Unlock the PDF version below - same 35 checks, pre-built with the impact-per-hour columns from the matrix above, formatted to work through category by category.
Enter your email to unlock the 35-point checklist as a printable PDF, pre-built with the impact-per-hour columns above.
Frequently asked questions
Work With Visionary Marketing
Get the 35-point audit on your product pages.
We run this checklist on your top 100 revenue-generating products and hand back a prioritised deploy plan. Free scoping call.
Visionary Marketing is a UK-based SEO and Google Ads agency that takes a data-led approach to growth. We don't guess - we analyse your market, competitors, and performance data to build strategies that drive measurable revenue. Every campaign is grounded in real numbers, not assumptions.
Related Services
How We Can Help
eCommerce SEO Agency
Category, product, technical and content SEO in one revenue-focused programme.
Learn MoreShopify SEO Agency
End-to-end Shopify SEO for high-AOV stores.
Learn MoreShopify Collection Page SEO
The collection page sibling article.
Learn MoreShopify Structured Data
Full schema stack for Shopify.
Learn More