SEO Roadmap Overview
Where things stand, what's next, what the improvements look like technically, and the measurement infrastructure that tells you whether it's working.
What's done, what's in motion, what's next
-
DoneSEO audit & paste sheet delivered
-
DoneImplementation guide delivered
-
DoneIn-person session — templates confirmed, Dogma tested live
-
DoneBot traffic hypothesis resolved
-
In progressAlt text on all product imagesShopify admin
-
In progressPage title updates across all productsShopify admin
-
In progressMeta description rewritesShopify admin
-
NextFix H1 hierarchy (animated logo GIF is H1)Theme code · staging first
-
NextExternal links →
target="_blank"Theme code -
NextConnect Google Search ConsoleGSC setup · 15 min
-
NextUTM parameters on Instagram link-in-bioLink-in-bio tool
-
Next"More From Artist" → on-page anchor linkTheme code
-
FutureArtist bio accordions on product pagesTheme code + content
-
FutureSchema markup (Product + Artist/Creator)Theme code · one-time
-
FuturePrep 3 new watch launches with SEO baked inContent + Shopify admin
-
FutureAEO (Answer Engine Optimization)Content strategy
Before & after for each fix category
Alt Text — Broken Time hero image
Google can now index the image. Appears in Google Image search. Screen readers can describe it.
Page Title — Dogma product page
Invisible to visitors. This is what appears as the clickable title in Google search results.
Meta Description — CD Watch
Sensory hook, scarcity signal, CTA. This is the preview text under the title in search results.
H1 Hierarchy Fix — site-wide
The H1 tag is currently on the animated logo GIF. Google thinks every page's primary heading is an image file.
Visually-hidden H1 is invisible to visitors but readable by crawlers. Zero visual change, correct heading hierarchy.
Schema Markup — Product + Artist (future phase)
JSON-LD block that tells search engines exactly what each product is. Enables rich results (price, availability, edition size) in search listings. Zero competitors in tier have artist/creator schema.
One template in the Liquid product layout. Shopify variables auto-fill per product. First-mover advantage in the artist-collab watch category.
What Shopify shows you vs. what you actually need
Shopify Analytics gives you revenue, orders, and session counts by channel. That's useful for bookkeeping but not for understanding whether SEO changes are working.
The measurement gap
| Question You Need Answered | Shopify Gives You | What Actually Answers It | Source |
|---|---|---|---|
| Are more people seeing MH in search results? | Nothing | Impressions by query — how many times MH appeared in Google results, for which searches | GSC |
| Are the new title tags / meta descriptions getting more clicks? | Nothing | CTR by page — click-through rate on each product page, before vs. after changes | GSC |
| Is SEO pulling in new audiences or just serving existing fans? | Nothing | Branded vs. non-branded query split — "mad hudson" (awareness) vs. "artist watch" (discovery) | GSC |
| Which product pages are strongest in search? | Nothing | Clicks + impressions by URL — page-level search performance | GSC |
| Is the site fast enough on mobile? | Nothing | Core Web Vitals — LCP, INP, CLS (Google's page experience signals) | GSC + Lighthouse |
| Where does the $28.3K unattributed revenue come from? | "Direct" bucket | UTM-tagged traffic — Instagram link-in-bio, email, collabs all get attributed | UTM setup |
| Is the schema markup valid and generating rich results? | Nothing | Rich Results status + enhancements report | GSC + Schema test |
| How much is each search impression worth in revenue? | Revenue by channel (aggregate) | Revenue per impression — (organic revenue ÷ total impressions) tracked monthly | Derived |
| What's the actual conversion rate without bot noise? | 0.06% (inflated by bots) | Bot-filtered CVR — 0.22% baseline average, 0.85% on best days | Shopify filter |
Data source architecture
Three free tools, layered. No third-party SEO subscriptions needed.
Google Search Console
Queries, impressions, clicks, CTR, position, Core Web Vitals, index coverage, rich results
Shopify Analytics
Revenue by channel, orders, sessions, product sales, conversion rate
Derived Metrics
Revenue per impression, branded/non-branded split, page-level organic value, month-over-month deltas
search.google.com/search-console, add the property (madhudsonwatches.com), verify via Shopify DNS or HTML tag. Data starts populating within 48–72 hours. Historical data going back ~16 months is available immediately after verification.
What the monthly check-in looks like
Primary KPIs and baselines. Empty values populate once GSC is connected (48–72 hours after setup).
| Metric | Baseline | Source | Notes |
|---|---|---|---|
| Organic Search Revenue | $917/mo | Shopify | $11K annual ÷ 12. Sustained lift above this line = SEO is paying off. |
| Search Impressions | — | GSC | Leading indicator. Lifts precede revenue lifts by 2–4 weeks. |
| Click-Through Rate | — | GSC | Title tag and meta description changes directly improve this. |
| Bot-Filtered Conversion Rate | 0.22% | Shopify (filtered) | Range: 0.12%–0.85%. Compare same month year-over-year. |
Derived metrics — what Shopify can't tell you
These require cross-referencing GSC + Shopify data. Manual calculation monthly, ~10 minutes.
| Metric | Source | What It Measures |
|---|---|---|
| Revenue per Impression | Derived | Organic search revenue ÷ total impressions. Measures quality of search traffic, not just volume. |
| Non-Branded Queries | GSC | Count of queries not containing "mad hudson." Growth = SEO pulling in new audiences. |
| Avg. Search Position | GSC | Average across all queries. Position 1–10 = page 1. Moves slowly but compounds. |
Page-level search performance
GSC breaks down impressions, clicks, CTR, and average position per URL. Populates after GSC connection. Snapshot monthly to build trend data.
| Page | Impressions | Clicks | CTR | Avg Position |
|---|---|---|---|---|
| /products/broken-time | — | — | — | — |
| /products/cd-watch | — | — | — | — |
| /products/dogma | — | — | — | — |
| /products/eddie-watch | — | — | — | — |
| /products/marshall-watch | — | — | — | — |
| /products/miami-watch | — | — | — | — |
Core Web Vitals
Google's page experience signals and ranking factors. Quick check: run any product page URL through pagespeed.web.dev.
| Metric | What It Measures | Good Threshold | MH Status |
|---|---|---|---|
| LCP (Largest Contentful Paint) | How fast the main content loads | ≤ 2.5s | Check after GSC setup |
| INP (Interaction to Next Paint) | How fast the page responds to interaction | ≤ 200ms | Check after GSC setup |
| CLS (Cumulative Layout Shift) | How much content moves while loading | ≤ 0.1 | Check after GSC setup |
Revenue by channel — baseline
Re-export monthly. The unattributed bucket will shrink as UTM parameters get added to Instagram, email, and collaborator links.
| Channel | Revenue | Orders | CVR | Share |
|---|---|---|---|---|
| Direct / Unattributed | $28,300 | 179 | — | 62% |
| Google Search | $11,000 | 53 | ~0.3% | 21% |
| $3,500 | 23 | 0.038% | 7% | |
| Shopify Email | $2,900 | 14 | — | 6% |
| Other (incl. 1 ChatGPT referral @ $188) | $6,300 | 20 | — | 4% |
UTM parameter architecture
Every inbound link to the site should carry UTM parameters so Shopify can attribute the visit to the right channel.
Convention: utm_source = who. utm_medium = how. utm_campaign = why. Keep lowercase, underscores, no spaces.
Search query clusters to track
| Cluster | Example Queries | What Growth Means |
|---|---|---|
| Branded | "mad hudson watches", "mad hudson broken time" | Awareness growing (social, word-of-mouth) |
| Non-branded | "artist collaboration watch", "limited edition art watch" | SEO pulling in new audiences |
| Artist-specific | "bryce wong watch", "riki prosper cd watch" | Artist bios and schema working |
| AEO signals | ChatGPT/Claude referrals in Shopify analytics | AI search surfacing MH (1 confirmed order) |
Schema validation tools
| Tool | What It Checks | When to Run |
|---|---|---|
| Google Rich Results Test | Validates JSON-LD, shows which rich result types are eligible, flags errors | After adding schema template, then spot-check quarterly |
| GSC Enhancements Report | Shows all structured data detected across the site, errors, and warnings at scale | Ongoing — check monthly after schema is live |
When to check what
- Total impressions vs. prior week
- Total clicks vs. prior week
- CTR trend direction
- Any new non-branded queries
- Index coverage errors (if any)
- Organic search revenue vs. $917/mo baseline
- Revenue per impression (derived)
- Unattributed bucket size (shrinking?)
- Page-level CTR table snapshot
- Core Web Vitals status
- Organic revenue: quarter vs. same quarter last year
- Non-branded query growth rate
- Competitor spot check (Mr. Jones, Unicorn)
- AEO test: search "artist collab watches" in AI tools
- Schema validation + rich results status
When changes become visible in the data
No visible change
Google is recrawling. Changes submitted but not yet reflected. This is normal and expected.
Impressions start ticking up
GSC shows MH pages appearing in more results. New queries may surface. Clicks may lag behind impressions initially.
CTR improves
Better title tags and meta descriptions translate to higher click rates on the same impression volume. Schema markup amplifies this with rich snippets.
Revenue signal
Organic search revenue grows above the $917/mo baseline. Artist-specific queries appear. Revenue per impression improves. The growth model projects $25K–$35K addressable upside.
The field is not trying hard
| Brand | Structured Data | Product Descriptions | Artist Schema | Rich Snippets |
|---|---|---|---|---|
| Mr. Jones Watches | Basic (Shopify default) | Minimal | None | None |
| Unicorn Watches | Basic (Shopify default) | Inconsistent, broken pages | None | None |
| Mad Hudson (after fixes) | Product + Creator + Offer | Concise visible + rich invisible | First in category | Price, availability, edition |
The bar is low. Every fix widens the gap over competitors who are not investing in this layer at all.
Mad Hudson SEO — Roadmap Overview · February 2026 · Based on in-person session, 12-month analytics, and 11-brand competitive audit