# Catalena Hatters — Design, UX & SEO Audit

**Site:** https://catalenahatters.com/
**Audit date:** 6 September 2026
**Platform:** Shopify (Turbo theme 2.0.10 by Out of the Sandbox, custom build "Catalena Hatters From Streamline")
**Apps detected:** Bold Product Options (legacy v1), Boost Commerce Search & Filter, accessiBe, HulkApps Form Builder, Shopify Product Reviews (sunset app), Shopify pickup app (Heroku), GA4 (`G-GCS0D913JV`), Meta Pixel, Shop Pay / PayPal / Google Pay
**Catalog size (from sitemaps):** 212 products, 50 collections, 16 pages, 1 blog with 0 posts
**Screenshots:** `audit-screenshots/` (33 files, referenced inline below)

> Method: rendered in Chrome at 1800px (desktop) and Playwright Chromium at 390×844 (mobile). HTML, headers, sitemaps and 30+ pages were crawled and parsed. Structured data was verified in the rendered DOM, not just static HTML. In-browser Performance API timings were captured. Google PageSpeed Insights lab scores could not be pulled (public API daily quota exhausted), so Core Web Vitals below are in-browser measurements and should be confirmed in Search Console / PSI. Shopify rate-limited (HTTP 429) the crawler after ~40 URLs, so the broken-link check covered only the first ~40 internal links (all returned 200).
>
> Note: the browser session was located in the Philippines, so prices rendered in ₱ via Shopify Markets. This surfaced a real currency bug (see UX §3.4).

---

## 0. Executive summary

| Area | Score (1–10) | Verdict |
|---|---|---|
| Visual design | 6 | Strong photography and an appropriate heritage palette, but tiny hero typography, no desktop CTA, failing contrast on the brand gold, and low-resolution product images undercut a $389–$999 product. |
| UX / conversion | 5 | The custom-hat configurator is functional but long, unexplained and unassisted. No lead time, shipping, returns or reviews anywhere in the purchase path. Desktop dropdown navigation is dead. |
| SEO | 4.5 | Solid crawl foundations (Shopify handles that), but no JSON-LD, SKU-only product titles, duplicate/truncated meta descriptions, thin collection pages, an empty blog, and a legacy 2018 theme with zero image lazy-loading. |

**Top 8 priorities (highest impact first)**

1. **Add lead time, shipping, returns and a trust block to the product page and cart.** A made-to-order $389+ hat with no production-time statement is the biggest conversion leak on the site.
2. **Fix the brand gold contrast** (`#e3ab3d` on cream = 1.9:1; white on gold buttons = 2.1:1). Prices, links, breadcrumbs and the Add to Cart button all fail WCAG AA.
3. **Give the desktop hero a headline and a CTA.** Mobile already has "We take pride…" + "Shop Felt Hats"; desktop shows two photos with 22px labels and nothing else.
4. **Reshoot / re-upload product photography** at ≥1600px, consistent background and angle, 3–5 images per hat (front, side, crown, band, sweatband). Current main image is 571×428; the 20X variant image is 320×240; card thumbnails are upscaled from 100px placeholders.
5. **Replace legacy microdata with Product + Offer + BreadcrumbList + Organization/LocalBusiness JSON-LD.** No JSON-LD exists on any page.
6. **Rewrite product titles and meta descriptions.** "7104", "1022", "Tc8930", "A73122" are page titles. Descriptions are auto-truncated at 320 chars and reused across straw hats.
7. **Fix the Boost search price bug** — search results show "₱389.00" (USD number, PHP symbol) while collections show "₱24,800.00" for the same hat.
8. **Plan a theme upgrade** (Turbo 9 / OS 2.0). The 2018 theme lacks lazy-loading, image dimensions, sections-everywhere, and throws JS errors on every page; Bold Options v1 and Shopify Product Reviews are both legacy/sunset.

---

## 1. Design audit

### 1.1 Brand system (what is working)

