On-page is the lowest-scoring category and the highest-leverage to fix — the gaps are mechanical and uniformly distributed across the site. Title-tag truncation is the single biggest CTR-leak: 24 of 24 sampled product pages (and the homepage) end mid-word at exactly 70 characters, the Shopify hardcap. Seven pages have no <H1>. Nine have no meta description. Twelve have throwaway titles under 25 characters. <H3> usage is essentially zero across the site, killing passage-level citability.

Title Tags

24 of 100 sampled pages have titles at exactly 70 characters, almost all truncated mid-word. Examples below; full inventory in evidence/summary.txt.

LengthTitle (as rendered)URL
70"Houston Luxury Watch Buyers | Sell Your Rolex | Buy Used Luxury Watche"/
70"Breitling Avenger II Seawolf BlackSteel Limited Edition Yellow Dial 45"/products/…m17331
70"Cartier Santos 100 XL Chronograph Silver Dial Automatic Steel W20090X8"/products/…2740
70"Rolex Submariner No Date 41mm Black Dial Stainless Steel Oyster 124060"/products/…124061
70"Rolex GMT-Master II Red Blue Pepsi Jubilee Bracelet Steel 40MM 126710B"/products/…126710blro
70"Omega Speedmaster Reduced Black Dial 39mm Stainless Steel Automatic 35"/products/…3510-50
70"TAG Heuer Carrera Chronograph Automatic 44MM Green Dial Stainless Stee"/products/…cbn2a1n
70"Tudor Black Bay 41 Heritage Black Dial Stainless Steel Automatic 79540"/products/tudor-black-bay-41…79540
Root cause
Shopify's default theme title template for products is {{ product.title }} | {{ shop.name }} — but for products with a 60+ character display name, the title is truncated to 70 chars server-side by Shopify's SEO field write with no notice. Current product titles are stuffed with brand + model + dial + material + size + reference number; Google displays only ~580 px (≈ 55–60 characters) anyway, so half the keyword payload is invisible and the visible portion ends mid-word.

12 pages with under-25-character generic titles

LengthTitleURL
1215k+ Watches/collections/15k-watches
130-5K Products/collections/0-5k-products
145k-10k Watches/collections/5k-10k-products
1510k-15k Watches/collections/10k-15k-products
12New About-us/pages/new-about-us
13Refund policy/policies/refund-policy
14Privacy policy/policies/privacy-policy
15Shipping policy/policies/shipping-policy
16Terms of service/policies/terms-of-service
16Watch Vault News/blogs/news
16Product Warranty/pages/product-warranty
14Search Results/pages/search-results-page

Meta Descriptions

Missing entirely
9
/ 100 sampled
Over 200 chars (truncated)
26
/ 100 sampled
Under 80 chars
1
/ 100 sampled

Pages with no meta description

/collections/0-5k-products
/collections/5k-10k-products
/collections/10k-15k-products
/collections/15k-watches
/pages/new-about-us
/policies/privacy-policy
/policies/refund-policy
/policies/shipping-policy
/policies/terms-of-service
All 24 product pages have 320-character spec-dump descriptions
See Content Quality section for examples and remediation pattern.

Heading Structure

Pages with no <H1>
7
incl. homepage
Pages with multiple <H1>
1
/pages/get-directions
<H3> usage
~0
across all sampled pages

Pages with no <H1>

https://watchvault.us/ — homepage (0 H1, 25 H2)
/pages/about-us (0 H1, 10 H2)
/pages/get-best-price-rolex-luxury-watches
/pages/new-about-us
/pages/product-warranty
/pages/search-results-page
/pages/watchvault_reviews
Flat heading structure killing passage-level retrieval
Most pages have a flat H2 → paragraph structure with no <H3> sub-sections. Google's passage ranking and AI Overview citation extraction both pull passages under headings — typically 60–250 words under an H2 or H3 with a question-shaped title. Without H3s the chunking is too coarse to be quoted.

Open Graph & Twitter Cards

Homepage emits 10 OG tags and 3 Twitter tags (Shopify default). Other page types follow the same pattern; product pages emit product-specific OG correctly.

Open Graph
  • og:site_name
  • og:url
  • og:title
  • og:type
  • og:description
  • og:image + image:secure_url + image:width + image:height
  • og:image is a 1204×630 PNG with transparent background — works but a JPG/WebP would be smaller
Twitter Card
  • twitter:title
  • twitter:description
  • twitter:card: summary_large_image
  • twitter:image missing — falls back to OG image (works), but explicit declaration is safer

