GoHighLevel workflows are the reason to use the platform at all. Everything else — the calendars, the inbox, the pipeline — exists in other tools. What sets the platform apart is that one builder can react to a form, a call, a booking, a tag or a stage change, and then send messages, create tasks, update the pipeline and wait for a reply, across every channel.
These are the twelve I build most often for service businesses, in roughly the order they pay back. For each one I give the trigger, the actions and — the part people skip — the exit condition. Assumes the account is set up as described in the CRM setup guide: a pipeline, source tags, calendars and A2P registration in progress.
Before you build: three rules that keep workflows from annoying people
- Every follow-up workflow needs an exit. A goal step (“stop when they reply”) or a condition that removes the contact once they book, buy or are tagged
customer. Without it, someone who paid last week gets “just checking in” on Monday. - Send during working hours. Use the workflow’s time window so a 2am form submission gets its instant reply, but the second-day nudge waits until 9am.
- One trigger per workflow. When a workflow has five triggers, nobody can tell why a message went out. Small, named workflows are easier to test and easier to hand over.
The twelve workflows
1. New lead — instant reply and pipeline entry
Trigger: form submitted or contact tagged source-*. Actions: create opportunity in “New lead”; wait 1 minute; SMS (“Thanks {first name} — got your enquiry about {service}. I’ll call within the hour. Reply here if it’s urgent.”); email with the same message and your calendar link; internal notification to the owner. Exit: none needed; it runs once.
This is the speed-to-lead workflow, and it is the one that moves conversion the most.
2. Missed call — text-back
Trigger: call status “missed” or “no answer” on the business number. Actions: SMS within seconds (“Sorry we missed your call — this is {business}. Reply here or book a time: {calendar link}”); create contact and opportunity if new; notify staff. Exit: stop if the call is returned within 5 minutes (use a wait and a condition on “last call outcome”).
3. Appointment booked — confirmation and reminders
Trigger: appointment status “confirmed”. Actions: move opportunity to “Call booked”; confirmation SMS and email; wait until 24 hours before → reminder; wait until 1 hour before → reminder with “reply R to reschedule”. Exit: appointment cancelled or rescheduled removes the contact; the new booking re-enters.
4. No-show — recovery
Trigger: appointment status “no-show”. Actions: wait 30 minutes; SMS (“Looks like we missed each other — want to pick another time? {calendar link}”); wait 1 day; email with the link; task for a human. Exit: new appointment booked.
5. No reply after 48 hours — nudge sequence
Trigger: opportunity in “Contacted” for 2 days (use the “stale opportunity” trigger or a wait step in workflow 1). Actions: SMS day 2; email day 3; SMS day 5 with a different angle (a useful tip, not “just checking in”); task for a human on day 7. Exit: any inbound reply, booking, or stage change.
6. Quote sent — follow-up
Trigger: opportunity moved to “Proposal sent”. Actions: wait 2 days; SMS offering to walk through it; wait 5 days; email with a relevant case study or FAQ; wait 7 days; task for a call. Exit: stage moves to Won or Lost. Quotes with two automated follow-ups close noticeably more often than quotes with none.
7. Won — onboarding and expectations
Trigger: stage “Won”. Actions: tag customer (which also removes the contact from every sales workflow); welcome email with what happens next; internal task to create the project or job; optional SMS with the point of contact. Exit: one-time.
8. Job complete — review request
Trigger: tag job-complete (applied by staff or by an invoice-paid event). Actions: wait 1 day; SMS with a direct Google review link; wait 4 days; if no review detected, one gentle email; then stop. Exit: review received (via the reputation module) or two attempts done.
9. Lost — reason and reactivation
Trigger: stage “Lost”. Actions: internal task to record the reason in a custom field; wait 60–90 days; one message with a relevant offer or a “still need help with this?”; tag reactivation-sent. Exit: reply or booking re-enters workflow 1.
10. Database reactivation — quarterly
Trigger: manual, run once a quarter on a filtered list (past customers, no activity in 6 months, opted in). Actions: one SMS and one email with a genuine reason to come back (seasonal service, new offer, a reminder they are due). Exit: reply. This is usually the cheapest revenue in the account, and it needs A2P approval and clean consent — see the A2P guide.
11. Lead-source reporting — tag hygiene
Trigger: contact created. Actions: if/else on the form name, UTM field or channel to apply exactly one source-* tag and set the “Lead source” custom field. No messages. This unglamorous workflow is what makes “which channel produced our customers” answerable later; it pairs with the conversion tracking setup.
12. Internal escalation — stale opportunities
Trigger: opportunity unchanged for 7 days in any active stage. Actions: task assigned to the owner of the opportunity; notification to the manager if still unchanged after 14 days. Exit: stage change. Automation should chase customers gently and staff firmly.
A worked example: the quote follow-up in detail
Because it is the workflow most people get wrong, here is number 6 step by step as I build it:
- Trigger: Opportunity status changed → pipeline “Sales”, stage “Proposal sent”.
- Goal (exit): “Stage changed to Won or Lost” — placed at the top so the whole workflow stops the moment the deal closes.
- Wait: 2 days, only during business hours.
- SMS: “Hi {first name}, Saleem here. Did the proposal make sense? Happy to jump on a 10-minute call and walk through it — {calendar link}.”
- Wait: 5 days.
- Email: a short note plus one relevant example of similar work. No pressure language.
- Wait: 7 days.
- Task: “Call {name} about the proposal” assigned to the salesperson, due today.
- End. Nothing further automated; a human decides.
Testing before you switch a workflow on
- Use a test contact with your own phone and email.
- Turn on the workflow’s testing mode or set waits to minutes temporarily; restore them before going live.
- Trigger it three ways: the real trigger, a manual add, and the exit condition halfway through. Confirm the exit actually removes the contact.
- Read every message on a phone. Merge fields that show as blank ({first name} with no value) are the most common embarrassment; use fallback values.
Do not build all twelve on day one. Build 1, 3 and 5. Run them for two weeks. Add 2 and 6. Then the rest, one at a time, checking the conversation view for anything that reads wrong. A slow, tested rollout is how the team ends up trusting the system instead of switching it off.
Further reading: GoHighLevel Help Center.
FAQ
How many workflows should a GoHighLevel account have?
Start with three — new-lead response, appointment reminders and no-reply follow-up — and add the rest one at a time once each runs cleanly for a couple of weeks. Accounts with fifty untested workflows are harder to fix than accounts with none.
What is the difference between a workflow and a campaign in GoHighLevel?
Campaigns were the older, linear sequence tool. Workflows are the current automation builder with branching, waits, conditions and actions across every module. Build everything new as a workflow.
Can workflows send WhatsApp messages?
Yes, when the WhatsApp integration is connected to the sub-account. Templates approved by Meta are required for business-initiated messages, so plan the wording before relying on it.
Why did my workflow message a customer who already booked?
The workflow had no exit condition. Every follow-up workflow needs a goal or a “remove from workflow” step that fires when the contact replies, books or is tagged as a customer.
Want these built, tested and documented in your account? That is the core of the GoHighLevel automation work I do — book a call and tell me which three you would switch on first.