# Product page SEO: what a buyer and a crawler need on the page

This is the checklist for a product page that earns clicks and sales. You will ship each element yourself, from the title to structured data. It follows Google’s ecommerce guidance as of 2026.

Updated 2026-09-14 · Source: https://porteur.ai/guides/product-page-seo

## What a product page must answer

A buyer arrives with a task: is this the right product, at the right price, from a store I trust. Your page must answer that in one scroll.

- Name, variant, price, availability, delivery and returns
- Clear photos for every variant and the main view in high quality
- A short description that helps a human choose, not a pasted spec sheet
- Reviews that talk about the product, not your company
- Technical data the crawler can parse: Product structured data with offers, price, availability and reviews
- Links that place the product in your site: category, breadcrumbs, related products

When those are present and consistent, you can appear in Search, Images and the Shopping tab. Your Merchant Center feed, if you use one, must match the page.

## Title and h1 that match the query

Write the title for the search, the h1 for the buyer. Keep both aligned on the product name and key variant.

1. **Pick the exact product name** Use what people type. Example: “Blue linen shirt men, regular fit, YourBrand” not an internal code.
2. **Include the deciding variant** Colour, size range, capacity or model number. Leave filler like “Buy online” out, unless it replaces something weaker.
3. **Keep the title under about 60 characters** You avoid truncation. Example: “Blue Linen Shirt, Regular Fit | YourBrand”.
4. **Match the h1 to the title** Use the same words in natural order. Example h1: “Blue linen shirt, regular fit”.

What a fixed page looks like: /products/blue-linen-shirt has a title that names the product and variant, and an h1 that repeats it cleanly.

## Meta description written for the buyer

Write one sentence that helps a human choose. Use the benefit, a key feature, delivery or returns, and a CTA verb. Do not keyword stuff.

1. **Start with the benefit** Example: “Breathable linen that keeps you cool.”
2. **Add one distinctive feature** Example: “Pre-washed for softness, machine washable.”
3. **State delivery or returns** Example: “Free 30‑day returns.”
4. **End with an action** Example: “Choose your size today.”

Keep it within 120 to 155 characters so it displays well. Your Shopify product has a description field you can edit for this snippet and the on-page copy.

## Images and alt text that carry the variants

Your largest image is often the LCP. Make it fast and descriptive. One image per variant beats one generic shot for all colours or models.

- Add alt text that names the product and variant, e.g. “Blue linen shirt, regular fit, front view”
- Use descriptive file names, e.g. blue-linen-shirt-regular-fit-front.jpg
- Supply the image in structured data with the Product image property
- Lazy load below-the-fold gallery shots, keep the main image fast
- For Shopify, set alt per image in the admin; most themes output it

What a fixed page looks like: the blue variant shows a blue photo on selection, with matching alt and an updated main image URL in the markup and HTML.

## Product structured data with offers, price, availability and reviews

Use JSON‑LD. Mark up the product, a live offer, the price, the currency and the availability. Add aggregateRating and review only if you have real product reviews.

```json
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Blue Linen Shirt, Regular Fit",
  "image": [
    "https://yourshop.com/images/blue-linen-shirt-front.jpg",
    "https://yourshop.com/images/blue-linen-shirt-back.jpg"
  ],
  "sku": "BLS-REG-BLUE",
  "brand": {
    "@type": "Brand",
    "name": "YourBrand"
  },
  "description": "Breathable linen shirt, regular fit. Pre-washed for softness.",
  "offers": {
    "@type": "Offer",
    "url": "https://yourshop.com/products/blue-linen-shirt",
    "priceCurrency": "USD",
    "price": "YOUR_PRICE",
    "availability": "https://schema.org/InStock",
    "itemCondition": "https://schema.org/NewCondition",
    "priceValidUntil": "2027-12-31"
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.6",
    "reviewCount": "REVIEW_COUNT"
  }
}
</script>
```

