Product Page SEO: How to Write Pages That Rank
Warning: fileperms(): stat failed for /www/.wordpress/ in /wordpress/wp-admin/includes/file.php on line 2225
Warning: fileperms(): stat failed for /www/.wordpress/ in /wordpress/wp-admin/includes/file.php on line 2225
Product pages are where customers convert, but most ecommerce stores treat them as an afterthought. Default theme template, manufacturer description, three product photos, single line about shipping, done. That product page is competing against hundreds of other stores running the same template with the same description, and Google has no reason to rank yours above any of them.
After a decade of working on ecommerce stores, I’ve watched plenty of brands invest heavily in product photography and ignore the product page itself. The pages that rank and convert always have the same characteristics: unique long-form descriptions, complete attribute coverage, properly handled variants, and structured data that matches what’s on the page. This guide is how I approach product page SEO when I take on a new client.
This guide covers what makes a product page rank, how to write descriptions that work for both search and conversion, how to handle variants without creating duplicate content, and the common product page mistakes I see most often. It pairs with our collection page SEO guide and the broader Shopify SEO guide.
Why Product Page SEO Is Different from Other Pages
Product pages serve a different role in ecommerce SEO than collection pages or blog content. Three characteristics that shape the strategy:
- Long-tail intent. Most product page traffic comes from specific brand or model queries (“Nike Pegasus 41 review”, “blue sapphire engagement ring 1.5 carat”). Lower search volume per query, but very high commercial intent.
- Scale. A store with 500 products has 500 product pages to optimise. The optimisation playbook has to be repeatable at scale, not bespoke per product.
- Duplicate content risk. Most stores use the manufacturer’s description verbatim, which means hundreds of competing stores have identical content on the same product. Unique product copy is the single biggest differentiator.
Anatomy of a High-Ranking Product Page
The product pages that rank and convert share the same structural elements.
URL Handle
Descriptive, lowercase, hyphenated, keyword-led. /products/blue-sapphire-engagement-ring-15-carat beats /products/sku-2847. Avoid SKU-based handles unless you have no other option. If you launch a product with a poor handle and later improve it, set up a 301 redirect (Shopify’s URL Redirects under Online Store → Navigation).
H1 (Product Title)
One H1, matching the product title. Most themes get this right by default. Where I see breakage: featured-product carousel blocks or recently-viewed widgets on the same page using H1 or H2 tags that compete with the real product title.
Image Gallery and Alt Text
Five to ten images per product is the sweet spot for higher-consideration items. For commodity products, three to five is fine. Each image needs:
- A descriptive filename (rename before upload).
black-finch-emerald-engagement-ring-side-view.jpgbeatsIMG_4781.jpg. - Alt text that describes the product, not the photo style. “Blue sapphire engagement ring in white gold setting” works. “Beautiful ring on white background” does not.
- Compressed file size. Aim for under 200KB per image. Shopify will serve WebP automatically and lazy-load below-the-fold images, but if your source files are 5MB the rendered images are still heavier than they need to be.
Product Description
The single most important element on the page. Manufacturer-default descriptions do not rank because hundreds of other stores have the same words. Custom descriptions do.
What to include:
- The first paragraph covers what the product is, who it is for, and the one thing that makes it distinctive. 50-80 words. This is the part that goes in the meta description and shows up in search snippets.
- Detailed body content covering materials, dimensions, use cases, sizing notes, care instructions, gifting context. 300-800 words depending on the product’s complexity and price point.
- An attributes section in scannable format (bulleted or table) listing specifications. Helps Google extract structured data and helps customers compare.
- An FAQ section with 3-6 questions specific to this product or category. Marked up with FAQPage schema.
Customers do not read every word of a product description, but the words still earn rankings. Both Google and conversion rate respond well to thorough descriptions written for humans.
Specifications and Attributes
Use a scannable specifications block on every product. Materials, dimensions, weight, country of origin, certifications, fit notes, care guidance. Two reasons:
- Customers want it. Specs answer questions they have at the consideration stage.
- Google reads it for structured data. Where possible, attribute fields map directly to schema.org properties (color, size, material).
Reviews and Aggregate Rating
Review schema (Review + AggregateRating) unlocks star ratings in search results, which lifts click-through rate. Critical caveat for AHPRA-regulated industries (medical, dental, allied health, cosmetic clinics): you cannot use review schema. For everyone else: collect reviews, display them on the product page, and emit Review + AggregateRating schema.
Sources: native Shopify product reviews (if you use that), Judge.me, Yotpo, Stamped. All emit schema.org Review markup if configured correctly. Validate with Google’s Rich Results Test.
Schema Markup
Modern Shopify themes auto-emit Product schema (JSON-LD) with the basics. What’s frequently missing:
gtin(barcode), populated where one existsmpn(manufacturer part number)brand, where stored as a metafield rather than emitted directlyaggregateRatingandreview, when reviews are from an app that doesn’t auto-inject schemashippingDetailsfor accurate delivery infoitemCondition, especially for refurbished or pre-owned products
Validate every product page template with Google’s Rich Results Test. If fields are missing, add them via theme code edits, metafields, or a structured data app. Our schema markup implementation guide covers the step-by-step.
Internal Linking
From the product page, link out to:
- The parent collection (breadcrumb + intext link)
- Related products (similar style, complementary items)
- Blog content that supports the consideration journey (e.g. “How to choose an engagement ring” linked from a sapphire engagement ring product page)
- Service or care pages where relevant (e.g. ring resizing, lifetime warranty)
Writing Product Descriptions That Rank (and Convert)
Templates are useful but not at the expense of distinctiveness. The framework I use:
- Opening hook (1 sentence): What this product is, distilled. Avoid generic openers like “Introducing…” or “Welcome our newest…”.
- Who it is for (1-2 sentences): Connect to a buyer profile. “Designed for everyday wear” or “Crafted for collectors who care about provenance”.
- Key features (3-5 bullets or short paragraphs): What makes this specific product distinctive. Material, technique, finish, story.
- Use cases / occasions (1-2 paragraphs): Where customers will wear, use, or display it. Helps with semantic keyword coverage.
- Technical detail (specifications block): Scannable, structured, factual.
- Care and warranty (1 paragraph): Reassurance content. Reduces friction at the consideration stage.
For the actual writing, avoid AI-generic phrasing (“luxurious”, “stunning”, “perfect for any occasion”) and avoid keyword stuffing. The best test: would you describe this product this way if you were talking to a customer in person? If not, rewrite.
Handling Variants Correctly
Variants (sizes, colours, materials of the same product) are where most Shopify stores lose impressions to duplicate content issues. The mechanics:
- Each variant gets its own URL via
?variant=12345. - The product page canonical tag should point back to the base product URL (without the variant parameter).
- Variant-level fields (price, image, availability, GTIN) all flow into the Merchant Center feed via
item_group_idgrouping.
What to check:
- View source on a variant URL (e.g.
/products/handle?variant=12345). Confirm<link rel="canonical">points to/products/handle, not the variant URL. - If your store has variants that are functionally distinct (different colour with significantly different style appeal), consider whether each should be its own product rather than a variant. Each-as-own-product is heavier to manage but lets each variant rank independently for its specific query.
- In the Merchant Center feed, every variant needs a unique product_id, its own price, availability and image, all grouped under a single
item_group_id.
Product Page Mistakes to Avoid
The patterns I see most often on stores not ranking:
- Manufacturer descriptions copied verbatim. Hundreds of competing stores have the same words. You will never rank.
- Generic descriptions. Marketing fluff with no specifics. Reads identical to AI-generated boilerplate.
- Missing specifications. No materials, no dimensions, no care instructions. Customers leave to find the info elsewhere and don’t come back.
- Single image. Especially on higher-consideration products. Five to ten images is the standard expectation now.
- Reviews disabled or hidden. Even a few reviews lift conversion. AggregateRating schema lifts click-through.
- Inconsistent product imagery across the store. Some products have lifestyle shots, some don’t. Backgrounds vary. Signals low effort.
- Out-of-stock products left to 404. When a product is permanently discontinued, redirect to the parent collection or a relevant replacement.
- Broken canonical on variants. Covered above. Easy to miss but creates duplicate content issues at scale.
Real example: Apero Label (Shopify)
When we audited Apero Label’s catalogue, the issue wasn’t traffic, it was conversion friction from incomplete product pages. We rewrote descriptions across the top-selling SKUs with full fit notes, fabric details, care instructions, and lifestyle context. Combined with a 92-product cleanup of stale URLs, the impact lifted both organic visibility and on-page conversion. Product page depth changed how customers behaved at the consideration stage.
The Product Page Audit Checklist
Work through these on your top 20 products first:
- URL handle is descriptive and keyword-led
- H1 matches the product title and is the only H1 on the page
- At least 5 images, all with descriptive filenames and alt text
- Unique custom description, 300-800 words, structured
- Specifications block in scannable format
- Reviews displayed (unless AHPRA-regulated)
- 3-6 FAQ entries with FAQPage schema
- Product schema validates in Rich Results Test, including gtin/mpn/brand
- Variant canonical points back to base product URL
- Internal links to parent collection, related products, supporting blog content
- Page loads under 3 seconds on mobile (PageSpeed Insights)
- Merchant Center feed entry matches the on-page data exactly
Breadcrumbs Are Doing More Work Than You Think
Breadcrumbs on a product page do three jobs at once: they push users back up to the parent collection, they give Google a clean signal about where the product sits in your site structure, and they show up in the SERP itself when you mark them up with BreadcrumbList schema. That last one matters because the breadcrumb trail replaces the raw URL underneath your title tag, which usually lifts CTR on long product URLs.
On Shopify the default theme breadcrumb is often missing or only shows Home > Product, which skips the collection. When I audited Apero Label’s product pages, fixing the breadcrumb to render Home > Collection > Product (and adding the matching JSON-LD) was a 20 minute job that cleaned up the crawl path and gave every product an inbound contextual link from its parent collection. If a product sits in multiple collections, pick the most relevant one as the canonical breadcrumb parent rather than letting the theme pick whichever loaded first. Don’t link the final crumb (the product name itself), and make sure the visible text matches the schema name field exactly or Google will ignore the markup.
Page Speed on the Product Template Specifically
Page speed gets covered as a blanket SEO topic everywhere, but the product template is usually the slowest page on an ecom site because it loads a full image gallery, variant JSON, review widget, related products, and an upsell block all at once. Worth calling out separately rather than folding it into the audit checklist.
The three changes that actually move the LCP number on a Shopify product template are: serve the first gallery image as a properly sized WebP with width and height attributes (no lazy loading on the hero), defer the review widget script so it loads after interaction or below the fold, and remove any related-products app that injects a second product loop before paint. On Black Finch Jewellery the review app alone was adding around 600ms to LCP on mobile, and switching it to a lazy-loaded version pulled the page back inside the green threshold without touching anything else. Variant swatches that swap the hero image on click should preload the next likely image, not fetch it on the click event. If you’re on a 2.0 theme, use the built-in image_url filter with explicit widths rather than letting the browser pick from a giant srcset.
Reviews and Q&A as Ranking Content
Reviews are the easiest source of unique, query-matching language on a product page. Customers describe the product in the words other customers actually search with, which is exactly what the page needs to rank for the long tail.
What I look for when I audit a review block: real text reviews rendered server-side in the HTML (not loaded by JavaScript after page load, or Google may not see them), AggregateRating and Review markup that matches the visible stars, a sensible volume per product (a single five-star review looks worse than no reviews at all), and a Q&A or questions block where customers can ask sizing, materials or compatibility questions. The Q&A block is underrated. On Apero Label the most-viewed product had a recurring question about sizing during pregnancy that wasn’t answered anywhere in the description, and adding that Q&A pair to the page picked up impressions for a cluster of long-tail sizing queries within a few weeks. If you’re using a third-party review app, check that it injects the schema into the page source and not just into the rendered widget.
Indexability: Which Product Pages Should Google Actually See
Not every product page belongs in the index. The default for most Shopify stores is to let every product, every variant URL, every tag-filtered collection, and every /products/ URL accessed from a different collection get crawled, which dilutes the crawl budget on a big catalogue and creates near-duplicate competition.
The rules I apply: products linked via /collections/[name]/products/[handle] should canonicalise back to the /products/[handle] version (Shopify does this by default, but custom themes sometimes break it). Out-of-stock products that are coming back into stock stay indexed with a clear availability message. Out-of-stock products that are gone for good get redirected to the nearest in-stock product or to the parent collection, not left to 404 or to keep serving a dead page. Faceted filter URLs (?filter.v.option.colour=blue) should be noindexed or robots-blocked unless the filtered view targets a real keyword (size charts, colour-based collections). Make sure every indexable product is in the XML sitemap and that the sitemap excludes drafts, archived products, and any /collections/all/products/ noise.
Product Pages in AI Search and Agentic Shopping
When ChatGPT, Perplexity, Claude or Google’s AI Overview answers a shopping query, they’re pulling structured product data and review snippets, not crawling your hero banner. That puts more weight on the parts of the page most stores under-invest in: complete Product schema (including gtin, brand, material, colour, size, and availability), shipping and return policy markup, and clean, factual product descriptions that read well out of context. The Universal Commerce Protocol that OpenAI announced is built on the same Product schema you should already have, so the work isn’t speculative.
What I’m doing on Black Finch Jewellery product pages right now: filling every optional Product schema field (not just the ones that trigger Google rich results), adding a short factual summary paragraph at the top of the description that an LLM can quote cleanly, and answering the obvious comparison questions (“is this hypoallergenic”, “does it tarnish”, “what size for a 7 inch wrist”) in the body copy so an agent can lift the answer without inferring. If an agent recommends three products, you want yours to be the one with the complete answer attached to the schema, not the one the model has to guess about.
Shopify-Specific Tactics Most Generic Guides Miss
Most product page SEO posts are platform-agnostic, which means the advice is usually correct and usually useless if you’re on Shopify. The Shopify product template has its own quirks that change what you should optimise.
The ones worth knowing: the product handle (URL slug) is set the first time you save a product and Shopify doesn’t auto-redirect when you change it, so set it correctly the first time or add a redirect manually. Product alt text lives on the image, not on the variant, so a variant-specific image inherits the parent alt unless you edit it directly. The default Shopify Product schema is incomplete on most themes (it usually skips brand, gtin, and shipping details), so either install a schema app that fills the gaps or extend product.liquid yourself. Collection-linked product URLs (/collections/x/products/y) all canonicalise to the bare /products/y URL, which is correct, but it also means internal links from collection pages count toward the canonical, not the collection-prefixed version. The srsltid parameter Google appends from free listings doesn’t need cleaning up, it’s tracking behaviour and Google ignores it for ranking. If you’re using the native Shopify reviews app, the schema it injects is minimal; Judge.me, Stamped and Okendo all inject richer markup that’s worth the swap if reviews are a meaningful signal for your catalogue.
What Australian Shoppers Want to See on a Product Page
The trust block on an Australian product page should make four things obvious without a click: price in AUD with GST included (not “GST calculated at checkout”), realistic shipping time from your actual warehouse (not “ships in 1-3 business days” when you’re using a US 3PL and customers will wait two weeks), the return policy in plain English including who pays return postage, and any local compliance the product needs (TGA listing for therapeutic goods, ACCC mandatory standards for kids’ products, energy rating labels for appliances).
On Apero Label the product page trust strip explicitly says “ships from Melbourne, free returns within Australia, sized for Australian fit”, and that copy gets pulled into the rich result on branded queries. If you sell internationally from an Australian base, geo-detect the currency rather than forcing AUD on a US visitor, but keep the AUD price visible on the Australian-served version of the URL so it can rank for “[product] Australia” queries.
Want Help Auditing Your Product Pages?
If you run a Shopify or other ecommerce store and your product pages are not ranking or converting at the level you expect, we offer a free first-pass audit on your top 20 product pages. Send us your store URL and we send back a written report with priority fixes.
Request your free product page audit →
Frequently Asked Questions
What is product page SEO?
Product page SEO is the practice of optimising individual product pages on an ecommerce store to rank in organic search results. It covers URL structure, on-page content (titles, descriptions, specifications), images and alt text, structured data, variant handling, internal linking, and the technical fundamentals of how the product page is served to search engines.
How long should a product description be?
300-800 words for most products. Higher-consideration items (jewellery, furniture, premium fashion) benefit from longer descriptions (600-1000 words). Commodity products can rank with shorter descriptions (200-400 words) if competitor descriptions are also short. The right length depends on the depth of information a customer needs to make a purchase decision.
Should I use manufacturer product descriptions?
No, not as-is. Manufacturer descriptions are duplicated across hundreds of stores selling the same product. Google has no reason to rank yours above any of them. Use the manufacturer description as a starting point for facts (materials, dimensions, specifications), then rewrite the description in your own voice with custom context.
How do I handle product variants on Shopify for SEO?
Shopify creates a separate URL for each variant via the ?variant= parameter, but the canonical tag should point back to the base product URL. Audit by viewing source on a variant URL and confirming the canonical link. In your Merchant Center feed, use item_group_id to group all variants under a single parent SKU, with each variant having its own unique product_id, price, availability and image.
Do product pages need schema markup?
Yes. Product schema (JSON-LD) is what unlocks rich results in search: price, availability, review stars, product image. Modern Shopify themes auto-emit Product schema with the basics, but fields like gtin, mpn, aggregateRating and shippingDetails are often missing. Validate every product page template with Google’s Rich Results Test and fill the gaps.
How many product images should I have per product?
5-10 images for higher-consideration products (jewellery, furniture, fashion). 3-5 for commodity products. Each image needs a descriptive filename, useful alt text, and proper compression. Include detail shots, lifestyle context where relevant, and at least one image showing scale.
Should I show out-of-stock products in search?
Depends on whether they will come back. If a product is temporarily out of stock but will be restocked, keep the page indexable and display “currently unavailable” or accept backorders. If permanently discontinued, redirect (301) to the parent collection or a relevant replacement product. Never let a discontinued product 404 silently.
How do I write product descriptions that convert and rank?
Write to a real customer profile. Open with what the product is and who it is for. Cover key features, materials and technical specifications in scannable format. Include use cases and care instructions. Avoid generic marketing language (“luxurious”, “perfect for any occasion”) and avoid keyword stuffing. The same writing that ranks tends to convert.
Our Services
SEO Services
Comprehensive, technical, and tailored SEO to grow your organic visibility.
AI SEO & GEO
Get your brand cited in AI Overviews, ChatGPT, and Perplexity.
Local SEO
Dominate your local market with GBP optimisation and local authority.
eCommerce SEO
Collection architecture, product SEO, and conversion-focused strategy.
Google Ads
Targeted campaigns built on data. Your budget put to work.
Web Design
Sites designed to convert, built to scale, and ready to grow with you.

