Read more Articles
Keep up to date with medspa marketing strategies.
A GoHighLevel pipeline for a med spa should show what actually happened with every lead, from the first inquiry to a paid treatment, and each stage should trigger the next step automatically. For most med spas that means nine stages: New Lead / Contacted, Qualified, Consultation Booked, No Show, Consultation Showed, Treatment Recommended, Closed Won, Dead and Long-Term Nurture.
The most common mistake I see is a pipeline built around staff activity instead of patient progress. Stages like Attempt 1, Attempt 2, Follow-Up and Follow-Up Again look organized for a few weeks. Then the front desk stops moving cards, automations fire at the wrong time, and patients who already booked keep getting texts asking if they want to book. A few months later the owner opens GoHighLevel, sees hundreds of opportunities and can't tell which ones became patients.
Below is the structure we use at NexaMed, what each stage means, what should happen when someone enters it, and how to read the pipeline to find where you're losing revenue.

You don't have to use these exact names, and some practices need fewer stages. The test for any stage is simple: if moving someone into it doesn't change what your staff does, which automation runs or what you report on, you probably don't need it.
A pipeline connects your marketing to what happens inside the practice. Someone sees an ad, becomes a lead, talks to your team, books, shows up and either buys or doesn't. GoHighLevel tracks each of those steps, and each change can trigger the next action: a booking stops the lead follow-up, a no-show starts a rebooking sequence, and a purchase moves the patient from acquisition messages to retention.
It helps to know how GoHighLevel separates the pieces. The contact is the person. The opportunity is the potential sale attached to that person, and it sits in one pipeline stage at a time. Every opportunity also has a status (Open, Won, Lost or Abandoned) that's separate from its stage.
Use both. The stage tells you where someone is in the journey, and the status is what GoHighLevel's opportunity reporting counts for won revenue, lost deals and lost reasons. If your team drags a card into a Closed Won column but never changes the status to Won, your dashboards will undercount revenue.
For most of our clients, the journey starts with a Google or Meta ad that sends someone to a landing page built for one specific treatment. We use dedicated landing pages instead of relying on native lead forms. Meta lead forms in particular make it so easy to submit your information that you can end up with a lot of cheap leads who barely remember filling anything out. A page we control lets us match the exact treatment someone clicked on, answer the obvious questions and still make it easy to get in touch.
Phone calls need the same tracking as forms. If someone calls from an ad, the practice should know the call happened, the front desk should know where it came from, and over time you should be able to see whether those calls turn into appointments. Twelve calls from a campaign with zero bookings tells you something, but only if you're tracking them.
When a form or call reaches GoHighLevel, the contact and opportunity should be created automatically, with the lead source, campaign and GCLID saved to custom fields. Those fields are what make it possible to report revenue by campaign later and send conversions back to Google Ads. From there your speed-to-lead process starts: an immediate text confirming the practice got the inquiry, a notification to the front desk and follow-up if the person doesn't reply.

