AI CEO Lab← All free guides
On this page
Operating structures ยท Clinic

Med Spa Marketing: The System I Run For Clinics

Find the leaking chokepoint, build an offer that isn't a discount, reply to leads in minutes, and hold a compliance line no marketer will write for you. The pipeline I install for clinics, in the order it goes in.

Med Spa Marketing: The System I Run For Clinics

Most clinic marketing fails at a stage nobody measures. And the usual fix, more ad spend, makes a leak at booking more expensive without making it smaller.

This guide is the system I install for cash-pay clinics. First you find the leak. Then you build one named offer, route every lead into one CRM, reply in minutes, engineer the show rate, and hold the compliance line. It's for med spa and aesthetic clinic owners who spend their day in the treatment room.

Marketing a clinic is a packaging problem first and a routing problem second. Get the offer wrong and no CRM or setter saves it. Get it right and routing stops you wasting it.

The three levels

Level 1 · Manual

Ads promote a discounted treatment. Leads sit in a form inbox. The front desk replies hours later. Nobody knows which stage leaks.

Level 2 · AI + connections

One named offer with stacked value. Every lead lands in one CRM. A setter replies in minutes, qualifies, books, and takes a deposit after the slot is chosen. Every ad gets a weekly decision.

Level 3 · Agents on cadence

Show rate is engineered. Reactivation and referral run as 2 separate loops. A morning report tells the owner what needs a human. The owner reads one page and treats patients.

Connections for this guide: A CRM that holds every lead and appointment (mine is GoHighLevel). A Meta ad account. A setter bot that reads and writes the CRM through tags, books on its calendar, and hands over to a human by tag. A comment-to-DM keyword tool on Instagram. One channel for the daily report. A front desk person with a written rule.

Chokepoint, offer, then routing

1. Score the 4 chokepoints before you spend anything

Flow diagram of the four chokepoints scored before spending: Attraction, Conversion, Closing, Fulfillment; the biggest drop is this month's only focusPull one number per stage for last month. Attraction: new people who reached the clinic, and from where. Conversion: how many became a lead with details in the CRM. Closing: how many booked and paid a deposit. Fulfillment: how many showed, and how many came back.

The biggest drop between 2 numbers is your chokepoint. It's the only thing you work on this month. Why: most clinics assume the problem is Attraction and are leaking at Closing, so they buy more traffic for a leaking pipe.

2. Build the offer before you touch the ads

Nobody wakes up wanting micro-needling. They wake up hating something about their face. The strongest practitioner in this space, in his 2025/26 update, weights the offer far above creative, copy and targeting. His argument is the strongest in the space, though it's one voice, so I use the ranking and leave his percentages out. Treatments are ingredients, and ingredients are commodities. Sell the cake, not the flour.

Build it: start with the patient's problem. Name the package like a makeover. Include an assessment, but don't call it a consult. Add one entry-level treatment as the carrot and 2 or 3 bonuses that are cheap to deliver. Total the honest retail value, then price at 10 to 50 percent of it. Get every claim approved by the clinician.

Never discount one treatment 80 percent. It erodes the price you charge for it every day. The offer builder prompt below does the math.

3. One CRM, and every lead lands in it with a source

Before any ad spends, send a test lead through every door: ad lead form to CRM webhook to pipeline stage to notification. Instagram gets a comment keyword that opens a DM and lands in the same CRM. The website form or quiz posts there too. Every lead carries a source and a tag, or you can't score chokepoint 1 again. Here's how to build the GoHighLevel workflows.

On ad settings, the sources I read agree on one thing: keep interest targeting broad. Stacked interests starve the algorithm on a local budget. The specific budget, radius and age rules you'll read are one practitioner's starting point, not a platform minimum. Here's how I use AI to run the Meta side.

# test the front door before spending a dollar (CRM inbound webhook)
curl -s -X POST "$CRM_INBOUND_WEBHOOK_URL" \
  -H 'Content-Type: application/json' \
  -d '{"first_name":"Test","last_name":"Lead","phone":"+15550000000",
       "email":"test@example.com","source":"meta-leadform",
       "tags":["new-lead","test"]}'

