Schema is partially in place — Shopify's defaults give Watch Vault WebSite, BreadcrumbList, Product, and BlogPosting for free. The score is held back by what's missing: zero LocalBusiness / Organization / Store across 100 % of pages despite a brick-and-mortar; no FAQPage on the FAQs page; no AggregateRating on the Reviews page; no CollectionPage or ItemList on collection PLPs; no SearchAction for sitelinks searchbox; and the Product schema is missing key fields (sku, mpn, itemCondition, multiple images, aggregateRating, hasMerchantReturnPolicy).

Current Coverage

TypePagesCoverageVerdict
WebSite100100 %OK (but minimal: only @type/name/url)
BreadcrumbList9595 %OK
Product24100 % of PDPsPresent, missing fields (see below)
BlogPosting1292 % of blog postsNo author
Organization00 %Missing
LocalBusiness / Store / JewelryStore00 %Missing — CRITICAL for local pack
FAQPage00 %Missing on /pages/faqs
AggregateRating / Review00 %Missing on /pages/watchvault_reviews
CollectionPage / ItemList00 %Missing on 47 collection pages
SearchAction (sitelinks searchbox)00 %Missing
AboutPage / ContactPage00 %Missing (lower priority)

Existing Product Schema — Quality Detail

Sample: Rolex GMT-Master II Pepsi PDP.

{ "@type": "Product", "name": "Rolex GMT-Master II Red Blue Pepsi Jubilee Bracelet Steel 40MM 126710BLRO", "image": "https://…/57_…_1024x1024.jpg", "description": "<p><strong>Bezel Color:</strong> Blue</p>…<19 KB of HTML>", "brand": {"@type": "Brand", "name": "Rolex"}, "offers": { "@type": "Offer", "priceCurrency": "USD", "price": 22895.0, "availability": "http://schema.org/OutOfStock", "url": "…?variant=42397487038530", "seller": {"@type": "Organization", "name": "Watch Vault"}, "priceValidUntil": "2027-05-10" } }
Gaps to fix on Product
  • image is a single URL — should be an array of all gallery images (typically 5–10 per watch)
  • description is HTML-escaped from the spec sheet; Google strips HTML, but the dense unstructured prose adds no retrieval signal
  • Missing: sku, mpn, gtin13, productID, category, itemCondition (must be UsedCondition for a pre-owned dealer), material, model, color, hasMerchantReturnPolicy, shippingDetails
  • No aggregateRating or review on PDPs — even a single review per product unlocks star ratings in SERPs
  • availability: OutOfStock on this product — sold-out items still in sitemap; either unpublish + 410 or add mainEntityOfPage + lifecycle hints

Ready-to-Paste Schema — Site-wide JewelryStore

Drop into layout/theme.liquid <head>. JewelryStore is a more specific subtype of LocalBusiness + Store.

