Hero
Performance Marketing
Social Media Advertising
Med Spa & Aesthetics

Social Advertising Engine for a Laser Aesthetics Chain


Let's Connect

Overview

What we built

A 48-location laser hair removal chain was paying more for every lead as it grew. We rebuilt its social advertising around each metro, and the cost of a booked consultation fell from $102 to $58.

In plain terms: the chain advertised to every city from one national Meta account, with one shared budget and the same adverts everywhere. A clinic in a brand-new metro and a long-established flagship were treated identically. As the business expanded, the cost of each lead doubled in eighteen months, and because browser-side tracking kept losing data, the ad platform never learned which leads actually turned up for a consultation. The team was spending more each month and could not see what was working.

We rebuilt the programme city by city. Each metro received its own campaign structure with a budget set by local clinic capacity, server-side tracking fed consultation outcomes from the CRM back to the ad platforms, and a monthly testing cadence produced localised ad variants from a central creative library. Within five months the cost per booked consultation fell from $102 to $58 across all metros, the show rate on social leads rose from 34% to 47%, and new metros now reach target lead cost in 3 weeks on average instead of roughly 12.

The Problem

Lead costs doubling with expansion

The chain had grown to 48 locations on the strength of its clinics, but its social advertising had not grown with it. Every market, from the newest opening to the busiest flagship, was served by a single national Meta account with one shared budget and identical creative. Media naturally pooled wherever the algorithm found cheap clicks, not where clinics had appointment capacity to fill, and local teams had no lever to pull when their diaries ran empty.

Expansion made the cracks visible. Each new metro entered the same undifferentiated campaigns, competing with established markets for budget while showing adverts written for nobody in particular. Over eighteen months the cost per lead doubled, and every launch became a slow, expensive grind as the account tried to learn a new city with no dedicated structure behind it.

Measurement compounded the problem. Browser-side tracking losses meant a large share of conversions never reached the ad platform, and the signal that did arrive stopped at the lead. Whether that lead actually attended a consultation lived only in the CRM, so the platforms optimised toward form fills, including the ones who never showed up.

One national account

Every metro shared a single Meta account, one budget and identical creative, so spend flowed to cheap clicks rather than to the clinics that needed bookings.

Blind to outcomes

Browser-side tracking losses hid conversions from the platform, and consultation attendance never left the CRM, so campaigns optimised toward leads who often never showed.

Slow metro launches

Each new market piggybacked on national campaigns with no dedicated structure, so launches took roughly 12 weeks to reach a workable lead cost.

Generic creative

Identical adverts served every market, with no local proof points and no testing cadence, so fatigue set in and there was nothing fresh to rotate.

What it was costing them

Cost per lead doubled in eighteen months and was still climbing, every new metro burned budget for weeks before finding its footing, and clinic diaries filled with leads who never attended. The chain was funding growth with media spend that got less efficient with each opening, and leadership could not tell which markets, audiences or adverts deserved the next dollar of budget.

The Solution

Metro-level social ad engine

We rebuilt the programme as a metro-level engine rather than patching the national account. Each market received its own campaign structure with budgets set by local clinic capacity, so spend followed appointment availability instead of the algorithm's path of least resistance. Lookalike and retargeting audiences were rebuilt per metro, seeded from local data rather than a national blend.

The measurement fix came next. Server-side Conversions API tracking replaced fragile browser-side signals, and CRM consultation outcomes flowed back to the ad platforms, so optimisation targeted people who attend consultations, not just people who fill in forms. That single change redefined what the campaigns were learning from: every attended consultation became a training signal, and wasted spend on audiences prone to no-shows began to fall away.

Creative moved to a monthly testing cadence. A central library supplied concepts, each metro localised them, and winners rolled out across markets while fatigued variants retired. A launch playbook then standardised how the engine enters a new city: structure, budgets, audiences and creative are set up the same way every time, so new metros start from a proven template rather than from scratch.

Key decisions

01

Budgets follow clinic capacity

