Connect your AI chatbot to Zapier, HubSpot, Make and n8n
When a visitor fills in the contact form inside a Heeya chat, the request lands in your dashboard. Form connectors also push it, seconds later, to the tools your team already works in: a webhook URL for Zapier, Make, n8n or your own server, or a form in your HubSpot account.
You set them up in the agent's Tools page: open the contact form, then the Connectors tab. Each request is sent in the background, retried if the other side fails, and you get an email if it still does not go through.
Start your 7-day free trialConnectors are part of the Premium plan. See Heeya pricing. Other ways to deploy the chatbot itself are on the integrations hub.
What gets sent, and when
There is one event: a visitor submits the chatbot's contact form. Right after the submission, Heeya sends it to every active connector of that agent, in parallel. An agent can have up to 10 connectors, for example one webhook to Zapier and one HubSpot form.
| Connector | What you paste | What arrives | Test |
|---|---|---|---|
| Webhook | An HTTPS URL from Zapier, Make, n8n or your server | A signed JSON POST with every form field |
Sent automatically when you save, so Zapier and Make get a sample |
| HubSpot | The embed code of a HubSpot form, plus a field mapping | A form submission: HubSpot creates or updates the contact by email | Manual, after a confirmation, because it creates a real contact |
Included in each request
- The fields you configured on the form, with their labels and types.
- Files the visitor attached, as download links valid for 7 days.
- The agent's ID and name, and the conversation ID.
- A link to the request in the Messages tab of your Heeya dashboard.
Not included
- The chat transcript, an AI summary or a lead score.
- Conversations where the visitor did not submit the form.
- Anything coming back from your CRM: data flows one way, from the form to your tools.
The webhook payload
Each request is a POST with a JSON body. The keys under fields are the internal names of your form fields, so the exact keys depend on how you set up the form.
{
"event": "form.submitted",
"submission_id": "…",
"submitted_at": "2026-10-17T14:32:00+02:00",
"agent": {"id": "…", "name": "Sales assistant"},
"conversation_id": "…",
"dashboard_url": "https://heeya.fr/agent/…/outils?form=messages",
"fields": {"email": "[email protected]", "name": "Julie Durand"},
"fields_detail": [
{"name": "email", "label": "Email", "type": "email", "value": "[email protected]"}
],
"files": [
{"field": "photo", "filename": "leak.jpg", "content_type": "image/jpeg", "size": 12345, "url": "…"}
]
}
Fields
fields is a flat object, the easiest to map in Zapier and Make. fields_detail keeps each field's label and type. A multi-select choice arrives as a list, and a file field as a list of links. submitted_at is ISO 8601 with its UTC offset.
Headers
Content-Type: application/json, User-Agent: Heeya-Webhooks/1.0, X-Heeya-Event, X-Heeya-Delivery (same value on every retry and resend), X-Heeya-Timestamp (Unix seconds) and X-Heeya-Signature.
Test sends use sample values: [email protected] for email fields, a placeholder for text fields and the first option for choices. Their submission_id starts with test- and conversation_id is null, so a filter step can skip them.
Set up a webhook to Zapier, Make or n8n
The Heeya side is the same for all three. Turn on the contact form in the agent's Tools page and configure its fields. Then open its Connectors tab, click Add a connector, choose Webhook, paste the URL and click Save and test. Heeya saves the connector and immediately sends a test request, which is what Zapier and Make need to learn the data shape.
-
Zapier: Webhooks by Zapier, Catch Hook
- 1. Create a Zap. For the trigger, pick Webhooks by Zapier and the Catch Hook event, then continue.
- 2. In the Test tab, copy the webhook URL and paste it into the Heeya connector. Click Save and test.
- 3. Back in Zapier, click Test trigger. The Heeya sample appears with its fields.
- 4. Add your actions: create a contact in your CRM, a row in a spreadsheet, a message to your team.
Zapier's webhook help article lists Webhooks by Zapier as unavailable on its Free plan.
-
Make: Webhooks, Custom webhook
- 1. In a new scenario, add the Webhooks app with the Custom webhook trigger. Click Add, name the webhook and save.
- 2. Copy the webhook address and paste it into the Heeya connector. Click Save and test.
- 3. Make reads the test request and determines the data structure. Add the modules that should use the lead.
- 4. If you later add fields to the Heeya form, ask Make to redetermine the data structure, then click Test on the Heeya connector to send a new sample.
-
n8n: Webhook node
- 1. Start the workflow with a Webhook node and set its HTTP method to
POST. - 2. Copy the Test URL, click Listen for test event, then paste the URL into Heeya and click Save and test. n8n shows the request, with the JSON under
body. - 3. Build the rest of the workflow, then publish it so the Production URL is registered.
- 4. Edit the Heeya connector, replace the test URL with the production URL, and use Test to confirm. On the same host, the signing secret stays the same.
A self-hosted n8n works if it is reachable on a public HTTPS address. See the n8n Webhook node docs for the test and production URLs.
- 1. Start the workflow with a Webhook node and set its HTTP method to
Your own server
Answer with a 2xx status as soon as you have stored the request. Redirects are not followed, so give the final URL. If the URL contains credentials (https://user:pass@host/…), they are sent as Basic auth. To check that a request comes from Heeya, recompute the signature over the raw body, before any JSON parsing, with the signing secret shown in the connector:
import hashlib
import hmac
def is_from_heeya(secret: str, headers, raw_body: bytes) -> bool:
timestamp = headers["X-Heeya-Timestamp"]
expected = "sha256=" + hmac.new(
secret.encode(), timestamp.encode() + b"." + raw_body, hashlib.sha256
).hexdigest()
return hmac.compare_digest(expected, headers["X-Heeya-Signature"])
Store X-Heeya-Delivery and ignore a value you have already processed: a retry after a timeout, or a manual resend, carries the same ID.
Set up the HubSpot connector
The HubSpot connector submits each request to one of your HubSpot forms through HubSpot's Forms API. HubSpot then creates the contact, or updates it if the email already exists, and runs the workflows attached to that form. No OAuth app, no private app token: the form's embed code is enough.
-
1. Prepare a HubSpot form
Use a form that contains every property you want to fill, at least Email. Turn off captcha on that form: HubSpot rejects API submissions to a form with captcha enabled.
-
2. Paste the embed code
Copy the form's embed code from HubSpot (Share, then Embed code). In Heeya, add a HubSpot connector and paste it. Heeya reads the account ID, form ID and region (NA1, EU1, NA2 or AP1) from the code. You can also type them in by hand.
-
3. Map the fields
For each Heeya field, enter the internal name of the HubSpot property, such as
email,firstname,lastname,phoneorcompany. Heeya suggests likely matches. A field left empty is not sent, and one field must map toemail, since HubSpot finds the contact by email. Internal names are listed in HubSpot's property settings, and each property must exist in the form. -
4. Save, then test if you want
Saving does not send anything. The Test button asks for confirmation first, because it sends a real submission: it creates or updates the contact
[email protected]and triggers the form's workflows.
Multi-select answers are joined with semicolons, HubSpot's checkbox format, and file links are sent one per line. The submission's page name in HubSpot is the agent's name. If HubSpot rejects a request (unknown field, required field missing, invalid email, form not found), the error is shown on that request in Heeya.
When a delivery fails
Three attempts
Right away, after 10 seconds, then after 60 seconds. Timeouts, network and DNS errors, HTTP 429 and 5xx are retried. Other errors, such as a 4xx or a HubSpot form that no longer exists, are tried once: a retry would not fix them.
An email, not a flood
After the last failed attempt, Heeya emails the form's notification address, or the workspace owner if none is set. You get at most one email per hour per connector, with the number of failed requests and the last error.
Resend from the dashboard
Each request in the Messages tab shows the status of its deliveries. Failed ones have a Resend button. A double click or a second tab cannot send the same request twice.
There is no later retry job after the three attempts: fix the cause (URL, HubSpot form, workflow switched off), then resend. If the server restarts during the attempts, the affected deliveries are marked as failed and you are alerted the same way.
Security
- The full connector settings, webhook URL and signing secret included, are stored encrypted.
- Webhook URLs must use HTTPS and point to a public address. Private addresses (localhost, 10.x, 192.168.x and similar) are refused when you save and checked again at every send.
- Each webhook request is signed with HMAC-SHA256. If you move the URL to another host, Heeya generates a new signing secret.
- File links expire after 7 days. Treat the payload like any lead data and keep it in tools you trust.
For how Heeya handles conversation data more broadly, see AI chatbot data security.
Fit, and not a fit
Connectors fit when
- Leads and requests come in through the chatbot's contact form.
- Your team works in HubSpot, or in any tool Zapier, Make or n8n can reach.
- You want each request in that tool within seconds, without copying it from the dashboard.
They do not cover
- Native Salesforce, Pipedrive, Slack or Google Sheets connectors. Go through the webhook and an automation tool.
- A HubSpot Marketplace app with OAuth, or syncing CRM data back into the chatbot.
- Sending the conversation transcript. The payload carries a link to the request in your dashboard instead.
For the qualification side, what to ask before the form appears and how to hand leads to sales, read the AI chatbot lead generation playbook. If you are comparing HubSpot's own chatflows with a document-grounded chatbot, see HubSpot chatbot alternatives.
FAQ about Zapier, HubSpot and webhook connectors
Does Heeya have a Zapier integration?
Yes, through a webhook. In Zapier, start a Zap with the Webhooks by Zapier trigger and the Catch Hook event, then paste its URL into a Heeya webhook connector. There is no Heeya app in the Zapier directory. Zapier's help center lists Webhooks by Zapier as unavailable on its Free plan.
How does the HubSpot integration work?
Heeya submits each contact-form request to a form in your HubSpot account through HubSpot's Forms API. You paste the HubSpot form's embed code and map each Heeya field to a HubSpot property. HubSpot then creates or updates the contact from the email address and runs that form's workflows. There is no OAuth app to install and no API token to create.
Can I send chatbot leads to Salesforce, Pipedrive, Slack or Google Sheets?
Not with a native Heeya connector. The two connectors are a webhook and HubSpot. Point the webhook at Zapier, Make or n8n, then use their Salesforce, Pipedrive, Slack or Google Sheets actions.
Is the webhook signed?
Yes. Each request carries X-Heeya-Timestamp and X-Heeya-Signature headers. The signature is sha256= followed by an HMAC-SHA256 of the timestamp, a dot and the raw body, computed with the signing secret shown in the connector settings. X-Heeya-Delivery keeps the same value across retries and resends, so you can drop duplicates.
What happens if my endpoint or HubSpot is down?
Heeya tries three times: right away, after 10 seconds, then after 60 seconds. Timeouts, network errors, HTTP 429 and 5xx responses are retried. Errors a retry cannot fix, such as a deleted HubSpot form, are tried once. After the last failure you get an email, at most one per hour per connector, and the request shows a Resend button in the Messages tab.
Is the chat transcript sent to my CRM?
No. The payload contains the contact-form fields, file links, the agent, the conversation ID and a link to the request in your Heeya dashboard. It does not include the transcript, an AI summary or a lead score. Data flows one way, from the form to your tools: Heeya does not read anything back from your CRM.
Which plan includes form connectors?
Connectors are a Premium feature (99 euros per month). The contact form itself is available from the Standard plan, which has a 7-day free trial with no credit card. On Standard the Connectors tab shows an upgrade prompt and nothing is sent.
Does it work with a self-hosted n8n?
Yes, if the n8n webhook URL is public and uses HTTPS. Heeya refuses http:// URLs and addresses on a private network, such as localhost, 10.x or 192.168.x, both when you save and at every send.
Send chatbot leads where your team already works
Build the agent and its contact form during the trial. Move to Premium to switch on the Zapier, Make, n8n or HubSpot connector.
Start your 7-day free trial