# then confirm all four, by hand, once:
#   1. contact exists    2. pipeline stage set
#   3. notification fired 4. no medical field anywhere on the form

4. The setter: reply in minutes, qualify, book, then deposit

Speed is the cheapest lever clinics never pull. The speed-to-lead figures quoted in this space rarely trace back to a primary study, so I don't repeat them. The direction is consistent across every source I read: minutes, not hours.

Illustrative math, not a benchmark: 100 leads a month, 10 percent book at a $2,000 lifetime value is $20k. Reply fast enough that 20 percent book and it's $40k. A part-time setter costs a fraction of that gap.

Flow diagram of the setter: reply in minutes, qualify with no medical details, lead picks a slot, book on the CRM calendar, deposit link with a hold, refusal triggers a handover tagBook first, deposit after. Someone who already picked a slot pays far more often. In the setter I run for a client, the deposit sequence is: link with a 2 hour hold, reminder at 1 hour, last chance at 30 minutes, then the slot releases. The Instagram DM automation guide covers the plumbing.

5. Put handover rules in code, and train the front desk

Rules in code, not the prompt. 3 rejected slots or a refused deposit: handover tag, bot stops. Stop is terminal. One owner per conversation: the front desk takes over with a tag the bot checks before every send. A booking counts only when the CRM calendar says so.

The front desk converts calls. Answer by the second ring. Lead the call: "this is Kelly, how can I help you today," not "ABC Med Spa, this is Kelly." Use their name. Treat a price call as an opening. Never hold twice. Don't prejudge what someone can afford. Between yes and no there are several stops: two-pay, financing, fewer sessions, one session, product only, a follow-up visit, a follow-up call. If most calls don't convert, fix the training, not the ads.

6. Engineer the show rate

People no-show for 2 reasons: fear outweighs desire, and no skin in the game. Answer the fears in your confirmations: being pressured to buy, a sketchy clinic, looking fake, pain, lasers burning. A named package beats a bare consult, and your Google reviews get read before the visit.

Then take the deposit as a choice. Not "would you like to pay by card?" but "would you like to pay over the phone or through text?" That swap is the highest-leverage detail here.

CONFIRMATION SEQUENCE (after the slot is booked)

1. On the call/chat  : get them to say the date, time and location out loud
2. Immediately       : text with the full address + a photo of the building
3. Immediately       : calendar invite they can accept
4. 24h before        : NOT "are you still coming?"
                       instead: "do you want bonus A or B?
                       A is better for dry skin, B for fine lines"
5. Deposit hold      : link (2h) -> reminder (1h) -> last chance (30m) -> release

Why 4 works: a yes/no question invites no. A choice invites engagement.

7. Run 2 loops: reactivation and referral

The cheapest patient is one you already have. The next cheapest is one they bring. And your email list is the only channel you own.

Reactivation is its own route with its own offer, consent check and outcome, never mixed into new leads. A segment that hasn't visited in a set window, a specific reason to return, the same booking flow, and a hard exclusion for opt-outs. The owner approves the offer and copy once. My cadence is how I set it up, not a benchmark.

Referral: work out what a new patient costs all-in (ad spend plus discount, divided by patients who bought). You can likely afford a serious incentive. One practitioner reports that a symmetric give-and-get at a serious amount beat smaller splits in his tests. Treat that as one voice and test your own number. Ask at checkout after a good result, not in an email 6 weeks later, and get the case study at the same moment (with consent, see step 8).

8. Hold the compliance line

Across the 9 videos I read, compliance content totaled a few SMS tips and one line about Google certification. That gap is the most dangerous thing in this category, so here's the version an MD writes.