That first layer of automation exists so nobody loses a lead while the front desk is busy. It shouldn't take over the sale, especially for expensive treatments. If you're selling an $800, $1,500, $3,000 or $5,000 elective procedure, people want to know whether it's right for them, what recovery looks like, what it really costs, whether it hurts, what results are realistic and how experienced the provider is. Most of them want that conversation with a person, not an AI agent.
Use automation to make your team faster and more consistent, and keep a human in the conversation for anything high-ticket. We go deeper on this in why AI everywhere is dangerous for healthcare practices.
Define this with your front desk before you build anything. Calling once and leaving a voicemail isn't contact. A lead is Contacted when a real two-way conversation has started: they answered the phone, replied to a text or emailed back.
That definition is what lets the pipeline show where leads get stuck. If 100 leads come in and only 25 reach Contacted, the problem is speed or persistence. Calls aren't happening fast enough, there aren't enough attempts or nobody is answering the phone. If 80 are contacted and only 10 book, your team is reaching people and something in the conversation isn't working, whether that's pricing, the offer, how calls are handled or an ad that set the wrong expectation.
Without a clear definition, both situations look like “the leads aren't converting,” which doesn't tell you what to fix. We cover this in more detail in why your medical leads aren't turning into patients.
Longer than most practices do. We're comfortable running two-, three- or four-week sequences when the treatment justifies it. That doesn't mean texting someone twice a day. It means a message every few days with something useful: an answer to a common question, a reminder of how to book, an opening on the schedule or an offer to talk with someone on the team.
The sequence should stop the moment they reply, book or opt out. In GoHighLevel, turn on Stop on Response in the workflow settings so a reply ends the automated messages, and have your booking workflow remove them from the nurture sequence when they schedule. Make sure your forms collect SMS consent and that STOP replies are honored automatically. Our guide to SMS marketing for healthcare practices covers the messaging side.
Your front desk should be just as persistent. You paid for the click, the landing page and the form fill, so it's worth real effort to turn that lead into a patient. There's only so far you can push cost per lead down. The bigger gains usually come from getting more out of the leads you've already paid for.
Once your team is talking to someone, the question becomes whether this is a real opportunity. The details change by clinic and treatment, but for most med spas qualification comes down to five things:
Your team isn't diagnosing anyone over the phone, but they should know enough about the person's goals to decide whether a consult makes sense. Save those answers in custom fields so the provider can see them before the appointment.
The most important part is consistency. Write down what Qualified means for your clinic, for example: “Confirmed interest in the treatment, within our service area, understands general pricing and is a realistic candidate for a consultation.” If one person marks anyone who replies as Qualified and another waits until pricing and scheduling have been discussed, your reporting won't mean anything.
A booking is a much stronger signal than a form fill. Someone who completes your intake, picks a time and maybe pays a consultation fee or deposit is far more serious than someone who filled out a form while scrolling Instagram, and your communication should change to match.
First, stop asking them to book. It sounds obvious, but poorly built automations keep sending “still interested?” texts to people who already scheduled. Then switch to messages that help them show up: a confirmation, reminders, directions and parking, prep instructions, intake forms and provider information. A little more personalization goes a long way here, because the goal now is for them to feel good about choosing your practice before they walk in.
{{There should be an image here of the Consultation Booked workflow in GoHighLevel: appointment booked trigger, remove from lead nurture, move opportunity to Consultation Booked, reminder sequence and the offline conversion step to Google Ads (your existing offline conversion setup graphic fits here)}}
This stage also matters for your ads. Google knows someone filled out a form, but GoHighLevel knows they actually booked. With the right setup, moving an opportunity into Consultation Booked sends that booking to Google Ads as an offline conversion matched on the GCLID, so campaigns are judged on appointments instead of form fills. Only send what Google needs to match the conversion, never treatment details or anything else that counts as protected health information, which is one reason to set up GoHighLevel for HIPAA first. We walk through the full build in How to Send GoHighLevel Conversions Back to Google Ads.
That's what lets your reporting go from “50 leads” to “50 leads, 18 booked consultations, 12 shows and 5 new patients,” which is a much better basis for deciding where to spend.
.png)
A no-show shouldn't disappear from the pipeline. It just means the next step changed. For one of our healthcare clients, the No Show stage triggers its own rebooking workflow: the system waits a bit, sends a short message with a link to reschedule, waits again and follows up later if they still haven't booked. If they reply at any point, the automation stops and a staff member takes over.
Giving no-shows their own stage also tells you how many missed appointments you actually recover, which most practices have no idea about.
Separating booked from showed is how you tell a show-rate problem apart from a sales problem. If 40 people book and only 12 show, I wouldn't start by changing the ads. I'd look at reminders, confirmations, deposits, appointment timing and the expectations set before the visit.
If 40 book, 35 show and only 3 buy, that's a different problem. Now I want to look at the consultation itself: how pricing is presented, whether financing is offered, how confidently providers recommend the treatment and whether the ad promised something different from what was explained in the office.
Not every practice needs this stage. If you mostly sell lower-ticket injectables, people often go straight from consult to purchase. For bigger procedures it's worth having, because someone who attended a consult and wants time to think is in a very different place than someone who filled out a form and disappeared. They might want to talk to their spouse, need financing, be comparing providers or be worried about downtime.
Ask why they're waiting and save the answer in a custom field, such as financing, downtime, comparing providers or checking their schedule. Then send follow-up that answers that specific reason with financing options, recovery details, realistic before-and-after expectations or answers to common questions, instead of a generic “just checking in” text.
Don't mark someone Closed Won because the provider thinks they'll probably go ahead. The stage should reflect an actual transaction, and the opportunity value should be the real amount so GoHighLevel's revenue reporting is accurate.
Once someone becomes a patient, the goal shifts from getting them in the door to keeping them. That can mean reminders for their next treatment, review requests, memberships, relevant add-on treatments and reactivation down the line.
Aidan DePaul, our paid media partner, and I talk about this a lot. You can spend forever trying to cut a few more dollars off your cost per lead, but there's a floor. There's usually far more room in what a patient is worth. A patient who costs $40 to acquire and spends $3,000 to $5,000 with you over time matters a lot more than getting your cost per lead from $40 down to $35. We cover this in patient segmentation and lifetime value.