| Token | Value | Use |
|---|---|---|
| Background | `#f7f6f1` (warm cream) | Page ground |
| Text | `#474138` body / `#32312e` headings | 9.3:1 and 12:1 contrast — good |
| Accent | `#e3ab3d` gold, `#cd9a38` dark gold | Links, prices, buttons, breadcrumbs |
| Dark bar | `#3d3a36` | Top utility bar, nav hover |
| Headings | Old Standard TT (serif), uppercase, letter-spaced | Editorial, western-heritage feel |
| Body | Lora 15px / 24px line-height | Comfortable, readable |
| Nav / buttons | Oswald, uppercase, 1px tracking | Contrasts nicely with the serif |

The palette and type pairing suit a 1983 family hatter. In-store photography (hat wall, workshop, steaming) is the site's best asset and is used well in full-bleed bands (`03`, `05`, `06`).

### 1.2 Issues

**D1. Desktop hero has no headline, copy or call to action.** (`01-home-hero-desktop.jpg` vs `25-mobile-home-top.png`)
Desktop shows two 50/50 photo panels with 22px labels "CUSTOM FELT HATS" / "STRAW HATS" and nothing else. Mobile renders the same slides with a paragraph and a gold "SHOP FELT HATS" button. The desktop hero is the only screen most visitors see before deciding to scroll; it should carry the value proposition ("Handmade custom felt hats. Bryan, Texas. Since 1983.") and the CTA. Severity: High.

**D2. Hero renders blank for several seconds on first load.** On first navigation the hero panels were empty cream for 3+ seconds before the slideshow JS painted images (captured during audit; see `02` sequence). This is the LCP element. Severity: High (performance + first impression).

**D3. Brand gold fails contrast everywhere it is used.**

| Pair | Ratio | WCAG AA (4.5:1 text / 3:1 large) |
|---|---|---|
| Gold `#e3ab3d` text on cream (prices, links, breadcrumbs, "View size chart") | 1.91:1 | Fail |
| White text on gold button (Add to Cart, Sign Up, Contact Us Today) | 2.07:1 | Fail |
| Dark gold `#cd9a38` on cream | 2.35:1 | Fail |
| Muted grey `#96948f` on cream | 2.80:1 | Fail |

Prices are the most important number on an e-commerce page and they are the least legible text on the site. Fix: darken the accent for text uses (e.g. `#8a5f14` gives ~5.5:1) and use dark text on gold buttons, or a darker button fill. Severity: High.

**D4. Typographic scale is too small for a premium product.** H2 section titles are 22px; product card titles 15px; nav 13–14px; the only large type is the 42px H1 three screens down. On a 1800px viewport the hero labels are visually smaller than the nav. Recommend a 3-step scale (e.g. 48 / 32 / 22) and a 28–36px hero headline on desktop.

**D5. Product photography is inconsistent and low resolution.** (`02`, `12`, `14`)
Backgrounds alternate between wood panelling, burlap and a polished table; camera angle and crop vary card to card; lighting differs (some warm, some green-cast). Main PDP image is 571×428 (displayed 571 wide, so zero zoom headroom); the 20X variant image is 320×240; related-item thumbnails render from 100×75 placeholders and are visibly blurry until the swap (`10`, `16`). Only one image per product. For a $389–$999 handmade hat, buyers expect crown, brim, band, sweatband and on-head shots. Severity: High.

**D6. Empty left column on collection and PDP scroll.** (`10`, `13`, `15`)
The sidebar ends after ~500px and the remaining 2,800px of page has a blank 30% column. Make the sidebar sticky or move filters above the grid.

**D7. Button system is inconsistent.** Gold filled (ATC, Sign Up), gold outline ("View All", "Hat Restoration" on home), black filled ("Refine By" on mobile, `32`), default-blue underlined `1-833-430-HATS` link on the Restorations page (`20`), unstyled system "Choose File" control on the PDP (`15`, `31`), and a HulkApps form on Restorations in a different sans-serif (`20`). Define primary / secondary / tertiary and apply them everywhere, including app-injected UI.

**D8. Brand logo strip is visually uneven.** (`07`) Eight third-party logos at different intrinsic sizes and weights (Ariat huge and black, Stetson thin orange wordmark, Bailey cropped). Normalize to a single height inside equal boxes, greyscale, or drop the strip and use text links.

