E-commerce Platform & Mobile App Case 15

Ogledalce

We designed and built Ogledalce a custom WooCommerce shop and mobile app that sell 668 professional haircare products the way the salon on Baščaršija advises: by what your hair needs, as a complete routine, with the hairdressers one call away.

ClientOgledalce
IndustryBeauty · Professional Haircare & Salon
Timeline2 months
Last updated2026-10-27
AuthorKonzept team
TeamFedjaAlenAdnanAzra

We gave Ogledalce a custom e-commerce platform from the front end to the back end. A bespoke Sage theme on WooCommerce presents twelve professional brands and twelve hair needs, a routine builder sells shampoo, conditioner and mask as one decision, and the salon itself, with its team, appointments and Ogledalce Cafe videos, sits inside the shop rather than beside it. Underneath, we built a custom Monri card-payment integration that is ready to switch on, and we built the Ogledalce mobile app for iOS and Android.

Live site · viewport
ogledalce.ba
Ogledalce homepage with the professional brands from the salon
01 / 03

The Challenge

Ogledalce is a hair salon on Gazihusrev begova in Sarajevo's Baščaršija, run by Elma Hadžifejzović after more than 25 years behind the chair. The salon works with Kérastase, L'Oréal Professionnel, Keune, Davines and eight other professional brands, and its clients trust it because every product comes with advice: what your hair needs, what to use with it and what to stop using.

Online, that advice disappeared. A professional haircare catalogue is a wall of near-identical bottles, and most people do not know the difference between a Blond Absolu bain and a Blonde Savior shampoo. They know they have coloured hair, dandruff or curls that will not hold. A shop that is organised only by brand and product type asks the customer to already be an expert, and sends everyone else back to the phone or out of the shop.

The brief: build a shop that sells like the salon advises. Let people start from their hair, not from a brand. Sell routines, not single bottles. Keep the salon team visible and reachable. Make delivery and payment rules clear for customers who pay cash on delivery, and get card payments ready for when the salon wants them.

02 / 03

The Approach

We started from the conversation at the salon chair. A client says what is wrong with her hair, the hairdresser names a line, and the client leaves with the shampoo, the conditioner and the mask that belong together. We rebuilt the shop around that conversation: start from the hair, show the routine, make the free-delivery threshold and the payment terms obvious, and keep the people who give the advice one tap away.

01

Shop by Hair Need

We put "Šta je potrebno Vašoj kosi?" at the centre of the shop. Twelve hair needs, from coloured and damaged hair to dandruff, hair loss and sensitive scalp, each lead to a filtered range across every brand. 459 products carry a need tag and a hair-type attribute, so a customer who knows only that her hair is dry gets the right shortlist, and every product card shows the need it serves before it shows the price.

02

Routines in One Click

Professional haircare works as a system, so we sell it as one. For each Keune line the homepage shows the shampoo, conditioner and mask together, the total price, how far the routine is from free delivery and one button that adds all three to the cart. When one product is out of stock, the builder says so, offers a similar product and changes the button to add only the products that are available. The customer never meets a dead end.

03

The Salon in the Shop

The salon is the reason to trust the shop, so we brought it in. The salon page names the whole team, takes appointment requests that the salon confirms by phone or Viber, and plays the Ogledalce Cafe video series. Advice blocks such as "Savjet iz salona" sit next to the products they explain, and every help page ends with the same offer: ask a hairdresser.

04

Payments Ready for Cards

Ogledalce customers pay cash on delivery today, and the checkout makes that simple: guest checkout, no account, the delivery cost and the 200 KM free-delivery threshold shown before confirmation. Underneath, we built a custom Monri WebPay integration for card payments. It is complete and switched off, so the salon can start taking cards when it decides, without a second project.

05

One Range, Web and App

Ogledalce also sells through its own iOS and Android app. We built the app alongside the web shop, so loyal clients can reorder their routine from the phone, and the footer of every page links to both stores. The app holds a 4.96 rating from 28 reviews on the App Store.

06

Custom, Not Themed

We built the shop as a custom Sage theme on a Roots Bedrock install of WordPress and WooCommerce, with a Vite build, self-hosted Inter Tight and no page-builder or front-end plugin stack. Brand, need, category and hair-type taxonomies drive every listing. Consent for analytics and marketing is off until the customer says yes, and delivery, returns and payment rules are written in plain Bosnian with the consumer-law references they need.

01 / Catalogue

Start from the hair, not the brand

Professional haircare has a naming problem. Kérastase sells Blond Absolu, Keune sells Blonde Savior, L'Oréal Professionnel sells Serie Expert, and each line has a shampoo, a bain, a masque and an elixir. For a hairdresser that is a clear map. For a customer at home it is a wall of white bottles with French names.

So we did not build the catalogue around brands. We built it around the question the salon asks first: what does your hair need? The shop opens with twelve needs, from coloured, damaged and dry hair to curls, volume, hair loss, dandruff, oily hair and sensitive scalp. Each need leads to one listing that crosses every brand, with 459 products tagged and filtered by hair type.

