Shopify theme · A/B framework

Nine Below

A conversion-optimised Shopify theme for a spirits brand, with experiment assignment, a fail-closed age gate and off-domain checkout instrumentation built into the theme rather than bolted on as an app.

Nine Below is a fictional brand. It exists to exercise the theme against a real-looking identity. No product, company or endorsement here is real, the press quotes are invented and labelled as such, and every image is generated and unbranded.
View the site Paid-social flow

You will meet the age gate first — that is the point of it.

What is actually interesting here

Try the framework

URLWhat it does
?ab=age_gate:bForces the birthdate age gate instead of the one-tap version
?ab=hero_image:bForces the alternate hero image
?ch=ig&ab=bundle_offer:bThe $199.99 bundle offer, which replaces the single-bottle CTA. Needs ch=ig — the experiment only enrols Instagram traffic
?ch=ig&ab=bundle_offer:aThe control for that test — the single bottle at $69.99
?ab=resetClears assignments and re-buckets you
?agegate=resetRe-opens the age gate after you have confirmed
?debug=1Shows the live GA4 event inspector
?flow=focusThe stripped-back view served to paid-social traffic
?ch=igThe Instagram landing — visual-led headline
?ch=ttThe TikTok landing — hook headline, tighter fold
?ch=fbThe Facebook landing — nav kept on desktop

This demo does send analytics. It is wired to a real GA4 property so the funnel can be verified end to end, and page views, age-gate outcomes, experiment exposures and cart events are recorded. Nothing identifies you, and no personal data is collected or requested. If you would rather not be counted, do not proceed past the age gate — nothing is sent until you do.

The cart is a mock. No order can be placed, no payment details are ever requested, and nothing reaches a retailer. Add ?debug=1 to any URL to watch the exact event stream this page produces.

Repository

Standard Shopify theme layout — layout/, sections/, snippets/, config/, assets/. Every experiment, colour and font is a theme setting, so re-skinning means editing settings rather than code. preview/ is a static mirror of the rendered theme so it can be served without a Shopify store.

See the README for the full reference.