Work snippetCRM automation with AI
GoHighLevel and HubSpot automation with AI steps and approvals
How I would approach CRM automation with AI steps in GoHighLevel or HubSpot: a workflow sends each new lead or call outcome to n8n or Make, where a model summarises it, suggests the pipeline stage and drafts the follow-up. A person approves before a stage changes, a tag is applied or anything is sent.
Work snippet with example figures.
- Area
- CRM automation with AI
- Tools
- GoHighLevel · HubSpot · n8n · Twilio
- Typical scope
- US$2,200–3,800
- Timeline
- About 7 weeks · 4 fixed milestones
Problem
What the owner sees
- New leads that sit in a pipeline stage nobody has looked at
- Call notes that never reach the contact record
- Pipeline stages that mean something different to each person
- Follow-up texts and emails written from scratch, or not sent at all
- A missed call that waits until the next business day
- An automation that texts someone who has already opted out
Most CRM admin is reading and writing small notes: what was said, what happens next, and which stage the lead belongs in. A model can summarise a call or an enquiry and suggest the stage and the next message quickly. It must not move a deal, message a contact or touch a money field on its own. The design suggests, rules check the guardrails, and a person approves.
| Everyday situation | What goes wrong |
|---|---|
| A call ends and nobody writes it up | The next person starts from nothing |
| The stage is moved by hand, days late | Reports and follow-ups run on stale data |
| A contact replies STOP and the sequence carries on | A complaint, and a broken rule |
| A lead replies after being marked lost | The reply sits unseen in a closed record |
| The same person is in the CRM twice under two emails | Two histories and two owners |
| An AI step that changes stages by itself | A deal moves on a wrong reading and nobody notices |
System map
A field service business that runs its pipeline in GoHighLevel or HubSpot, takes calls on a Twilio number and sends follow-ups by text and email. A person in the office owns the pipeline and approves each AI suggestion.
A workflow inside the CRM sends each trigger to n8n or Make. The build reads the contact, summarises the event, suggests a stage and drafts the follow-up. Everything lands in a review queue, and only an approved item changes the CRM or sends a message.
| Part | What it does |
|---|---|
| GoHighLevel or HubSpot | Holds contacts, pipelines and conversations. Its own workflow sends a webhook on a new lead, a call outcome, a missed call or a stage change. |
| n8n or Make workflow | Receives the webhook, reads the contact, applies the guardrails and calls the model. It runs in your account. |
| Language model | One of the major LLM APIs such as OpenAI, Claude, Grok, Gemini and Mistral, or a local model. It returns a summary, a suggested stage, tags and a draft follow-up. It does not edit contact or money fields. |
| Call layer | A Twilio number for missed-call text-back. A voice agent built on Vapi or Retell can take a call and hand a transcript to the same queue. |
| Review queue | Each item with the summary, the suggested stage, the draft and the guardrail results, as a CRM task or an Airtable view. |
| Exceptions queue | Anything that fails a guardrail or a sync, with its reason and an owner. |
| Accounting | A won deal creates a draft invoice in Xero or QuickBooks Online. A person approves it there. |
How the data moves
- Lead or call outcome
- Webhook to n8n or Make
- Guardrails checked
- Summary, stage and draft
- Person reviews and approves
- Stage set and follow-up sent
- Won deal: draft invoice
Rules agreed in writing
Stages have one written meaning each. The model may only suggest a stage from the list, and a suggestion stays a suggestion until a person confirms it.
| Stage | Means | Entered when |
|---|---|---|
| New enquiry | A lead exists and nobody has spoken to them | A form, call or message creates the contact |
| Contacted | A person has spoken to the lead | A call is logged as connected, or a person replies |
| Quote requested | The lead has asked for a price | A person confirms it after a call or message |
| Quote sent | A written quote has gone out | The quote is sent from your quoting tool |
| Booked | A visit or job date is agreed | A person confirms the date |
| Won | The job is accepted and paid for or scheduled to be | A person confirms it |
| Lost | The lead has said no or has stopped replying | A person confirms it, with a reason |
| Item | Example setting |
|---|---|
| Suggestions only | The model suggests a stage, tags and a follow-up. Nothing is applied until a person approves. |
| Quiet hours | A message is never sent inside the quiet hours you set. It is held until the window opens. |
| Opt-outs | STOP, unsubscribe and do-not-contact flags block every draft. They are checked again at the moment of sending. |
| Fields the model never edits | Contact details, deal value, invoice fields and any field a person has changed by hand. |
| Prices and dates | Drafts never state a price, a discount or a booking date unless a person has typed it. |
| Won deal | Creates a draft invoice in Xero or QuickBooks Online. The build never approves or sends it. |
| AI action log | Every AI suggestion, edit and decision is logged on the contact. |
Flow steps
Eight steps run for each trigger. A held or failed item goes to the exceptions queue with the reason.
| Step | Trigger | What happens | Result |
|---|---|---|---|
| 1 Trigger | New lead, call outcome or missed call | The CRM workflow sends a webhook with the contact ID and the event. | Event received |
| 2 Fetch | Event | The contact, recent notes and the call transcript, if there is one, are read. | Context |
| 3 Guard | Context | Opt-out, quiet hours, a pending manual edit and a recent identical event are checked. | Allowed or held |
| 4 Summarise | Allowed | The model returns a summary, a suggested stage, tags and a draft follow-up. | Draft pack |
| 5 Queue | Draft pack | A review item is created for the owner, with the facts and the guardrail results. | Review item |
| 6 Approve | Reviewer | The reviewer edits and approves the note, the stage, the tags and the follow-up, or rejects them. | Decision |
| 7 Apply | Approved | The contact is read again. If it changed since the draft, the item returns to review. Otherwise the note, stage and tags are written and the follow-up is sent by the CRM. | CRM updated |
| 8 Log and invoice | Applied | The action is logged on the contact. A won deal creates a draft invoice in Xero or QuickBooks Online for approval. | Log and draft invoice |
| Event | What happens |
|---|---|
| Missed call | A text-back goes out through Twilio inside the allowed hours, only if the number has not opted out. It is drafted from your wording and approved once as a template. |
| Voice agent call | A Vapi or Retell agent can take a call and hand over the transcript. The summary and suggested next step go into the same review queue. |
| Reply STOP or START | Handled by the opt-out rules. The contact record is updated and every draft stops or resumes. |
Field mapping
Each field has one source and one destination. A field a person has changed by hand is never overwritten.
| Field | Comes from | Written to | Rule |
|---|---|---|---|
| Contact ID | The webhook | Queue and log | Used to read the record again before applying anything |
| Call summary | Model, from the transcript | Contact note | Saved on approval and marked as drafted for review |
| Suggested stage | Model, from the stage list | Review item first | Applied only after approval |
| Tags | Model, from your tag list | Contact tags | Only tags on your list. Anything else is dropped. |
| Follow-up draft | Model | Review item first | Sent by the CRM only after approval, and only if guardrails still pass |
| Opt-out status | CRM | Guard step | Read fresh at the step 3 check and again at sending |
| Deal value | CRM | Not edited | Never changed by the build |
| Draft invoice | Won deal | Xero or QuickBooks Online | Created as a draft with the deal lines. A person approves. |
Edge cases
Each case below is handled by a written rule and has a scripted check in the test plan.
| Case | What the build does |
|---|---|
| A repeat contact uses a different email | The contact is matched by phone and shown with the possible duplicate. Nothing is merged by the build. |
| A call has no transcript | The item is created with the call outcome only, marked as no transcript. No summary is invented. |
| A stage change races a manual edit | The apply step reads the contact again. If it changed since the draft, the item returns to review with the difference shown. |
| A contact unsubscribes in the middle of a sequence | The sequence stops at once. Drafts already queued are cancelled at the sending check. |
| A lead replies after being marked lost | The reply creates a review item for the owner. The stage is not reopened automatically. |
| Two events arrive for the same contact within seconds | They are merged into one review item. |
| The model is unavailable or returns unusable output | The item goes to the review queue with the raw event and no draft, and an alert is sent. |
| A webhook or sync fails | The item goes to the exceptions queue with the payload, and is replayed only once and only when it is safe to repeat. |
Human sign-off and audit trail
A person approves before any stage changes, any tag is applied and any message is sent. The workflow holds no route that does these without an approval.
| Who | Signs off | When | If nobody acts |
|---|---|---|---|
| Pipeline owner | Every stage suggestion and tag | Each working day | The suggestion waits. The stage stays as it is. |
| Pipeline owner | Every follow-up before it is sent | Each working day | The draft waits. Nothing is sent. |
| Owner | Template wording for missed-call text-back | Before go-live and quarterly | Existing wording stays |
| Owner | Stage meanings, tag list and quiet hours | Before go-live and quarterly | Existing rules stay |
| Accounts person | Each draft invoice created from a won deal | On creation | The draft stays a draft |
| Field | Example |
|---|---|
| Item ID | Review queue number |
| Trigger | Event type, contact ID and time |
| Model | Model name and version, and the prompt version |
| Input and output | What was sent to the model, as masked, and what came back |
| Guardrails | Opt-out, quiet hours and pending-edit results |
| Edits | Text before and after, who and when |
| Decision | Approved or rejected, by whom and when |
| Applied | What was written to the CRM, or sent, and the draft invoice ID if any |
Data and privacy
Calls and conversations hold names, numbers and personal details. The workflow keeps them inside your own accounts.
| Data | Handling |
|---|---|
| Recordings and transcripts | Stay in the CRM or telephony account. Only the text needed for the summary goes to the model. |
| Masking | Names, phones and emails can be masked before the model call and restored by code afterwards. |
| Model use | A hosted model on terms that do not allow training on your data, or a local model. |
| Prompts and outputs | Stored with the prompt version so any suggestion can be traced. |
| API keys | Created in your own provider accounts and held in your workflow credentials. |
| Accounts | The CRM, n8n or Make, Twilio and the accounting file stay in your accounts. I am added as a user and removed at handover. |
Worked example
The table below follows one review item through the steps. The values are examples that show the shape of an item, not a client result.
| Part | Example |
|---|---|
| Trigger | Call outcome: connected, quote requested |
| Contact | Repeat contact, found by phone, with a second email on file |
| Transcript | Available |
| Summary | Wants a quote for replacing a hot water unit, prefers morning visits, asked about a payment plan |
| Suggested stage | Quote requested |
| Suggested tags | Hot water, repeat customer |
| Draft follow-up | A text that thanks the contact, says the office will confirm a visit time, and states no price or date |
| Guardrails | Not opted out. Outside quiet hours. No manual edit pending. |
| Reviewer action | Edits the wording and approves the stage and the text |
| Result | Note saved, stage set, tag applied, text sent by the CRM, action logged on the contact |
| Item | Reason | Owner | Next step |
|---|---|---|---|
| Webhook failed for a new lead | CRM returned an error | Pipeline owner | Replay once, then handle by hand |
| Reply from a lost lead | Stage is Lost | Pipeline owner | Decide whether to reopen |
| Draft held in quiet hours | Window closed | None, automatic | Released when the window opens, then checked again |
| Possible duplicate contact | Same phone, different email | Pipeline owner | Merge by hand in the CRM |
Testing and checks
The test plan uses scripted scenarios on a test account first. Every check has a written pass condition and fail condition before it is run. A FAIL stops go-live until it is cleared and the check is run again.
| ID | Check | Method | PASS when | FAIL when |
|---|---|---|---|---|
| T1 | New lead | Create a lead from the form | Summary, suggested stage and draft in the queue, nothing applied | Anything applied before approval |
| T2 | Repeat contact | Contact again with a different email | Existing record matched and shown, no merge | A second record is merged or created silently |
| T3 | Missed call | Ring the test number and do not answer | A text-back inside the allowed hours, and a queue item | No text-back, or one inside quiet hours |
| T4 | Reschedule | Move a booking by reply | Review item with the new time, stage unchanged until approved | Stage changes by itself |
| T5 | Won deal | Mark a test deal as Won | Draft invoice created in Xero or QuickBooks Online and not approved | Invoice approved or sent by the build |
| T6 | No transcript | Trigger a call outcome with no transcript | Item marked no transcript, no summary invented | A summary appears |
| T7 | Stage race | Edit the stage by hand while an item waits | Item returns to review with the difference shown | The manual edit is overwritten |
| T8 | Unsubscribe mid-sequence | Reply STOP after the first message | Sequence stops and queued drafts are cancelled | Another message goes out |
| T9 | Reply after lost | Reply from a lead marked Lost | Review item for the owner, stage not reopened | Stage reopened automatically |
| T10 | Money and manual fields | Compare the CRM history of deal value and hand-edited fields | None changed by the build | Any change |
| T11 | Quiet hours | Approve a follow-up inside quiet hours | Held, then released when the window opens | Sent inside quiet hours |
| T12 | Model unavailable | Block the model connection | Item queued with no draft, and an alert | Item lost or no alert |
| T13 | Exceptions queue | Force a webhook failure | Item in the exceptions queue with its payload | Silent failure |
Scope and milestones
A fixed scope agreed in writing before anything starts. Each milestone is paid when you sign off its deliverable.
| Area | Included |
|---|---|
| Systems Audit | Review of your pipeline, stage use, call and message routines and the CRM automation you already run, a 45-minute call, written findings and a fixed quote |
| Stage map and guardrails | Written stage meanings, tag list, quiet hours and opt-out rules for one pipeline |
| Triggers and webhooks | CRM workflows that send new lead, call outcome, missed call and stage events to n8n or Make |
| AI steps | Call and enquiry summary, suggested stage and tags, and a drafted follow-up, with prompts stored with a version |
| Review queue | Queue with edit, approve and reject, and the re-read check before anything is applied |
| Call hand-off | Twilio missed-call text-back, and a transcript hand-off from a Vapi or Retell voice agent into the same queue |
| Draft invoice | A won deal creates a draft invoice in Xero or QuickBooks Online for a person to approve |
| Exceptions queue | Failed syncs and held items, each with a reason and an owner |
| Testing | Thirteen scripted checks, run to a pass before go-live |
| Handover | Written SOPs, a recorded handover video and files you own, plus 14 days of fixes after go-live |
| Not included | Tax filing and statutory returns. |
| Also outside the scope | Building the voice agent itself, which is quoted separately. Sending without approval. A second pipeline or a CRM move. Model API usage fees, billed to you by the provider. CRM, telephony and workflow subscriptions. |
| Milestone | Deliverable | Timing | Share |
|---|---|---|---|
| M1 Stages and guardrails | Stage meanings, tag list, quiet hours and opt-out rules signed, and webhooks live on a test account | Weeks 1 to 2 | 25% |
| M2 AI steps | Summary, suggested stage and draft follow-up, T1, T2, T6 and T12 pass | Weeks 3 to 4 | 30% |
| M3 Review and apply | Review queue, apply step, call hand-off and draft invoice, T3 to T5, T7 to T11 and T13 pass | Weeks 5 to 6 | 30% |
| M4 Handover | Supervised use, SOPs, handover video, 14 days of fixes | Week 7 | 15% |
Typical scope for this kind of project: US$2,200–3,800
About 7 weeks across 4 fixed milestones. The Systems Audit (US$300, fixed) comes first and confirms the scope.
Describe how leads and calls move through your CRM today, and I will say where I would start.
Send a short note through the form on the home page. I will reply with where I would start, and whether the US$300 Systems Audit is the right first step.