When a visitor fills in your chatbot's lead form, Hyperleap AI can send the details to a URL within seconds. HubSpot can't create a new contact from that request by itself, so a no-code tool sits in between: it receives the lead and creates or updates the contact in HubSpot. This guide uses Make, and covers Zapier as an alternative.
Setup takes about 15 minutes and needs no code.
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 an email and make it required. HubSpot identifies contacts by email. 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's nothing to send.
- A Make account (or a paid Zapier plan) and a HubSpot user who can create and edit contacts.
Setup with Make
1. Create the webhook in Make
Start a scenario
Add a Custom webhook
Copy the address
2. Point your chatbot at Make
Open Webhooks & Zapier
Create a Lead Captured subscription
Note the signing secret
3. Send a test lead
Open your chatbot where visitors see it (your website, or its public shareable URL) and fill in the lead form with test details. Make should show "Successfully determined" on the webhook. In Hyperleap AI, "Delivery history" should list a lead.captured delivery with a 2xx response.
4. Create or update the HubSpot contact
Add the HubSpot module
Map the fields
| From Hyperleap AI | HubSpot property | Notes |
|---|---|---|
data.email | HubSpot uses email to find an existing contact, so map it. An empty string if the visitor didn’t give one. | |
data.name | First name | The full name the visitor typed. The lead form has one name field, so it all goes into First name. |
data.phone | Phone number | Includes the country code, for example +15551234567. Map it only if your lead form makes phone required: a blank phone arrives as "+". |
data.customFields.<field id> | A custom contact property | One value per custom lead-form question, keyed by the field id set in the lead form. |
data.attribution.utmSource, utmCampaign, gclid, landingPage | Custom contact properties (optional) | Where the visitor came from, when the website widget captured it. |
chatbotName | A custom property (optional) | Useful when several chatbots send leads to one HubSpot account. |
To keep custom lead-form answers, create matching contact properties in HubSpot first (Settings → Properties), then map each one. You can also set a fixed value, such as Lead status "New", so your team can find chatbot leads.
5. Turn the scenario on
Save the scenario, set it to run immediately as data arrives, and switch it on. Submit the lead form once more with a new test email and check the contact appears in HubSpot. Delete the test contacts when you're done.
Make counts each module run as an operation, so every lead uses a few operations from your Make plan. Check Make's pricing for your allowance.
Using Zapier Instead
Zapier works the same way. Webhooks are included on Zapier's paid plans, not on Free.
Catch the webhook
Create the subscription and test
Add the HubSpot action
What Gets Sent
Example lead.captured request
{
"eventType": "lead.captured",
"chatbotId": "a1b2c3d4-...",
"chatbotName": "Website Assistant",
"timestamp": "2026-11-15T10:30:00Z",
"deliveryId": "d9e0f1a2-...",
"data": {
"name": "Jane Smith",
"email": "jane@example.com",
"phone": "+15551234567",
"customFields": { "budget": "5k" },
"attribution": { "utmSource": "google", "utmCampaign": "spring-promo" }
}
}The full payload reference is in Webhooks.
Troubleshooting
- No delivery appears in Delivery history — The lead form wasn't submitted, or the subscription is for a different chatbot or event.
- Deliveries fail with a 4xx code — The address is wrong, or the Make webhook was deleted or left unused for days. Copy the address again and recreate the subscription.
- Make received the lead but HubSpot has no contact — Check the scenario history for the HubSpot error. The usual causes are an empty email or Phone mapped while your form leaves it optional.
- The whole name is in First name — Expected. The lead form asks for one name, so Hyperleap AI sends it as one value.
Next Steps
- Send leads to Salesforce — The same setup for Salesforce Leads
- Send leads to GoHighLevel — Directly into a HighLevel workflow
- Webhooks — Every event, payload, and the retry rules