<script type="application/ld+json"> { "@context": "https://schema.org", "@type": "JewelryStore", "@id": "https://watchvault.us/#organization", "name": "Watch Vault", "url": "https://watchvault.us", "logo": "https://watchvault.us/cdn/shop/files/{{ settings.logo_image_handle }}.png", "image": "https://watchvault.us/cdn/shop/files/{{ settings.storefront_image_handle }}.jpg", "description": "Houston's premier luxury watch buyer and seller. Buy and sell pre-owned Rolex, Patek Philippe, Audemars Piguet, Cartier, Omega, IWC, Tudor, Panerai, and 30+ luxury brands at our Bellaire, TX showroom and online.", "telephone": "+1-281-516-5977", "email": "mike@watchvault.us", "address": { "@type": "PostalAddress", "streetAddress": "4722 Richmond Ave", "addressLocality": "Houston", "addressRegion": "TX", "postalCode": "{{ FILL_ZIP }}", "addressCountry": "US" }, "geo": { "@type": "GeoCoordinates", "latitude": "{{ FILL_LAT }}", "longitude": "{{ FILL_LON }}" }, "openingHoursSpecification": [ { "@type": "OpeningHoursSpecification", "dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday"], "opens": "10:00", "closes": "18:00" }, { "@type": "OpeningHoursSpecification", "dayOfWeek": "Saturday", "opens": "10:00", "closes": "17:00" } ], "priceRange": "$1,000 - $250,000+", "currenciesAccepted": "USD", "paymentAccepted": "Cash, Wire Transfer, Credit Card, Crypto", "areaServed": [ {"@type":"City","name":"Houston"}, {"@type":"City","name":"Bellaire"}, {"@type":"City","name":"Sugar Land"}, {"@type":"City","name":"The Woodlands"}, {"@type":"State","name":"Texas"} ], "sameAs": [ "https://www.instagram.com/{{ INSTAGRAM_HANDLE }}", "https://www.facebook.com/{{ FACEBOOK_HANDLE }}", "https://www.youtube.com/{{ YOUTUBE_HANDLE }}", "https://maps.app.goo.gl/{{ GBP_PLACE_ID_SHORTLINK }}" ] } </script>

Homepage WebSite + SearchAction

<script type="application/ld+json"> { "@context": "https://schema.org", "@type": "WebSite", "@id": "https://watchvault.us/#website", "url": "https://watchvault.us/", "name": "Watch Vault", "publisher": { "@id": "https://watchvault.us/#organization" }, "potentialAction": { "@type": "SearchAction", "target": { "@type": "EntryPoint", "urlTemplate": "https://watchvault.us/search?q={search_term_string}" }, "query-input": "required name=search_term_string" } } </script>

FAQ Page Schema

For /pages/faqs (3,530 words across 8 H2 questions, currently zero schema).

<script type="application/ld+json"> { "@context":"https://schema.org", "@type":"FAQPage", "mainEntity":[ { "@type":"Question", "name":"What luxury watch brands do you buy and sell?", "acceptedAnswer":{"@type":"Answer","text":"Watch Vault buys and sells Rolex, Patek Philippe, Audemars Piguet, Cartier, Omega, IWC, Tudor, Panerai, and 30+ other luxury watch brands. Visit our Houston showroom or send photos for an online quote."} }, /* ...one per Q/A on the page */ ] } </script>

Reviews Page — AggregateRating + Review

{ "@context":"https://schema.org", "@type":"JewelryStore", "@id":"https://watchvault.us/#organization", "aggregateRating":{ "@type":"AggregateRating", "ratingValue":"4.9", "reviewCount":"{{ FILL_TOTAL_REVIEWS }}" }, "review":[ {"@type":"Review","author":{"@type":"Person","name":"Mike L."}, "datePublished":"2025-08-12", "reviewRating":{"@type":"Rating","ratingValue":"5"}, "reviewBody":"…"} /* one per testimonial */ ] }
Source legality reminder
If reviews are sourced from Google or Yelp, ensure attribution complies with their TOS. Yelp prohibits non-Yelp display of Yelp reviews; Google reviews can be displayed if attributed.

Product Schema Enrichment

{ "sku": "{{ variant.sku }}", "mpn": "{{ product.metafields.specs.reference_number }}", "itemCondition": "https://schema.org/UsedCondition", "category": "Luxury Watch > {{ collection.title }}", "image": [ "{{ product.images[0] | image_url: width: 1200 }}", "{{ product.images[1] | image_url: width: 1200 }}", "{{ product.images[2] | image_url: width: 1200 }}" ], "additionalProperty": [ {"@type":"PropertyValue","name":"Reference Number","value":"{{ ref_number }}"}, {"@type":"PropertyValue","name":"Movement","value":"{{ movement }}"}, {"@type":"PropertyValue","name":"Case Size","value":"{{ case_size }}"}, {"@type":"PropertyValue","name":"Material","value":"{{ material }}"}, {"@type":"PropertyValue","name":"With Papers","value":"{{ has_papers }}"}, {"@type":"PropertyValue","name":"With Box","value":"{{ has_box }}"} ], "hasMerchantReturnPolicy": { "@type": "MerchantReturnPolicy", "applicableCountry": "US", "returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow", "merchantReturnDays": 7, "returnMethod": "https://schema.org/ReturnByMail" } }