**D9. Repeated "Sign up to be a VIP" band with US-flag background on every page** including cart-adjacent pages and the 404 (`08`, `11`, `13`, `16`, `18`, `24`). The flag imagery is unrelated to hats and competes with the product photography; consider a quieter footer newsletter block.

**D10. Search results page layout.** (`18`) Page heading "SEARCH Showing 2 results for…" runs inline; a second full-width search box appears directly under the header search; sort dropdown floats top-right; grid starts under the box. Standardise on one search field and a normal collection layout.

**D11. Cart page.** (`17`, `33`) Product options are shown as plain grey lines; the line-item image shows a silverbelly hat although "Hat Color: Black" was chosen. "Pick Up In Store" floats above Checkout with no context. Subtotal is right-aligned in a 2-column layout with large dead space on desktop.

### 1.3 Design recommendations (in order)

1. Desktop hero: one slide, headline + subhead + primary CTA + secondary CTA; preload the hero image.
2. Accessible accent: `#8a5f14`/`#7a5412` for text and links; keep `#e3ab3d` for large decorative fills with dark text.
3. Product photography standard: white or light-grey seamless, 3/4 front + profile + crown + detail + lifestyle, 2000px square, consistent lighting.
4. Type scale and spacing tokens; raise base to 16px; headline 40–48px on desktop.
5. One button system applied to theme + Bold + Boost + Hulk UI via CSS overrides.
6. Sticky filter sidebar or top filter bar; equalise card heights.

---

## 2. UX audit

### 2.1 Homepage (`01`–`08`, `25`, `27`, `28`)

- **No value proposition above the fold on desktop** (see D1). Visitors must scroll 3 screens to reach "By hand. One at a time."
- **"Every Style. Every Fit." grid** shows 12 felt hats, all "from ₱24,800" — no differentiation (style name only), no hover state, no quick view, no "what's the difference" link. Consider showing crease/brim descriptors or a "Compare styles" link.
- **Social proof is a single unattributed quote** ("Amy B."). No review count, no press, no "since 1983 / 40+ years" numbers, no Google rating. The Shopify Product Reviews app is referenced in markup but renders nothing (the app was sunset in 2024).
- **Trust signals missing site-wide:** no shipping policy, returns, lead time, warranty or secure-checkout message anywhere except deep in policy pages. The phone number in the top bar is good; make it clickable with a label ("Call a hatter").
- **Section order** is reasonable (categories → products → craft story → quality → restoration → testimonial → straw → brands → newsletter), but the two long full-bleed bands push products and CTAs down; tighten heights (currently 800–1,050px each).
- Homepage is 5,689px tall on desktop and 5,271px on mobile.

### 2.2 Navigation & information architecture

- Top nav: 10 items (Custom Felt Hats, Rodeo King Felt, Straw Hats, Kids Hats, Find Your Fit, Hat Restorations, Apparel, Catalena Gear, Clearance) + utility bar (phone, Contact, Our Story, Gift Cards, Careers, Login, cart). Reasonable, but "Rodeo King Felt" (a brand) sits beside "Custom Felt Hats" (a category) and "Apparel" vs "Catalena Gear" is unclear.
- **Desktop dropdown is dead.** The markup contains a 21-item submenu under Custom Felt Hats (Gus, All Around, Cutter, …) but the `<ul>` is `display:none` with no hover rule; hovering for 2 seconds shows only an underline (`34-desktop-nav-hover-no-dropdown.jpg`). Users cannot discover styles from the nav.
- **Three clicks to a felt hat:** Custom Felt Hats → 21 style tiles (no prices, `09`–`11`) → style collection (prices, `12`) → PDP. The hub tiles should show "from $389" and a one-line crease description, or the hub should be a filterable grid of all 53 felt hats.
- **Breadcrumb bugs:** the hub page reads "HOME / CUSTOM FELT HATS / PAGE 1 OF 3" although no pagination is rendered (pages 2 and 3 exist and are identical — see SEO). PDP breadcrumb is "HOME / PRODUCTS / SILVERBELLY GUS", losing the style/collection context.
- **Label mismatch:** nav "Find Your Fit" opens a page titled "Felt Hat Guide". A `/pages/quiz-results` page exists in the sitemap but no quiz is linked anywhere.
- **Footer:** "Refund Policy" appears twice (`/pages/refund-policy` and `/policies/refund-policy`); "Location" simply opens Contact; no address, hours or phone in the footer.
- **Mobile menu:** flat list of the 10 top-level items at 49px row height (good tap size); no sub-styles, no search inside the menu, no account/phone.