The need comes before the price

Every product card names the need it serves above the product name. A customer scrolling a Keune listing sees "Farbana kosa" or "Volumen" before she sees 45,00 KM, so she can rule products in or out without opening each one. Brand pages still exist for the customers who already know their line, with product counts on the brands index, so loyal Kérastase clients reach all 132 products in one step.

The decision: one taxonomy, many doors

We modelled brand, category, need and hair type as separate WooCommerce taxonomies instead of mixing them into one menu. The salon tags a product once, and it appears in the right brand page, the right need listing, the right category and the right filters. Adding a thirteenth brand or a new need is content work, not a redesign.

  • 12 brands, 668 products, each with a need and a hair type
  • Search for products and brands from every page
  • A "Proizvodi do 45 KM" rail for small additions to an order
Ogledalce hair-need index with twelve needs and product counts
Coloured-hair listing with filters on mobile
02 / Routines

Sell the routine, not the bottle

In the salon nobody leaves with a single shampoo. The hairdresser recommends a line, and the line has three steps: shampoo, conditioner, mask. Online, most shops sell those three products as three separate decisions, and the customer usually makes only the first one.

We built a routine builder for the homepage. For each Keune line, Color Brillianz, Vital Nutrition, Blonde Savior and Confident Curl, it shows the three products side by side with their prices, the total for the routine and one button: add all three to the cart.

Free delivery as part of the routine

Delivery is free from 200 KM, and the builder says how far each routine is from that line: "Još 49,00 KM do besplatne dostave." The same message follows the customer into product sets and the cart. It turns the threshold from a rule in the terms into a reason to complete the routine.

The decision: no dead ends

Stock in a salon shop changes every week. When a product in a routine is out of stock, the builder does not hide the routine or let the customer add an item that will never ship. It marks the product "Nema na stanju", offers similar products and changes the button to "Dodajte 2 dostupna proizvoda u korpu". The customer still leaves with a complete answer.

The same idea runs through the product sets from L'Oréal Professionnel and the heat-protection block, which pairs the salon's advice to protect hair before blow-drying with the two products that do it.

Keune routine builder with shampoo, conditioner, mask and total
Routine builder with free-delivery progress on mobile
03 / Salon

The salon stays in the room

Ogledalce sells professional products that customers can find elsewhere. What they cannot find elsewhere is Elma Hadžifejzović and her team. The shop had to carry that difference, so we gave the salon its own place inside the shop instead of a separate brochure site.

The salon page opens with Elma's line, "Samo zdrava kosa je lijepa kosa!", names every member of the team and their role, and takes appointment requests. The salon confirms each request by phone or Viber, which is how its clients already book.

Advice next to the product

Across the shop, short blocks titled "Savjet iz salona" explain one step of care and link to the products for it. The FAQ, delivery and returns pages end with the same offer: if you are not sure, ask a hairdresser, with the salon number. The blog carries Elma's column and salon news, and the Ogledalce Cafe video series plays on the salon page.

The team also answers product questions from the online shop. A customer who writes "Ne znam koji je proizvod za moju kosu" gets an answer from a hairdresser who sees hair like hers every day, not from a script. That is the service the salon has sold for 25 years, and now it reaches customers outside Sarajevo.

The decision: two phone numbers

A salon and a shop get different calls. We gave them different numbers everywhere they appear: one for the salon and appointments, one for online orders. A customer with a delivery question does not interrupt a hairdresser mid-colour, and a client who wants advice reaches the person who can give it.

  • Appointment request with phone or Viber confirmation
  • Named team, hours and directions to Baščaršija
  • "Pismo iz salona" newsletter with explicit consent
Ogledalce salon page with Elma's quote, team and appointment request
Salon hours, address and appointment button on mobile
04 / Checkout

Cash today, cards when the salon is ready

Ogledalce customers pay cash to the courier. A haircare customer ordering a 151 KM routine wants to know three things before she confirms: what delivery costs, when the package arrives and how she pays. We made the checkout answer all three without a single click away.

Checkout works without an account. The cart shows the delivery cost, 7,00 KM or free from 200 KM, before confirmation. The delivery page states the courier, same-day dispatch for orders before 14:00 and 1–2 days delivery. Confirmation arrives by e-mail.

We also kept the order path short. The customer picks products, checks the cart, enters a delivery address and an e-mail, and confirms with one button. There is no forced registration, and the delivery cost is on screen before the last step.

A custom Monri integration, built and waiting

We built a custom Monri WebPay integration for Ogledalce card payments, written for this shop rather than taken from a generic plugin. It is complete and switched off. When the salon decides to accept cards, it turns the method on; no new development, no new checkout and no change to how orders reach the team.

The decision: plain rules, written once