Internal Linking

  • Homepage: 540 anchor tags total; only 81 internal href + 2 external. ~457 are href="#", javascript:, or no href — mostly accordion / dropdown / slideshow controls that should be <button>, not <a href="#">. Cosmetic but clutters semantic crawl.
  • Collections: 200–400 internal links each (each product card = 1 link)
  • Products: 100–250 internal links each (related products grid + nav)
  • No visible breadcrumbs in the rendered template — despite BreadcrumbList JSON-LD being emitted. Visible breadcrumbs help users and improve dwell-time.
  • Product handle slugs are clean (/products/<brand>-<model>-<spec>-<ref>)

Hreflang / International

  • Zero hreflang tags. Site is US-only (content-language: en-US). Acceptable as-is.

Action Items

C2Fix homepage title (truncated mid-word)XS · 5 min

Why: Current title "Houston Luxury Watch Buyers | Sell Your Rolex | Buy Used Luxury Watche" ends mid-word. Visible in every SERP impression.

How: Shopify admin → Online Store → Preferences → Homepage title. Replace with one of:

  • Houston Luxury Watch Buyer & Seller | Watch Vault (49 chars)
  • Watch Vault | Sell Your Rolex in Houston, TX (44 chars)
  • Pre-Owned Rolex & Luxury Watches | Houston | Watch Vault (56 chars)

Acceptance: Title in HTML matches the chosen string and is ≤ 60 chars displayed.

C3Add <H1> to homepageS · 30 min

Why: Homepage has zero <H1> tags (25 H2s, no H1).

How: Theme edit in sections/dynamic-slideshow.liquid or homepage hero. Wrap hero text block in <h1>Watch Vault — Houston Luxury Watch Buyer & Seller</h1>. Hide visually via CSS if branding requires only the wordmark.

Acceptance: curl https://watchvault.us/ | grep -c '<h1' returns ≥ 1.

H1Rewrite product title template to avoid 70-char truncationM

All 24 sampled product pages have titles truncated mid-word at 70 chars. Sitewide CTR damage on 1,629 PDPs.

Change SEO title pattern from default {{ product.title }} | {{ shop.name }} to: {{ brand }} {{ short_model_name }} {{ ref_number }} | Watch Vault

  • Rolex GMT-Master II 126710BLRO Pepsi | Watch Vault (52 chars)
  • Cartier Santos 100 XL Chronograph 2740 | Watch Vault (53 chars)

Either via per-product seo_title metafield or theme template that emits SEO title from vendor + model metafield + reference number.

Acceptance: No product page has title at exactly 70 chars; ≥ 95 % of product titles are 35–58 chars.

H6Replace product meta descriptions (currently 320-char spec dumps)S

Build templated pattern in product template:

<meta name="description" content="{{ product.title | escape }} for sale at Watch Vault Houston. {{ vendor }} {{ ref_number }} — authenticated, with {{ has_papers }} papers. Buy or trade in your luxury watch. Visit our Houston showroom or call (281) 516-5977.">

(Cap at 155 chars; truncate gracefully.)

Acceptance: No product page has meta description > 160 chars; CTR uplift visible in GSC after 4 weeks.

H9Reduce H1-missing pagesS

7 pages without <H1>: /pages/about-us, /pages/get-best-price-rolex-luxury-watches, /pages/product-warranty, /pages/search-results-page, /pages/watchvault_reviews, /pages/new-about-us (kill via C1), homepage (covered by C3).

Acceptance: All non-deleted pages have exactly 1 H1.

H-METADESCAdd meta descriptions to the 9 pages missing themS

Missing meta descriptions: 4 price-band collections (/collections/0-5k-products, 5k-10k, 10k-15k, 15k-watches), 4 policies (Privacy, Refund, Shipping, Terms), and /pages/new-about-us (covered by C1).

Use a templated pattern that pulls collection title + price band + product count.

M1Add visible breadcrumbs UIS – M

BreadcrumbList JSON-LD exists but no rendered breadcrumb on collections / products. UX + dwell-time benefit.

Acceptance: Visible breadcrumb appears above the H1 on all collection and product pages.

L4Replace OG image with JPG or WebPXS

Current og:image is a 1204×630 PNG with transparent background — works but PNG is heavier than JPG/WebP for photographic content. Add explicit twitter:image while you're in there.

Cross-references: Author bylines + passage-level citability are filed under Content Quality (M3, M-PASSAGE).