Case studies/A uniform store where embroidery is part of the product, not an add-on
Retail & uniformsWooCommerceCatalog automationCustom embroidery

A uniform store where embroidery is part of the product, not an add-on

Jackie's WorkStyles

A WooCommerce storefront for Jackie's WorkStyles, a South Carolina uniform retailer, that turns multi-brand supplier data into a clean catalog of more than two thousand variants and sells in-house embroidery as a priced, trackable choice on every garment.

2,062 colour and size variants imported from supplier data

Explore the architecture
Industry
Healthcare and professional uniforms
Market
South Carolina, US
Platform
WooCommerce, WordPress
Catalog
104 styles, 2,062 variants
01 / THE CHALLENGE

The storefront was the visible part. The catalog was the real work.

Jackie's WorkStyles sells quality scrubs and workwear, finished in-house with embroidery and checked before they ship. Getting that onto the web meant solving six problems a theme alone could not.

01

Supplier data, many shapes

Each brand delivered products and photography in its own folder and naming conventions.

02

Thousands of variants

Every style multiplies by colour and size, far too many to build by hand in the admin.

03

Embroidery is the product

Logo and name stitching, in chosen positions, had to be priced and carried into the order.

04

Filters that quietly failed

Picking two colours on a category page fell back to no colour filter at all.

05

Two audiences, one catalog

Men's and women's ranges share categories, so shoppers kept landing on mixed results.

06

Style, not clinical

The brand promise is a uniform that looks good, so the store had to feel like fashion retail.

02 / ARCHITECTURE

Architecture

A thin custom layer on WooCommerce, each decision answering one thing the platform could not do for this business out of the box.

Decision 01

Supplier product data and photography arrived in each brand's own conventions, and the catalog ran to thousands of variants.

Build the import into a site plugin as a command-line tool. The SKU folder is the join key, the image filename is the colour, and a mapping table absorbs each supplier's spelling variants, so the data drop never needs hand-editing.

An audit command runs first and reports every unmatched image and every colourway without photography before anything is written. Imports match by SKU, update in place and never delete, so re-running a finished import changes nothing.

Supplier product data and photography arrived in each brand's own conventions, and the catalog ran to thousands of variants. A supplier data drop goes through an audit run, then SKU and colour matching. The idempotent import creates WooCommerce variable products and a colour-mapped image gallery. Supplier data drop Audit run SKU and colour matching Idempotent import WooCommerce variable products Colour mapped image gallery
Supplier product data and photography arrived in each brand's own conventions, and the catalog ran to thousands of variants. A supplier data drop goes through an audit run, then SKU and colour matching. The idempotent import creates WooCommerce variable products and a colour-mapped image gallery. Supplier data drop Audit run SKU and colour matching Idempotent import WooCommerce variable products Colour mapped image gallery

Architecture Narrative

A supplier data drop goes through an audit run, then SKU and colour matching. The idempotent import creates WooCommerce variable products and a colour-mapped image gallery.

Embroidery is what sets the business apart, and an add-on field would not carry a clean price and SKU into each order. Each colour and size variant branches into an embroidery choice: none, logo by position, name by position, or name and logo. Every stitched option becomes a priced variant with its own SKU. Colour and size variant Embroidery choice No embroidery Logo by position Name by position Name and logo Priced variant with its own SKU
Embroidery is what sets the business apart, and an add-on field would not carry a clean price and SKU into each order. Each colour and size variant branches into an embroidery choice: none, logo by position, name by position, or name and logo. Every stitched option becomes a priced variant with its own SKU. Colour and size variant Embroidery choice No embroidery Logo by position Priced variant with its own SKU Name by position Name and logo

Architecture Narrative

Each colour and size variant branches into an embroidery choice: none, logo by position, name by position, or name and logo. Every stitched option becomes a priced variant with its own SKU.

Decision 02

Embroidery is what sets the business apart, and an add-on field would not carry a clean price and SKU into each order.

Model embroidery as three store-wide attributes, embroidery type, logo position and name position, with a real, priced variation for every combination. Each one gets a predictable SKU suffix, so production staff can read exactly what to stitch, and where, straight from the order.

The original colour and size variations stay in place as a fallback while a shopper is still choosing a position, so the product page never shows a dead end.

Decision 03

Category pages built with the page builder dropped multi-colour filters, and shared categories mixed men's and women's ranges.

