Personal project · three Shopify Plus development stores · 2026

Shopify demo stores

Most of my Shopify work is for clients, so I can't show it in detail. Instead I built three brands from scratch, each answering a different question a growing brand has to get right.

The three demo store names, Fernlowe, Moonrake and Wrenfold, set in their own brand typefaces on bands of linen, midnight navy and rust

Why I built them

Every product is data first and a web page second, and most of an e-commerce job happens after the theme is finished. I wanted to show that side of the work, not just a nice homepage. So I created three brands, each with its own identity, products and photography, and gave each one a different problem to solve. Products, photography and marketing figures are illustrative. The stores, theme code, automations and orders are real.

Fernlowe: product data and compliance

A natural-fibre clothing label, built around the Digital Product Passports that EU textiles rules are expected to require.

  • A passport for every garment. Fibre composition and origin, a five-stage supply chain, CO₂e, water, durability and care, on the product page and on a public passport page with its own QR code for the care label.
  • One record, many outputs. Passports, size guides, the materials library and search markup all read the same metaobjects, so a change of supplier is one edit.
  • Fit and pre-loved. A fit scale and three shared size charts serve every product, and pre-loved items sit in the main catalogue with a graded condition.
  • Clean data. One SKU pattern, a barcode per variant, Shopify's standard taxonomy, and structured data for returns and delivery.

Moonrake: campaigns and conversion

A bedding and sleepwear brand that sells in limited colour drops.

  • Campaigns as data. Each campaign is one record with its dates. The homepage, announcement bar and countdown switch on time by themselves, and a small script keeps cached pages honest.
  • A drop with a waitlist. Before launch, the product page hides Add to cart and collects sign-ups as tagged Shopify customers, ready for an email launch segment.
  • Bigger baskets. A native bundle at 10% off, a curated "Complete the bed" cross-sell, and a free-delivery progress bar.
  • Tested, not guessed. An A/B test in Shopify Rollouts moves the cross-sell higher up the page, measured on average order value with conversion as a guardrail.
  • Selling abroad. UK, EU and US markets with the right tax and duty treatment.

Wrenfold: operations and data

Wool socks, hats and scarves, where a small range quickly becomes dozens of SKUs.

  • One source of truth. A Google Sheet holds every style and checks itself for duplicates, missing customs data and thin margins. A Python loader generates the SKUs and barcodes and refuses to publish a style with a blocking problem.
  • Warehouse reconciliation. A script compares the 3PL's stock export with Shopify and gives every mismatch a reason, an action and a priority.
  • A weekly trading dashboard. Shopify orders joined with GA4, email and paid social, showing conversion, AOV, blended CAC and stock cover, with platform-reported ROAS beside Shopify's own figure and a short list of actions for the week.
  • Shopify Flow. Three live workflows: low-stock alerts, first and repeat customer tags, and a flag for high-value orders.
  • Honest product pages. Live stock for the chosen size and a same-day dispatch countdown in UK time.

How it's built

No paid apps: everything uses Shopify's own features. Each store runs a fork of Shopify Horizon with custom theme blocks and sections, deployed with Shopify CLI from a Git repository, one branch per store. Python scripts load catalogues, campaigns and orders through the Admin GraphQL API, and every write-up explains what each feature does, why it matters to the business, and how it was built.

← All projects