### 2.3 Collection pages (`09`–`13`, `32`)

- Style collections (e.g. Gus) use Boost filters (Color, Collections) with counts — good. Sort is absent on collections (present only on search).
- Cards: image + name + "from" price only. No colour swatches, no "customisable" badge, no hover alternate image, no quick add. Titles like "Saddle Tan Gus 2" and "Black Gus 2" look like duplicates to a shopper.
- Mobile: 2-column grid with 140px images and a black "REFINE BY" button; images are small and square-cropped from 4:3 sources (hats get cut).
- Most collections have **no descriptive text** (Straw Hats, Gus, Clearance: 0 words), so there is nothing to explain the difference between a 10X and 100X or between Gus and Cattleman.

### 2.4 Search (`18`)

- Boost search works (2 relevant results for "black gus") with brand/colour/collection facets.
- **Currency bug:** results display "from ₱389.00" while collection pages show "from ₱24,800.00" for the same hat (Boost renders the USD amount with the localized symbol). For any non-US visitor this is a 60× price discrepancy and a trust killer. Enable Boost's Shopify Markets currency support or disable Markets conversion. Verify with a US session that USD renders correctly.

### 2.5 Product page — the custom configurator (`14`–`16`, `29`–`31`)

The PDP is where this business lives, and it is under-supported:

| Finding | Evidence | Impact |
|---|---|---|
| 12 form controls: 8 selects (6 required with "-- Choose --" placeholders), 2 checkboxes, notes textarea, file upload | Bold Options form | Long, intimidating; nothing pre-selected |
| No defaults even where the copy states them ("Crown Height: 5 3/4 (Standard)", "Brim: 4 (Standard)") | PDP copy vs empty selects | Forces 6 decisions before Add to Cart |
| Quality tiers 10X / 20X / 50X / 100X not explained inline; price jumps ₱24,800 → ₱35,000 on selecting 20X with no explanation | Selecting Quality | Sticker shock; guide is on another page |
| Guide links ("View hat color guide", "View size chart", "View oval shape guide") navigate away from the PDP | Links to /pages/felt-hat-guide | Users lose their selections |
| One product image, no zoom headroom, no colour swatch images; choosing "Black" gives no visual feedback | 571×428 image; cart shows silverbelly for a black hat | Low confidence in a $389+ purchase |
| No lead time / production time anywhere on the PDP or cart | Body text contains no "weeks", "lead time", "made to order" | Expectation gap; support load |
| No shipping, returns, guarantee, "handmade in Bryan, TX" block near the price | Absent | Trust |
| No reviews or ratings | Sunset app | Social proof |
| Mobile: Add to Cart sits 1,961px down (≈2.3 screens), no sticky ATC, form selects 42px tall | Playwright measurement | Mobile conversion |
| Native Add to Cart hidden and replaced by Bold's cloned button; theme JS error `reading 'is_fixed'` on every page | Console | Fragility |
| "Catalena Hatters" vendor link above the title leads to a vendor collection | PDP header | Noise |
| Related items: 6 hats at the identical price | PDP footer | Little value; better: "Complete the look" (bands, cases, brushes) |

**Recommendations**
1. Two-step configurator: Step 1 Quality (with 4 cards: price, fur blend, one-line "best for"), Step 2 Fit (size, oval; with inline modal size guide), Step 3 Style (crown, brim, band, extras) pre-filled with the pictured "Standard" values.
2. Inline guides as modals/accordions; colour swatches as images.
3. A "What happens next" block: production time, shipping, returns, "shaped by hand in Bryan, TX", phone.
4. Sticky Add to Cart on mobile; live price summary ("Your hat: 20X · Black · 6 5/8 · ₱35,000").
5. Gallery: 4–6 images per style; upload the chosen colour as variant images so the cart shows the right hat.

### 2.6 Cart & checkout (`17`, `33`)

