Watch Vault is both a brick-and-mortar dealer (4722 Richmond Ave, Houston) and a Shopify e-commerce store with 1,629 SKUs. The local-business signals are present in the on-page content (73 % of pages mention Houston) but completely absent from the schema layer (zero LocalBusiness/Store JSON-LD across 100 % of pages). The e-commerce side has clean URL structure, working Product + Breadcrumb + Offer schema, and Shopify's standard faceted-navigation blocks — but the Product schema is missing six fields that matter for Merchant Listings rich results, including itemCondition: UsedCondition on a pre-owned dealer.

Local SEO — NAP Consistency

Wrong phone in canonical NAP surfaces

Canonical phone: (281) 516-5977 — confirmed by client Dina on 2026-02-03 ("We want the number to read 281-516-5977 everywhere"). Matches GBP listing, contact-page tel: href, MapQuest, and four other Houston business directories.

Other phone numbers visible on the site (e.g., (832) 248-0018) are LocalIQ PPC call-tracking numbers. They are valid for paid-search attribution but must not appear on canonical NAP surfaces — organic site footer, schema, llms.txt, agents.md, or GBP. Local pack and AI citations are currently reading the LocalIQ tracking number from the canonical surfaces.

SurfaceDisplayed phoneVerdict
Contact page tel: href(281) 516-5977Canonical
/llms.txt (current default)2815165977Canonical, just unformatted
/agents.md2815165977Canonical, just unformatted
Google Business Profile(281) 516-5977Canonical
MapQuest+12815165977Canonical
Site footer (200 pages)(832) 248-0018LocalIQ tracking — replace
Homepage hero(832) 248-0018LocalIQ tracking — replace
About page(832) 248-0018LocalIQ tracking — replace
Contact page (visible header)both (832) and (281) shownMixed — show only (281)
Schema (LocalBusiness JSON-LD)No schema emitted — deploy with (281) 516-5977
If LocalIQ tracking is still required for PPC attribution
Scope the swap to PPC landing-page templates only — gate by request.path or ?utm_source=ppc and only render the LocalIQ number when the gate matches. Canonical surfaces (organic footer, schema, llms.txt, agents.md, GBP) must always show (281) 516-5977.

Local Content Presence

Pages mentioning "Houston"
73
/ 100 sampled
Pages mentioning "Bellaire"
35
/ 100
Pages mentioning street address
11
/ 100

Strong on-page local signal. [brand] Houston, [Houston] watch buyer, sell rolex Houston are all reasonable local-intent keywords supported by content.

Google Business Profile (Out-of-Scope This Pass)

Verify on next audit pass:

  • GBP claimed and verified for the Houston location
  • GBP primary category = "Watch store" or "Jewelry store"
  • GBP photos: ≥ 10 interior + exterior + product
  • GBP reviews: count + average rating + response cadence
  • GBP posts cadence (weekly recommended)
  • GBP Q&A populated
  • Service-area definition
  • GBP profile photo / cover photo align with brand
GBP audit recommended
A separate Maps / Local audit pass via seo-maps with DataForSEO + GBP API access would deliver geo-grid rank tracking, review velocity, and competitor-radius mapping for Greater Houston luxury watch dealers.

E-commerce — Catalog Hygiene

  • 1,629 products in sitemap; spot-checked products all return 200 with full HTML
  • Product handles are clean (/products/<brand>-<model>-<spec>-<ref>)
  • No URL parameters polluting canonical URLs
  • Variant URLs include ?variant=<id>; canonicals point to non-variant URL

Faceted Navigation

  • Sort/filter URL permutations blocked in robots.txt (?sort_by=…, +, %2B, *filter*&*filter*)
  • Recent templates/collection.json change adds "filter_option": "tag". Verify the new filter rendering doesn't generate crawlable URL combinations
  • Recent commit 0d8135d ("Add faceted filtering with default 'In Stock' filter and price slider") — inspect URL behavior on next pass

Out-of-Stock Products

OOS handling needs review