Comparison diagram of what a lead form or DM may collect (name and contact, lead source, preferred time, treatment of interest) versus never collect (conditions, medications, photos of the area, what you are treated for)Lead forms and chats never collect medical details. No conditions, medications, photos of the area, or "what are you being treated for." Intake happens on your approved path after booking. A DM thread isn't a medical record and isn't access-controlled. Don't paste patient medical details into ChatGPT or any other AI chat either. Share operational counts only, de-identified.

Before-and-afters need documented consent for that specific use, not a general clinic waiver. For HIPAA-covered practices, HHS marketing guidance generally requires the patient's written authorization before their information is used in marketing. Confirm the specifics with your counsel.

Medical claims in ad copy get clinician approval before they run. Every time, including the Canva static at 11pm.

SMS needs a real opt-in at collection, plus a clear opt-out and sender identification in the first message, per the carrier industry's CTIA Messaging Principles, which also expect STOP to work. Some advice in this space routes people to "reply NO THANKS" instead of STOP so carriers don't flag the number. Don't. Deliverability isn't a reason to hide an opt-out.

Google restricts ads for prescription drugs and prescription drug services, and several categories require certification. Botox and weight-loss drugs are prescription products. Check the current Healthcare and medicines policy before you write the campaign.

Refuse the rest of the playbook, whoever runs your marketing: discounts on treatments you sell full price, bots written to pass as human, and medical questions in a lead form to improve lead quality. The offer, the pricing and every medical claim stay with the clinician, even with an agency.

9. One weekly decision and one daily page

Weekly, on a fixed day, every ad gets a dated line: scale, hold, refresh or kill, with the number. My rule, not Meta's: raise a strong ad 20 to 30 percent, never double overnight. Meta gives no percentage. It says large or frequent budget changes can send an ad set back into the learning phase, and my step size is how I stay clear of that. Run a Meta ads audit before you scale anything. Falling click-through or rising frequency means refresh the creative before adding budget. Never let one campaign carry the clinic.

Daily, one page for the owner: new leads by source, conversations waiting on a human, calendar-verified bookings, deposits, no-shows, pipeline bugs with a day counter. Every conversation with no owner gets a named person that day.

The owner keeps 4 things: the offer, pricing, medical claims, and approving the setter's first 10 sends one at a time.

Starter prompts

Paste these as written. They are short on purpose, because the long ones drift.

The offer builder

Build one named offer for my clinic. Here are the treatments I own, with retail prices and roughly what each costs me to deliver: [paste]. Here is who I want to attract: [describe]. Rules you must follow. Start with the patient's problem in their words, never the treatment name. Name the package like a makeover, not a consult. Always include an assessment, renamed so it does not sound like a sales meeting. Include one entry-level treatment as the carrot. Stack 2 or 3 bonuses that are cheap for me to deliver. Add up the honest total retail value of the stack. Price the package at 10 to 50 percent of that total. Never discount any single treatment more than half, because that erodes the price I charge for it every day. Output: the package name, the one-sentence promise, the itemised stack with retail values, the total stacked value, the offer price, and the above-fold ad copy with the name, what is included, the total value and the price. Then list every claim in it that needs clinician approval before it runs. Do not invent a treatment or a price I did not give you.

The setter build prompt

Write my setter bot's flow for a [vertical] clinic. Three nodes: Discovery, using a question bank for [vertical] that qualifies without asking for any medical detail, medication, condition or photograph; Booking then Deposit, where the lead picks a slot first, the bot books it on the CRM calendar, then asks for a [amount] deposit credited to the treatment, with a link held for 2 hours, a reminder at 1 hour and a last chance at 30 minutes; Wrap Up. Rules in the flow, not the personality: after three rejected slots or a refused deposit apply the human handover tag and stop; anyone who says stop is terminal; check the takeover tag before every message; never promise a person or a time the calendar has not confirmed; never state or imply a medical outcome. Output every message as exact text in a review queue: draft number, trigger, risk, the text, approve / edit / skip.

The daily page prompt

Read the CRM and the calendar read only and give me today's one page for the clinic: new leads since yesterday by source, conversations waiting on a human with how long they have waited, bookings verified from the calendar and not from chat, deposits paid and pending, no shows, and every open pipeline bug with a day counter. Lead with what needs a human today. If any pull failed, say so in that line. No patient medical details anywhere in the report. Do not send anything.