We rewrote delivery, payment, returns and terms as short, plain pages with the consumer-law references a shop in BiH needs, such as the 15-day withdrawal right and the deadlines for visible and hidden defects. The same rules appear in the FAQ in one or two sentences each. A customer gets the same answer wherever she looks.

Ogledalce cart with delivery cost and free-delivery threshold
Cart with free delivery and cash on delivery on mobile
05 / App

The same salon in the pocket

Many Ogledalce clients buy the same routine again and again. For them a browser tab is one step too many, so the salon also sells through its own app on iOS and Android.

We built the Ogledalce app alongside the web shop. It sells the salon's haircare and beauty range, so a client who finishes a bottle of Elixir Ultime can reorder it from her phone in a few taps. Every page of the web shop links to the App Store and Google Play, so customers who arrive from search can move to the app when they become regulars.

On the app, the habits that matter are the same as on the web: the routine a client already uses, the brand she trusts and the salon she knows. The app keeps those habits one tap from the home screen, so a regular does not need a search engine to find her shop again.

Kept alive, not launched and left

The app first shipped in June 2022 and is now on version 2.2.2. It holds a 4.96 rating from 28 reviews on the App Store. An app that a small business launches and then abandons does damage; one that keeps up with the shop becomes the channel its best customers prefer.

The decision: one range, two storefronts

We treat the web shop and the app as two doors to the same range rather than two products to manage. The salon works with one catalogue, and the customer meets the same brands, the same advice and the same rules on both.

06 / Build

Custom from the theme up

A shop that sells a premium product cannot feel like a template. We built Ogledalce as a custom theme from the first line, with no page builder and no stack of front-end plugins to slow it down or break on the next update.

The platform runs WordPress and WooCommerce on a Roots Bedrock install, which keeps configuration, plugins and uploads in a clean, versioned structure. The theme is built with Sage and Acorn, so templates use Laravel's Blade and the front end is bundled with Vite. Inter Tight is self-hosted, and the site runs behind Cloudflare.

Every listing is server-rendered by the theme, so product pages, need listings and brand pages are fast on a phone and readable by search engines. The sitemap covers products, brands, categories, hair types and tags, so a search for a specific product or problem can land directly on the right page.

Consent that means it

Analytics and marketing cookies stay off until the customer turns them on. The consent panel explains each group in one sentence: the necessary ones keep the cart working, Google Analytics shows which pages people use, and Meta measures the salon's ads. Embedded videos wait for marketing consent and offer a YouTube link instead.

The decision: content the team can run

Brands, needs, categories, hair types, sets, blog posts and salon videos are all managed in WordPress. The team adds a product, tags its need and hair type, and the shop places it in every listing, filter and routine where it belongs. The salon runs its own shop.

  • WordPress, WooCommerce, Roots Bedrock, Sage, Acorn, Vite
  • Custom Monri WebPay integration, ready to enable
  • Plain-language legal pages and consent by default
Kérastase product page on the custom Ogledalce theme
Cookie settings with analytics and marketing off by default on mobile
03 / 03The Results
Shop by hair need: twelve needs with product counts
Ogledalce homepage on mobile"Šta je potrebno Vašoj kosi?" needs section on mobile
Routine builder with the total and free-delivery progress on mobileColoured-hair listing with filters on mobile
Kérastase Elixir Ultime product page on mobileSalon page with the appointment button on mobile
01 / 04
Team
  • Fedja
  • Alen
  • Adnan
  • Azra
2 months · 6 services
Keune routine builder with shampoo, conditioner and mask
Outcome

A professional haircare shop that gives the salon's advice before it asks for the sale.

Salon page with Elma Hadžifejzović's quote and appointment request
Result 01

Advice Before the Sale

Customers now start from the problem they have. Twelve hair needs organise 459 products across all twelve brands, so the shop gives the salon's first answer before the customer has to ask.

Result 02

Routines, Not Single Items

The routine builder turns one product into three and shows exactly how far the cart is from free delivery, so the natural order is a complete routine that ships free.

Result 03

Card-Ready Checkout

Cash on delivery stays simple today, and a custom Monri integration is built and waiting, so card payments are a switch, not a project.

Result 04

The Salon, Online

Appointments, the named team, Elma's column and the Ogledalce Cafe series live inside the shop, so the online customer meets the same people as the client in the chair.

Result 05

Two Storefronts

The web shop and the iOS and Android app sell the same salon range, and the app keeps a 4.96 App Store rating from 28 reviews.

Result 06

Clear Rules, Fewer Calls

Delivery cost, same-day dispatch before 14:00, returns and payment terms are written in plain language on one set of pages, so the order line answers fewer basic questions.

Next Project

eStyle

E-commerce Platform & B2B Portal View case study
eStyle — project preview

Do your customers need advice before they buy?

If your shop sells expertise as much as products, let's build one that gives the advice first and makes the order the easy part.

Thank you. Your message has been received.
Your message could not be sent. Please try again.