Collection Pages — CollectionPage + ItemList

{ "@context":"https://schema.org", "@type":"CollectionPage", "name":"{{ collection.title }}", "description":"{{ collection.description | strip_html }}", "url":"{{ shop.url }}{{ collection.url }}", "mainEntity":{ "@type":"ItemList", "numberOfItems":{{ collection.products_count }}, "itemListElement":[ {% for product in collection.products limit:24 %} {"@type":"ListItem","position":{{ forloop.index }}, "url":"{{ shop.url }}{{ product.url }}", "name":"{{ product.title | escape }}"}{% unless forloop.last %},{% endunless %} {% endfor %} ] } }

Validation Plan

  • After deployment, run all schema through Google Rich Results Test
  • Run validation on a representative sample (5 PDPs from different price tiers, 5 collections, 1 of each page type)
  • Check for warnings (not just errors) — priceValidUntil, availability, image format are common
  • After publishing FAQPage and AggregateRating, monitor Search Console rich-result coverage report

Action Items

C5Deploy site-wide LocalBusiness / JewelryStore JSON-LDS · 30–60 min

Why: Zero Organization, LocalBusiness, or Store schema on any page despite a confirmed Houston brick-and-mortar. Largest single missed opportunity for local pack + AI Overview citations.

How: Drop the JewelryStore snippet from §5.1 above into layout/theme.liquid <head>. Fill FILL_* placeholders (zip 77027, lat/lon, social handles, hours, founded year). Use canonical phone +1-281-516-5977.

Acceptance: https://watchvault.us/ HTML contains "@type":"JewelryStore"; valid in Rich Results Test; addressLocality, geo.latitude, openingHoursSpecification, sameAs all populated.

H4Enrich Product schema (sku, mpn, condition, multi-image, return policy)M · 1 day

Apply the §5.5 enrichment block. Bind:

  • skuvariant.sku
  • mpnproduct.metafields.specs.reference_number
  • itemConditionhttps://schema.org/UsedCondition (sitewide for pre-owned)
  • image ← array of all product.images
  • additionalProperty ← list of spec metafields
  • hasMerchantReturnPolicy ← inline reference to return policy

Acceptance: Validate all 1,629 PDPs via Rich Results Test API; ≥ 99 % pass with no warnings.

H5Add FAQPage schema to /pages/faqsS · 1–2 hrs

Page exists with 8 H2s and 3,530 words but emits no FAQPage schema. Misses rich-result accordion in SERP and is significantly under-cited by AI Overviews.

Convert each FAQ Q+A in pages/faqs.liquid into a structured pair, then emit FAQPage JSON-LD per the §5.3 example above.

Acceptance: Rich Results Test shows valid FAQPage; SERP search for [watch vault faqs] shows accordion expand within 1–2 weeks.

H7Add CollectionPage + ItemList schema to all 47 collectionsS – M

Currently only BreadcrumbList. Apply the §5.6 example above.

Acceptance: All collection pages emit CollectionPage + ItemList JSON-LD; valid in Rich Results Test.

M4Add AggregateRating + Review schema to /pages/watchvault_reviewsS – M

Page has 3,480 words of testimonials but no Review/AggregateRating schema — no SERP star ratings. Apply §5.4 example. If reviews are sourced from Google or Yelp, ensure attribution complies with their TOS.

L6Add visible review widget on homepage with Review schemaM

Pull recent ★★★★★ reviews from GBP via Shopify app or static review snippet. Emit Review JSON-LD inline so the widget contributes to rich-result eligibility on the homepage.