Replicate existing landing pages as native Liquid sections, then iterate variants under Shopify's native A/B testing. Closed-loop optimisation: daily cron evaluates 3/7-day data, weekly Clarity heatmap batch generates new hypotheses, winning variants get cut over via theme push under CEP protocol.
/pages/quiz-are-you-suffering-from-brain-fog (page-1 ranking, 579 clicks/16mo, position 9.8) was unpublished + 301'd to homepage — kill chain restored. Activated existing page id 138908369179, deleted blocking redirect, bound to bz-quiz template. Mirrored across US (page id 80385933504 + 79409545408 + 80385114304), DE (101741494536 + 101873320200 + 101873942792), FR (86109257833 + 81715134569 + 86103162985). Plus FR /pages/test junk redirect cleared.request.locale.iso_code.memory/CANONICAL_strategy.md created (369 lines, 11 sections). Three-Layer Operating Model now Strategy: Consolidated. protected_seo_tier field added to pages_registry. Protected SEO Assets tier table added to onpage-audit SOP. 17 source strategy files marked _superseded_by.loop:false (2-slide bug fix), media-features watchResize:false (perf), backwards-compat bz-carousel.liquid alias snippet.{%- doc -%} is Theme Check ONLY (NOT runtime); snippet renames need backwards-compat alias to survive cache rotation (days/weeks).v4.0/shopify-build/v1-firstsync/THEME_HARDENING_SOP.md — canonical 4-phase methodology for stress-testing pages before user test.
bz-{component}.liquid (renderer) + bz-{component}-data-{variant}.liquid (data) + BEM CSS + JSON registry. SoT at v4.0/shopify-build/v1-firstsync/THEME_COMPONENT_SOP.md._archive/2026-04-25-adhd-variants-a-to-f/. F2 production URL: /blogs/neurodiversity-tips/adhd-supplements-guide-f2.gen_adhd_illustrations*.py scripts (archived). OCR-first QC via qc_illustration_v1.py (claude-haiku-4.5 vision). 3 ADHD configs converted to JSON. Tomorrow: install Tesseract binary to activate OCR gate.Two open decisions on the Phase 0 path. Recommendations included — tap "Confirm" to lock in or use the secondary action to override.
Pro plan, not Plus. Three valid paths. The mechanism dictates how Phase 3 launches and what data the daily cron pulls.
Locked: ADHD Supplements Guide (UK). Existing campaign is expensive in SERP; LP already exists and is editorially correct. Pilot scope is port-only into a Liquid blog template — inherit Shopify chrome (header / nav / footer / Judge.me), no copy or structure changes. Pilot does one new thing (blog template) instead of two. GABA Precursor moves to Phase 1 #2 to harden the product-page section schema.
F:\brainzyme-git\landing-pages\adhd-supplements-guide.html (59KB) + memory/project_adhd_blog_landing_page.md. Editorial content frozen. Unlocks expensive ADHD campaign economics.
One-time setup, ~5 minutes. Required for the Shopify Admin MCP (Layer 2). Without this token, Claude can't push themes, manage products, or run programmatic admin tasks. Do this in your Shopify admin (UK store first; we'll add others later if needed).
.env.Claude Build MCP. Confirm with Create app.
read_themes, write_themes — essential for theme pushread_products, write_productsread_orders (no write)read_customers (no write)read_content, write_content (blog/page content)read_metafields, write_metafieldsshpat_).
.myshopify.com domain
Shopify admin → Settings → Domains. The myshopify.com URL (not the public-facing one) — looks like brainzyme-uk-store.myshopify.com.
F:\Claude Root\v4.0\shopify-build\v1-firstsync\.env:
SHOPIFY_ADMIN_TOKEN=shpat_xxxxx SHOPIFY_DOMAIN=brainzyme-uk-store.myshopify.comClaude will verify
.env is gitignored before any commit.
Clarity is not yet deployed on the storefront. Install now — it needs ~2 weeks of data on the existing PageFly pages BEFORE we replace them, otherwise the optimisation loop has no before/after comparison.
Brainzyme UK Storefront. Website: brainzyme.com. Category: Health/Wellness. Save.
abc1234xyz). Paste it in chat. Claude will deploy the tracking snippet to theme.liquid <head> on the LIVE theme under CEP protocol.
This is Decision 1 from the Decisions tab, with the full reasoning so you can review before confirming. Same comparison — just expanded.
| Method | How it works | Pros | Cons |
|---|---|---|---|
| A — Google Ads ad-level split Recommended | Duplicate the ad in Google Ads → each ad points to a different LP URL (control vs variant). Google Ads rotates 50/50. | No Shopify dependency. Attribution lives in Google Ads where you already work. Cleanest conversion data per variant. Works even if Shopify A/B is unavailable. | Only randomises paid traffic (irrelevant for Brainzyme — paid is dominant). Need GA4 for secondary metrics like scroll depth. |
| B — Shopify native A/B (free app) | The "Shopify A/B Testing" free app (2024+) does server-side template swapping with randomised assignment. | Splits all traffic including organic. No client flicker (server-side). Standard within Shopify reporting. | Needs verification it's available on Pro plan (was Plus-only historically). One more app installed. App-based reliability risk. |
| C — GA4 alone | Two LP URLs, GA4 events tagged by URL, comparison in GA4 Explorations. | Zero install overhead. Familiar tool. | NOT a split mechanism — users self-select by the ad/link they click. Useful as the measurement layer for Option A, not standalone. |
Quick lookup task. Even if we go with Option A (Google Ads split) as primary, knowing whether Shopify A/B is available is useful for testing organic traffic later.
Living tracker of every page/article we've published to Brainzyme Shopify stores. Each row links to its config (audit trail) + live URL. The SOP at the top is the canonical workflow — read before any new publish.
Every publish job follows this SOP. Multi-agent build pattern, Path B default cutover, gotchas catalog, rollback playbook. Update with every new pattern learned.
F:/Claude Root/v4.0/shopify-build/v1-firstsync/SHOPIFY_PAGE_PUBLISH_SOP.md
Generic script: tools/shopify_publish_page.py
Bespoke orchestrators: tools/publish_home_v2.py (Home v2 ghost — phases create/publish/smoke/unpublish/status/delete)
Per-job configs: config/shopify_publish/<slug>.json
Memory pointer: feedback_shopify_publish_sop.md
tools/product_matrix.py --validate-copy <page> before every publish. PRO = motivation (Class 1). ELITE = stress relief (Class 1). Cross-class compounds (e.g. "calm focus", "drive formula") banned as SKU labels.video.load() after mountv.load() inside first-frame init. On cache-miss the loadedmetadata listener fires after the user clicks play — load() then aborts the in-flight fetch and kills playback 2–5s in. Use currentTime + loadedmetadata listener only. Fix shipped 2026-04-21 to assets/adhd-supplements-guide.js:771. See SOP §9 G15 + §13.2.@4 vs pinned @4.1.4)video.play() in BZ.toggleVideo lacks .catch() fallback (G15 cousin)keyboard: 'global' fires both carousels simultaneouslytools/shopify_runtime_gate.py — Playwright pageerror + console.error capture + readyState probe + G15 regression test.shopify_publish_page.py --force, 7 files uploaded 200 OK, all 5 smoke markers PASS):
@4 / @4.1.4) → vendored assets/splide-4.1.4.min.{js,css} via snippets/splide-assets.liquid (media=print async CSS + defer JS)BZ.toggleVideo — .catch() muted fallback added (G15 cousin closed)keyboard: 'global' → 'focused' (dual-fire stopped)is-initialized guard + attachVideoControls moved into splide.on('mounted', …) (clone-slide dead-button fixed)role="checkbox" tabindex="0" aria-checked + Space/Enter keydown (a11y)brainzyme.myshopify.com/cart/… → {{ routes.cart_url }}/add?id=…&discount=WELCOME10 (liquid:495, 973).pp-nhs-form select 14.5px → 16pxpreload="metadata" → "none" across 20 videos in ADHD section + 34 in Home v2 section<noscript> 3-product fallbacktmp/runtime_gate_adhd_post_path_a.json, desktop viewport, 2026-04-22 10:35 BST):
prefers-reduced-motion, srcset, etc.) deferred to next sprint per audit.
shpat_ reveal on Develop-apps Custom Apps post-2026-01-01. The Admin UI now exposes only Client ID + Client Secret (shpss_…). Tokens must be minted via OAuth client_credentials grant.
{PREFIX}_SHOPIFY_ADMIN_TOKEN, after any app reinstall (uninstall kills every shpat_ ever issued), or on any 401 Invalid API key.tools/shopify_publish_page.py hardened 2026-04-22 with fail-fast auth probe + the same hint in its error message.memory/feedback_shopify_2026_admin_api_auth.md + memory/project_backend_access_registry.md §5b · SOP §1.5 + G17 + §10 change-history row.git push origin main on any F:/brainzyme-themes/{uk,us,de,fr}/ repo deploys to that store's ghost theme — live themes never touched until Calum manually publishes in each admin.
memory/project_backend_access_registry.md §5b.For any port >500 lines, dispatch 6 Sonnet sub-agents in series. Main session orchestrates only — never reads transcripts or large files into its own context. Proven on ADHD article (round 1 + 2) and Home v2 ghost.
Each agent gets a self-contained brief with IDs, file paths, and explicit success criteria. Phase B reviewer agent (Opus or Sonnet) gates Phase C. Home v2 ghost added a 7th phase: publish → QC → unpublish via bespoke orchestrator.
| Slug | Type | Store | First published | Live URL | QC | Config |
|---|---|---|---|---|---|---|
adhd-supplements-guide |
article | UK | 2026-04-20 13:06 BST | brainzyme.com/…/adhd… | ✅ PASS + Round-2 LIVE + G15 fix (17:20 BST round-2 fixes: Zinc & Choline card replaces false iron claim, Starter Bundle packshot fixed, accordion padding corrected, shelf Option B dual-CTA live, Splide dual-carousel live. Original 13:30 QC: 9 evidence + 6 FAQ accordions, 3 planner tabs, 3 cart permalinks via Chrome MCP) 🔧 2026-04-21 G15 fix shipped: deleted v.load() at adhd-supplements-guide.js:771 — resolves click-to-play stopping after 2–5s on cache-miss visits. Shared asset, so Home v2 ghost is covered too. ⚠️ Pre-v1.2 Chrome MCP run — future re-QC must use Browserbase per SOP §13.5. 🛡️ 2026-04-21 hardening audit flagged 6 convergence items + 50 lower-priority findings — fixes in Path A batch. ✅ 2026-04-22 Path A shipped — all 11 fixes live, runtime gate PASS (zero errors, G15 regression video playing at t=6s). 6 lower-pri items deferred. |
config/shopify_publish/adhd-supplements-guide.json |
✅ Round-2 feedback shipped 2026-04-20 17:20 BST via 4-agent consolidation (α content+lexicon, β bundle+padding, γ shelf UX, δ Splide carousels). Published via shopify_publish_page.py --force. Live server-side content confirmed via credentials: 'omit' fetch. SOP bumped v1.0 → v1.1 with content-audit gate (§2), G11–G14 gotchas (§9), §13 reusable patterns (accordion padding, Splide dual-carousel, shelf dual-CTA, credentials-omit QC). Subsequently bumped v1.1 → v1.2 (2026-04-20) hardwiring the Browserbase QC mandate (§3.1, §4, §9 G13 update, §13.5 cookieless live-page QC pattern). Then bumped v1.2 → v1.3 (2026-04-21) adding G15 (video.load() kills in-flight playback on cache-miss) after Calum bug report — one-line fix deployed to adhd-supplements-guide.js via --force, covers ADHD article + Home v2 ghost via shared asset.
⚠️ Pending content: Splide carousel slots hold placeholder slides — Calum to supply 3 customer videos + 3 medical-professional videos before declaring complete.
Pages that exist in Shopify but are intentionally unpublished — built for review, comparison, or staged promotion. Each ghost page returns 404 publicly until toggled live via its orchestrator script.
| Slug | Type | Store | Built | URL (when published) | QC | Briefing / Config |
|---|---|---|---|---|---|---|
home-v2 GHOST |
page | UK | 2026-04-20 22:35 BST | brainzyme.com/pages/home-v2 (404 while unpublished) | ✅ PASS Browserbase smoke 200, all 5 markers present, noindex confirmed, 49 cards in DOM, customer-video click-to-play OK. Page ID 696813158781. | briefing ↗config/shopify_publish/home-v2.json |
⚠️ Awaiting Calum decision: keep new Splide carousels appended below old PageFly ones (current state) · hide old via CSS · promote ghost to live homepage · or delete. Toggle live for review with python tools/publish_home_v2.py publish; revert with unpublish.
No pages currently in build queue. Add a row when a new port/build kicks off.
| Slug | Type | Markets | Why | Source |
|---|---|---|---|---|
gaba-precursor-education |
page (product-adjacent) | UK + US | Phase 1 #2 — harden product-page section schema. Unblocks 4 paused Wave 2 campaigns (~£50/day). | F:\brainzyme-git\landing-pages\precursor-education.html |
dopamine-guide |
article | UK | Pairs with GABA Precursor for the dopamine/GABA dual-mechanism story. | to be drafted |
brain-fog |
article | UK + US | Total gap — no draft, no spec. UK + US PMax need this. | none |
gut-brain |
article | DE + US | 4 campaigns ~£50/day. Unblocks DE Gut-Hirn (currently policy-blocked). | drafted spec, not built |
perimenopause |
article | UK | Brain fog × menopause cluster. 9 proven headlines already in copy_headline_bank.md. |
copy approved, no LP yet |
Live theme 178073469309 diverges from git-backed unpublished theme 185834471805 on the following Path B paths. Future edits MUST go through local repo + re-run publish script — never via Shopify theme editor.
assets/adhd-supplements-guide.cssassets/adhd-supplements-guide.jssections/adhd-supplements-guide.liquidtemplates/article.adhd-supplements-guide.jsonOpen work: extend tools/shopify_theme_drift_check.py to flag live-theme divergence on paths listed in config/shopify_publish/*.json.
The full on-page audit workstream (headings · meta · schema) has its own dashboard and its own SOP — this tab is just a pointer. Entity graph, FAQ content, gap queue, and live findings all live there.
| Workstream folder | F:/Claude Root/marketing/seo/onpage-audit/ |
| Master SOP | marketing/seo/onpage-audit/SOP.md |
| Entity graph SSoT | marketing/seo/onpage-audit/config/entity_graph.json |
| FAQ content SSoT | marketing/seo/onpage-audit/config/faqs/*-faq.json |
| Change log | marketing/seo/onpage-audit/CHANGELOG.md |
| Session | memory/working-context/session-46-seo-schema-audit.md |
Three reasons this is the right pilot:
F:\brainzyme-git\landing-pages\precursor-education.html (26KB). Full markdown spec at F:\Claude Root\v4.0\landing-pages\precursor-education-en.md (12KB).Full strategy doc: F:\Claude Root\v4.0\shopify-build\v1-firstsync\BUILD_STRATEGY.md
| # | Page | State | Unlocks |
|---|---|---|---|
| 1 (PILOT) | GABA Precursor (UK) | Built + hardened | 4 GABA campaigns |
| 2 | Dopamine Guide (UK) | Built + AMBER cleared | 4 Dopamine campaigns |
| 3 | Perimenopause (UK + US) | COPY GAP — headlines only | 4 campaigns ≈ £83/day. Highest-scoring gap (#1: 82.8). 8,220 searches/mo. |
| 4 | Brain Fog (UK) | TOTAL GAP — no draft, no spec | UK + US PMax. You explicitly flagged this. |
| 5 | Gut-Brain (DE/US) | Drafted spec, not built | 4 campaigns ≈ £50/day. Unblocks DE Gut-Hirn (policy-blocked) |
| 6 | ADHD rebuild (UK) | Live but not Shopify-native | Recovers 76% ROAS Wave 8.2c |
| 7 | DE/FR localisations of GABA + Dopamine | Stubs only | 8 Wave 5 campaigns |
| 8 | DE/FR Ritalin Comparison | Stubs · RED compliance | 2 deployed campaigns · gated on legal |
The published adhd-supplements-guide.html (59KB) uses the right editorial structure (stat cards, myth/fact toggles, interactive symptom checker, NHC claims only) — that's deliberate to win Quality Score on ADHD keywords by reading as a buyer's guide, not a product page. Don't restyle the editorial content.
The actual problem is hosting context. It currently lives on GitHub Pages with its own minimal chrome — no Shopify theme header, no announcement bar, no Judge.me widget, no full footer.
Fix: rebuild as a Liquid blog page in the Shopify theme so it inherits the global chrome (header / nav / footer / Judge.me) and lives at brainzyme.com/blogs/.... Same editorial content, but visually part of the site. This becomes the template for every blog-style LP after this (Brain Fog spec, Perimenopause editorial framing).
Originally I had Clarity install as a Phase 5 prerequisite. That was wrong. The whole optimisation loop depends on a before/after comparison — if we don't have heatmap data on the existing PageFly pages BEFORE we replace them, we can't measure whether the native Liquid replicas are improving things.
Two reasons to install today:
It's a 3-line snippet in theme.liquid <head>. Free tool. The Setup tab has the install path.
v4.0/landing-page-build-plan.md lines 477–482.v4.0/go-live-rundown.md lines 127–131. Q5 = video testimonials (0/67 pages have video — largest LP gap per audit).Was at F:\Claude Root\marketing\shopify\v1-firstsync\. Now at F:\Claude Root\v4.0\shopify-build\v1-firstsync\.
Reason: every strategic decision sources from v4.0 — landing-page-build-plan.md, go-live-rundown.md, landing-page-audit.md, landing-pages/*.md drafts. The Sonnet agent that produced the priority queue read 1,800+ lines from v4.0. Splitting "strategy" (v4.0) from "implementation" (marketing/shopify) put friction on every decision cycle. Co-location removes that.
Updated: session-38 working folder pointer, marketing/CLAUDE.md, v4.0/landing-page-build-plan.md now points to BUILD_STRATEGY.md.
~/.claude/settings.json → "model": "claude-opus-4-7". Already done in session 37.
claude mcp add --transport stdio shopify-dev-mcp -- npx -y @shopify/dev-mcp@latest · Registered in .claude.json. Activates on next Claude Code restart; /mcp post-restart confirms connection.
tools/shopify_*.py) hitting the Shopify Admin API directly. UK + US tokens live in .env. Refresh via tools/shopify_get_token.py.
benjaminsehl/liquid-skills ENABLED — 3 skills: shopify-liquid-themes, liquid-theme-standards, liquid-theme-a11y. Install: claude plugin marketplace add benjaminsehl/liquid-skills → claude plugin install shopify-theme-skills@shopify-liquid-theme-skills. Layer 3b dylanreed/shopify-theme-design SKIPPED — repo lacks .claude-plugin/marketplace.json so not installable as a Claude Code plugin (manifest.json is for a different format). Layer 3c davila7/shopify-development not yet installed.
anthropics/skills marketplace, plugin example-skills (16 skills bundled: frontend-design, theme-factory, brand-guidelines, canvas-design, algorithmic-art, web-artifacts-builder, webapp-testing, mcp-builder, skill-creator, slack-gif-creator, internal-comms, doc-coauthoring, claude-api, plus xlsx/docx/pptx/pdf). Two more plugins available in same marketplace if needed: document-skills, claude-api. Pushes design output away from generic AI aesthetics.
npx @microsoft/clarity-mcp-server --clarity_api_token=... · Hard limit: 10 req/day, 3-day window, 3 dimensions/request
theme.liquid <head> on the live theme so heatmap data accumulates on the existing PageFly pages. Without ~2 weeks of baseline, the optimisation loop has no before/after comparison. Needs: Calum's Clarity project ID, then theme push under CEP protocol.
marketing/shopify/ (homepage briefs v1+v2, elite-page changes, carousel analysis, compare-formulas JSX) → one canonical brief in v1-firstsync/
themes/, migration/{audits,previews,screenshots,source-html}/, clarity-insights/, variants/, cron-decisions/, DECISIONS.md, BRAND_SYSTEM.md, HYPOTHESIS_REGISTER.md
shopify theme list → shopify theme pull --live into themes/brainzyme-current/ → init git, commit baseline
1000965407101 published. Smoke test 200 OK, 546KB, all 5 custom markers present. Wave 8.2c-v2 (campaign 11666978147 URL swap + £12 → £60+/day) unblocked. Reusable script: tools/shopify_copy_adhd_to_live.py.1000965407101 on blog neurodiversity-tips (116589232509) with template_suffix adhd-supplements-guide, published=false. 4 files live on unpublished theme brainzyme-theme-uk/main (id 185834471805): template JSON, section Liquid (45.5KB), CSS (49.3KB post-fix), JS (59.8KB). Agent 4 QC PASSED on chrome inheritance, daily timeline, NHS lookup planner (3 regions tested), formula recommender (ELITE quiz path → £47 cart link with WELCOME10), all 6 sampled cart permalinks, no console errors, no Liquid leakage. One blocker fixed by Agent 5 (commit 14cc06f): toggleAccordion never added .open class + 200px max-height clipped 236px content. Be Yours uses BEM .accordion__content so no theme cascade conflict. Cutover decision pending: (A) publish theme, (B) file-copy to live, (C) preview-test-first. Wave 8.2c-v2 (campaign 11666978147 URL swap + £12 → £60+/day) gated on this. Steps 1-1 through 1-11 below were the original plan; actual execution compressed Recon/Replica/Visual-Diff steps into one direct port (source HTML → Liquid section, no static replica intermediate). See v4.0/deployment-log.md 2026-04-19 night (late).
F:\brainzyme-git\landing-pages\adhd-supplements-guide.html (59KB). Compliance + structural notes: memory/project_adhd_blog_landing_page.md. Decided 2026-04-19 (see Action Centre Decision 2).
migration/audits/adhd-supplements-guide.md.
migration/screenshots/[slug]/baseline-{w}.png
migration/previews/[slug]/. No Liquid yet — pure HTML/CSS/JS.
sections/[slug].liquid + templates/page.[slug].json. Every editable value through {% schema %}. BEM CSS, Web Components for interactive bits, no jQuery.
shopify theme push --theme-id [dev] — NEVER --live. Confirm preview URL works.
v1-firstsync/HYPOTHESIS_REGISTER.md. Each row: page, element, current state, proposed change, predicted KPI movement, source (Clarity/intuition/copy test).
sections/[slug].liquid → sections/[slug]-v2.liquid, apply targeted change, regenerate schema.
HYPOTHESIS_REGISTER.md next to the hypothesis.
HYPOTHESIS_REGISTER.md.
tools/shopify_ab_decision_cron.py: pulls Shopify A/B test results + GA4 deltas, computes significance, writes v1-firstsync/cron-decisions/YYYY-MM-DD.json
v1-firstsync/CRON_RULES.md.
feedback_cron_via_claude_desktop.md: Task Scheduler for direct-API scripts (Claude Desktop scheduled tasks have 4 blocking bugs).
git add cron-decisions/ && commit && push. Dashboard fetches latest JSON on load.
clarity-insights/raw/YYYY-MM-DD/
clarity-insights/YYYY-MM-DD-week.md: drop-off zones, rage clicks, dead clicks, scroll cliffs, mobile/desktop divergence.
HYPOTHESIS_REGISTER.md.
shopify theme push (CEP), Clarity 10/day budget, hypothesis ranking, anything Calum-facing.