Check it in Google’s Rich Results Test. If you run a Merchant Center feed, keep price and availability in sync with the page or your free listings can be limited.

> Do not mark up synthetic or self-serving reviews. Mark up genuine product reviews about the product, not general testimonials about the store.

## Variants, URLs and canonicals

Keep one stable URL for the main product. Use clean variants. Canonicalise variant URLs to the parent unless a variant has search demand on its own.

| Case | URL and canonical | Why |
| --- | --- | --- |
| Same product, minor variants (size, colour) | /products/blue-linen-shirt as the canonical. Variant parameters or paths resolve here. | The intent is one product. Avoid thin duplicates. |
| Variant with demand (e.g. “linen shirt tall fit”) | /products/blue-linen-shirt-tall with its own canonical. | People search it. Earn a page that answers it. |
| Shopify collection URLs | /collections/linen/products/blue-linen-shirt with canonical to /products/blue-linen-shirt. | Shopify does this by default. Keep it. |
| Parameters for sort or view | Keep parameters minimal, consistent and non-indexable. | Prevent index bloat and duplicate content. |

If you use filters that create many URLs, allow only combinations with demand to be indexed. Keep the canonical on the unfiltered product or category page. Use robots.txt disallow or noindex for the rest, and avoid infinite combinations.

> rel next and prev are no longer used by Google since 2019. Each paginated page should be indexable with its own canonical, or have a view‑all page.

## Navigation that earns internal links

Give categories real pages with a heading, a short intro and links to subcategories and top products. Add breadcrumbs on product pages. Link related products in a tight block.

- From the category page, link the product with its exact name as the anchor
- On the product page, link back to the category and to two or three close alternatives
- Use breadcrumbs that reflect the path, e.g. Home > Shirts > Linen
- Keep tag and vendor listing pages out of the index if they are thin

What a fixed page looks like: /collections/shirts links to “Blue linen shirt, regular fit” using that phrase. The product shows breadcrumbs and a small grid of related linen shirts.

## Out of stock and discontinued products

Do not delete a product that will return. Keep the page live. Show the stock status in structured data and on the page. Offer nearby alternatives.

- Temporarily out of stock: set availability to OutOfStock in Product offers. Keep the URL live.
- Backorder or preorder: set the correct availability value, not InStock.
- Gone for good: 301 to the closest alternative or the parent category, or 410 it.
- Keep reviews and Q&A visible for returning buyers.

A fixed page shows “Out of stock, back in November” on the page, availability in the markup, and a clear link to “See similar linen shirts”.

## Reviews that help buyers choose

Collect reviews about the product. Show the average and the count near the price. Let buyers filter by rating or mention useful traits like fit or battery life.

- Mark up aggregateRating on the Product, not on unrelated pages
- Moderate for spam, not for sentiment
- Do not copy reviews from other sites into your markup
- Invite review submission after delivery, not at checkout

What a fixed page looks like: an average star rating shown near add to cart, with snippets that mention fabric and fit, and Product aggregateRating in JSON‑LD.

## Page speed on a product page

Your main image and theme scripts decide Core Web Vitals. Aim for LCP under 2.5 seconds, CLS under 0.1 and INP under 200 ms on mobile.

- Serve the hero image in an efficient format and size for the viewport
- Self host critical fonts or use system fonts, preload the main font
- Defer non-essential apps and third-party scripts until after interaction
- Lazy load carousels and below-the-fold reviews
- Audit with PageSpeed Insights and your theme’s performance settings

What a fixed page looks like: the hero image is under 120 KB, the cart script waits until interaction, and CLS is flat because sizes are set for images and badges.

## Worked example: fixing /products/blue-linen-shirt

Start point: title is “Products: Store”, description is empty, one generic image, no structured data, and the page sits only in /collections/all. It gets impressions for “linen shirts” but no clicks.

