What it does
- Instant AI callbacks — GHL form fill triggers an AI call to the lead within seconds
- Dynamic personalization — Contact name, email, and custom fields are passed to the AI agent for natural conversations
- Booking integration — AI can book meetings directly on the call
- Voicemail handling — Leave a personalized voicemail if the lead doesn’t pick up
- Full call logging — Every call is logged with transcript, recording, duration, and outcome
Requirements
- CallDesk Pro plan or higher
- GoHighLevel account with workflow access
- An outbound phone number configured in CallDesk
- An AI agent configured in CallDesk
Setup
Create a Form-to-Call workflow in CallDesk
Go to Workflows → Create New → Form to Call and select GoHighLevel Workflow as the trigger source.
Configure your AI agent
Set up the AI agent that will handle the calls:
- Greeting — The first thing the AI says (use
{{customer_name}}for personalization) - Role & goals — What the AI should accomplish on the call
- Booking — Optionally enable booking to let the AI schedule meetings
- Voicemail — Set a fallback message if the lead doesn’t answer
Copy webhook credentials
After saving the workflow, copy the webhook URL and Bearer token from the workflow settings. You’ll need these for the GHL webhook action.
Create a GHL workflow
In GoHighLevel, go to Automations → Create Workflow. Set the trigger to Form Submitted and select your ad landing page form.
Add a Custom Webhook action
Add a Custom Webhook action to the workflow with the following configuration:
- Method:
POST - URL: Paste the CallDesk webhook URL
- Authentication: Bearer Token → paste your CallDesk token
- Headers:
Content-Type: application/json - Body:
Test the integration
Before going live, submit a test form with your own phone number. You should receive an AI call within seconds. Check the CallDesk workflow logs to confirm the call was triggered.
GHL payload format
The webhook body should include these fields:| Field | GHL Variable | Required | Description |
|---|---|---|---|
phone | {{contact.phone}} | Yes | Lead’s phone number (E.164 format preferred) |
name | {{contact.first_name}} | No | Lead’s name — used for {{customer_name}} in the AI greeting |
email | {{contact.email}} | No | Lead’s email — logged with the call |
Full payload example
Custom fields
Pass additional GHL contact fields or custom values to the AI agent using thecustomData object:
{{company}} would be replaced with the contact’s company name.
Use cases
- Speed-to-lead from ads — Facebook/Google ad → GHL form → AI calls lead in under 30 seconds
- Demo-in-action — The AI call itself demonstrates your product (great for selling AI phone solutions)
- Lead qualification — AI qualifies the lead on the call before routing to a sales rep
- Appointment booking — AI books a meeting directly on the call, synced to your calendar
- After-hours follow-up — GHL captures the lead, CallDesk calls back during business hours
Troubleshooting
Call not triggering after form submission
Call not triggering after form submission
- Verify the webhook URL is correct in your GHL workflow action
- Check that the CallDesk workflow is active (not paused or draft)
- Ensure the
phonefield is present in the webhook body — calls cannot be placed without a phone number - Check the GHL workflow execution log for HTTP errors
Authentication error (401)
Authentication error (401)
- Verify the Bearer token matches exactly — copy it again from CallDesk
- Make sure you’re using “Bearer Token” authentication, not Basic or API Key
- Check that the token hasn’t been regenerated since you copied it
AI says template variables literally (e.g. 'Hi {{customer_name}}')
AI says template variables literally (e.g. 'Hi {{customer_name}}')
- Ensure the
namefield is included in your webhook payload - Check that you’re using the correct GHL variable syntax:
{{contact.first_name}} - If using custom fields, make sure they’re inside the
customDataobject
Call triggers but goes straight to voicemail
Call triggers but goes straight to voicemail
- The lead’s phone may have sent the call to voicemail — this is normal behavior
- If voicemail is enabled in your workflow, the AI will leave a message
- Try calling during business hours when leads are more likely to answer
Phone number format issues
Phone number format issues
- Use E.164 format when possible (e.g.,
+14155551234) - GHL’s
{{contact.phone}}usually includes the country code - If calls fail with “invalid number”, check the format in your GHL contact record
Set up GoHighLevel integration
Create your Form-to-Call workflow now
Form-to-Call overview
Learn more about form-triggered AI calls