GoHighLevel · Pillar guide
GoHighLevel Patient Reactivation for Med Spas: Lapsed-Client Win-Back Setup
Quick answer
Patient reactivation for med spas in GoHighLevel means finding clients who are overdue for their own treatment cycle, not everyone who has been quiet for a year. Build one Smart List per service line from the Last Appointment At date, enroll it in a workflow with a Wait action and a send window, stop on rebooking or STOP, and measure the result from your own bookings.
Part of the guide: GoHighLevel expert for med spas
Key takeaways
- A med spa client is lapsed when they are overdue for their own treatment cycle, so the cutoff differs by service line. One rule such as no visit in 12 months hides the injectable client who is eight weeks late and over-messages the client who is on schedule.
- HighLevel's Smart List date filters include Last Appointment At with an Is, More Than, N days ago operator, plus nested AND filters for SMS DND Disabled and tags. HighLevel's help article says contacts cannot be added to a Smart List by hand; they enter and leave as they match the filters.
- You can enroll a Smart List into a published workflow with the Trigger automation bulk action, and the Send in Drip Mode option enrolls a set number of contacts per batch at a set interval, which keeps replies at a volume the front desk can handle.
- Reactivation texts are promotional. Capture and prove written consent, honor STOP through Do Not Disturb, and keep sends inside lawful hours. Each rule is covered in our TCPA setup guide and DND answer, linked below.
- Measure from your own booking data: the share of messaged clients who booked and attended within a fixed window, and the revenue of those visits. We found no sourced benchmark for med spa reactivation rates and do not quote one.
The problem this page solves: patient reactivation for med spas. Your med spa has hundreds of past clients in HighLevel (GoHighLevel), you know many are overdue, and a flat “we miss you” blast to everyone either hits people who are on schedule or skips the ones who are late. The fix is to define lapsed per treatment cycle, build Smart Lists that stay current, and run a workflow that stops itself. This is the system page for GoHighLevel expert for med spas work on win-back. It assumes you have read our med spa automation guide, which covers no-show recovery and membership renewal; those are not repeated here.
Checked on October 15, 2026 against HighLevel’s help articles on Smart Lists, Advanced Filters, bulk workflow enrollment, the Wait action, the If/Else action and the Goal Event action, plus 47 CFR 64.1200 and 45 CFR 164.501 on eCFR.
What is patient reactivation for med spas, and who counts as lapsed?
A lapsed client is one whose days since last appointment exceed their own treatment cycle plus a grace period you choose. Written as a rule: days since Last Appointment At is greater than cycle days plus grace days, for that client’s service line.
That is a different number for each line. A client who gets a neurotoxin on a repeating cycle is overdue much sooner than a client who buys a single skin treatment once a year. The product labels we checked for neurotoxins (listed in the campaign guide) state a minimum gap of three months, so a few months of silence is normal there and not yet lapsed. For fillers, lasers and facials, the cycle comes from your medical director or the product’s instructions for use, which we did not open for this page. Treat every number below as an editable assumption.
| Client type | How lapsed is defined | Where the number comes from |
|---|---|---|
| Recurring-cycle service (for example neurotoxin) | Days since last visit more than cycle days plus grace | Product label, then your provider’s protocol |
| Course-based service (for example a laser series) | Series not completed, or no visit since the last session by more than the planned gap | Your treatment plan |
| One-off or seasonal service | No visit in a fixed number of months | Your choice, reviewed yearly |
| Member with an active membership | Not lapsed; handle in renewal workflows | See the automation guide |
What data does HighLevel need before you can segment?
Three pieces: the date of the last visit, the service line, and the cycle length. HighLevel gives you the first natively. You create the other two.
- Last Appointment At. A built-in date field you can filter on in Smart Lists, listed in HighLevel’s Advanced Filters article alongside Created On, Last Activity On and Date of Birth.
- Service line. A dropdown custom field such as Injectables, Laser, Skin, Body. HighLevel’s article notes that dropdown, radio and checkbox custom fields follow the same filter operators as Tags.
- Cycle days. A number custom field. The same article says number custom fields follow the engagement-score filter operators, which include Equal To, Between and Greater Than.
- Consent and status tags. For example a marketing-SMS consent tag, a do-not-contact tag and a rebooked tag. Tags are string filters, so they support Is, Is Not and Is any of.
Two cautions. First, Last Appointment At only helps if your bookings flow into HighLevel; if your booking software is separate, see booking software integration before you trust the filter. Second, we did not find HighLevel documentation on how Last Appointment At treats a future-dated appointment, so test with one contact who has a visit booked next week before you launch.
Which Smart Lists should a med spa build?
Build one list per decision, not one giant list. HighLevel’s help article describes a Smart List as a dynamic list that updates as contacts meet or stop meeting its filters, and says you cannot add contacts by hand.
Create each one at Contacts, Smart Lists, + Add smart list, then open Advanced Filters, search for the field, pick the operator, enter the value, click Apply, and click Create. HighLevel’s Advanced Filters article says + Add Nested Filter adds an AND condition and + Add Filter adds an OR condition.
| Smart List | Filters (all nested with AND) | Use |
|---|---|---|
| Lapsed: injectables | Last Appointment At Is More Than N days ago; Service line Is Injectables; SMS DND Disabled; Marketing consent tag Is; Rebooked tag Is Not | Main win-back send |
| Lapsed: other lines | Same, with each line’s own day count | One list per line |
| Due soon | Last Appointment At Is More Than (cycle minus 14) days ago and Is Not More Than cycle days ago | Gentle reminder before they lapse |
| Long-lapsed | Last Appointment At Is More Than 365 days ago (your choice) | Last attempt, then rest |
| Opted out | SMS DND Enabled, or Email DND Enabled | Audit; never message |
| Never booked | Last Appointment At Is Empty | Lead nurture, not reactivation |
The date operators come straight from HighLevel’s table: Is More Than means the appointment happened longer ago than the number you enter, and Is Not More Than turns it into a within-the-last window. HighLevel’s best-practice note says to use More Than to identify inactive contacts. The DND filters, Enabled and Disabled, are listed for DND all, SMS DND, Email DND and the other channels; our answer to what DND is in GoHighLevel explains what each one blocks.
How do you build the reactivation workflow?
There are two builds. Pick the first for a one-time clean-up of your existing list, the second for ongoing win-back.
Build A: one-time campaign from a Smart List
- Build the workflow at Automation, Workflows, + Create Workflow, Start from scratch and publish it. HighLevel’s bulk enrollment article says only published workflows appear in the picker.
- Add a Send SMS action with a message that holds no treatment name and no health detail (see aftercare texts without PHI).
- Add a Wait action, choose The contact to reply, set a timeout of 2 days.
- Add a Goal Event action before the second touch, goal type Appointment or Contact Tag, and set If Contact Reaches This Goal Without Meeting Conditions to End this workflow.
- Add a second Send SMS and an Add Contact Tag action (“reactivation-touch-2”), then a final Wait, then Remove from Workflow or a handoff Assign to User.
- Go to Contacts, Smart Lists, open the list, click Select all, click Trigger automation, set Automation Type to Workflow, choose the workflow, and choose a Mode.
- For Mode, use Send in Drip Mode: pick a start date and time, the Number of Messages per Batch and Repeat after interval. HighLevel describes drip mode as staggered enrollment for large lists. Size the batch to how many replies your team can answer the same day.
- Click Check Progress or go to Contacts, Bulk Actions to see status and statistics.
Note that a bulk action enrolls the contacts selected at that moment. It does not keep adding people as they become lapsed.
Build B: always-on win-back
- Trigger: Appointment Status (HighLevel’s trigger list describes it as firing on status changes), filtered to the completed or showed status. Confirm the exact status name in your account.
- If/Else on the Service line field, one branch per line, plus the required None branch.
- In each branch, Update Contact Field if you need to stamp a date, then a Wait with A set period of time. HighLevel’s Wait article says the time period and unit can be Dynamic, taking a custom variable, so one Wait can read each client’s cycle days. Add the grace period in a second Wait or in the number you store.
- Turn on Advance Window inside that Wait so it resumes only on chosen days and hours (next section).
- If/Else again: has the contact rebooked, or is a rebooked or DND tag present? If yes, exit.
- Send SMS, then Wait for a reply, then the second touch, then Add Contact Tag (“lapsed-contacted”) so Smart Lists can exclude them.
Because each new completed visit re-triggers Build B, a client who returns starts a fresh clock. Test that behavior with two appointments on one test contact before launch; if your account re-enrolls differently, adjust the workflow’s re-entry setting.
When should reactivation messages go out?
Inside lawful hours first, then inside the hours your front desk can answer. The FCC rule at 47 CFR 64.1200(c) bars telephone solicitation to a residential subscriber before 8 a.m. or after 9 p.m. at the called party’s location. Our TCPA guide sets a tighter default of 9 a.m. to 7 p.m. in the contact’s time zone and explains the workflow Time Window under Communication Settings.
| Rule | Where to set it in HighLevel | Notes |
|---|---|---|
| No sends before 8 a.m. or after 9 p.m. contact-local | Workflow Settings, Communication Settings, Time Window (see the TCPA setup guide) | Pick Contact Timezone; make sure contacts have one |
| Resume only on chosen weekdays and hours | Wait action, Advance Window: Resume On, Resume Between Hours, Additional Filter | Resume Between Hours accepts a window or an exact start time |
| Do not flood the front desk | Bulk action Mode: Send in Drip Mode | Batch size and Repeat after interval |
| Do not text opted-out clients | Smart List filter SMS DND Disabled; workflow respects DND | See what DND is |
We have no sourced data on which weekday or hour converts best for med spas, so pick a window for your staffing and test two windows against each other.
What happens when the client replies, books or texts STOP?
Plan for the three outcomes before you send:
- Reply. A Wait on The contact to reply with a timeout lets the workflow branch on whether anyone answered. A second Wait type, A user to reply, holds until a staff member responds, with a timeout that can escalate through Send Internal Notification or Assign to User, per HighLevel’s Wait article.
- Booking. The Goal Event action can react to an Appointment Status or Contact Tag goal. Use it to end the workflow. Also tag the contact when they book so Smart Lists exclude them.
- STOP. HighLevel sets SMS Do Not Disturb when a client replies STOP. Do not build a path that overrides it. If you want a team alert, the Contact DND trigger fires when DND turns on. Details are in the TCPA guide and the DND answer.
What consent and HIPAA rules apply to win-back texts?
Reactivation texts are promotional, so the consent rules in our TCPA setup guide apply: written consent captured on your form, proof kept, STOP honored through DND, and sends inside lawful hours. Consent for appointment reminders does not automatically cover offers. Check the consent tag in the Smart List, not in your head.
HIPAA is a separate question and only applies if your med spa is a covered entity, which a purely cash-pay spa may or may not be (45 CFR 160.103). If it is, the HIPAA definition of marketing at 45 CFR 164.501 is a communication about a product or service that encourages purchase or use, with exceptions. One exception is a communication to describe the covered entity’s own health-related product or service, but that exception does not apply where the entity receives financial remuneration from a third party whose product is described. If a manufacturer pays you to promote its product, talk to counsel before texting it. Keep treatment names and clinical detail out of the text either way. See is GoHighLevel HIPAA compliant. This is not legal advice.
How do you measure whether reactivation worked?
Use four counts from your own account and one holdout. Pull a snapshot before launch.
| Metric | Definition | Where to read it |
|---|---|---|
| Messaged | Contacts enrolled | Contacts, Bulk Actions, statistics icon |
| Replied | Contacts who texted back | Conversations, filtered by the date range |
| Booked | Contacts with a new appointment within 30 days of first message | Appointment Status trigger count, or a tag your booking workflow applies |
| Attended | Booked contacts whose appointment reached the showed status | Same, filtered by status |
| Revenue | Total of attended visits | Your booking or POS data |
Hold back a random 10 percent of the Smart List and do not message it. Compare booked rate between messaged and held-back groups at 30 days. The held-back group tells you how many would have returned anyway, which is the number most win-back reports leave out. The 10 percent and the 30 days are our suggestions, not sourced standards.
Illustrative arithmetic, not a forecast: if you message 400 clients, 40 book and 30 attend, and your average attended visit is $300, the campaign is tied to $9,000 of visits. If the held-back group of 40 shows 2 attended, the lift is smaller than 30 of 400 suggests. Replace every number with yours.
What usually goes wrong?
| Symptom | Likely cause | Fix |
|---|---|---|
| Smart List is huge on day one | Cutoff days too low, or the date field is empty for imported clients | Raise the cutoff; check Last Appointment At is Not Empty |
| A client got a text after booking | No Goal Event or tag exit, or the booking workflow ran after the send | Add Goal Event, tag on booking, test with a real contact |
| Same client texted twice | Enrolled by both a bulk action and Build B | Add a tag check at the start; see duplicate messages |
| Workflow never starts | Trigger filter does not match the status name | See workflow not triggering |
| Texts not delivering | Registration or error code | See SMS error codes |
Need this built and tested?
aibrevo scopes and builds win-back workflows for med spas as part of a GoHighLevel setup, including the fields, Smart Lists, consent checks and a test plan. See GoHighLevel implementation services or send a message. For a setup that is already live, a review of existing workflows is covered under audit and fix for med spas.
Founder’s note, Alpit Patel. I see win-back campaigns text people who already rebooked, every week. Create the data before you build the campaign. Last visit date comes natively, but service line and cycle length have to be created as fields. A client is lapsed only when days since the last visit exceed that client’s own cycle plus a grace period. Check the consent tag inside the Smart List instead of trusting memory, because reminder consent does not cover offers. Take a snapshot of your counts before launch and keep a holdout, so you can measure the result. I founded aibrevo in San Francisco in 2021, and through autoesta I have overseen 320+ GoHighLevel implementation projects across med spas, real estate, healthcare, dental, home services, SaaS and professional-services clients in the US, UK and UAE. About Alpit
Sources
All checked 2026-10-15.
- HighLevel Support, Getting Started With Smart Lists: Smart List steps, dynamic membership, no manual add.
- HighLevel Support, Advanced Filters in Smart Lists: Last Appointment At, date operators, DND filters, AND and OR, custom field operator behavior.
- HighLevel Support, How to Add Contacts in Bulk to a Workflow: Trigger automation, modes, Bulk Actions page.
- HighLevel Support, Workflow Wait Action Setup and Options: wait types, Dynamic values, Advance Window.
- HighLevel Support, If/Else workflow action and Appointment filter options: branching, appointment triggers.
- HighLevel Support, Goal Event workflow action: goal types and End this workflow.
- HighLevel Support, A List of Workflow Actions and A List of Workflow Triggers: action and trigger names.
- eCFR, 47 CFR 64.1200: 8 a.m. to 9 p.m. rule (data through 2026-10-13).
- eCFR, 45 CFR 164.501 and 45 CFR 160.103: definition of marketing, covered entity.
All pages in this guide
- Med Spa Aftercare Text Sequences and Follow-Ups Without PHI in the Message Blog
A med spa aftercare text sequence should carry timing, a callback route and a pointer to your portal or paper instructions, not the treatment, dose, reaction or result. HHS guidance says to limit what goes in an unencrypted message, and no HHS FAQ we found addresses SMS directly, so treat the email guidance as the closest rule. - Med Spa Lapsed Patient Reactivation Campaign: Define Lapsed by Treatment Cycle Blog
A med spa lapsed patient reactivation campaign starts with a definition: a client is lapsed when they are overdue for their own treatment cycle, not when a calendar year has passed. Neurotoxin labels give a three-month minimum gap, so use that as a floor, add a grace period, and treat every other interval as an assumption your provider sets.