Send Ai Voicemails With Go High Level
This guide shows you how to create and send voicemail campaigns through Go High Level, using a custom webhook to connect with your voicemail service.
PLEASE NOTE - Several new campaign features have been added since making this guide, but the setup below remains the same.
If you wish to use B2B Enrichment, when creating an auto campaign just toggle Enrich B2B Contacts = Yes
Setting up with Go High Level
Step 1 — Create a voicemail campaign
Go to Campaigns in Topa.io.
Create a new campaign (or edit an existing one).
Add the basic details:
Number
Voice
Script (e.g.,
"Hello [Name], it's Stu from Scale Faster Training. You just applied for the Custom 1 course. I've just sent you a text message about it. If you could please reply, that would be great. Thank you.")
Generate the audio file for your script.
If you don’t like the first version, regenerate until you’re satisfied.
Enable Enrich B2B Contacts
You can enable Enrich B2B Contacts in the campaign settings if you want Topa.io to look up mobile numbers for B2B leads.
Cost:
Where to view results: Enrichment results appear in the Enrichment page.
quick note: Enabling enrichment is optional but recommended for B2B lists where phone numbers are missing.
Step 2 — Copy the campaign endpoint
Once the voicemail is created, you’ll see an Endpoint URL.
Copy this URL — you’ll need it for the webhook.
Step 3 — Add a webhook in your workflow
Open your existing Workflow in Go High Level.
After the text message step, add a Custom Webhook action.
Paste the Endpoint URL you copied earlier.
Add a header:
Key:
X-API-KeyValue: your API key
Step 4 — Map the webhook fields
In the webhook body, make sure to map the correct fields:
Destination number →
{{contact.phone}}(must be in raw format with country code) This is not necessary if you have select - Enrich B2B Contacts = Yes when creating the campaign.Name →
{{contact.first_name}}Company
Email
Custom 1
Custom 2 / 3
Linkedinurl - New Feature - You can now send linkedinurl
⚠️ Be careful not to duplicate fields — check that the mapping matches your campaign setup exactly.
Example JSON:
{
"destinationnumber": "+447530000000",
"name": "Richard",
"company": "Pied Piper",
"email": "richard@piedpiper.com",
"linkedinurl": "https://www.linkedin.com/in/example/",
"custom1": "Custom 1 Example",
"custom2": "Custom 2 Example",
"custom3": "Custom 3 Example"
}Step 5 — Save and activate
Click Save in the workflow.
Click Done.
Ensure the campaign is Live (it will show as Paused if not).
Step 6 — Test and verify
Send a test to check the voicemail record.
Verify that the number format is correct (must include country code).
If the test is successful, the voicemail will send as expected.