Back to case studiesAn online store ready to sell

A premium store that opened on the promised day and sells across the UK

Industry
Premium hair extensions, retail and salon trade
Where
United Kingdom
Built with
EcommerceScripted price loadingCustom partner calculatorProduct catalog
Prices loaded and verified in the catalog, none typed by hand
500+
Variants orderable from day one, every one of them made to order
564
Shipping reach on opening day, with the lead time written where customers pay
Nationwide
Trade prices readable in the source of the public page
0

TrueShades opened its store on the day it had committed to, with the whole catalog orderable, 500+ prices loaded and verified, and shipping across the whole UK.

The trueshades.co.uk homepage: navigation, the headline "Find Your True Shade", the brand copy, and the buttons to shop and to become a partner

The store live, at trueshades.co.uk.

The result

A store that charges what its product is worth, to anyone in the country, from the day it committed to opening.

The hard part of a launch date is not the date. It is that everything has to be right at once on that day: every variant with its price, every price on the right list, every product orderable even with nothing in the warehouse, and a delivery method that accepts a customer living two hundred miles away. That is where we came in.

Where it started

TrueShades is a UK premium hair extensions brand selling two ways at once: to the public at retail, and to partner salons at trade. Two catalogs, two price lists, one site.

They had the part that usually costs the most: a brand, photography, a story of their own, and a date. What was missing was the commercial layer that turns all of it into a store that can actually charge.

What had to be solved before opening

  • Hundreds of variants waiting on their price. Every product, by every length, by every shade range, each one carrying two different prices depending on whether the public or a partner is looking. Those figures lived in two spreadsheets, not in the store.
  • A catalog with no stock that still had to be orderable. The launch was made to order: nothing in stock, everything buyable.
  • No shipping method configured yet. The store could only hand orders over at the premises, so a customer who did not plan to collect in person could not have completed the purchase.
  • A partner calculator that had to live on a public page. The pitch to a salon needs trade numbers, and anyone can open that page.
  • The shade range, scattered across product listings. It did not exist anywhere a customer could read it whole.

What we built

1. Prices go in by script, not by hand

We wired price loading to the store's API and ran it from the client's official lists. 500+ prices written and then verified by reading the store back, rather than trusting that the write worked. Confirmed on opening day: no variant was left without a price, and none below £25.

Three rules we built into that process, and they are the difference between automating and breaking things:

  • Dry run by default. The script writes nothing unless explicitly told to. You can see the entire change before it is applied.
  • A catalog snapshot before every new class of write. There is no undo on that platform. The snapshots are the undo.
  • A safety floor. Shades whose price classification was not yet confirmed were left at their product's highest price, never the lowest. A store survives overcharging for a day and correcting it. Undercharging is never recovered.

2. A calculator for partner salons

The pitch to a salon is not the catalog, it is how much they will make. So we also built a partner calculator, embedded in the site: the salon enters how it works and sees the profit signing up would leave it, monthly and annually.

What is worth telling is what we did with its prices. The calculator needs trade prices to calculate, and the page it lives on is public. Hiding them with styling does not work, because hiding is not removing: they still reach anyone's browser. So the public build does not carry them. It is generated from the same source file and ships only profit per pack, so the number the salon sees is identical without a single real cost travelling to the page.

3. A made-to-order catalog that stays orderable

The platform has no backorder toggle, so the only way a product with no stock stays buyable is to mark every variant as available with no limit. A single forgotten variant shows as sold out, and that sale is gone.

We left all 564 variants in that state, confirmed three separate ways: the inventory API, an independent re-read of the catalog, and the live product page. Plus one note, identical across all ten visible listings, explaining the lead time in the client's own words.

4. Shipping, the piece that decided whether the store could sell beyond its own door

We created two home delivery options, covering the whole country, on flat rates. The platform is explicit on that panel: a country covered by none of your shipping options is not accepted at checkout. Configuring it is what opens the store to the rest of the UK.

The decision that matters: flat rate, not carrier-calculated. The reason is not price, it is text. On a flat rate the option name is what the customer reads at checkout, so the lead time sits written exactly where the customer decides to buy. On carrier-calculated that name is internal and the customer sees the carrier's own service name. Same rate, but with no way to state the lead time at the precise moment it needs stating.

5. A shade chart people can actually use

We built the full shade range as a reference page: every shade with its code, its name and which methods carry it, ordered dark to light. It is generated from the live catalog, so it cannot drift away from what the store actually sells.

It covers 28 of the 35 shades on sale. The seven missing ones have no photograph yet, so the chart omits them rather than showing blank tiles. When the photos arrive, it regenerates itself.

Decisions worth understanding

DecisionRejected alternativeReason
Generate a public build with no pricesHide the prices with stylingHiding is not removing. The data still reaches anyone's browser
Load prices by script against the APIManual entry or spreadsheet importHundreds of variants with two prices each. By hand it is a guaranteed error, and spreadsheet import is unreliable on variants
Highest price on unclassified shadesLowest price while it was being confirmedOvercharging can be corrected the next day. Undercharging cannot
Flat shipping rateCarrier-calculated rateOnly a flat rate lets the customer read the lead time at checkout
One payment method across both storesTwo separate sites to split the methodsThe platform names one processor per site. Splitting it meant a second subscription and entering every product and every price twice
The calculator lives inside the client's siteThe calculator served from our hostingA published site should not depend on a deployment of ours staying up

What we did not measure

This matters as much as the rest.

We have no sales figures to report. The store opened a week ago and its whole catalog is made to order, so any revenue number here would be a promise dressed up as data.

What is checkable, and checkable today, is the state of the store: 564 orderable variants, every price loaded and verified by reading the store back, nationwide shipping with the lead time visible at checkout, and no trade price travelling to a public page.

We also did not measure what closing that last exposure is worth. You cannot: it is a risk that stopped existing, not a number that goes up.

Where it stands

  • Store open on the committed date, taking orders, at trueshades.co.uk.
  • 564 orderable variants, every one of them priced.
  • Two live price lists: retail to the public, trade to partners.
  • Partner calculator embedded, reviewed and signed off by the client.
  • Nationwide shipping configured, with the lead time visible at checkout.
  • Shade chart built and published.
  • Payments connected, including pay-later.

Deliberate open items, left by decision and not by oversight: the split between stocked and made-to-order products once the first production run lands, removing in-store collection once a real end-to-end order has been tested, and the free search listing, which is the highest-value visibility item the business still has outstanding.

What of this transfers to another business

If you sell online, there are three questions from this case you can answer about your own store today:

  1. How long would it take you to change the price of your entire catalog? If the answer is an afternoon of manual work, your store gets updated when someone has time, not when it should be.
  2. Can someone who does not live in your town buy from you? A store without the right shipping option rejects the purchase at the last step, silently.
  3. Which prices reach the browser of a visitor who should not see them? If you have trade, partner or cost prices on a public page, hiding them with styling does not take them off it.

Published with TrueShades' permission.

Every week you wait leaves money on the table.

In 30 minutes I'll show you what to automate first, what it costs, and when it pays back. Free.