This report is best viewed on desktop — on mobile, tables become cards and wide visuals open fullscreen.
Technical Snapshot
Generated 2026-06-18 19:05 UTC

Fossil

fossil.comUS
Technical Snapshot

An initial deterministic pass across fossil.com — AI-crawler access, crawlability, schema, rendering, and semantic structure. Each item is a pass/fail call, not an opinion. A full audit follows once we engage.

Tech verdict
High risk
Blocking issues
3 pass15 flagged3 critical

Takeaways — what could block visibility

4 critical
  • Cloudflare WAF blocks every non-browser crawler — including AI bots

    Medium effort

    The edge challenge returns 403 to anything that isn't a real browser (httpx, curl, DataForSEO JS-render and WebFetch all got 403; even sitemaps return the 'Just a moment…' page). Only a real Chrome rendered the site. GPTBot, ClaudeBot, PerplexityBot and Google-Extended are almost certainly challenged at the edge, so Fossil is effectively invisible to AI shopping/answer surfaces no matter how good the on-page content is. This gates everything else.

  • Category pagination isn't crawlable — most of the catalog is undiscoverable by link

    High effort

    PLPs use a JS 'Load More' with no paginated links — no rel=next/prev, no ?page=, no 'View All'. Only ~13 (sometimes 0) products per category are reachable through the category path; the 922 PDPs found came from sitemaps, not category links. Deep products get minimal internal link equity and lose category-context relevance — and in the 23 locales with no sitemap they're reachable by neither links nor sitemap.

  • Mobile Core Web Vitals are failing

    High effort

    Lighthouse (mobile, /watches/womens-watches/) scored performance 0.33 with LCP 14.8s and TTI 15.4s on ~15 MB of total byte weight. Server TTFB is ~50ms, so the bottleneck is client-side weight and a heavy third-party tag stack (Criteo, Taboola, Outbrain) — a direct ranking and conversion drag, worst on mobile.

  • Product structured data is unmeasured — the highest-value open item

    Medium effort

    The JS crawl ran without Structured Data extraction enabled, so Product/Offer (price, availability, GTIN/MPN/brand), Review and BreadcrumbList JSON-LD couldn't be audited. This markup drives Google rich results, free Merchant listings and AI shopping selection — and it must be present in the raw HTML to be usable by AI crawlers that don't execute JS.

Technical scorecard

3 pass · 15 flagged across 18 deterministic checks. Re-audited by hand after the automated pass was blocked by Cloudflare (403). The site is fundamentally crawlable and server-rendered, but a Cloudflare WAF blocks every non-browser and AI crawler, category pagination isn't crawlable, and mobile Core Web Vitals are failing — these gate both classic and AI visibility.

AI assistant access
Claude

Claude

Critical

Cannot read the homepage

Cloudflare returns 403 to non-browser fetches; only a real Chrome rendered the site. ClaudeBot is challenged at the edge, so Fossil is effectively invisible to Claude's browsing/answers.

ChatGPT

ChatGPT

Critical

Cannot read the homepage

Same Cloudflare 403 to non-browser fetches — GPTBot / OAI-SearchBot are challenged at the edge, so Fossil can't be read on demand in ChatGPT.

Gemini

Gemini

Critical

Cannot read the homepage

Same Cloudflare 403 to non-browser fetches — Google-Extended is challenged at the edge, so Fossil is unreadable to Gemini on demand.

Crawl & indexing
  • Crawler access policy published

    Pass

    robots.txt found and reachable (3,190 bytes). Single User-agent:* group; disallows SFCC controllers and query facets — but no AI-bot directives.

  • Sitemap coverage is incomplete — 23 locales have none

    Medium

    robots.txt declares 17 sitemap indexes, but hreflang advertises 40 locales — 23 markets have no sitemap. With category pagination broken, sitemaps are the main discovery path, so deep products in those markets are reachable by neither links nor sitemap.

  • Path-based facet URLs are indexable (index bloat)

    Medium

    robots.txt blocks the query facets (prefn/prefv/pmin/pmax) but not path facets like /watches/color/brown/ or /watches/material/leather/ — those return 200 and are indexable, creating near-duplicate URLs that dilute crawl budget.

  • No canonicalisation policy for facet URLs

    Low

    Homepage now reaches 200 via a real browser. Path-facet URLs self-index with no canonical/noindex policy; full canonical + hreflang validation is pending a complete crawl.

Rendering & access
  • Cloudflare WAF blocks non-browser & headless crawlers

    High

    Every non-browser fetch got 403 (httpx, curl, DataForSEO JS-render, WebFetch); sitemaps return the 'Just a moment…' challenge. Only ScreamingFrog's embedded Chrome rendered the site. This gates all crawler and AI visibility — the #1 fix.

  • Core content is server-side rendered

    Pass

    DataForSEO's raw (JS-off) fetch returns the full PDP copy (~847 words) and PLP SEO body (~1,055 words). Rendering is not the visibility risk — the WAF and pagination are.

  • No JS-dependent content for key on-page signals

    Pass

    Raw-vs-rendered diff found 0 pages where title/H1/canonical/meta appear only after JS; only 5 pages have any JS-dependent content. Content is in raw HTML — good for Google and non-JS AI crawlers.

  • Category pagination is not crawlable

    High

    PLPs use a JS 'Load More' with no crawlable pagination — no rel=next/prev, no ?page=, no 'View All'. Only ~13 (sometimes 0) products per category are reachable via links; the rest were found only via sitemaps.

Semantic structure
  • Missing / weak metadata at scale

    Medium

    27 pages missing an H1 (including the homepage); 5 duplicate titles; 7 missing meta descriptions; PDP titles run 66 chars and truncate.

  • Product structured data not yet measured

    Info

    The JS crawl ran without Structured Data extraction enabled, so Product/Offer/Review/BreadcrumbList JSON-LD could not be audited (likely present via SFCC but unconfirmed — and must be in raw HTML for AI crawlers). Highest-value open item.

Other checks
  • Mobile Core Web Vitals are failing

    High

    Lighthouse mobile (PLP): performance 0.33, LCP 14.8s, TTI 15.4s, TBT 706ms, ~15 MB byte weight, ~1.84 MB unused JS. TTFB ~50ms, so the bottleneck is client-side weight + third-party tags (Criteo, Taboola, Outbrain).

  • Keyword-stuffed category copy (spam-policy risk)

    Medium

    PLP SEO copy stuffs every permutation of {women's/ladies/female} × {watch/watches/timepiece} and is collapsed behind a JS 'Read More', with over-optimised exact-match anchors to thin /search?cgid facet URLs. Keyword stuffing is an explicit Google spam-policy violation. Templated across all PLPs.

  • Missing hreflang x-default sitewide

    Medium

    All 1,265 pages carrying hreflang lack an x-default — no fallback for an unmatched locale/language, so a wrong-market URL can rank in unsupported regions.

  • Templated malformed HTML

    Low

    Every sampled page (PDP + PLP) shows templated HTML errors — unterminated character references, duplicate <body> tags, stray markup declarations — on >1,500-node DOMs. Can interfere with structured-data extraction and Google’s DOM construction.

  • Images missing alt text

    Low

    98 pages flagged for missing image alt/title text (homepage 213 images, PLP 215, PDP 180) — lost image SEO, accessibility, and weaker image understanding for AI surfaces.

Want to walk through the fixes together?

A 30-minute call to triage the failures, agree what blocks publishing, and slot the remediation into the content engine setup.

Book the walkthrough
Back to your Opportunity Snapshot
Aloha
Technical SnapshotCh 2/6 · 2/4