Formbricks doesn’t have a native HubSpot integration yet. This guide shows you how to connect Formbricks with HubSpot using automation platforms (Make.com, n8n) or custom webhooks.
Prerequisites
Before setting up the integration, you’ll need:- A Formbricks account with at least one survey that collects email addresses
- A HubSpot account with API access
- HubSpot API credentials (see authentication options below)
- Automation service like Make, n8n, or ActivePieces (for no-code methods)
HubSpot Authentication Options
HubSpot offers two main ways to authenticate API requests:Option A: OAuth 2.0 via Public App (Recommended)
OAuth is the recommended approach for production integrations. When using Make.com or n8n, they handle OAuth authentication for you through their built-in HubSpot connectors.Option B: Legacy Private Apps (Simple Setup)
For custom webhook handlers, you can use a Legacy Private App which provides a static access token. While marked as “legacy,” these apps remain fully supported by HubSpot. To create a Legacy Private App:Open HubSpot Settings
Go to your HubSpot account Settings and navigate to Integrations → Private Apps.
For more information on HubSpot’s authentication options, see the HubSpot Authentication Overview.
Method 1: Using Make.com (Recommended for No-Code)
Before starting, ensure your survey has clear
questionId values set. You can only update these before publishing. If your survey is already published, duplicate it and update the question IDs in the copy.Set Up Your Survey
Make sure your survey has meaningful 
questionId values for each question. This makes mapping responses to HubSpot fields easier.
Create a New Make.com Scenario
Go to Make.com and create a new scenario. Search for Formbricks and select it as your trigger, then choose Response Finished as the trigger event.

Connect Formbricks to Make
Click Create a webhook, enter your Formbricks API Host (default: 
https://app.formbricks.com), add your Formbricks API Key (see API Key Setup), and select the survey you want to connect.
Add the HubSpot Module
Click the + button after the Formbricks trigger, search for HubSpot, choose Create or Update a Contact as the action, and connect your HubSpot account.
Map Formbricks Fields to HubSpot
Map the Formbricks response fields to HubSpot contact properties:
You can also map metadata:
| HubSpot Field | Formbricks Field |
|---|---|
data.email (your email question ID) | |
| First Name | data.firstName (if collected) |
| Last Name | data.lastName (if collected) |
| Custom Property | Any other data.* field |
meta.country, meta.userAgent.browser, survey.title.Method 2: Using n8n (Self-Hosted Option)
The Formbricks n8n node is available as a community node. Install it via Settings → Community Nodes → install
@formbricks/n8n-nodes-formbricks.Set Up the Formbricks Trigger
Create a new workflow in n8n, add the Formbricks trigger node, connect it with your Formbricks API Key and host, select Response Finished as the event, and choose your survey.

Add the HubSpot Node
Add a new node and search for HubSpot, select Create/Update Contact as the operation, and connect your HubSpot account (n8n supports both OAuth and access token authentication).
Configure Field Mapping
In the HubSpot node, map the fields:For custom HubSpot properties, use the Additional Fields section to add mappings like
survey_source, response_id, and submission_date.Method 3: Using Webhooks (Custom Integration)
For maximum flexibility, you can use Formbricks webhooks with a custom endpoint that calls the HubSpot API directly. This approach is ideal for developers who want full control.This method requires a HubSpot access token. You can use a Legacy Private App token (simplest) or implement OAuth 2.0 for production applications.
Create a Formbricks Webhook
Go to Configuration → Integrations in Formbricks, click Manage Webhooks → Add Webhook, enter your endpoint URL, select Response Finished as the trigger, and choose the surveys to monitor.

Build Your Webhook Handler
Your webhook handler needs to:
- Receive the Formbricks webhook - Accept POST requests with the survey response payload
- Extract contact data - Parse the email and other fields from
data.data(keyed by yourquestionIdvalues) - Call the HubSpot API - Use the HubSpot Contacts API to create or update contacts
- Handle duplicates - HubSpot returns a 409 error if a contact with that email exists; search and update instead
Troubleshooting
Contact Not Created in HubSpot
- Check the email field: Ensure your survey has an email question and you’re mapping the correct
questionId - Verify API token: Make sure your HubSpot access token has the required scopes (
crm.objects.contacts.writeandcrm.objects.contacts.read) - Check for duplicates: HubSpot returns a 409 error if a contact with that email already exists
Webhook Not Triggering
- Verify the webhook URL is publicly accessible
- Check that Response Finished trigger is selected
- Ensure the survey is linked to the webhook
Testing Your Integration
- Use a unique test email for each test
- Check HubSpot’s Contacts page after submitting a response
- Review your webhook handler logs for errors
Still struggling or something not working as expected? Join our GitHub Discussions and we’re happy to help!