Tutorial
Post-Appointment Review Workflow in GoHighLevel (Full Build, 2026)
By Marnix Geerkens. Published . Updated .
TL;DR
This GoHighLevel workflow fires the moment an appointment is marked complete. It sends an SMS within an hour, checks for unhappy replies, routes complaints to a private form, and sends an email follow-up 48 hours later if the customer has not left a review. The whole sequence takes about three hours to build. You need GoHighLevel Starter ($97/mo) plus SMS and email usage costs.
- Trigger: appointment status changes to Completed
- Includes: SMS, negative-reply detection, private feedback branch, email follow-up
- Plan: GoHighLevel Starter or higher
Before you start
- GoHighLevel account, any plan (Starter at $97/mo works)
- Google Business Profile connected to your GHL sub-account
- A2P 10DLC campaign approved for your phone number
- Appointments booked through GoHighLevel Calendars
Step 1: Set up the calendar trigger
In Automation, create a new workflow from scratch. Add the trigger Appointment Status and set it to Completed. In the trigger settings, choose which calendar this workflow applies to. If you run multiple service types, create one workflow per calendar so the messaging can be specific.
Tip: set a filter so the workflow only fires for contacts who have not already left a review. You can do this by adding a contact tag "review-sent" after Step 3 and adding a filter to the trigger that excludes contacts with that tag.
Step 2: Add a short wait before the first message
Add a Wait action and set it to 30 to 60 minutes. This small gap lets the customer finish their session, drive home, and settle before your message arrives. Messages sent immediately after a medical appointment or a long service call often feel intrusive.
Step 3: Send the SMS review request
Add a Send SMS action. Use a warm, personal tone. Here is a template:
After the SMS action, add a tag: "review-sent." This prevents the workflow from running again on repeat customers who have already received a request.
Step 4: Check for negative replies
Add a Wait for Reply action set to 24 hours. Then add an If/Else that checks whether the reply contains negative keywords (bad, disappointed, unhappy, terrible, awful, wrong, broken, upset).
- Negative reply: send an internal notification to your team and send the customer a private feedback form link so you can resolve the issue before it reaches Google.
- No negative reply or no reply: continue to Step 5.
See the negative-review deflection guide for the full private feedback form setup.
Step 5: Email follow-up after 48 hours
Add a Wait of 48 hours. Then add an If/Else that checks the Link Clicked condition for your review URL.
- Clicked: end the workflow. They have already visited the review page.
- Not clicked: send a short email. Subject: "Quick request, [First Name]." Body: two sentences max, the review link, and a genuine thank-you.
Step 6: Test before going live
Create a test contact with your own phone number and email. Set a test appointment and mark it complete. Shorten the wait times to 5 minutes for testing. Verify:
- SMS arrives with the correct review link
- Reply with "bad" triggers the internal notification and the feedback form branch
- No reply leads to the email follow-up
- Clicking the link stops the email from sending
- The tag "review-sent" appears on the contact
Once all five checks pass, restore the real wait times and set the workflow to Active.
Troubleshooting
Workflow fires for cancelled appointments
Double-check your trigger filter. The status must be set to "Completed" only, not "Any Status Change."
The review link is blank
Reconnect your Google Business Profile under Settings, Integrations. The custom value only populates after a successful connection.
Customers get duplicate messages
Make sure the "review-sent" tag filter is on the trigger. Without it, repeat customers who book a second appointment will re-enter the workflow.
Related guides
Affiliate disclosure: RocketLauncher earns a commission if you sign up through our link, at no extra cost to you.
Frequently asked questions
How soon after an appointment should I send the review request?
Send the first message within one hour of the appointment ending. The experience is still fresh and the customer is most likely to respond. Waiting a full day cuts response rates noticeably.
Can I use this workflow for any type of appointment?
Yes. The workflow works for any appointment type in GoHighLevel Calendars: service appointments, consultations, sales calls, or follow-ups. You just choose which calendar or appointment status triggers the sequence.
What if a customer cancels or does not show up?
Add an If/Else step that checks the appointment status. Only continue the workflow if the status is "Completed." Cancelled or no-show appointments exit the branch without receiving a review request.
How many review requests can I send per month?
You can send as many as you have appointments. Each SMS costs a fraction of a cent in usage billing on top of your GoHighLevel plan. Most local businesses spend a few dollars a month on this.
Does this work with third-party calendar tools like Google Calendar?
It works best with GoHighLevel's built-in Calendars feature. If you sync an external calendar, the "Appointment Status Changed" trigger may not fire reliably. The cleanest setup is to book appointments directly in GHL.
Can I white-label this workflow and sell it to clients?
Yes. On the Unlimited plan ($297/mo) or higher, you can save this workflow as part of a snapshot and install it in any sub-account. Many agencies sell a "review engine" as a monthly retainer service built on exactly this workflow.