Keep these people separate from someone who said no or asked you to follow up after the holidays, because those situations need different handling. Recording a lost reason (no response, not interested, chose another provider, price or timing) lets GoHighLevel show you why opportunities are lost, which is often more useful than the win rate itself.
You can also use the Stale Opportunities trigger to flag or move opportunities that have sat in an early stage too long, so old leads don't clog the board. Dead doesn't mean deleted, though.
A lead who didn't book this week might book in six months. Money may have been tight, the timing might have been wrong, they might have been nervous, they might have tried another provider and not liked it, or they simply forgot. You already paid to get their information once, and reaching them again costs far less than buying a new lead.
Long-term nurture can include seasonal promotions, treatment reminders, new service announcements, educational content and offers that actually fit the person. They don't need to hear from you every week, but they also shouldn't vanish from your business because they didn't schedule within seven days.
Because these messages run from a workflow on the contact, the opportunity doesn't have to stay Open. Many practices mark these Lost with a reason like “timing” so their open pipeline value stays accurate.
This is the one I see most often. Call attempts are staff actions, not patient progress. If an opportunity is sitting in Attempt 3, you don't know whether the person is interested, whether they ever answered, whether they're qualified or whether they booked. Track outreach with tasks, workflow steps, call logs and conversation history, and keep the pipeline for where the patient actually is.
A Botox pipeline, a filler pipeline, a laser pipeline, a Morpheus8 pipeline and a weight loss pipeline means your front desk has to remember where everyone goes, and your reporting gets split five ways. Most practices do better with one New Patient Acquisition pipeline and custom fields for the details. A single opportunity can show that the lead came from Google Ads, wants Botox, belongs to your second location and is in Consultation Booked, and you can filter the board by any of those.

