Storefront SEO audit with Vendure
Audit rendered product and collection pages. Give the user a prioritized list of missing or incorrect SEO features and explain how each should be implemented using Vendure data. Do not modify code unless separately requested.
Ask first
Section titled “Ask first”- Which URLs, storefront/channel, locales, and environment should be audited?
- Is
noindexintentional for this environment? Never remove it without approval. - Does the user want an audit only or implementation afterward?
- Inspect the rendered HTML, not only source components.
- Record HTTP status and validate:
- One descriptive
<title>and one H1. - Unique meta description.
- Absolute self-referencing canonical URL.
<html lang>and reciprocal localizedhreflang, includingx-default.- Intentional robots directive; flag
noindexas the likely cause of a Lighthouse SEO drop. - Open Graph: title, description, image, type, URL, locale, site name.
- Twitter: card, title, description, image.
- Descriptive image alt text rather than asset filenames; intrinsic image dimensions.
- One descriptive
- Parse every
application/ld+jsonblock and validate page-specific schema:- Product:
Product,OfferorAggregateOffer,BreadcrumbList; optionallyAggregateRating, displayedReview, andFAQPage. - Collection:
CollectionPage,BreadcrumbList, andItemList.
- Product:
- Ensure schema matches visible/current data. Omit unknown values; never invent prices, stock, ratings, reviews, FAQs, or identifiers.
- Report findings as concise bullets grouped by priority:
- Blocking: indexing, status, canonical, invalid schema.
- Important: missing title/description, hreflang, Product/Offer data.
- Enhancement: social cards, richer ItemList data, alt text, dimensions.
- Check
/robots.txtfor intentional crawl rules and an absolute sitemap URL. Check/sitemap.xmlfor complete, canonical, indexable product and collection URLs. - For every missing item, state both what is missing and how to implement it using the integration guidance below.
Vendure integration
Section titled “Vendure integration”- Add nullable, public
metaTitle(localeString) andmetaDescription(localeText) custom fields to bothProductandCollectionwhen missing. Group them under the SEO tab in the editor. Generate and run a database migration before saving values. - Query localized product fields:
name,slug,description,translations,featuredAsset,assets,collections,variants, and SEO custom fields such asmetaTitleandmetaDescription. - Query variant
sku,currencyCode, configured price (priceorpriceWithTax), andstockLevelfor offers. Respect the storefront’s tax-display configuration. - Build product metadata from trimmed, localized SEO custom fields. Fall back to trimmed product name and sanitized/truncated description. Render metadata through the shared page layout.
- Build canonical and hreflang URLs from localized translation slugs and the configured public site URL; do not use the request host on local/staging environments.
- Build
Productschema from product/variant data, including SKU and images. UseOfferfor a single variant andAggregateOfferfor multiple variants, with low/high prices, currency, offer count, and availability. - Convert Vendure minor-unit prices to major currency units before formatting offers (divide by 100 for two-decimal currencies). Map
OUT_OF_STOCKtohttps://schema.org/OutOfStockand available stock levels tohttps://schema.org/InStock; ensure availability accurately reflects the variants. - Add
AggregateRatingandReviewonly from the actual review source. Include only reviews represented by initial page data and containing valid author, text, and rating. - Parse localized FAQ custom-field content defensively. Add
FAQPageonly for valid, visible question/answer entries. - Build
BreadcrumbListfrom collection breadcrumbs, including home and the product where applicable. Use absolute URLs consistent with canonical URL conventions and keep the trail synchronized with the visible breadcrumb component. - Query collection
name,slug,description,translations, breadcrumbs, featured asset, SEO custom fields, and products. - Build collection metadata from trimmed, localized SEO custom fields, falling back to collection name and sanitized/truncated description. Render metadata through the shared page layout.
- Build
CollectionPageschema containing anItemList. Include position, absolute product URL, trimmed product name, and image when available. Deduplicate product-variant results by product ID and number positions starting at 1. - Serialize structured data into
application/ld+jsonscripts using the storefront framework’s safe serialization facilities. - Query
id,name, andpreviewfor featured assets and asset lists, including assets nested under variants, order lines, and collections. Use an editor-maintained descriptiveAsset.namefor image alt text when available; otherwise fall back to the product name. Do not use generated filenames. - Serve
/robots.txtwith the intended crawl rules and an absolute sitemap URL. Exclude search/filter crawler traps where appropriate and preserve intentional environment-specific indexing restrictions. - Generate
/sitemap.xmlfrom paginated product and collection queries. Fetchslug,updatedAt, andtotalItems; continue until all results are included. Include only canonical, indexable URLs with last-modified dates, using translated slugs for localized URLs. Choose static generation, an endpoint, or caching to match the storefront framework. - Verify ownership in Google Search Console and Bing Webmaster Tools, then submit the sitemap to both. Review crawl errors, indexing status, structured-data warnings, and Core Web Vitals after deployment.
Verify
Section titled “Verify”- Metadata values are present, unique, localized, and use absolute production URLs.
- Canonical and hreflang URLs use translated entity slugs and agree with navigation URLs.
- JSON-LD parses successfully and contains only supported, truthful fields.
- Product prices use major currency units, not Vendure minor units.
- Availability accurately summarizes variants.
- Image alt text uses descriptive asset names or product names, not generated filenames.
- Robots rules preserve the intended indexing policy and reference the absolute sitemap URL.
- The sitemap includes all canonical, indexable product and collection URLs with translated slugs and last-modified dates.
- A production build and type check pass; report unrelated pre-existing failures separately.
- Optionally validate JSON-LD with Google Rich Results Test or Schema.org Validator; eligibility does not guarantee rich results.
Limitations
Section titled “Limitations”noindexintentionally retained by the user will continue to reduce Lighthouse SEO and prevent indexing despite other improvements.- Storefront fallbacks cannot repair weak or missing localized content in Vendure.
- Google may ignore valid review or FAQ schema and applies additional eligibility policies.