- Title: “Blue Linen Shirt, Regular Fit | YourBrand”
- H1: “Blue linen shirt, regular fit”
- Meta description: “Breathable linen keeps you cool. Pre‑washed for softness. Free 30‑day returns. Choose your size today.”
- Images: front and back for blue, plus a shot per colour; alt text updated per image
- Content: 80 words that say fabric weight, fit, care, returns, and model height for sizing
- Structured data: Product with offers, availability, price, image and aggregateRating
- Navigation: breadcrumbs Home > Shirts > Linen; related products grid: 4 linen shirts
- Variant handling: sizes as options on the same URL; a separate URL for “Tall fit” as demand exists
- Speed: compressed hero image, deferred review widget, CLS fixed by setting image dimensions

After, Search shows a result with the right title, a relevant description and, when eligible, a price and rating. The category page now links it with exact anchor text. The Shopping tab shows the same price and availability as the page.

## Questions

### What is product SEO?

It is optimising each product page so a buyer can find it, understand it and act. You align titles and copy to the query, add clear images, mark up Product data with offers and availability, and link the page into your site. It is page by page, not slogans.

### Can a beginner do product page SEO?

Yes. Start with the elements you control: the title, h1, description, images and alt, and Product structured data. Then fix navigation and speed. Use Google’s Rich Results Test to check the markup and Search Console to see queries and clicks.

### Do I need a Merchant Center feed for SEO?

You can appear in Search and Images with on-page content and structured data. A Merchant Center feed lets you show free listings in the Shopping tab. If you run a feed, its price and availability must match the product page or visibility can be limited.

### How should I handle variants for SEO?

Keep one URL for the core product with size or colour options unless a variant has its own search demand. If a variant deserves its own page, give it a unique URL and content. Keep parameters minimal and consistent, and canonicalise duplicates to the parent.

### Can I use manufacturer descriptions?

You can, but they are duplicated across many stores, so they add little. Write a short, unique description for the buyer and keep the spec table if it helps. A clear 60 to 120 words about use, fit or compatibility often beats pasted boilerplate.

### Are AI written product descriptions penalised?

No, not for being AI assisted. Google acts on pages made at scale without value. Keep each page useful on its own with clear copy, real photos and accurate structured data. Avoid scaled content abuse and other spam policies updated in 2024.

## Read next

- [Product schema: the fields Google reads and the ones it requires](https://porteur.ai/guides/product-schema): Set up Product schema that earns snippets and merchant listings. See the required fields, the recommended ones and a full JSON-LD example.
- [The Rich Results Test: what it checks and what it does not](https://porteur.ai/guides/rich-results-test): Run Google’s Rich Results Test, read eligibility, warnings and errors, know its limits, and when to use schema.org’s validator and Search Console.
- [Category page SEO: the page that ranks for the product type](https://porteur.ai/guides/category-page-seo): Build a category page that wins broad queries: clear H1, intro, subcategory links, top products, clean filters, solid pagination, and fast loads.
- [Faceted navigation SEO: which filters to index and how to hide the rest](https://porteur.ai/guides/faceted-navigation-seo): Pick which filters should rank, hide the rest, and keep crawl under control. A practical plan for product sites with examples you can ship.
- [Core Web Vitals for a product site: the three numbers](https://porteur.ai/guides/core-web-vitals): The product founder’s guide to LCP, CLS and INP: what Google measures, why phones decide the pass, common causes, and how to test and fix.
- [Canonical tags: what they do and the mistakes that cost rankings](https://porteur.ai/guides/canonical-tag): What a canonical tag does, when to use one, the mistakes that cost rankings, and how to check and fix canonicals on a small site.
- [SEO tips that still work in 2026: twenty-five, with the reason for each](https://porteur.ai/guides/seo-tips): Twenty-five SEO tips that still work in 2026. Grouped by pages, site, links and measurement. Each tip says why it works and what mistake it avoids.

Paste one product URL and get a free check that reads your page, the searches around it and rivals on them in about thirty seconds, with three findings shown. Free check: https://porteur.ai/