Category pages built with the page builder dropped multi-colour filters, and shared categories mixed men's and women's ranges. A shopper on the Women page follows a category link tagged with their gender to a shared category page. That page and the shopper's colour filter selections pass through a product query fix, which returns scoped, filtered results. Shopper on Women page Category link tagged with gender Shared category page Colour filter selections Product query fix Scoped filtered results
Category pages built with the page builder dropped multi-colour filters, and shared categories mixed men's and women's ranges. A shopper on the Women page follows a category link tagged with their gender to a shared category page. That page and the shopper's colour filter selections pass through a product query fix, which returns scoped, filtered results. Shopper on Women page Category link tagged with gender Shared category page Product query fix Scoped filtered results Colour filter selections

Architecture Narrative

A shopper on the Women page follows a category link tagged with their gender to a shared category page. That page and the shopper's colour filter selections pass through a product query fix, which returns scoped, filtered results.

Re-apply the shopper's chosen filters to the page builder's product grid, honouring each filter's and/or setting, and only when the store's own query has not already done so, so nothing is ever filtered twice.

Carry the Men or Women scope into every category link on those pages, including banner tiles with hard-coded links, so a shopper who starts on Women stays in women's scrubs all the way down.

Decision 04

The store needed a repeatable way to ship changes without anyone copying files onto a live server.

Package the custom theme, plugin and product data into a Docker image on every merge, tagged with its commit so every release is traceable. Production pulls and restarts it, and the deploy fails loudly with logs if the site does not come back.

Store-managed plugins, uploads and orders live on persistent storage outside the image, so a code release never overwrites what the team changes in the admin.

The store needed a repeatable way to ship changes without anyone copying files onto a live server. A merge to main triggers a GitHub Actions build that publishes a versioned image to the registry. Production pulls and restarts it, then a health check either confirms the site is live or fails loudly with logs. Merge to main GitHub Actions build Versioned image in registry Production pull and restart Health check Live or fail loudly with logs

Architecture Narrative

A merge to main triggers a GitHub Actions build that publishes a versioned image to the registry. Production pulls and restarts it, then a health check either confirms the site is live or fails loudly with logs.

03 / EXECUTION

Shopping that feels like fashion retail, operations that run on data.

Shoppers browse by fit, colour and role. The team behind the store works from clean product data and orders that say exactly what to stitch.

FOR SHOPPERS

A storefront built around how people buy uniforms

Scrubs by fit and colour, a find-your-fit-by-role path for nursing, veterinary, dental and more, colour swatches on every style, and in-store fittings bookable at both locations.

  • Browsefit, colour and role
  • Personaliselogo and name embroidery
  • Try onfittings at two stores
FOR THE STORE TEAM

A catalog that maintains itself

New supplier ranges arrive as a data drop, are audited for gaps, then imported with images, colours and embroidery options in place. Team and bulk orders route to a quote request.

  • Importsaudited, repeatable
  • Ordersstitch spec per line
  • Bulkquote-led team pricing
04 / OUTCOMES

What the store makes possible.

Stitched

Embroidery is sold, not requested

Logo and name options carry their price and position straight into the order.

Imported

Thousands of variants without manual entry

More than two thousand colour and size variants come from supplier data, with photography matched by colour.

Routine

New ranges land in an afternoon

Every import is audited first and safe to re-run, so adding a range is routine work.

Findable

Shoppers reach the right uniform faster

Colour filters combine correctly and gender scope follows the shopper through the catalog.

Local

Online browsing feeds the stores

Fittings at the Columbia and Florence stores are booked from the homepage.

Tracked

Every change has a clear path to live

Merges build, deploy and health-check automatically, with each release traceable to its commit.

05 / STACK

Proven commerce, built for the catalog it carries.

An established open-source commerce platform, extended only where the business needed it.

Commerce

Catalog, checkout and order management.

  • WooCommerce
  • WordPress
  • PHP 8.3
  • MySQL 8

Storefront

Fashion-led design with a lightweight custom layer.

  • WoodMart
  • Elementor
  • Custom theme
  • Colour swatches

Payments and growth

Checkout options and measurement from day one.

  • Stripe
  • PayPal
  • Google Tag Manager
  • Yoast SEO

Delivery

Automated imports and releases.

  • WP-CLI
  • Docker
  • GitHub Actions
  • GitHub Container Registry
Next

Selling products that are customised before they ship?

Personalisation, multi-supplier catalogs and data-driven imports can run on WooCommerce, Shopify or Magento without turning every new range into a manual project.