Shopify · Engineering case study

Made-to-Measure Shopify Platform

A body-measurement pattern-fitting system built into a Shopify theme, plus a full email-automation program that replaced every default transactional email with ten custom, on-brand flows.

Role
Shopify theme dev + email automation
Client
AU made-to-measure fashion brand
Platform
Shopify · Liquid (live)
Tools
Liquid, JS, Klaviyo API, Shopify CLI
Live storefront home page: full-bleed hero and stacked collection tiles, brand marks removed
The live storefront, captured from production. The client is shown anonymously: the wordmark is hidden and the collection codes are blurred out.
01Problem

A generic theme can't fit a made-to-measure product.

The brand sells made-to-measure shirts and suits. A customer's fit data (band, cup, height, sleeve, collar, and more) lives in a separate pattern-matching service, not in Shopify. The stock theme had no concept of it: no way to show a customer their saved patterns, edit one, or stop an add-to-cart that had no valid fit data behind it.

The constraint

Every read and write had to go through an external REST API the theme didn't control, inside a pure Liquid + vanilla-JS theme with no build pipeline. No React, no bundler, no shortcuts.

02Goal

Turn a stock theme into a fitting workstation.

The editor had to live inline on the product page, not in a separate app tab, and had to survive real customer behaviour: renaming a pattern, cloning one instead of overwriting it, bailing out mid-edit, and switching between a saved pattern and a fresh fitting without ever showing a broken state.

Live collection grid: product cards with variant swatches and prices, collection codes removed
The production collection grid the fitting flow starts from. Collection codes blurred, the rest is the live theme.
03Editor

An inline pattern editor, wired to an external API.

The flow below is the spine of the feature: a customer gets fitted once, then can reopen, tweak, rename, or clone that pattern straight from the product page.

Get Fitted
Edit Pattern
Save As New
Select Other
Add to Cart
storefront
ShopGet fittedCollectionsAccount
Made to measure.
Fitted, not sized.
fitted in 10 minutes
delivered in 2 weeks
The collection grid a customer lands on, with the fitting entry point sitting on the product itself rather than in a separate flow.
get fitted
ShopGet fittedCollectionsAccount
Fine cotton · Men
Color
Collar
Tuck
get fitted in store
order before 12pm · ship in 2 weeks
The measurement step: values validated as they are entered, so a bad pattern never reaches the cart.
saved patterns
ShopGet fittedCollectionsAccount
Your saved patterns
Fitted 12 Jun
36/C · 172cm · slv 61 · col 39
Fitted 3 Mar (2)
36/C · 172cm · slv 60 · col 39
save as new, never overwrite
A returning customer reopens, renames or clones a saved pattern instead of measuring again.
pattern editor
ShopGet fittedCollectionsAccount
Core twill
in stock
Oxford weave
in stock
Brushed flannel
in stock
Cloning date-stamps a new pattern rather than silently overwriting the original submission.

An illustrated recreation of the editor, not a screenshot. It sits behind a customer login and holds real fit data, so the flow is redrawn rather than captured.

Save As New, not overwrite

Cloning a pattern auto-renames it (date-stamped, with an incrementing suffix) instead of silently overwriting the original submission.

Gender filter that never blocks

Patterns are filtered to the product's gender when a match exists, but fall back to showing everything rather than hiding the editor when the account has none. A stricter version shipped first and was rolled back after it hid the dropdown too aggressively.

04Debugging

The theme bugs were in the small print.

A login redirect bug traced back to three copies of the same broken helper function layered on top of each other in the theme layout, each fighting the others with !important overrides. A "preferred store" menu going blank turned out to be a metafield-only lookup with no fallback, fixed with a local-storage read the profile page was already writing to.

Trust the deployed bytes, not your browser

A font-size change looked stuck at 12px in the browser no matter what shipped. Rather than chase a phantom CSS bug, the fix was verified against a raw pull of the live theme and the CDN asset bytes directly. It was rendering correctly. The browser's local rendering was the outlier, not the deploy.

05Email automation

Ten Klaviyo flows replaced Shopify's defaults.

Order confirmation, shipping, delivery, in-store collection, store pickup ready, password reset, welcome, account activation, and two appointment flows, all rebuilt as dynamic templates mapped to real Shopify order and customer data: line items, addresses, payment method, and per-item variant options like collar and cuff style.

Order Confirmationlive
Shipping Notificationlive
Delivery Confirmationlive
Order Collectedlive
Store Collection Readylive
Welcome Emaillive
Account Activationlive
Password Resetlive
Appointment Confirmationlive
Appointment Reminderlive
06On the phone

Get fitted from a phone, not just a desk.

Most customers start the fitting flow on mobile. The configurator and collection grid both reflow to a single column, with the same add-to-cart gating logic underneath.

Made to measure.
view collection
The collection grid, single column.
your patterns
Fitted 12 Jun
36/C · 172cm · slv 61
Fitted 3 Mar (2)
36/C · 172cm · slv 60
save as new
The configurator, with the same add-to-cart gating.
configure
price
$189
ready
2wk
add to cart
Product detail with the fitting entry point.
07Outcome

Shipped, live, and still evolving.

The fitting editor and all ten email flows are live in production. Every theme push went out behind a full backup and a git tag, so every round of client feedback could ship the same day without risking the storefront. It's an ongoing engagement: new rounds of fixes and refinements still come in and go out the same way.

Next case study
Spotter ELD