If this happens, do this

Every one of these has happened to me or to someone I set this up for.

FailureFix
The ad promotes a treatment at a discountYou're selling flour. Build the named package first (step 2)
Scaled ads while bookings stayed flatThe leak was Closing. Fix the setter and deposit flow before spending more
Ad images of the empty room, building or machineShow people. It's the most repeated creative rule in this category. See what makes a good Facebook ad
High book rate, terrible show rateFear or no skin in the game. Do both halves of step 6
Bot and front desk both messaged the same leadOne owner per conversation, takeover tag checked before every send
Report says 12 bookings, calendar says 7Count bookings from the calendar only
Medical history collected in the DMRemove it today. Intake happens on the approved path after booking
Someone who said stop got a nurture messageStop is terminal, in code. No alternate keyword replaces it

The tools I use for this

ToolWhat it is for here
GoHighLevelThe clinic's single source of truth: leads, tags, calendar, deposit workflow, handover.Get it
CloseBotThe setter bot I run for a clinic client today, wired to the CRM by tags.Get it
ManyChatComment keyword to DM capture on Instagram, pushing to the CRM.Get it
CanvaWhere the offer static gets made. Name, what is included, total value, price, above the fold.Open
Meta Ads ManagerWhere the weekly decision gets applied. The agent reads it; a human acts.Open
ClaudeThe daily owner page and the weekly decision, read only.Open
Some links are affiliate links. I only recommend tools I run in my own accounts.

The free skill

It scores a clinic on the 4 chokepoints, builds a named offer from treatments the clinic already sells, routes every lead into one CRM, writes the setter's book-first, deposit-after flow with handover rules, sets up the show-rate sequence and the 2 loops, and installs the weekly ad decision and daily report. Compliance guardrails are built in, starting with never collecting medical details in a lead form or chat.

How to use it: copy the whole thing, paste it into your bot (or save it as a skill file if you use Claude Code), and say “set up my clinic pipeline”. It walks you through the rest. Works with any agent that can read your files.
med-spa-marketing-system.md
---
name: how-a-clinic-runs
description: Installs the patient pipeline in a cash-pay clinic whose owner is the clinician. Scores the 4 chokepoints, builds one named offer, routes every lead into one CRM, writes the setter flow with handover rules in code, sets the show-rate sequence and 2 loops, holds the compliance line, and installs the weekly ad decision and daily owner page. Trigger on "set up my clinic pipeline", "my leads are leaking", "predictable patient pipeline", "clinic front desk and bot".
---

# How A Clinic Runs On The Same System

The clinic owner is in the treatment room with no hours for marketing ops. Install the pipeline as a system of roles.

## Step 1: Score the 4 chokepoints
Ask for one number each for last month. Never guess them.

| Chokepoint | Number |
|---|---|
| Attraction | people who reached the clinic, by source |
| Conversion | leads with details in the CRM |
| Closing | booked appointments with a deposit paid |
| Fulfillment | showed, and returned |

The biggest drop between 2 stages is the chokepoint and the only focus this month. Say which it is in one sentence. If it's Closing, don't recommend more ad spend.

## Step 2: The offer, before any ads
Ask for the treatments the clinic sells, retail prices, rough delivery cost, and who they want to attract. Never invent a treatment or a price.
- Start with the patient's problem in their words, not the treatment name.
- Name the package like a makeover. Include an assessment, renamed so it doesn't sound like a sales meeting.
- One entry-level treatment as the carrot. 2 or 3 bonuses that are cheap to deliver.
- Total the honest retail value. Price at 10 to 50 percent of it.
- Never discount one treatment more than about half.
- List every claim that needs clinician approval.

## Step 3: The front door
Every entry lands in the one CRM with a source and a tag:
- Ad lead form to CRM webhook to pipeline stage to notification
- Instagram comment keyword to DM to CRM
- Website form or quiz to CRM