Each metro's budget is set by local appointment availability, so media spend fills real diary space instead of pooling wherever clicks are cheapest.

02

Optimise to attended consultations

CRM outcomes flow back through the Conversions API, so the platforms learn from consultations that actually happened rather than from raw form fills.

03

Server-side over browser-side

Tracking moved server-side to survive browser signal loss, restoring the conversion volume the platforms need to optimise reliably in every market.

04

Central library, local variants

One creative library feeds every metro, each market localises the concepts, and a monthly cadence keeps fresh variants testing while fatigued ones retire.

05

A repeatable launch playbook

Every new metro launches with the same structure, audiences and creative sequence, turning market entry from an experiment into a routine.

Measurable Impact

What changed after launch

The metro engine paid back quickly. Within five months the cost per booked consultation dropped from $102 to $58 across all metros, and the consultation show rate on social leads improved from 34% to 47% once CRM outcomes fed optimisation. Leads stopped being an end in themselves: the campaigns now chase people who turn up.

Expansion changed character too. New-metro launches now reach target lead cost in 3 weeks on average, down from roughly 12, because every launch starts from the playbook rather than from a blank account. Creative testing throughput grew 3× to more than 30 localised ad variants per month, giving each market a steady supply of fresh, locally relevant adverts.

Account structure

One national Meta account with a single shared budget

Metro-level campaigns with budgets set by clinic capacity

Consultation cost

Cost per lead doubled in eighteen months

Cost per booked consultation down from $102 to $58

Optimisation signal

Browser-side tracking, blind to consultation attendance

Server-side CRM outcomes, show rate up from 34% to 47%

Market entry

Roughly 12 weeks to reach workable lead cost

Target lead cost in 3 weeks with a standard playbook

Headline results

Cost per booked consultation dropped from $102 to $58 across all metros within five months

New-metro launches reached target lead cost in 3 weeks on average, down from roughly 12 weeks

Consultation show rate on social leads improved from 34% to 47% once CRM outcomes fed optimisation

Creative testing throughput grew 3× to more than 30 localised ad variants per month

Tech & Tools Used

What powered the build

Every tool below earned its place in this engagement. Here is the part each one played.

Meta Ads Manager logo

Meta Ads Manager

Runs the metro-level campaign structures at the heart of the engine, with per-market budgets, audiences and creative rotations managed from one place.

Meta Conversions API logo

Meta Conversions API

Carries consultation outcomes from the CRM back to Meta server-side, so campaigns optimise toward people who attend consultations rather than raw form fills.

TikTok Ads Manager logo

TikTok Ads Manager

Extends the metro engine to TikTok, running localised creative variants against the same per-market structure and budget logic as the Meta campaigns.

Google Tag Manager (server-side) logo

Google Tag Manager (server-side)

Hosts the server-side tagging layer that replaces fragile browser tracking, collecting conversion events reliably before routing them to each ad platform.

Google Analytics 4 logo

Google Analytics 4

Provides the neutral view of landing-page behaviour and lead journeys across metros, cross-checking what the ad platforms report about their own traffic.

HubSpot CRM logo

HubSpot CRM

The system of record for consultation bookings and attendance, feeding the outcome signals that drive optimisation and the show-rate reporting.

Looker Studio logo

Looker Studio

Presents the per-metro performance dashboards, showing lead cost, booked consultations and show rates side by side for every market.

Zapier logo

Zapier

Connects HubSpot to the tracking layer automatically, moving consultation outcomes into the conversion pipeline the moment they are recorded, without custom engineering work.

Figma logo

Figma

Houses the central creative library, where concepts are designed once and localised into per-metro ad variants for the monthly testing cadence.

Ready to Build your Med Spa & Aesthetics Business with Social Media Advertising

Ask Byte

Ask Byte

Typically replies instantly

just Now

Hi! I'm OrganByte's assistant. How can I help you today?

AI-generated content may be incorrect


OrganByte

Building innovative software solutions that transform businesses and drive digital success.

© 2026 YourCompany. All rights reserved.