Create a separate pipeline when the process is actually different, not just because the treatment name changed. A membership signup or a multi-visit weight loss program with labs and check-ins can justify its own pipeline. A different injectable usually can't.
Each one has a different purpose:
You can technically put everything in tags, but once you have thousands of contacts and dozens of services, structured fields are much easier to filter, report on and pass to other systems.
This is the main reason to set the pipeline up carefully. GoHighLevel's Pipeline Stage Changed and Opportunity Status Changed triggers let each move start or stop the right workflow:
Wherever you can, let real events move the card instead of relying on staff to drag it. A form submission, a booked appointment or a no-show coming from your calendar or EHR is more reliable than someone remembering to update the board.
We've seen this happen more than once. A lead comes in, the automation texts them, they reply, and five minutes later a staff member sends almost the same opening message because they can't see what already went out. It makes the practice look disorganized immediately.
Anyone working leads should be able to open the contact in GoHighLevel and see where the person came from, what they're interested in, every message that's been sent, how they replied, whether they've booked and what stage they're in. Keep texts, calls and emails in the GoHighLevel conversations inbox instead of on personal phones, and make sure automated follow-up stops once a real conversation starts. The CRM should give your team context before they jump in, not make the conversation harder.
No. GoHighLevel is great for marketing, communication, lead tracking, follow-up and lifecycle automation, but it shouldn't be your clinical system of record. If you use Cerbo, OptiMantra, Zenoti, Mindbody or another EHR or practice management system, decide upfront which system owns which information. The EHR keeps clinical records, and GoHighLevel handles acquisition and communication.
The value is in connecting them. If your EHR already knows someone booked, cancelled, no-showed or completed an appointment, that event should update GoHighLevel automatically instead of your receptionist entering the same thing twice. We cover this in our healthcare CRM and EHR automation guide and in our technical guides for Cerbo and GoHighLevel and connecting OptiMantra to your CRM.
Once the stages are defined consistently, four conversion rates tell you where to look:
{{There should be an image here of a funnel showing contact rate, booking rate, show rate and close rate, with an example of where each one drops off}}
Without these numbers, all four problems look the same from the outside: “our marketing isn't working.” The fix could be the ads, follow-up, scheduling, show rate, pricing or the consult, and you can't fix the right thing until you know where people are dropping off. That's why we care more about a clean pipeline than a cost-per-lead report, and it's the same idea behind why your healthcare marketing isn't failing, your sales process is.
A good GoHighLevel pipeline doesn't need to look complicated. It needs to match how your practice actually turns a stranger into a patient, and every stage should answer two questions: what happened with this person, and what should happen next?
When it does, your team knows what to do, automations start and stop at the right time, no-shows get recovered, your EHR and CRM stay in sync, and your ads can optimize for patients instead of the cheapest form fills.
NexaMed is a healthcare marketing agency for hormone clinics, med spas, longevity clinics, sexual wellness clinics and telehealth practices. We build the GoHighLevel pipelines, automations and conversion tracking that connect ad spend to real patients. If you'd like a second set of eyes on your setup, get in touch with our team.
Most med spas can start with nine stages: New Lead / Contacted, Qualified, Consultation Booked, No Show / Needs Reschedule, Consultation Showed, Treatment Recommended, Closed Won, Dead / Unresponsive and Long-Term Nurture. The exact names matter less than making sure each stage reflects something that actually happened and triggers a clear next step.
Usually six to ten. With fewer, you can't see where leads drop off. With more, staff stop keeping it updated. Cut any stage that doesn't change what your team does, which automation runs or what you report on.
They can be. Separating them lets you measure how many new leads your team actually reaches, which helps if speed to lead is a problem. Either way, define Contacted as a real two-way conversation, not a voicemail.
The stage shows where someone is in your process, like Consultation Booked. The status (Open, Won, Lost or Abandoned) records the outcome. GoHighLevel's revenue and win/loss reporting is based on status, so mark opportunities Won or Lost even if you also have Closed Won and Dead stages.
For higher-ticket treatments, two to four weeks of follow-up every few days is reasonable, along with calls from the front desk. Stop the automated sequence as soon as the person replies, books or opts out.
Usually not. Use one acquisition pipeline and store the treatment in a custom field. Create a separate pipeline only when the sales process itself is different, like a membership or a multi-visit program.
Yes. A no-show needs a different next step than a new lead or a booked patient. A No Show stage can trigger a rebooking sequence and shows you how many missed appointments you recover.
The opportunity moves to Consultation Booked, lead nurture messages stop, and confirmation and reminder messages start. If you track Google Ads conversions, the booking can also be sent to Google as an offline conversion.
The automated sequence should stop so your staff can take over. In GoHighLevel, turn on Stop on Response in the workflow settings to handle this automatically.
Yes. Workflows can create and move opportunities based on form submissions, booked appointments, appointment status changes, replies and data synced from your EHR. Some stages, like Qualified, may still need a staff member to update them.
After reasonable active follow-up, mark them Lost with a reason and move them into long-term nurture. Many people book months later when their timing or budget changes.
No. Keep your EHR as the clinical system of record and use GoHighLevel for marketing, communication and lifecycle automation, with appointment events syncing between the two.
Yes. With the GCLID saved on the contact, events like booked consultations and new patients can be sent to Google Ads as offline conversions, so campaigns optimize toward appointments and revenue instead of form fills. Our GoHighLevel Google Ads conversion guide shows how we set it up.
You’ve outgrown "basic" marketing. Nexamed builds the advanced lead-gen infrastructure your med spa needs to capture high-ticket patients and scale without the manual mess.
Keep up to date with medspa marketing strategies.