Require a test lead through each door before any spend: contact exists, stage set, notification fired, no medical field on the form. Keep interest targeting broad.

## Step 4: The setter
A bot wired to the CRM through tags. Rules live in code, not the prompt.

```
FLOW: Discovery (vertical question bank, no medical detail)
   -> Booking (lead picks a slot, bot books on the CRM calendar)
   -> Deposit (small deposit credited to treatment; link held 2h, reminder at 1h,
      last chance at 30m, then the slot releases)
   -> Wrap up
HANDOVER: three rejected slots or a refused deposit -> human handover tag, stop
TERMINAL: "stop" or opt out -> never contacted by the bot again
OWNER: one owner per conversation; takeover tag checked before every send
TRUTH: a booking exists only if the calendar says so, never because the chat did
```

Reply within minutes. Never state or imply a medical outcome. Every message goes to a review queue as exact text (draft number, trigger, risk, text, approve / edit / skip).

## Step 5: The front desk
One rule: **no lead goes unseen.** Every inbound is replied to, explicitly terminal, or queued to a named human. The front desk takes over a conversation with the takeover tag and clears the hotlist daily in this order: hot replies with no owner, leads with no booked next step, no-shows, deposit refusals.

On calls: answer by the second ring, lead the call, never hold twice. Under half of calls converting means fix training, not ads.

## Step 6: The show rate
No-shows come from fear or no skin in the game. Answer the fears (pressure to buy, a sketchy clinic, looking fake, pain) in confirmations.
1. Get the lead to say the date, time and location out loud.
2. Text the full address and a photo of the building.
3. Send a calendar invite.
4. At 24 hours, ask "bonus A or B?" instead of "are you still coming?"
5. Ask for the deposit as a choice: phone or text, never yes or no.

## Step 7: The 2 loops
**Reactivation:** a separate route from new leads, with its own offer, consent check and outcome. Segment: hasn't visited in [N] months (owner sets N). A specific reason to return, the same booking flow, every opt-out excluded in code. The owner approves offer and copy once.

**Referral:** ask at checkout after a good result, not weeks later by email. Ask for a case study at the same moment, only with documented consent for that specific use.

## Step 8: Compliance line
- Never collect medical details (conditions, medications, photos, treatment history) in a form, DM, chat or report. Intake happens on the clinic's approved path after booking.
- Before-and-afters need documented consent for the specific use.
- Every medical claim in ad copy gets clinician approval before it runs.
- SMS needs a real opt-in, a clear opt-out and sender identification in the first message. Never route opt-outs away from STOP.
- Prescription products like Botox and weight-loss drugs need Google certification to advertise. Tell the owner to check the current policy first.
- Never write a bot to pass as human.

## Step 9: The rhythm
**Weekly, fixed day:** every ad gets a dated scale / hold / refresh / kill line with the number behind it. Raise strong ads 20 to 30 percent, never double (the author's own rule; Meta publishes no percentage). Fatigue (click-through falling, frequency climbing) gets a creative refresh before any budget rise. Never let one campaign carry the clinic.

**Daily, before the first patient:** one page: new leads by source, conversations waiting on a human and for how long, calendar-verified bookings, deposits paid and pending, no-shows, open bugs with day counters. Lead with what needs a human. No medical details.

**The owner's list:** the offer, pricing, anything touching a medical claim, the setter's first 10 sends. Nothing else reaches the owner.

## Rules
- Never invent chokepoint numbers, patient counts, prices or revenue.
- Nothing patient-facing sends without approval until that category has earned it.
- Reconcile bookings against the calendar before reporting a zero.

Want the pipeline installed in your clinic?

Inside the AI CEO Lab, the Predictable Patient Pipeline module walks the four chokepoints on your own numbers and builds the setter with you.

Pick a side.

Most people read this and forget it by Friday.

The other kind builds the thing that week. They stop needing free guides, because they are too busy running actual systems.

Free guides stay free. The room is where the builds happen.