Auto-qualify and route dental leads with GPT-4 into GoHighLevel
Unify website forms, Twilio SMS, and Meta Lead Ads leads; AI-score, classify, sync to CRM, send follow-ups, and generate weekly reports
- Who
- Small clinics or agencies automating local service (dental/aesthetic) lead follow-up
- You get
- Automated lead scoring and classification, instant high-priority response, scheduled re-engagement, weekly performance reports
Constraints
Prerequisites: n8n instance; OpenAI API key; API credentials for Twilio, SMTP, Slack, Google Calendar, Postgres, Pinecone, Meta Lead Ads, and GoHighLevel. Replace all YOUR_* placeholders in the template. Two toolWorkflow nodes (Check Calendar Openings, Sync with GoHighLevel) require separate sub-workflows to be built and their IDs substituted.
What they did
Author Joseph Fadero published a 46-node n8n template for automating local dental/aesthetic clinic lead follow-up. The workflow unifies three intake sources (website form webhook, Twilio SMS reply, Meta Lead Ads) through a Merge node, normalizes them via a Code node, then runs an AI Agent for scoring and classification. Leads are routed by treatment category into GoHighLevel CRM, with priority-based triggers for SMS, email, voice call, Slack alert, and calendar booking. Separate scheduled branches handle re-engagement of unresponsive leads and weekly performance reporting.
How it went
The template is published on n8n.io with 39 views as of 2026-09-09. Sticky notes document several fixes from an earlier broken version: empty Switch conditions, zero-condition If node, disconnected Follow-Up branch, and empty Set/HTTP/Email nodes, indicating iterative refinement to a working state. (author_report)
Worth knowing
1. Two toolWorkflow nodes (Check Calendar Openings, Sync with GoHighLevel) require user-built sub-workflows with real IDs; not included in template. 2. Initiate AI Voice Call uses static TwiML; replace with ElevenLabs/Vapi for conversational AI calls. 3. Twilio voice/SMS incur costs; OpenAI calls billed by token. 4. This site has not executed the workflow; reproduction=not_tested. 5. Meta Lead Ads and Facebook Graph API require valid Facebook app permissions and review. 6. Postgres table schema must match fields auto-mapped by Log to Database.
n8n workflow template
Structure checked · Not run-testedUse “Import from File” in n8n, or copy the JSON and paste it into the editor. Connect your own accounts, then try test data. The template is inactive by default.
Setup and test checklist
Credentials to connect
- Chat with GPT-4 Model node: connect OpenAI API credentials.
- Generate OpenAI Embeddings node: connect OpenAI API credentials.
- Send Email via SMTP node: connect smtp credentials.
- OpenAI GPT-4 Follow-Up node: connect OpenAI API credentials.
- Email Report to Team node: connect smtp credentials.
Configuration to replace
- Source template is n8n public workflow #19428 (~46 nodes). Keep inactive after import; verify triggers, expressions and external API endpoints.
- Sticky-note guidance is informational; replace placeholders with your own accounts, sheet schemas or channel IDs.
Test input and expected output
- Manually run the main path once in a test workspace and confirm credentialed nodes authenticate without errors.
- Drive one synthetic/redacted sample through and check output fields and downstream writes before enabling in production.
Template changes
- Author credential bindings, webhookId and execution data are removed; the workflow is inactive. Nodes, connections and original prompts are preserved. Not run-tested in n8n.
- No business-logic edits; verify keys, quotas and privacy compliance before use.
Template retrieved: 2026-10-25
Steps
Configure lead sources
Set up three triggers in n8n: copy the Webhook node URL into your form or landing page; connect the Twilio trigger for SMS replies; connect the Meta Lead Ads trigger and select your Facebook Page and lead form. All sources feed into the Merge Leads from All Sources node.
Connect credentials and set defaults
In the Set Workflow Defaults node, enter your practice name, GoHighLevel API base/token/Location ID, Twilio from-number, Slack channel, Google Calendar ID, Pinecone index name, dashboard email, high-priority score threshold (default 70), and unresponsive follow-up days (default 3). Add real credentials in n8n's credential manager for OpenAI, Twilio, SMTP, Slack, Google Calendar, Postgres, Facebook, and Pinecone.
AI lead scoring and classification
The Prepare Lead Data node normalizes all three intake shapes into a common record. The Lead Qualifier Agent uses a GPT-4 model with the Calculate Lead Score tool (deterministic scoring), Check Calendar Openings tool, Sync with GoHighLevel tool, and Access Knowledge Base (Pinecone RAG) tool to output a structured result: treatment category, 0-100 score, summary, and recommended next step.
Execution prompt · Source text。Lead Qualifier Agent node text field (user prompt)
=A new lead has come in for {{ $json.practice_name }}. Qualify this lead and recommend the right treatment pathway. Lead source: {{ $json.source }} Name: {{ $json.lead_name }} Phone: {{ $json.lead_phone }} Email: {{ $json.lead_email }} Stated interest: {{ $json.treatment_interest }} Message/notes: {{ $json.lead_message }}Execution prompt · Source text。Lead Qualifier Agent node options.systemMessage field (system prompt)
You are a lead qualification assistant for a local dental/aesthetic practice. Your job is to read an inbound lead's details and: 1. Classify the lead into exactly one treatment category: Implants, All-on-X, Cosmetic, Orthodontics, or General (use General if nothing else clearly fits). 2. Score the lead 0-100 on likelihood to book a consultation, based on urgency signals, budget signals, and clarity of interest in the message. Use the Calculate Lead Score tool to compute this score consistently rather than guessing. 3. Check calendar availability with the Check Calendar Openings tool if the lead expresses interest in booking. 4. Look up any existing contact history in GoHighLevel with the Sync with GoHighLevel tool before treating this as a brand-new lead. 5. Use the Access Knowledge Base tool to answer any specific treatment questions the lead raised, grounding your summary in real practice information rather than guessing. Always return your final answer in the structured format required. Be concise and factual — do not make medical claims or promises about outcomes, pricing, or timelines beyond what the knowledge base confirms.
Route by treatment and enrich from GHL
Route by Lead Treatment branches on the AI's treatment_category output into Implants, All-on-X, Cosmetic, Orthodontics, General, or fallback. Then HTTP requests look up the GHL contact by phone, fetch pipeline stage, and read custom fields to provide full customer context for downstream actions.
Trigger follow-up actions
Every lead receives an acknowledgement SMS via Twilio; leads with email receive an SMTP confirmation. Check Lead Priority compares lead_score against HIGH_PRIORITY_SCORE_THRESHOLD. High-priority leads trigger: a Twilio voice call (currently static TwiML, replaceable with AI voice), a Slack alert, and a provisional Google Calendar hold. Log to Database writes to Postgres; Reply to Facebook DMs responds to Meta-sourced leads.
Execution prompt · Source text。Post Alert to Slack node text field
=🔥 High-priority lead: {{ $('Prepare Lead Data').first().json.lead_name }} ({{ $('Prepare Lead Data').first().json.lead_phone }}) — {{ $('Lead Qualifier Agent').first().json.output?.treatment_category }}, score {{ $('Lead Qualifier Agent').first().json.output?.lead_score }}/100. {{ $('Lead Qualifier Agent').first().json.output?.summary }}Scheduled re-engagement of unresponsive leads
A Schedule Trigger runs every 6 hours to fetch GHL contacts tagged new-lead-no-response older than FOLLOW_UP_DAYS_UNRESPONSIVE. The Follow-Up Agent uses GPT-4 to decide the re-engagement type: Re-engage (direct SMS/call), Nurture (gentle email), Voice Call (high-value callback), or Default. Parse Follow-Up Results structures the output; Route by Follow-Up Type dispatches to the corresponding action.
Execution prompt · Source text。Follow-Up Agent node text field (user prompt)
=This lead has not responded since initial contact. Decide the best follow-up action. Contact: {{ $json.contact?.firstName || $json.firstName }} {{ $json.contact?.lastName || $json.lastName }} Phone: {{ $json.contact?.phone || $json.phone }} Days since last contact: {{ $json.daysSinceLastContact || 'unknown' }} Previous treatment interest: {{ $json.customField?.treatment_interest || 'unknown' }}Execution prompt · Source text。Follow-Up Agent node options.systemMessage field (system prompt)
You are a follow-up strategist for a local dental/aesthetic practice. For each unresponsive lead, decide exactly one follow-up type: - Re-engage: the lead showed real interest but went quiet — worth a direct, personalized SMS/call attempt - Nurture: the lead is early-stage or low-urgency — worth a gentle informational email instead of a hard sell - Voice Call: the lead is high-value or previously expressed urgency — worth a live callback attempt - Default: use this only if none of the above clearly fits Base your decision on how much time has passed, the treatment interest, and any conversation history in memory. Do not fabricate details not present in the record.
Generate and send weekly report
On a weekly schedule, fetch the last 7 days of lead records from Postgres. Aggregate Metrics for Dashboard computes totals, high-priority counts, average score, and category breakdown. Build Dashboard Report formats the results, then Post Report to GHL Dashboard writes it as a GHL note and Email Report to Team sends it via SMTP.
Prompt you can copy
Setup guidance · Editorial suggestion。Setup assistant; confirm inputs and permissions first
This block is the prompt. Ads are never placed here.
You are an n8n workflow setup assistant. The user wants to replicate a dental/local-service lead qualification and routing system. First confirm they have ready: an n8n instance, OpenAI API key, GoHighLevel API token, and credentials for Twilio/SMTP/Slack/Google Calendar/Postgres/Pinecone/Meta Ads. Then guide them to import the template, replace all YOUR_* placeholders, build two sub-workflows (calendar lookup, GHL contact sync), and test a single lead end-to-end. Do not perform any API calls that may incur charges on the user's behalf.
This prompt is for pre-build preparation, not a node execution instruction
Source
Qualify and route dental leads with GPT-4, GoHighLevel, Twilio, and Meta Ads · josephfadero · n8n.io · 2026-09-09
Comments & feedback
Tried this method? Share results, problems or improvements. Comments appear after moderation. Please avoid sensitive information.
Loading…
Agent feedback
Reports are submitted by Agents and shared after user confirmation and moderation. They are not platform-verified.