Case study · Beauty & wellness

One catalogue, two price worlds

Onyx Lashes supplies lash and brow professionals in Switzerland and Liechtenstein and sells to private customers as well. We rebuilt the established shop on WordPress and WooCommerce: one catalogue in German, French and Italian, with net prices for verified businesses and gross prices for everyone else.

Startseite von onyx-lashes.ch mit Hero-Slider
Client
Onyx Lashes
Industry
Beauty & wellness
Services
Design · Development · SEO & GEO · Support
Duration
15 weeks to launch, then support

The brief

A supplier for professionals, open to private customers

Onyx Lashes is a Swiss beauty brand based in St. Gallen, focused on products and training for lash extensions. The shop carries three brands — BL Lashes, its own Onyx Lashes line and L’Avely — across lash extensions, lash and brow lifting, tools, accessories, skin care and marketing material.

The rebuild had to turn the established shop into one catalogue for two audiences: verified businesses buy at net prices, private customers at gross prices — in three languages, with the order history, customer accounts and old product addresses carried over.

Deliverables
Shop · B2B pricing · Trade verification
Platform
WordPress · Blocksy · WooCommerce · Polylang Pro
Languages
German · French · Italian (CH)
Content
144 products per language · 37 categories · 3 brands
Engagement
Build, launch and ongoing support
Markets
Switzerland · Liechtenstein

The challenge

Two price worlds, one shop

Businesses and private customers buy the same lashes, but not at the same price. Trade prices stay hidden until a business is verified, and the price mode reaches filters, sale category, page cache and orders.

The lash range adds depth: length, curl and thickness create up to 98 variations on a single product, and every page had to stay cacheable.

  • Verified, not self-declared

    Every product and variation carries a net price for businesses. It unlocks only after a check against the Swiss federal UID register.

  • Three languages, two countries

    German, French and Italian for products, categories, attributes, forms and menus — with delivery to Switzerland and Liechtenstein and pickup in St. Gallen or Gamprin.

  • An established shop, carried over

    Order history and customer accounts going back to 2016 moved to the new shop, and 195 old addresses redirect to the matching new pages.

Behind the build

One team, 15 weeks from first commit to launch

A shop with two price worlds touches every discipline. One in-house team carried it from the first commit in April to the go-live switch in July — planning, design, B2B code, content in three languages, SEO, security and support — with one project lead as the client’s contact.

Weeks 1–21

  1. Brief, Weeks 1–2
  2. Design, Weeks 3–7
  3. Build, Weeks 8–13
  4. Launch, Weeks 14–15
  5. Grow, Weeks 16–21
  • Management

    • Planning, PR reviews and the go-live switch, Weeks 1–15
  • Design

    • Palette, layouts, widgets, Weeks 3–8
  • Development

    • Theme, blocks, B2B pricing, Weeks 8–11
    • Final sprint, Weeks 14–15
  • Content

    • Products, solutions, blog — DE/FR/IT, Weeks 9–14
  • SEO

    • Yoast set-up, Weeks 11–12
    • hreflang, schema, Weeks 14–16
  • Cybersecurity

    • Security set-up, Weeks 11–12
  • Support

    • Support, Week 16 – ongoing

What we built

Five systems, one shop for two audiences

Price switch

Business or private, one click apart

A toggle in the header switches the whole shop between gross consumer prices and net trade prices. The page cache respects the choice, and the price filter, the sale category and the order labels follow the active mode.

  • “Gewerbe / Privat” toggle in the header
  • Net and sale prices for every variation
  • Orders labelled B2B or B2C in the admin
Produktseite im Modus «Gewerbe» mit Nettopreis exkl. MwSt. auf onyx-lashes.ch

Product configurator

Lashes chosen by length, curl and thickness

The lash range lives in variations — up to 98 on a single product. Customers pick length, curl and thickness as buttons, every variation has its own trade price, and search engines receive the whole set as a product group with variants.

  • Length, curl and thickness as buttons
  • Trade price on every variation
  • ProductGroup schema with all variants
Produktseite mit Auswahl von Länge, Curl und Dicke auf onyx-lashes.ch

Shop landing

A shop page built from blocks

Instead of a bare product list, the shop opens with category tiles and their icons, followed by bestsellers, a call to action, a sale section and shop questions — all assembled from the shop’s own Gutenberg blocks.

  • Category tiles with SVG icons
  • Bestseller and sale sections
  • Shop FAQ with FAQ markup
Shop-Startseite mit Kategorie-Kacheln und Icons auf onyx-lashes.ch

Solutions

A page for every kind of buyer

