Illustrative case study

A fictional business. The figures are a modelled scenario, not a client result.

SEO case study · Kosa Studio

Independent hair salon · Sofia · Beauty & Fashion · 8 months

A five-chair salon in Lozenets that now owns every 'balayage Sofia' search

+161%direct online bookingsTone 6.4 · Copper

Turn the ring. Each strand is a chapter of the engagement, coded like a salon swatch: level, then reflect.

Strand 01 · 1.0 Natural Black

The challenge

Clients searched for Kosa by name and still booked through a platform that took a cut.

Read this strand ↓

Strand 01 · Natural Black · Before

Paying commission on clients who already chose Kosa

Booking-platform listings outranked the salon's own site, taking commission on clients who already wanted Kosa.

Kosa is five chairs on a quiet street in Lozenets, known for lived-in blondes and patient colour correction. Most of its clients arrived by word of mouth or Instagram — then typed the salon’s name into Google, tapped the first result and booked through a marketplace listing.

That listing took 18% of an average €65 ticket. Across 140 platform bookings a month, the salon was paying roughly €19,656 a year to be found by people who were already looking for it.

Online bookings, baseline month

Direct
62
Via platform
140

69% of online bookings paid commission.

Strand 02 · Mahogany · Strand test

Seven findings before a single change

Like a strand test before colour, the audit showed how the brand reacted on every surface Google reads: the Business Profile, the site and the directories in between.

  1. 01LocalHigh

    The Book button sent people to the platform

    The profile's booking link pointed to the marketplace listing, so even branded searches ended in a commissioned booking.

  2. 02LocalHigh

    Wrong primary category

    Listed as “Beauty salon” rather than “Hair salon”, with no services entered — invisible for balayage, colour and keratin searches.

  3. 03LocalMedium

    Eleven photos, the newest 14 months old

    Meanwhile about 600 colour-work posts sat on Instagram, never reaching the profile.

  4. 04LocalMedium

    Two addresses across six directories

    Citations still carried the pre-move address on the other side of Cherni Vrah, splitting trust between two locations.

  5. 05ContentHigh

    One page, with the price list as an image

    Every service lived on a single page with the menu as a JPEG: no crawlable text, no Bulgarian or English service pages, page title “Home”.

  6. 06ContentMedium

    Reviews had stalled

    48 reviews, the last one five months old, and no owner replies. Competitors were adding 15–20 a month.

  7. 07TechnicalMedium

    A 6.8 MB hero video

    Mobile LCP of 5.9 s on 4G; the platform page loaded in under two seconds and won the click.

Strand 03 · Copper · Formula

Four tactics, mixed like a colour formula

The engagement ran on our Local plan. The aim was not more visibility for its own sake, but to move existing demand off the platform and onto the salon’s own booking page.

Part 1 · 6.4

Google Business Profile

Recategorised as Hair salon with Balayage, Colour correction and Keratin as services, each with a price and a description. The Book button and the website link now point to the salon's own booking page, tagged with UTM codes.

18 services listed · weekly posts

Part 2 · 7.3

Service pages

Twelve service pages in Bulgarian and English, one search intent each: price range, time in the chair, aftercare, a gallery of real work and a booking button above the fold. The image menu became text; the video became a 140 KB poster.

12 pages · LCP 5.9 s → 1.7 s

Part 3 · 8.1

Instagram-to-GBP photos

Each stylist's best Instagram colour work went to the profile weekly, renamed and geotagged, grouped by service. Before-and-after pairs, shot under the same window light, did the selling.

11 → 236 profile photos

Part 4 · 9.3

Review velocity

A short text with a review link went out two hours after each appointment, from the stylist, with one gentle reminder. Every review got a reply within 48 hours, naming the service so the reply itself carried keywords.

~21 new reviews a month

Strand 04 · Golden Honey · Processing

8 months, lifted from level 3 to level 10

  1. M1Lvl 3

    Consult & strand test

    Audit, call tracking, booking UTMs. Profile recategorised; Book button repointed.

    68 direct · 60 reviews · 5 top-3

  2. M2Lvl 4

    Citation clean-up

    Six directories corrected to the Lozenets address. Review texts start.

    79 direct · 76 reviews · 8 top-3

  3. M3Lvl 5

    Service pages, round one

    Balayage, colour correction, keratin — BG and EN. Image menu rebuilt as text.

    91 direct · 95 reviews · 12 top-3

  4. M4Lvl 6

    Instagram pipeline

    Weekly photo transfer to the profile, grouped by service. Hero video cut.

    104 direct · 116 reviews · 16 top-3

  5. M5Lvl 7

    Service pages, round two

    Bridal, AirTouch, cuts, blonde specialist. Internal links from the gallery.

    118 direct · 139 reviews · 19 top-3

  6. M6Lvl 8

    Review velocity

    Passes 139 reviews; replies at 100%. Local pack entries for all colour terms.

    133 direct · 163 reviews · 22 top-3

  7. M7Lvl 9

    Gloss

    FAQ schema, Q&A on the profile, a seasonal blonde guide for spring.

    149 direct · 188 reviews · 25 top-3

  8. M8Lvl 10

    Toner & seal

    27 of 30 service terms in the top three. Platform listing kept for discovery only.

    162 direct · 214 reviews · 27 top-3

Strand 05 · Ash Caramel · Reveal

The reveal, printed like tone codes

Modelled scenario for a fictional business — not a client result. Rankings and traffic are never guaranteed; see our Terms.

Headline · tone 6.4

+161%

direct online bookings

DirectPlatform
080160240M0M1M2M3M4M5M6M7M816262

Service keywords top 3

3 → 27

Month 0

Month 8

GBP website clicks

+238%

0400800M0M1M2M3M4M5M6M7M8

Reviews

48 → 214

0120240M0M1M2M3M4M5M6M7M8

Booking commission saved

€9.6k / yr

Strand 06 · Golden Blonde · Swatch book

Service searches, Sofia, before and after

Modelled Google positions (local pack or organic, whichever was higher) and estimated monthly searches. “—” means not in the top 50.

KeywordLangSearchesM0M8
balayage sofiaEN880181
балаяж софияBG1,300231
фризьор лозенецBG720111
hair salon lozenetsEN21091
colour correction sofiaEN170342
боядисване на коса софияBG590—2
airtouch sofiaEN260—3
кератинова терапия софияBG480273
bridal hair sofiaEN140412
дамско подстригване лозенецBG320151
blonde specialist sofiaEN90—2
салон за коса близо до ндкBG210303

Strand 07 · Platinum Ash · The mirror

“balayage sofia”, on a phone in Lozenets

Before · M0
balayage sofia

Places

  • 1Marketplace listing · Kosa StudioBook via platform · 18% commission
  • 2Salon Aurelia, Oborishte4.6 ★ (312)
  • 3Studio Lume, Center4.7 ★ (187)

Kosa’s own site: organic position 18.

After · M8
balayage sofia

Places

  • 1Kosa Studio — Hair salon, Lozenets4.9 ★ (214) · Book online
  • 2Salon Aurelia, Oborishte4.6 ★ (356)
  • 3Studio Lume, Center4.7 ★ (205)

Organic #1: kosa.bg/balayage — price, gallery, booking.

Strand 08 · 5.26 Plum Rose

Get a plan like this

A Local plan, mixed for your chairs, your street and the searches your clients already make.

← All case studies