- Add to Cart navigates to the full cart page (no drawer). Acceptable for a one-hat purchase; a drawer would help for accessories.
- Options are listed but **cannot be edited** — customer must remove and rebuild the 12-field form.
- No "Continue shopping", no shipping estimate, no lead time, no trust/security note. "Pick Up In Store" appears above Checkout without explanation (only useful for Bryan, TX locals).
- Express checkout (Shop Pay, PayPal, Google Pay) is present — good.
- Mobile checkout button is 42px tall and ~940px down the page.

### 2.7 Content pages

- **Felt Hat Restorations** (`19`, `20`): clear 13-step process (good), but the page asks customers to **enclose a credit card number and expiry in the shipping box** — a security/PCI-exposure and trust problem. Replace with a paid "Restoration deposit" product or an invoice link. Turnaround is stated as "4 to 6 months"; the phone link is unstyled blue; the HulkApps intake form below uses a different font family.
- **Felt Hat Guide** (`21`, `22`): the best content on the site (quality tiers, size chart, colours, head shapes) with an anchor sidebar. It should be surfaced inside the PDP and linked from every collection.
- **About Us** (`23`): "over thirty years" is stale (founded 1983 → 43 years); contains empty `<h2>` and `<h3>` tags; no team photos or credentials despite the strong story.
- **FAQs:** ~230 words; no shipping / lead-time / returns questions.
- **Contact:** address (203 N. Main Street, Bryan, TX) present in copy only; no map embed, no hours.
- **News blog:** exists in nav-less limbo with zero posts.
- **404** (`24`): fine — has search and a shopping link.

### 2.8 Accessibility (WCAG 2.1 AA)

| Check | Result |
|---|---|
| Landmarks | 0 `<main>`, 0 `<nav>`; 2 `<header>` elements; no skip link |
| Contrast | Gold text/buttons fail (see D3) |
| Tap targets (mobile home, visible controls) | 32 of 72 under 44px (social icons 17×16; product title links 140×19) |
| Images | All have `alt`; 5–7 empty alts per page (decorative — acceptable) |
| Forms | Bold selects are labelled; header search has placeholder only |
| Overlay | accessiBe script loads but its config returns 404, so the widget does nothing. Overlays are not a compliance strategy anyway; fix the theme. |
| Focus states | Theme relies on browser defaults; verify visible focus on gold buttons |

### 2.9 Performance (in-browser measurements; confirm with PSI/CrUX)

| Metric | Home (desktop, warm) | PDP (desktop) | PDP (mobile, headless) |
|---|---|---|---|
| TTFB | 136 ms | 313 ms | 35 ms |
| DOMContentLoaded | 615 ms | 463 ms | 292 ms |
| Load | 961 ms | 1,110 ms | 362 ms |
| Requests | 288 | 248 | — |
| Scripts | 68 | 68 | — |
| DOM nodes | — | 1,315 | — |
| CLS (observed) | — | 0 | — |

- Server response is fast (Shopify CDN). The cost is client-side: 68 script tags and ~250–290 requests per page from Bold, Boost, accessiBe, Hulk, Meta, GA4, shop.app, the pickup app and the theme.
- **No image uses `loading="lazy"`** and **no image has width/height attributes** on any page tested; most lack `srcset`. The hero is JS-painted, so LCP on mobile is likely well above 2.5 s (the hero was blank for 3+ s in testing).
- Google Fonts request is malformed (`family=.|Old+Standard+TT|Old+Standard+TT|Oswald|Lora|Lora`) — an empty family plus duplicates; 3 families × 3 weights are requested.
- Console errors on every page: `Cannot read properties of undefined (reading 'is_fixed')`, `Cannot read properties of null (reading 'parentNode')`, accessiBe config 404, Shopify monorail fetch failures.
- Theme assets are versioned September 2018 (`v=1536290539`); Turbo 2.0.10 predates Online Store 2.0, native lazy-loading and Shopify's image `image_tag` helpers.

---

## 3. SEO audit

### 3.1 Crawlability & indexation