Five solution pages speak to lash stylists, salons and studios, private customers, buyers looking for a Swiss supplier and customers in Liechtenstein. They are built from four dedicated solution blocks and published in all three languages.

  • Five audiences, one page each
  • Zigzag, text-image and callout blocks
  • Linked from the home page
Übersicht der Lösungsseiten für fünf Zielgruppen auf onyx-lashes.ch

Three languages

German, French and Italian, properly linked

Products, categories, attributes, forms and menus run in de-CH, fr-CH and it-CH. A custom hreflang module links the language versions, including paged archives, and a small guard keeps the currency position right in the translated shop.

  • Language switcher in the header
  • hreflang with x-default on every archive page
  • Contact and newsletter forms in each language
Französische Startseite mit geöffnetem Sprachwechsler DE, FR, IT auf onyx-lashes.ch

Start a project

Let’s build your next platform

Tell us what you sell and who you sell to. We come back with a clear scope, a realistic timeline and an estimate — and one team that owns the whole thing from the first call to launch.

Inside the project

Every step of the work, out in the open

Most agencies show you the finished site. We show you how it got there. Open any discipline to see what the team did and what it handed over.

01 / Project management

One point of contact, the whole way through

Every task got its own branch and pull request — 98 merged across the theme and the block plugin. A merge to main builds the code with GitHub Actions and deploys it by FTP; the go-live itself was a switch of that deploy target.

  • 98

    merged pull requests in two repositories

  • 15

    weeks from first commit to go-live

What we did

  • Branch-per-task workflow with pull requests
  • Build and FTP deploy on every merge to main
  • Go-live by switching the deploy target
  • Workflow notes in the block repository

Handed over Approved scope and requirements → Design

The project in numbers

What sits behind one catalogue

Every figure is counted from the live shop, its code and its database.

  • 3

    languages: de-CH, fr-CH, it-CH

  • 144

    products per language

  • 37

    product categories per language

  • 24

    custom Gutenberg blocks

  • 4

    own plugins, including the B2B Switcher

  • 195

    301 redirects from the old shop

  • 25

    schema types on the home page

  • 98

    merged pull requests

Below the surface

What happens before the price appears

Visitors see a toggle and a price. Behind them sit the checks, rules and redirects that keep two price worlds apart and the old shop’s addresses alive.

  • SEO

    Redirects from the old shop

    195 permanent redirects lead old product, category and brand addresses to the matching pages of the new shop.

  • SEO & GEO

    A store that describes itself

    Organization and store schema with shipping options, a 14-day return policy and 33 knowsAbout topics in four languages.

  • SEO

    hreflang on every page

    Our own hreflang groups with x-default replace the translation plugin’s output, so paged archives stay linked in all three languages too.

  • Development

    UID check at the source

    Business numbers are verified live against the UID register of the Swiss Federal Statistical Office, through its official web service.

  • Development

    A cache that knows the price mode

    The page cache varies on the B2B view cookie, and variation data for up to 120 options is embedded so product pages stay cacheable.

  • Support

    Stock on one screen

    A stock manager shows product and variation stock together, with inline edits and a CSV export for suppliers.

  • Management

    One branch per task

    98 merged pull requests, and every merge to main builds and deploys theme and blocks through GitHub Actions.

  • Cybersecurity

    Safe SVG uploads

    Category icons are SVG files, so uploads are limited to administrators and pass a filter that strips scripts and event handlers.

What you can expect

A platform that keeps earning its place

We build for the things that last — a platform that is clearer to navigate, more credible to every visitor and genuinely easier for your team to run and grow.

  • Easier to choose

    Clear categories, filters and prices let visitors find the right offer themselves instead of writing to ask where to begin.

  • Credible to every visitor

    A site that looks and reads like the quality behind it — for first-time visitors and long-standing customers alike.

  • Effortless to keep current

    Your team updates products, content and news itself — no developer ticket, no waiting in a queue.

  • Built to grow

    New products, categories and languages slot in as the business expands — without a rebuild.

Built on a clear goal

We agree the goals that matter up front and build toward them together — then stay on as a partner after launch to keep the platform sharp as the business grows.

In their words

What the client says

A project is only finished when the people who use it every day would choose it again.

  • Salons and private customers now shop in the same place, each at their own price and in their own language. Trade accounts are checked automatically, and we manage our stock on one screen.

    Onyx Lashes

Working with

  • WooCommerce
  • Blocksy
  • Gutenberg
  • Polylang Pro
  • Payrexx
  • Yoast SEO
  • LiteSpeed
  • Brevo

Start a project

Tell us about your project

We will respond as soon as possible with clear next steps — no obligations.

  • We respond as soon as possible
  • Clear scope, timelines, and estimate
  • Complete confidentiality of your data
Project Request (EN)

By submitting, you agree to the Privacy Policy.