Shopify Product Page SEO: Title Tags, Schema, and the 6 Mistakes Killing Your Rankings
How to optimize Shopify product pages for search in 2026 — title tag structure, Product schema, image alt text, variant SKU handling, breadcrumb structure, and the 6 most common product-page mistakes from real audits.
Shopify product pages are where conversions happen — and where most Shopify stores hemorrhage organic traffic without knowing it. The six mistakes below appear in roughly 70% of the Shopify stores audited through Inxy. Some are Shopify defaults. Some are theme-layer decisions made years ago and never revisited.
This article covers the mechanics. By the end, you will know exactly what your product pages should contain and what to fix first.
Title Tag Structure That Actually Ranks
The default Shopify title tag template is [Product Name] — [Store Name]. This is fine for branded queries and terrible for anything else.
For a product page, the optimal structure is:
[Primary Keyword] | [Differentiator] — [Brand]
Examples:
| Default (weak) | Optimized |
|---|---|
| Gold Ring — Aurum Jewelry | 14K Solid Gold Stackable Ring |
| Whey Protein Chocolate — NutraCo | Chocolate Whey Protein 5lb |
| Linen Dress Blue — Mara Studio | Blue Linen Midi Dress |
The differentiator slot (material, stat, unique benefit) is doing the work here. It converts the title from a name label into a value statement — which improves both click-through rate from SERPs and extraction rate by AI engines.
Keep title tags at 50–60 characters. Shopify’s admin shows character count in the SEO preview, but it counts spaces incorrectly in some theme editors — verify in GSC after publishing.
Meta Description Structure
Meta descriptions do not directly influence rankings. They influence click-through rate, which indirectly influences rankings. The formula:
- Lead with the strongest benefit (not the product category)
- Include one specific differentiator (material, size, certification, count)
- End with a CTA (“Ships free in 2 days. Shop now.”)
Keep them under 155 characters. Shopify auto-populates meta description from the first sentence of the product description if you leave it blank — this is almost never the right choice because first sentences tend to be category setup, not benefit-first hooks.
Image Alt Text: Beyond “Product Name”
Shopify defaults image alt text to the product title. For a product called “Gold Ring,” every image gets alt="Gold Ring" — which is keyword spam with zero descriptive value.
The correct pattern: describe what is literally in the image, including the differentiating attributes.
Bad: alt="Gold Ring"
Bad: alt="Gold Ring Aurum Jewelry Gold Ring Buy Online"
Good: alt="14K solid gold stackable ring on woman's hand, three-ring stack, warm studio lighting"
Good: alt="Minimalist gold band ring, side profile view, showing 2mm band width"
Each image should have a unique alt text. A product with five images should have five meaningfully different descriptions. This is tedious to do manually — Inxy generates contextual alt text from product attributes and image content automatically.
Product Schema: What Shopify Gives You vs. What You Need
Shopify’s default themes (Dawn, Sense, Craft) output Product schema automatically. Here is what they include versus what Google’s Rich Results documentation requires for full eligibility:
| Field | Default Shopify | Required for rich results |
|---|---|---|
@type: Product | Yes | Yes |
name | Yes | Yes |
image | Yes (first image only) | Yes (all images recommended) |
description | Yes | Yes |
sku | No | Recommended |
brand | No | Recommended |
offers.price | Yes | Yes |
offers.priceCurrency | Yes | Yes |
offers.availability | Yes | Yes |
aggregateRating | Only with review apps | Recommended |
review | Only with review apps | Recommended |
The three gaps that matter most: sku, brand, and aggregateRating. The sku gap is particularly problematic for stores running Google Shopping campaigns alongside organic — mismatched SKUs between product schema and your product feed cause feed disapprovals.
Add brand and sku via your theme’s product.json schema or through a Shopify app. If you use Judge.me, Okendo, or Stamped, confirm their review schema output passes Google’s Rich Results Test — some configurations output schema that validates locally but fails Rich Results eligibility due to missing ratingCount.
Variant SKU Handling
Shopify variants are the most common source of quiet duplicate content on product pages. Here is how Shopify handles variants by default and what you need to change:
The problem: When a user selects the “Blue / Size M” variant, Shopify updates the URL to /products/linen-dress?variant=12345678. This URL is indexable by default and has the same <title>, the same <meta description>, and the same H1 as every other variant of the product. Google sees 6 near-identical pages for a 6-variant product.
The fix: Shopify’s default behavior is to set a canonical on all variant URLs pointing back to the base product URL (/products/linen-dress). Confirm this is working:
- Navigate to a specific variant (select from dropdown — note the
?variant=parameter in the URL) - View source
- Search for
<link rel="canonical" - It should point to
/products/[handle], not/products/[handle]?variant=12345678
If the canonical is absent or pointing to the variant URL, you are leaking link equity across duplicate pages. This is correctable in theme code or with an SEO app.
The additional wrinkle: Variant picker apps that change the URL format (e.g., creating /products/linen-dress-blue-m as a separate product handle) are even more dangerous — they create full duplicate products. Avoid these patterns unless each variant genuinely warrants its own product page with unique content.
Breadcrumb Structure
Breadcrumbs serve two purposes: user navigation and schema-powered rich snippet display in SERPs. Shopify’s breadcrumb typically renders as:
Home > Collections > [Collection Name] > [Product Name]
For this to generate breadcrumb rich snippets, your theme must output BreadcrumbList schema alongside the visible breadcrumb. Check with the Rich Results Test. If schema is missing, it is typically a two-line addition to your theme’s breadcrumb.liquid snippet.
The structural decision that matters for SEO: which collection to surface in the breadcrumb when a product belongs to multiple collections. Shopify will show the collection the user navigated through — which means the same product shows different breadcrumbs depending on entry path. For schema purposes, pick one canonical parent collection and hardcode it in your BreadcrumbList schema, regardless of navigation path.
The 6 Most Common Product Page Mistakes
Mistake 1: Description is a feature list, not a searchable document
A description that reads “Material: 925 sterling silver. Stone: cubic zirconia. Dimensions: 18mm × 12mm” will rank for zero informational queries and gives Google nothing to extract for AI Overviews. Rewrite descriptions to include the use case, the buyer, and the context — then list specs in a structured data table below.
Mistake 2: Thin pages for slow-moving inventory
Products with fewer than 200 words of on-page content rarely rank for non-branded queries. If you have 400 SKUs and 300 of them have sub-50-word descriptions, you have a large-scale thin-content problem. Prioritize your top-20 revenue SKUs for full rewrites first.
Mistake 3: No FAQPage schema
FAQPage schema on product pages is the single highest-leverage schema addition for both Google rich snippets and AI citation. Add 5–7 Q&A pairs covering objections, sizing questions, material questions, and shipping. This alone can generate FAQ rich snippets within 2–3 weeks of indexing.
Mistake 4: Review schema not passing Rich Results validation
Install your review app, add one review, then test the product page in Rich Results Test. More than 40% of review app configurations fail due to missing ratingCount, worstRating, or bestRating fields. Fix this and you unlock star ratings in organic SERPs — typically a 15–30% CTR lift.
Mistake 5: OG tags missing or broken
When your product gets shared on social or cited in an AI answer, the preview image is controlled by og:image. Shopify sets this to the first product image by default — which is usually fine. What is not fine: og:title showing as the raw product handle (your-product-name) instead of the formatted title, or og:description truncating at 55 characters. Check with Open Graph Debugger.
Mistake 6: Blocking variant URLs without fixing canonical tags
Some stores add Disallow: /*?variant=* to robots.txt to block variant URL indexation. This works for Googlebot but does not prevent variant pages from accumulating crawl budget. The more robust fix is ensuring your canonical tags are correct, which blocks indexation while still allowing crawl for link discovery.
Priority Order for Product Page Fixes
If you are working through a backlog of product page issues, tackle them in this order:
- Fix canonical tags on variant URLs (stops duplicate content leak immediately)
- Add
skuandbrandto Product schema (unblocks Shopping feed alignment) - Rewrite descriptions on top-20 revenue SKUs (highest ranking impact per hour)
- Add FAQPage schema to top-20 SKUs (fastest path to rich snippets)
- Fix review schema validation (CTR lift within 2–3 weeks)
- Update all image alt texts (compound benefit — image search + page relevance)
Next: Shopify Collection Pages (and the Filtered-URL Trap) — collection pages are your highest-leverage SEO asset and Shopify’s biggest indexation footgun. Here is how to handle both.