Hey Kyle. Everything for this round lives here so it's all at your fingertips. Tick each item as you go and your progress saves automatically in this browser. Two parts: clear the live client issues first, then build the improvements out across Caroline, Chris and Steven's accounts.
Important setup note: we run native Meta lead forms, not landing pages. So anything lead-related (attribution capture, the speed-to-lead / Call Connect flow) triggers off the Facebook Lead Form with the phone field mapped through, and lead source comes from the ad naming + the Facebook integration's campaign fields rather than a URL. Build it that way.
What I'm handling, so it's not on you
I'm taking the client reporting / dashboard, the Make.com scenarios (I'm rebuilding those with Claude Code routines), and the copy for the nurture and reminder sequences. Where a task below needs the Make side or the copy, that part is mine, you just build the GHL piece around it. Booking software (Phorest / Fresha) and the revenue reconciliation are also on me.
In plain English, what the Make.com automations do (so you know what's plugging into your GHL work): when an appointment gets booked, one quietly copies that lead onto the client's results sheet. When the clinic fills in the post-appointment survey, another updates that same row with whether the patient showed and what they spent. A couple more ping Slack when an appointment hasn't been confirmed, or when someone cancels. They're the glue between your GHL workflows and the reporting, and I'm building them, so you don't need to touch Make.
Scope · 4 June. Live issues the clients raised, plus the priority build items that ship in this round. The flagged ones are costing real leads or confusing real customers right now, so they go first.
Do these first: the STOP/DND command misfiring across all three · Steven's broken follow-up flows + wrong T&Cs on live ads · Chris's number showing as withheld · Caroline's reactivation hitting active clients.
Across all three accounts
"STOP" / Do-Not-Disturb command not workingDo firstKyle
Melanie flagged this live: some people reply STOP (or get set to DND) and still receive the follow-up texts. Best guess is the AI sentiment/categorisation is misreading the reply, so the DND never triggers. Copy the AI categorisation logic onto the STOP keyword so it reliably fires DND, and stop follow-ups to anyone already in an active conversation. Also decide the rule: a DND contact should drop to Lost, not keep getting chased. This erodes trust on every account, so it's top of the list.
Audit every follow-up workflow stepDo firstKyle
Steven confirmed it's broken: contacts are stuck at "Make Offer" with no system chase, and he flagged in Slack that "most of the follow-up steps in both the database reactivation and the campaign" aren't firing. Walk both workflows step by step on Steven's account, fix the broken paths, then sanity-check the same flows on Chris and Laser & Skin.
The £50 gift-card T&Cs are being sent to the Meta ads audience. Swap to the correct terms for the running offer. This is live, so it's the top priority.
Steven asked (Slack + screenshot) to change the business name in the automated messages to "Skin Aesthetics By Krystian" and remove "Skin Aesthetics & Academy Ltd" — people only know them by the former. Update the custom value / business profile so it reads through everywhere.
Email notifications for new enquiries + cut SMS costKyle
Steven wants enquiry notifications by email as well as SMS, and flagged the SMS charges on the call. Switch enquiry notifications to email once Tomas confirms the address, and move internal team alerts off SMS to email or a dedicated Slack notifications channel to cut cost. Client/patient-facing comms stay on SMS (Meta aesthetics policy).
Number showing as withheld on outbound callsDo firstKyle
This is the big one I flagged on Upwork. Heather's outbound calls show as withheld/undefined instead of the clinic's purchased number, which kills pickup. The cause is the outbound caller-ID routing: in Phone System → Voice → Other Settings → Outbound Calls, "Default Phone Number for Outbound Calls" is set to "Prefer phone number assigned to user," and Heather's user has no number assigned. Either set it to "Prefer default phone number" so every call uses the verified number, or assign the purchased number to her user. The number Chris gave for Heather is 07713 021219. Then make a test call and confirm it displays correctly, not withheld.
Verify new Meta-lead texts fire for every leadKyle
Leads showed in Lead Connector with no SMS conversation for new Meta leads. Meg confirmed in Slack it's now firing (the Kimberley example), so this is a verify task: confirm the new-lead automation fires for every Meta lead, including ones who opt in overnight (the 8am-8pm send window means the first text waits until morning — make sure none get dropped).
Chris wants Heather to (a) call leads from PatientFlo so the clinic number shows, and (b) get the press-2 Call Connect notification as a backup since she works from home. Route the new-lead alerts to Heather on 07713 021219. Pairs with the Fast Five / Call Connect build in section 02.
We think this is already switched on, just double-check inbound recording + the whisper/disclaimer is live for Chris so Tomas can review calls for coaching.
Reactivation offer is going to active clientsDo firstKyle
Active clients are enquiring about the free £50 treatment, so the reactivation list includes current customers. Tomas told Melanie we'd switch the campaign to no-shows, cancellations and non-converts only and stop active clients entering — Kyle re-segments the smart list, Megan tightens the copy. Confirm to Tomas once it's live.
The girls missed early Meta leads because they land in the All inbox, not Unread (by design — the clinic sends the first message). Tomas set the tag is meta Team-Inbox filter live on the call; productise it as a saved filter and record a short Loom so the front desk can alternate All/Unread with the Meta filter on and star the ones to chase.
Daily call-back list / follow-up remindersKyle
Melanie asked for a way the front desk can remember who to call back as leads scroll off — ideally "here's everyone you need to get through today." Build a follow-up task list / smart-list view (and a nudge) so no lead gets lost. Right now she's manually noting "PatientFlo call this client" in the Fresha diary.
Leah, Caroline and Rhoda share one work-phone login, so we can't attribute calls/booking rate per person. Stopgap: everyone states their name at the start of the call (Rhoda currently doesn't) so Tomas can segment from the transcripts. Longer term: separate sub-users so PatientFlo tracks each rep.
Same as Chris, we think it's already on, just confirm inbound recording + whisper/disclaimer is live for Laser & Skin so Tomas can review calls for coaching.
Pipeline confusion — how to move / categorise leadsKyle
Mel asked: "how do we sort or move uninterested clients... do we categorise 'no' replies as lost or add an 'uninterested' field?" They didn't know leads auto-categorise by campaign. Handled properly by the pipeline-clarity task in this scope.
Beyond the bug fixes, these build items are part of the 4 June scope: the pipeline, the lead-status Loom, Fast Five + Call Connect, and the Google Calendar ↔ Fresha reporting bridge.
Make the pipeline obvious for the clientsPriorityKyle
This was the clearest objection from the clients, they don't know how to move a lead or what the stages mean, and don't realise leads auto-categorise by campaign. Tidy to one clear, self-explanatory stage set so every account reads the same way: Contacted → Offer Applied → Booked → Showed → Service Sold → Lost / No-show. Steven specifically asked for a "Contacted" stage to drag into, plus a way to track the voucher's redemption value (his "done calling" vs "services sold" split). This stage set also supports his 14-day cadence (day 1/3/5/7/10/14 = 6 calls, 4 texts, 1 voicemail).
Short client-facing Loom: how to drag a lead between stages, mark won / lost / no-show, and filter by campaign. Drop into each client's Slack so the front desk can self-serve.
Fast Five speed-to-lead + Call Connect + voicemail dropPriorityKyle
The single biggest lever. Build it on all three accounts (Steven, Chris and Laser & Skin all agreed on the calls). Trigger off the Facebook Lead Form (phone field mapped): instant SMS + email, wait for reply, AI intent branch to a booking link, and a Call Connect fallback that rings the clinic with a whisper ("new lead from PatientFlo, press 2 to call") and bridges them to the lead. Set timeout 20s, voicemail-detect on, business-hours wait so it never calls overnight. Add a speed-to-lead voicemail drop: if no one answers the callback, auto-drop a pre-recorded voicemail (looks like the front desk just tried them) then fire the missed-call text — Melanie asked for this directly. Kyle — flag if you'd rather not include the voicemail drop, it's optional. (Different from the pre-appointment confirmation voicemail in section 02.)
Google Calendar ↔ Fresha / Phorest reporting bridgeKyle
One-way sync so PatientFlo / Google Calendar bookings flow into the booking software (card capture for no-show protection) and back into GHL for show-rate and revenue reporting. Best tackled once the urgent bugs are cleared. I’ll handle the Make / Claude side; you wire the GHL trigger + the form-to-contact push.
The remaining build-out across Caroline, Chris and Steven's accounts, after the 4 June scope above. Where it needs copy or the Make.com side, that part's mine, you build the GHL piece.
After each appointment the clinic logs showed / no-showed / amount spent via a trigger link. You build the survey form + the GHL workflow that sends it on the appointment trigger. I build the Make.com side that writes it to the results sheet (the 4.1 / 4.2 scenarios). This is what powers the reporting, so it's a priority.
C · Attribution / lead source for native lead forms
Capture lead source on the contactKyle
Because we use native Meta lead forms (no landing page), there's no URL to read UTMs or fbclid from. Instead: make sure the Facebook integration is mapping the campaign / ad set / ad names onto the contact, add a clean Lead Source custom field, and lean on a consistent ad-naming convention so every booking can be traced back to the right campaign. That's enough for the reporting to attribute revenue to Meta. (A CAPI "Lead" event off the lead-form trigger is a nice-to-have, using email/phone matching, not fbclid.)
Auto-fires when a lead is moved to no-show: email + text + internal notification, daily for 3 days, then into long-term nurture. Pairs with the post-appointment survey.
License & Scale walkthrough · Show-rate best practices
E · Confirmation system optional, big show-rate lift
Confirmation system + voicemail dropKyle
Optional but Cameron reports a 30%+ show-rate lift. A 24hr / 3hr confirmation step, plus a voicemail drop to the patient before the appointment so it lands even if they don't pick up. You build the GHL workflow + the voicemail drop; the Slack-notification-on-unconfirmed Make scenario is mine. Add if there's room, otherwise park for next round.
License & Scale walkthrough · Confirmation system SOP
F · Cameron-complete snapshot the rest of the dialed-in build
These close the gap to a fully dialed Cameron subaccount we can export as the reusable client snapshot. Most are build with my copy/AI/reporting piece dropping in.
GHL calendars per serviceKyle
Foundational: reminders, confirmation and the AI booking flow only fire off real appointment objects. Bookings currently live in Fresha, so set up GHL calendars per service (Google Calendar as the interim bridge) so every appointment exists in PatientFlo for the automations to hang off.
Reusable SMS/email template library per journey stageKyle
Steven asked for templates across the patient journey: enquiry confirmation, reminders, missed-call follow-up, nurture, reactivation, post-treatment. Build the snippet/template library once so it ships inside the master snapshot. I supply the copy.
Standard Cameron component we don't have yet: a post-appointment review-ask workflow (Google reviews) that runs after a Showed/Service-Sold status. Steven only sends a Fresha checkout line today. This also feeds the ~6-week Google review campaign for SEO.
Once one account is fully dialed (Steven is most live), export it as the reusable client snapshot and Loom each repeatable step so onboarding the next clinic drops to the VA. This is the literal "95% done, dialed-in snapshot" deliverable.
Once the above is built on the accounts, prove it works end to end before we call it done. No new accounts to spin up, these are the three live clients.
End-to-end test on a live accountKyle
Push a test lead through one account: Facebook lead form → contact created with lead source → speed-to-lead SMS + Call Connect (and voicemail drop on no-answer) fire → reminders schedule → post-appointment survey sends. Suggest Steven since his data's live.
Before sign-off: reply STOP from a test contact and confirm no further messages go out, and confirm anyone already in conversation stops getting chased. Then re-run the database-reactivation and Meta-campaign follow-up flows end to end on Steven so nothing's left stuck at "Make Offer".
Check each pipeline reads cleanlyKyle
Open each client's pipeline and confirm the stages are obvious, leads are landing in the right place, and the dashboard count matches. This is the thing the clients complained about, so it has to be right.
Short Loom per repeatable step so onboarding the next clinic drops to the VA. Tomas builds the reusable snapshots out of these finished accounts afterward, that part's on him.
Every link in one place — all Cameron License & Scale resources. The walkthroughs are also embedded on each task in section 02, streamed from our server.