| Check | Status |
|---|---|
| robots.txt | Standard Shopify; blocks cart/checkout/account/filters; sitemap referenced |
| XML sitemap | Index → products (212, 207 with image titles/captions), collections (50), pages (16), blogs (1 URL, 0 articles) |
| HTTPS | HTTP→HTTPS 301, www→non-www 301, HSTS `max-age=7889238`, CSP `upgrade-insecure-requests` |
| Canonicals | Self-referencing on every page tested; `/collections/x/products/y` canonicalises to `/products/y` |
| 404 handling | Returns real 404 |
| Meta robots | `index,follow` everywhere (nothing accidentally noindexed) |
| hreflang | None (single language; fine) |
| Internal links | First ~40 checked all 200; remainder blocked by rate limiting (re-run with Screaming Frog at 1 URL/s) |

**Issues**

- **Duplicate paginated hub pages.** `/collections/custom-felt-hats?page=2` and `?page=3` are indexable, carry `rel=next/prev`, self-canonicalise, and render exactly the same 21 style tiles as page 1 (the collection's products are hidden by the custom section). Either noindex pages ≥2 or render the products.
- **Thin utility collections are indexable:** `/collections/all` (no meta description), `/collections/frontpage`, `/collections/home-featured`, `/collections/types`, `/collections/vendors`. Noindex or give them real content.
- **Duplicate collections:** `grizzly`, `grizzly-1`, `grizzly-collection`; `rodeo-king` and `rodeo-king-felt`; `charlie-waite-hats` vs product `charley-waite` (spelling drift). Consolidate and 301.
- **Brand collections** (Resistol, Stetson, Ariat, Twister, Sunbody, Bailey) exist as URLs; verify they contain products or noindex them.

### 3.2 Structured data (verified in rendered DOM)

- **No JSON-LD on any page** (home, collection, product, content pages, blog).
- Theme emits legacy **microdata**: `Product`/`Offer` (`price`, `priceCurrency`, `availability`, `brand`) on the PDP and on every product thumbnail (12 Product entities on the home page, 7 on the PDP), plus `BreadcrumbList` on collection/PDP. Multiple Product entities per page dilute the main entity; `image`, `sku`, `description`, `aggregateRating` are absent; `itemtype` uses `http://` URIs.
- No `Organization`, `LocalBusiness`/`Store` (address, phone, hours, geo), `WebSite` (sitelinks search), or `FAQPage`.

**Fix:** add JSON-LD via `snippets/structured-data.liquid`: `Product` + `Offer` (with `priceValidUntil`, `sku`, `image[]`, `brand`, `hasMerchantReturnPolicy`, `shippingDetails`), `BreadcrumbList`, `Organization`+`LocalBusiness` (203 N. Main St, Bryan TX; phone; hours; sameAs Facebook/Instagram), `WebSite` with `SearchAction`, and `FAQPage` on `/pages/faqs`. Remove or trim thumbnail microdata.

### 3.3 Titles & meta descriptions

| Page | Title (chars) | Meta description (chars) | Issue |
|---|---|---|---|
| Home | Catalena Hatters - Custom Felt Hats, Straw Hats, Felt Hat Restoration (69) | 128 | Title truncates in SERP; description typo "located **a** Bryan, Texas"; no CTA |
| /collections/custom-felt-hats | Catalena Hatters – Custom Felt Hats (35) | 154 | Brand-first format; **identical title+description to /pages/custom-felt-hats** |
| /collections/straw-hats | Catalena Hatters - Straw Hats (29) | 147 | Short; brand-first |
| /collections/all | Products - Catalena Hatters (27) | none | Thin, no description |
| /products/silverbelly-gus | Silverbelly Gus - Catalena Hatters (34) | 320 (truncated auto-text) | No category keyword ("custom felt cowboy hat") |
| /products/7104-para-panama-3 | 7104 - Catalena Hatters (23) | 191 | **SKU-only title** |
| /pages/felt-hat-guide | Felt Hat Guide - Catalena Hatters (33) | 320 (auto) | Meta is the page's first paragraph, cut mid-sentence |
| /pages/faqs | FAQs - Catalena Hatters | none | — |
| /blogs/news | News - Catalena Hatters | none | Empty blog |
| /pages/about-us | Catalena Hatters - About Us | 190 | Too long |

Sample of 20 product pages: 4 SKU-only titles (7300, 1022, 7800, A73122), 15 descriptions over 160 chars, 4 duplicate descriptions (straw hats share "This hat can be shaped however you like…"), 2 with no description, 3 under 70 chars. Title format alternates between "Brand – Page" and "Page - Brand" with mixed en-dash/hyphen.

**Fix pattern:** `{Colour} {Style} Custom Felt Cowboy Hat | Catalena Hatters` for felt; `{Brand} {Model} Straw Cowboy Hat – {Crown}/{Brim} | Catalena Hatters` for straw; hand-written 140–155 char descriptions with fur grade, made-in-Texas and a CTA.

### 3.4 Heading structure

- Home: two `<h2>` (hero labels) precede the `<h1>` "By hand. One at a time." (no keywords, 3 screens down). Footer column titles are `<h5>`/`<h6>` — heading misuse.
- About: empty `<h2>` and `<h3>` elements.
- PDP: `<h1>` is the bare style name; guide sections repeat H2/H3 from the guide page inside the PDP (duplicated content block).
- One H1 per page otherwise — good.

### 3.5 Content

- **Collection descriptions are empty** on most collections (Straw Hats, Gus, Clearance, Kids: 0 words; Custom Felt Hats: one sentence). Add 150–300 words per collection explaining crease, brim, who it suits, quality tiers, and internal links to the guide.
- **Product descriptions** are 40–70 templated words; straw hats reuse one paragraph. Add fur/straw grade, crown/brim measurements, band, sweatband, weight, made-to-order note, care.
- **Blog is empty.** Obvious topics with search demand: how to measure hat size, felt vs straw by season, 10X vs 20X vs 100X explained, how to shape/clean a felt hat, hat restoration before/after, rodeo-crease guide. Each can link to the configurator.
- **Restoration page** ("felt hat restoration", "cowboy hat cleaning/reblocking") has good process content but no pricing schema, no FAQ, no before/after gallery, no reviews.
- **Local SEO:** the store is a destination business (customers drive 2.5 hours per the testimonial). Add NAP + hours to the footer, LocalBusiness schema, a Google Business Profile link and a map on Contact.
- **E-E-A-T:** the 1983 founding story is strong but there are no maker profiles, press, or customer photos; the About page copy is stale ("thirty years").

### 3.6 Images

- All images carry `alt`; product alts are descriptive ("Silverbelly Gus Custom Felt Hat"). Good.
- No lazy-loading, no intrinsic dimensions, limited `srcset`; product masters are 571px or smaller — too small for Google Images/Shopping and for retina displays.
- Home `og:image` is the logo on a cream pad; collection/product `og:image` URLs use `http://` and 600px sizes; `twitter:card` is `summary` (small). Use 1200×630 hat photos and `summary_large_image`.

### 3.7 Technical debt affecting SEO

- Turbo 2.0.10 (2018) with Bold Product Options v1 and Shopify Product Reviews (sunset). Upgrading unlocks native lazy-loading, `image_tag` with dimensions, sections, and removes ~30 legacy scripts.
- accessiBe config 404 and theme JS errors every page load.
- Shopify Markets currency conversion combined with a non-Markets-aware search app (price mismatch).

---

## 4. Prioritised action plan

### Critical (this month)
1. PDP + cart trust block: production lead time, shipping, returns, "handmade in Bryan, TX", phone.
2. Contrast fix for gold text/buttons (theme CSS only).
3. Desktop hero headline + CTA (theme editor).
4. Fix Boost search currency rendering; verify USD in a US session.
5. Remove "mail us your credit card number" from the Restorations page; replace with a deposit product/invoice.
6. JSON-LD: Product/Offer, BreadcrumbList, Organization/LocalBusiness, WebSite.

### High impact (next quarter)
7. Product photography programme (all 53 felt styles first, then straw).
8. Rewrite titles/meta for all 212 products and 50 collections; write collection descriptions.
9. Configurator redesign (stepped, pre-filled defaults, inline guides, live price summary, sticky mobile ATC).
10. Reviews: install a current app (Judge.me / Okendo), import Google reviews, add rating schema.
11. Noindex thin/duplicate collections and paginated hub pages; consolidate duplicate collections with 301s.

### Quick wins (days)
12. Fix "located a Bryan" typo; "thirty years" → "since 1983 / 40+ years"; remove empty headings on About.
13. Footer: NAP + hours; remove duplicate Refund Policy link; label "Pick Up In Store".
14. Rename nav "Find Your Fit" to match the page (or rename the page "Find Your Fit"), and either expose the 21-style dropdown or delete the dead submenu.
15. Fix the Google Fonts URL (drop the empty family and duplicates); add `loading="lazy"` and width/height to grid images.
16. Remove or fix accessiBe (config 404); fix the `is_fixed` and `parentNode` JS errors.
17. Add meta descriptions to /collections/all, /pages/faqs, /blogs/news; hide the empty blog until it has 3+ posts.

### Long term
18. Theme upgrade to Turbo 9 / OS 2.0 (or rebuild), replacing Bold v1 with native variants + a modern options app.
19. Content programme: 2 guide posts per month tied to the configurator; restoration before/after gallery.
20. Measure: Search Console CWV report, GA4 funnel (PDP → ATC → checkout), configurator drop-off per field.

---

## 5. Screenshot index

| File | What it shows |
|---|---|
| `01-home-hero-desktop.jpg` | Desktop hero: two photo panels, 22px labels, no CTA |
| `02-home-featured-products.jpg` | "Every Style. Every Fit." grid, identical "from" prices, gold price text |
| `03-home-by-hand-banner.jpg` | Workshop banner with the page H1 |
| `04-home-world-class-quality.jpg` | Image + copy block, outline button |
| `05-home-restoration-block.jpg` | Restoration promo block |
| `06-home-testimonial.jpg` | Single unattributed testimonial band |
| `07-home-brand-logos-vip.jpg` | Uneven brand logo strip + VIP signup band |
| `08-home-footer.jpg` | Footer: duplicate refund links, no NAP |
| `09-collection-custom-felt-hats-top.jpg` | Hub page: "Page 1 of 3" breadcrumb, style tiles without prices |
| `10-collection-custom-felt-hats-grid.jpg` | Blurry placeholder thumbnails, empty left column |
| `11-collection-custom-felt-hats-bottom.jpg` | "Can't find what you're looking for?" CTA |
| `12-collection-gus-top.jpg` | Style collection with Boost filters |
| `13-collection-gus-bottom.jpg` | Empty sidebar column on scroll |
| `14-pdp-silverbelly-gus-top.jpg` | PDP: single 571px image, vendor link, gold price |
| `15-pdp-options-form.jpg` | 12-field Bold configurator, all placeholders |
| `16-pdp-add-to-cart-related.jpg` | ATC button, file upload, related items |
| `17-cart-page.jpg` | Cart: uneditable options, wrong colour image, pickup button |
| `18-search-results.jpg` | Search: "₱389.00" currency bug, duplicate search box |
| `19-page-hat-restorations-top.jpg` | Restoration process content |
| `20-page-hat-restorations-payment.jpg` | "Enclose credit card number" instruction, unstyled phone link, Hulk form |
| `21-page-felt-hat-guide.jpg` | Felt Hat Guide (nav says "Find Your Fit") |
| `22-page-felt-hat-guide-size-chart.jpg` | Size chart table |
| `23-page-about-us.jpg` | About page, "over thirty years" copy |
| `24-404-page.jpg` | 404 page |
| `25-mobile-home-top.png` | Mobile hero with copy + CTA (absent on desktop) |
| `27-mobile-home-products.png` | Mobile product grid |
| `28-mobile-home-footer.png` | Mobile footer |
| `29-mobile-pdp-top.png` | Mobile PDP top (300px image) |
| `30-mobile-pdp-options.png` | Mobile configurator |
| `31-mobile-pdp-add-to-cart.png` | Mobile ATC ~2.3 screens down, no sticky bar |
| `32-mobile-collection-gus.png` | Mobile collection: black "Refine By", 2-col grid |
| `33-mobile-cart.png` | Mobile cart |
| `34-desktop-nav-hover-no-dropdown.jpg` | Desktop nav hover: underline only, 21-item submenu never opens |
