Skip to main content

Case study · Retail & Wholesale

Two storefronts, one Shopify codebase, for a Canadian soccer retailer.

A wholesale arm running on spreadsheets, email and a legacy POS export, and a retail site due for a rebuild at the same time. We put both on one Shopify Plus codebase: club-only pricing and net terms for the trade, a squad order flow that gets the sizes and the discount right, and a bilingual retail theme.

Client
Canadian soccer retailer(anon.)
Industry
Retail & Wholesale
Duration
Two storefronts, phased
Team
Senior pod, ATLAS + CANVAS

The challenge

What stood in the way.

The retailer's wholesale business ran on spreadsheets, email and a legacy point-of-sale export. Every amateur club wanted its own prices and product photos, and a coach needed to order twenty-five jerseys in mixed sizes with the right names and numbers on the back. The retail site was due a rebuild at the same time, on the same budget cycle.

  • Per-club pricing and imagery with no system to hold it
  • Squad orders spanning sizes, names and numbers, taken by hand
  • A retail theme rebuild competing for the same delivery window
  • Bilingual requirement across both storefronts

Our approach

How we framed it.

One codebase, two audiences. Shopify Plus B2B gave the wholesale side companies, locations, catalogs and net terms without a custom commerce engine; Shopify Functions handled the pricing logic a squad order needs; admin and checkout extensions kept staff inside the tools they already used.

The retail rebuild was scoped as a theme project on Shopify Horizon so it could ship on its own track, sharing product data and structured-data markup with the B2B store rather than a separate stack.

The solution

What we built.

  • Branded team store per club with club-only pricing and net terms
  • Team order flow: roster upload, jersey customiser for name and number
  • Pricing function that pools sizes so a squad order earns the right discount
  • Admin app for staff to onboard a club and print production sheets, no developer needed
  • Cloudflare Worker routing club subdomains to the right store
  • Retail theme rebuilt on Shopify Horizon, bilingual, with structured data

Quality was automated from the start: Playwright end-to-end tests across both storefronts, with Lighthouse and axe audits in the pipeline so performance and accessibility regressions were caught before a theme change shipped.

Results

What changed.

Twenty-two clubs are onboarded on their own team stores, 1,800 products were migrated into the shared catalog, and both storefronts meet WCAG 2.1 AA. Staff run club onboarding and production sheets themselves.

Stack

Tools used in production.

  • Shopify Plus
  • Shopify B2B
  • Shopify Functions
  • Horizon theme
  • Liquid
  • Node.js
  • GitHub Actions
  • Cloudflare Workers
  • Playwright
  • Lighthouse
  • axe

Talk to us

Have a similar problem? Bring it to a senior engineer.

A senior engineer plus the relevant department lead joins the first call. No discovery gauntlet, no junior reps.