Local SEO & E-commerce
watchvault.us · NAP consistency, local presence, Shopify storefront, marketplace gaps
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
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.
| Surface | Displayed phone | Verdict |
|---|---|---|
| Contact page tel: href | (281) 516-5977 | Canonical |
| /llms.txt (current default) | 2815165977 | Canonical, just unformatted |
| /agents.md | 2815165977 | Canonical, just unformatted |
| Google Business Profile | (281) 516-5977 | Canonical |
| MapQuest | +12815165977 | Canonical |
| Site footer (200 pages) | (832) 248-0018 | LocalIQ tracking — replace |
| Homepage hero | (832) 248-0018 | LocalIQ tracking — replace |
| About page | (832) 248-0018 | LocalIQ tracking — replace |
| Contact page (visible header) | both (832) and (281) shown | Mixed — show only (281) |
| Schema (LocalBusiness JSON-LD) | No schema emitted — deploy with (281) 516-5977 | |
Local Content Presence
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
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
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
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):
- 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).
- 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.
- Schema (C5) must always emit "telephone": "+1-281-516-5977".
- Reformat /llms.txt + /agents.md to display formatted (281) 516-5977.
- 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.
/pages/get-directions (multiple H1s, no LocalBusiness, no map embed)SRe-template the directions page as a proper LocalBusiness landing with embedded map, service area, and structured data.
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.
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.