When a visitor fills in your chatbot's lead form, Hyperleap AI can send the details to a URL within seconds. GoHighLevel (HighLevel) workflows can start from exactly that kind of request, using the Inbound Webhook trigger. Connect the two and every chatbot lead lands in your sub-account as a contact, where your existing HighLevel follow-up takes over.
Setup takes about 15 minutes and needs no code. You'll switch between Hyperleap AI and HighLevel a few times, so keep both open in separate tabs.
Before You Start
- Hyperleap AI Pro or Max — Webhooks are on Pro and Max. See Webhooks for the full feature.
- A website chatbot with the lead form switched on — Ask for at least an email or a phone number and make it required: HighLevel needs one of the two to create a contact. The Lead Captured event fires when a visitor submits the lead form in the website widget. Without a lead form, visitors chat anonymously and there are no contact details to send.
- A HighLevel sub-account with workflow premium features — Inbound Webhook is a HighLevel premium trigger. Your agency enables it under Agency Settings → Company → Workflow – Premium Features. HighLevel bills premium runs to the sub-account, after a free allowance (see HighLevel billing).
- Permission to edit workflows in that sub-account.
Setup
1. Create the workflow in HighLevel
Start a new workflow
Add the Inbound Webhook trigger
Copy the webhook URL
2. Point your chatbot at HighLevel
Open Webhooks & Zapier
Create a Lead Captured subscription
Dismiss the signing secret
3. Send a test lead
HighLevel needs one real request to learn the shape of the data. Open your chatbot where visitors see it (your website, or the chatbot's share link) and fill in the lead form with test details: a recognisable name, an email you own, and a phone number.
Back in Webhooks & Zapier, open "Delivery history" and click "Refresh". You should see a lead.captured delivery with a 2xx response code. If you see an error instead, check the troubleshooting section.
4. Finish the trigger in HighLevel
Load the test request
Pick the right request
"eventType": "lead.captured" and your test email under data. Save it as the sample, then save the trigger.5. Create the contact
After you save the trigger, HighLevel takes you to the action that creates or updates a contact. Map the fields from the sample request:
| From Hyperleap AI | HighLevel contact field | Notes |
|---|---|---|
data.name | First Name | The full name the visitor typed. The lead form has one name field, so it all goes into First Name. Empty if the form doesn’t ask for a name. |
data.email | An empty string if the visitor didn’t give one. | |
data.phone | Phone | Includes the country code, for example +15551234567. Map it only if your lead form makes phone required (see below). |
data.customFields.<field id> | A custom contact field | One value per custom lead-form question, keyed by the field id set in the lead form. |
data.attribution.utmSource (and utmMedium, utmCampaign, gclid, fbclid, landingPage) | Custom contact fields (optional) | Where the visitor came from, when the website widget captured it. |
chatbotName | A custom field or a tag (optional) | Useful when several chatbots send leads to one sub-account. |
When the phone field is off or optional, a visitor who leaves it blank is sent with phone "+", which isn't a valid number. If your form doesn't make phone required, leave Phone unmapped and match on email.
HighLevel matches existing contacts by email or phone, so a returning visitor updates the contact you already have instead of creating a duplicate. To keep custom lead-form answers, create matching custom fields in HighLevel first (Settings → Custom Fields), then map each one.
6. Tag the contact and start your follow-up
Add a tag
hyperleap-chatbot. The tag shows where the lead came from and lets other workflows and smart lists pick these contacts up.Add your follow-up
Publish
7. Test end to end
Submit the lead form once more with a new test email. Within a few seconds the contact should appear in Contacts with your tag, and the workflow's execution log should show the run. Delete the test contacts when you're done.
What Gets Sent
Each lead arrives as one JSON request. The fields you'll map sit under data.
Example lead.captured request
{
"eventType": "lead.captured",
"chatbotId": "a1b2c3d4-...",
"chatbotName": "Website Assistant",
"organizationId": "e5f6g7h8-...",
"timestamp": "2026-11-15T10:30:00Z",
"deliveryId": "d9e0f1a2-...",
"data": {
"name": "Jane Smith",
"email": "jane@example.com",
"phone": "+15551234567",
"externalUserLoginId": "uuid-...",
"externalUserId": "uuid-...",
"customFields": { "budget": "5k" },
"attribution": {
"trafficSource": "paid",
"utmSource": "google",
"utmCampaign": "spring-promo",
"gclid": "...",
"landingPage": "https://example.com/pricing"
}
}
}customFields is left out when the visitor answered no custom questions, and attribution when the widget captured no traffic source. The full payload reference is in Webhooks.
HighLevel Billing
HighLevel counts each Inbound Webhook run as a premium execution. According to HighLevel's help center (November 2026), each sub-account gets 100 free premium executions in total, then pays $0.01 per execution, or less on a Workflow Pro plan. Your agency may resell these at a markup. One captured lead is one execution, so a chatbot that captures 500 leads a month costs about $5 in HighLevel fees at the standard rate. Check HighLevel's premium features article for current pricing.
Troubleshooting
- No delivery appears in Delivery history — The lead form wasn't submitted, or the subscription is for a different chatbot or event. Check the subscription's event is Lead Captured.
- Deliveries fail with a 4xx code — The URL is wrong or the trigger was deleted. Copy the URL again from the trigger, then disconnect the subscription and create it with the new URL.
- HighLevel shows the request but no contact is created — The workflow isn't published, the lead had no email and no phone, or Phone is mapped while your form leaves it optional (a blank phone arrives as
+). Make email or phone required, and map Phone only when phone is required. - The whole name is in First Name — Expected. The lead form asks for one name, so Hyperleap AI sends it as one value.
- The same lead ran twice — Hyperleap AI retries a delivery that times out or gets a 5xx response, so HighLevel can occasionally receive one twice. The contact isn't duplicated, because HighLevel matches by email or phone, but a follow-up SMS could go out twice. To prevent it, put an If/Else right after the contact action that checks whether the contact already has your tag, and add the tag and the SMS only on the "no" branch. A returning visitor who already has the tag then gets no second SMS either.
Beyond Leads
The same pattern works for the other webhook events. For example, a second subscription for appointment.booked can move the contact to a "Booked" pipeline stage when your chatbot books a meeting in the chat. Create a separate HighLevel workflow and Inbound Webhook trigger for each event, and map data.attendeeEmail to find the contact.
Next Steps
- Webhooks — Every event, payload, and the retry rules
- Notifications — Also get each lead and transcript by email
- CRM MCP — Ask Claude or ChatGPT about your leads