Bygg en AI-röstagent för GoHighLevel som ringer varje lead på under 60 sekunder


Automatiserad speed to lead innebär att ett nytt lead får ett telefonsamtal i samma ögonblick som det skickar in ditt formulär, blir kvalificerat och bokat innan det hinner ringa en konkurrent. (Om du vill veta varför speed to lead spelar roll kan du börja där.) Den här guiden bygger systemet med GoHighLevel och Retell AI: ett GoHighLevel-formulär startar ett arbetsflöde, arbetsflödet startar ett utgående samtal och en AI-röstagent bokar direkt i din GoHighLevel-kalender.
Exemplet är ett fiktivt VVS-företag, Comfort Air Demo. En villaägare begär en offert på ett nytt AC-aggregat, telefonen ringer inom några sekunder och agenten frågar vad som är fel på aggregatet, om personen äger bostaden och när det ska bytas. Sedan kontrollerar den verklig tillgänglighet och bokar en konsultation på 30 minuter. Varje prompt som används i bygget finns på den här sidan, redo att kopiera, så att du får ett automatiserat system för leaduppföljning som bygger på samtal, inte bara sms och e-post.
Videon nedan visar samma bygge från början till slut. Stegen och prompterna på den här sidan matchar videon, så du kan ha sidan öppen i en andra flik och kopiera allt eftersom.
Fem system lämnar över till varandra i en fast ordning:
Ingen i ditt team behöver röra det. Leadets första kontakt med ditt företag är ett utgående AI-samtal som slutar med ett bokat möte. Det är samma mönster som ISpeedToLead kör i stor skala; se hur ISpeedToLead skalade leadsrespons dygnet runt.
Agenten bokar i en riktig kalender, så skapa den först. Öppna Calendars → Calendar Settings i GoHighLevel och skapa en ny kalender för den mötestyp du vill få bokad. Ställ in möteslängd (30 minuter i det här bygget), boknings-URL och din tillgänglighet.
Tillgängligheten är viktigare än den ser ut. Agenten kan bara erbjuda tider som kalendern visar som lediga, så om dina tider är snäva får alla som ringer höra samma tre alternativ.
Du kan bygga formuläret för hand, men GoHighLevel AI Studio bygger formuläret och dess landningssida utifrån en enda prompt. Öppna AI Studio och klistra in detta, med dina egna företagsuppgifter:
Skapa eller uppdatera en sida för leadinsamling för Comfort Air Demo, ett fiktivt VVS-företag. Om projektet redan har en sida, behåll dess befintliga design.
Använd rubriken Request an AC Replacement Estimate. Inkludera First Name, Phone, ZIP Code och Service Needed, med AC replacement som förvalt demoalternativ. Gör förnamn och telefon obligatoriska. Lägg till en visningsmask för amerikanska telefonnummer och se till att kontaktens telefonnummer som används för utgående samtal innehåller landsnummer. Ge knappen etiketten Request My Estimate.
Koppla formuläret till mitt GHL-underkonto via det CRM-kopplingsflöde som stöds. Visa hur alla fyra fälten mappas till kontakten. Visa efter inskickning: Tack! Vår AI-assistent ringer dig inom kort angående din förfrågan.
Visa ingen kalenderväljare eller något andra bokningssteg. Behåll den befintliga Hvac-bokningskalendern orörd; Retell-agenten bokar under samtalet. Lägg inte till någon webhook-mottagare på sajten. Jag konfigurerar arbetsflödet för samtal från GHL till Retell separat.
Identifiera eventuella manuella kopplingssteg och berätta hur jag publicerar och testar formuläret. Rapportera vad som är verifierat och vad som fortfarande behöver testas.
Den viktigaste raden är den om landsnummer. Retell ringer nummer i E.164-format, till exempel +15551234567. Ett formulär som sparar (555) 123-4567 startar arbetsflödet, men samtalet misslyckas ändå.
Behåll samtyckestexten i formuläret. Formuläret i videon anger att leadet genom att skicka in godkänner att bli uppringt angående sin offert. AI-samtal till leads omfattas av TCPA i USA, så läs TCPA-reglerna för utgående AI-samtal innan du riktar detta mot verklig trafik.
AI Studio frågar om formuläret ska kopplas till ditt CRM. Svara ja, så att inskickningar skapar kontakter i GoHighLevel. Publicera sidan och öppna dess fristående URL för att bekräfta att formuläret fungerar.
Retell kopplas till GoHighLevel med två värden: en Private Integration-token och underkontots Location ID. Sidan om Retells GoHighLevel-integration beskriver allt som kopplingen stöder.
I videon väljs alla behörigheter för att hålla demon kort. För ett riktigt konto bör du bara ge de behörigheter som bygget använder:
| Behörighet | Vad den täcker |
|---|---|
contacts.readonly, contacts.write | Anslutningstestet, kontaktuppslag och anteckningen efter samtalet |
calendars.readonly | Check Availability samt listning av dina kalendrar när du konfigurerar verktygen |
calendars/events.readonly, calendars/events.write | Bokning, ombokning och avbokning av möten |
locations/customFields.readonly | Läsning av anpassade fält som Service Needed och ZIP Code |
Den fullständiga listan över behörigheter finns i dokumentationen för GoHighLevel-kopplingen. Om ett verktygs konfigurationsdialog senare visas tom beror det nästan alltid på en saknad behörighet.
Conductor, Retells AI-copilot, bygger agenten åt dig. Du beskriver agenten, Conductor föreslår en plan och inget ändras förrän du godkänner den. Öppna Conductor och klistra in:
Skapa ett nytt utkast till en utgående röstagent med konversationsflöde som heter Comfort Air Demo Speed to Lead, för ett fiktivt VVS-företag. Den följer upp personer som just har skickat in ett GHL-formulär och begärt en offert på ett nytt AC-aggregat. Målet är att kvalificera förfrågan och boka en telefonkonsultation på 30 minuter i vår offertkalender.
Använd dessa inkommande dynamiska variabler: {{first_name}}, {{service_requested}}, {{zip_code}} och {{ghl_contact_id}}. Använd America/New_York som tidszon för demon och bekräfta leadets tidszon innan bokning. Om en variabel saknas, fråga naturligt i stället för att läsa upp platshållaren.
Börja med: Hej {{first_name}}, det här är Alex, AI-assistenten på Comfort Air Demo. Du bad nyss om hjälp med {{service_requested}}. Passar det att jag ställer ett par snabba frågor?
Håll svaren korta och ställ en fråga i taget. Ta reda på vad som händer med deras AC, om de äger bostaden och när de vill byta. Använd information som redan har lämnats. Om de är intresserade av en offertkonsultation, fråga vilken dag och tid de föredrar, kontrollera verklig tillgänglighet, erbjud lediga alternativ och boka först när de har valt en tid. Bekräfta exakt datum, tid och tidszon först när bokningsverktyget har lyckats.
Låt den som ringer avbryta och ändra sina önskemål. Om det är fel person, be om ursäkt och avsluta samtalet utan att avslöja fler uppgifter om leadet. Om de tackar nej eller ber att inte bli uppringda igen, avbryt säljpitchen och registrera utfallet. Om en önskad tid inte är ledig, erbjud alternativ. Om bokningen misslyckas, förklara att den inte är bekräftad och registrera att uppföljning behövs. Hitta aldrig på priser, möten eller utförda åtgärder.
Konfigurera röstbrevlåda så att samtalet avslutas i den här demon.
Skapa ett tydligt flöde med märkta konversations- och funktionssteg. Visa de föreslagna ändringarna för granskning. Identifiera saknade verktygskopplingar eller manuella inställningar. Låt agenten förbli ett utkast och starta inga telefonsamtal.
De fyra dynamiska variablerna är hur agenten vet vem den ringer. GoHighLevel-arbetsflödet fyller i dem när det startar samtalet, så att agenten inleder med leadets namn och den tjänst leadet frågade om.
Conductor svarar med en plan: samtalsflödet, hur exempelsamtal hanteras och datafälten. Svara att du vill fortsätta så bygger den ett agentutkast med ett Book Consultation-delflöde. Bokningsverktygen är platshållare i det här skedet, så de byts ut mot de riktiga GoHighLevel-verktygen i nästa steg.
Conductors första utkast använder anpassade platshållarfunktioner för tillgänglighet och bokning, eftersom den inte kan veta vilken kalender du använder. Öppna agentens funktioner och lägg till de inbyggda GoHighLevel-verktygen:
Lämna sedan resten av kopplingen tillbaka till Conductor:
Ersätt de anpassade platshållarfunktionerna check_availability och book_appointment i Book Consultation-delflödet med verktygen GoHighLevel Check Availability och Book Appointment som jag just lade till, båda inställda på min Hvac-bokningskalender. Book Appointment måste använda {{ghl_contact_id}} som kontakt-ID. Ta bort den anpassade platshållarfunktionen record_outcome; utfall ska i stället komma från analys efter samtal.
Lägg till fält för analys efter samtal för call_outcome (booked, declined, wrong_person, do_not_call, voicemail, follow_up_needed), ac_issue, owns_home, replacement_timeline och appointment_booked. Sätt appointment_booked till true endast vid en lyckad bokning. Konfigurera ett arbetsflöde efter samtal som använder Create Note för att spara samtalssammanfattningen och utfallet på samma GHL-kontakt. Bevara utfallen fel person och ring ej så att det externa arbetsflödet kan hantera dem.
Visa de föreslagna ändringarna. Om du inte kan konfigurera något inbyggt verktyg, kalenderval, fältmappning eller steg efter samtal direkt, ge mig de exakta manuella stegen. Ange tydligt allt som fortfarande inte är kopplat. Hitta inte på inloggningsuppgifter och använd inte fiktiva endpoints.
Granska ändringarna och godkänn dem. Anteckningen efter samtalet använder GoHighLevels Create Note-verktyg som en funktion efter samtal, så varje samtal lämnar en sammanfattning på leadets kontaktpost. Utfallsfälten kommer från analys efter samtal.
Simuleringstester kör agenten mot en AI-uppringare som spelar upp ett scenario, så att du hittar trasiga flöden innan ett riktigt lead gör det. Be Conductor:
Skapa och kör en svit med simuleringstester för den här agenten med dessa sex fall: villaägaren bokar framgångsrikt, leadet ändrar önskad dag mitt i samtalet, fel person svarar, begäran om att inte bli uppringd, fel i bokningsverktyget och inga lediga tider. Ange för varje fall hur ett godkänt resultat ser ut innan du kör det. Visa resultaten i en tabell och förklara orsaken och föreslå en åtgärd för granskning för allt som misslyckas eller ger fel.
I det inspelade bygget klarade sig fem av sex på första körningen:
| Testfall | Första körningen |
|---|---|
| Villaägaren bokar framgångsrikt | Godkänt |
| Leadet ändrar önskad dag mitt i samtalet | Godkänt |
| Fel person svarar | Godkänt |
| Begäran om att inte bli uppringd | Godkänt |
| Fel i bokningsverktyget | Godkänt |
| Inga lediga tider | Fel |
Felet var en verklig lucka: flödet hade ingen väg för ett tomt tillgänglighetssvar. Prompten för åtgärden:
Fallet Inga lediga tider gav fel. Lägg till en väg för när Check Availability inte returnerar några lediga tider: berätta för den som ringer att inget är ledigt i det tidsfönstret, erbjud att kontrollera en annan dag, försök högst 3 gånger och erbjud sedan att teamet ringer upp och registrera follow_up_needed. Visa ändringen för granskning och kör sedan om endast det testet.
Simuleringskörningar debiteras efter LLM-användning, och Conductor frågar innan de startas. Se testning med Conductor för hur sviter byggs och prissätts. När alla fall är gröna publicerar du agenten.
Den sista delen startar samtalet. Öppna Automation → Workflows i GoHighLevel och klicka på Build with AI. Klistra in detta och ersätt de två platshållarna inom vinkelparenteser:
Skapa ett utkast till arbetsflöde som heter "Comfort Air Demo: Formulär till Retell-samtal."
När någon skickar in mitt befintliga offertformulär för Comfort Air Demo, skicka omedelbart en begäran om ett utgående samtal till Retell med kontaktens uppgifter.
Använd AI Studio Form Submitted, filtrerat på mitt exakta projekt och offertformulär. Om formuläret använder External Tracking, använd i stället dess verifierade trigger för inskickning. Om du inte kan identifiera formuläret, lämna det valet olöst och berätta vad jag ska välja.
Lägg till en Custom Webhook-åtgärd som heter "Starta Retell-samtal": URL https://api.retellai.com/v2/create-phone-call, metod POST, Content-Type application/json, Authorization Bearer-token; lämna inloggningsuppgiften åt mig att fylla i. Använd JSON-bodyn nedan.
Mappa Service Needed och ZIP Code med de faktiska kontaktfälten i mitt konto. Hitta inte på fältnycklar. Fortsätt bara när kontakten har ett telefonnummer. Tillåt återinträde så att jag kan upprepa demon med mitt eget nummer.
Retell kvalificerar leadet och bokar i min befintliga Hvac-bokningskalender. Låt arbetsflödet förbli opublicerat. Visa mig varje fält eller inloggningsuppgift jag måste slutföra manuellt och påstå inte att det har testats.
Webhook-bodyn:
{
"from_number": "",
"to_number": "{{contact.phone}}",
"override_agent_id": "",
"retell_llm_dynamic_variables": {
"first_name": "{{contact.first_name}}",
"service_requested": "",
"zip_code": "",
"ghl_contact_id": "{{contact.id}}",
"system_timezone": "America/New_York"
}
} from_number är ett nummer du äger i Retell och override_agent_id är agenten du publicerade efter testningen. Använd GoHighLevels variabelväljare för fälten Service Needed och ZIP Code så att de ersätts med verkliga värden och inte med bokstavlig text. Alla värden för dynamiska variabler måste vara strängar.
Välj den trigger som matchar ditt formulär. Ett formulär som byggts med formulärbyggaren i GoHighLevels Sites använder triggern Form Submitted. Ett formulär som byggts i AI Studio använder AI Studio Form Submitted, eller triggern för extern spårning om formuläret rapporterar inskickningar på det sättet. Resten av arbetsflödet är identiskt.
Det färdiga arbetsflödet har tre delar: formulärtriggern, en kontroll av telefonnummer och webhooken som startar samtalet.
Ett rött utropstecken på webhook-åtgärden. GoHighLevels AI-byggare fyller i JSON-bodyn men lämnar fältet för webhook-URL tomt. Klistra in https://api.retellai.com/v2/create-phone-call i URL, ställ in Authorization på Bearer med din Retell API-nyckel och spara. Felet försvinner.
"Failed, Retry Limit Reached" i körningsloggen. Öppna arbetsflödets Execution History, klicka på den misslyckade körningen och öppna webhook-steget för att läsa Retells svar. De vanligaste orsakerna, i ordning:
Åtgärda en sak i taget och skicka in formuläret igen. Eftersom arbetsflödet tillåter återinträde kan du fortsätta testa med ditt eget nummer.
Publicera arbetsflödet, öppna formuläret och skicka in det med ditt eget nummer. Telefonen bör ringa inom en minut. Svara som en villaägare, välj en tid och kontrollera sedan tre ställen: mötet i din GoHighLevel-kalender, samtalsinspelningen och transkriptionen i Retells samtalshistorik samt anteckningen på kontakten i GoHighLevel.
Om allt tre finns där får varje nytt lead från formuläret nu ett samtal innan det hinner fylla i en konkurrents formulär.
Se integrationen mellan Retell och GoHighLevel för allt som kopplingen stöder, eller AI-driven mötesbokning för de andra kalendrar som Retell bokar i.
Inom en minut, och oftast inom några sekunder. Arbetsflödet startar i samma ögonblick som formuläret skickas in, och Retell börjar ringa så snart webhooken kommer fram. I den inspelade demon ringde telefonen innan bekräftelsemeddelandet hade laddats klart.
Nej. Det här bygget använder GoHighLevel för formulär, kontakter, kalender och arbetsflöde, och Retell AI för röstagenten och samtalet. GoHighLevels inbyggda Voice AI är en separat produkt. Team väljer en Retell-agent när de vill ha ett konversationsflöde nod för nod, simuleringstester före lansering och fält för analys efter samtal som de definierar själva, samtidigt som GoHighLevel behålls som CRM.
Ja. Retells inbyggda GoHighLevel-verktyg kontrollerar tillgänglighet och bokar möten i en kalender i det anslutna underkontot. Mötet kopplas till kontakten och skapas med statusen bekräftat.
Agenten ber om ursäkt och avslutar samtalet utan att dela uppgifter om leadet, eller avbryter säljpitchen vid en begäran om att inte bli uppringd. Båda utfallen registreras i analysen efter samtal och skrivs in i kontaktanteckningen, så att ditt team kan agera på dem.
Ja. Ändra företagsnamn, tjänst och kvalificeringsfrågor i Conductor-prompten och formulärfälten i AI Studio-prompten. Arbetsflödet och webhooken är desamma för alla tjänsteföretag som bokar konsultationer.
See how much your business could save by switching to AI-powered voice agents.
Total Human Agent Cost
AI Agent Cost
Estimated Savings
Ett demonummer från Retell Clinic Office

Start building smarter conversations today.