Sample PDP (Rolex GMT-Master II Pepsi) shows availability: OutOfStock. OOS products are not noindexed and remain in sitemap_products_1.xml. Recommended:

  • Add <meta name="robots" content="noindex,follow"> to PDPs where product.available == false AND product.published_at < 90 days ago
  • OR rotate them off the sitemap
  • OR keep them indexed but explicitly add mainEntityOfPage + priceValidUntil + lifecycle hints (best for evergreen rare watches)

Product Schema — Critical Gaps for E-commerce

See Schema page for the full ready-to-paste enrichment block. Highlights that matter for E-commerce specifically:

  • itemCondition missing — every product on this site is pre-owned and must declare UsedCondition for honest classification in Google Shopping and AI agents
  • sku, mpn, gtin13 missing — required for Merchant Listings rich results
  • image is single URL — should be array of all gallery images
  • No aggregateRating or review — star ratings unavailable in SERP
  • No hasMerchantReturnPolicy — required for free product listings

Shipping & Returns

  • Shipping policy at /policies/shipping-policy exists
  • Refund policy at /policies/refund-policy exists
  • Both policies are robots.txt-blocked from indexing (Shopify default). Discuss with client whether to allow indexing for $5k–$25k purchase context
  • No hasMerchantReturnPolicy in Product JSON-LD — Merchant Listings won't surface free returns

Marketplace Presence (Out-of-Scope This Pass)

Recommended next-pass checks:

  • Google Merchant Center product feed status and disapproval rate
  • Google Shopping organic placements for [brand] + Houston queries
  • Reverb dealer profile (less relevant for high-end watches but check)
  • Chrono24 dealer listings — the dominant pre-owned watch marketplace; if Watch Vault isn't listed, that's a major channel gap
  • Bezel — newer authenticated marketplace; many dealers list inventory there for additional reach
  • WatchProSite dealer credentials

Action Items

C4Replace LocalIQ tracking number with canonical (281) 516-5977 on all NAP surfacesResolved

Resolved: Client Dina confirmed on 2026-02-03: "We want the number to read 281-516-5977 everywhere." Canonical phone is (281) 516-5977. The (832) 248-0018 and any other numbers on the site are LocalIQ PPC call-tracking numbers and must not appear on canonical NAP surfaces (organic site footer, schema, llms.txt, agents.md, GBP).

Implementation steps (for theme dev):

  1. Search the theme for 832 / 248-0018; replace with (281) 516-5977 / tel:+12815165977 (likely sections/footer.liquid, snippets/site-header.liquid, plus hard-coded sections on homepage / About / Contact).
  2. If LocalIQ tracking is required for PPC attribution, scope the swap to PPC landing-page templates only — gate by request.path or ?utm_source=ppc.
  3. Schema (C5) must always emit "telephone": "+1-281-516-5977".
  4. Reformat /llms.txt + /agents.md to display formatted (281) 516-5977.
  5. Verify GBP, Yelp, BBB, Tripadvisor, Facebook, IG bio, MapQuest all show canonical (most already do).

Acceptance: curl https://watchvault.us/ | grep -c '832-248-0018\|832) 248-0018' returns 0 on every page (or only on PPC landings); (281) 516-5977 appears in footer, header, schema, llms.txt, agents.md.

L8Audit /pages/get-directions (multiple H1s, no LocalBusiness, no map embed)S

Re-template the directions page as a proper LocalBusiness landing with embedded map, service area, and structured data.

L10Marketplace presence auditL (ongoing)

Verify or establish dealer profiles on:

  • Chrono24 — the dominant pre-owned watch marketplace; if Watch Vault isn't listed, that's a major channel gap
  • Bezel — newer authenticated marketplace
  • WatchProSite dealer credentials
  • Reverb (less relevant for high-end watches but check)

Each is a high-DA backlink + an indirect referral channel.

L-OOSDecide out-of-stock product strategyXS (decision)

Currently sold-out products kept indexed and in sitemap. Choose: noindex after 90 days, rotate off sitemap, or keep with lifecycle hints (best for evergreen rare watches).

Cross-references: JewelryStore schema (C5), Product schema enrichment with UsedCondition + hasMerchantReturnPolicy (H4) are filed under Schema. GBP / geo-grid maps audit is recommended for the next audit pass.