Contact records, update their properties, and trigger advanced Marketing Hub workflows the exact second a user clicks submit.
Enterprise Business Use Cases
Automated Lead Generation
Marketing Workflow Triggers
Ultra-Detailed, Step-by-Step Setup Guide
To establish a secure, authenticated connection between Flex Forms and your HubSpot environment, you must generate a Private App Access Token. Follow these exact, step-by-step instructions carefully to ensure a successful integration. (HubSpot deprecated legacy API keys in 2022).Step 1: Log into your HubSpot Dashboard
https://app.hubspot.com). Enter your credentials to log in.Note: You must have Super Admin privileges in HubSpot to create Private Apps.Step 2: Locate the Settings Gear
Step 3: Navigate to Private Apps
Step 4: Initiate App Creation
Step 5: Configure Basic Info
Flex Forms Production Integration. You can also upload the Flex Forms logo here so your team knows what this app is for.Step 6: Grant Scopes (Crucial Step)
crm.objects.contacts.writecrm.objects.contacts.read
Step 7: Generate and Secure the Token
Ctrl+C / Cmd+C). Keep this safe, as HubSpot will only show it to you once.Step 8: Create a Connection (recommended)
- Create a HubSpot connection and label it (for example
Production portal). - Paste the Private App token into the connection credentials.
- Connect so the status shows Connected.
Step 9: Optional Catalog fallback
Wire the form feed
- Open the form in Studio → hub Integrations → HubSpot.
- Enable the feed and pick your Connection.
- Map fields / forms as needed, then save.
Inbound (CRM → Flex Forms)
HubSpot can call Flex Forms when a contact changes. Configure the inbound webhook secret on the same Connection or Catalog credentials, then point HubSpot at:POST /flex-forms/integrations/hubspot/webhook
Matching contacts update name fields and last-seen timestamps in Flex Forms Contacts (not a full CRM mirror).
Masterclass: Mapping Data Payloads
Establishing the connection is only half the battle. Now, you must instruct Flex Forms on exactly how to translate your form fields into HubSpot’s specific database architecture. By default, Flex Forms will automatically map your primaryEmail Block to HubSpot’s core email property. Everything else must be explicitly mapped using HubSpot’s Internal Names.
- Standard Field Mapping
- Exact Mapping Example
hubspot_internal_name=flex_forms_block_nameHere are the most common standard HubSpot keys you will use:firstname(The person’s first name)lastname(The person’s last name)phone(Their mobile number)company(The company they work for)website(Their company URL)
How Custom Properties Work in HubSpot
If you created a custom property in HubSpot (e.g., “Favorite Color”), you must map to its exact Internal Name.jobtitle. If you try to map Job Title=job_title, the API will instantly reject the payload.Troubleshooting & Enterprise FAQs
Even with a perfect setup, enterprise environments can experience edge cases. Here is how to diagnose and resolve them.API Error: Property does not exist
API Error: Property does not exist
firstname, not first_name).Duplicate Contact Management
Duplicate Contact Management
Configuration Reference
The following advanced settings are available in the Flex Forms UI for this integration. Use this reference to understand exactly how each field impacts the API payload.Global Settings
Located in Integrations in the Flex Forms left rail.crm.objects.contacts.write and crm.objects.contacts.read permissions.account-info endpoint. You only need to provide this manually if you have multiple nested Portals and the API detects the wrong one.Form-Level Settings
Located on the form hub Integrations tab for a specific form.Form Mapping & Creation
form_guid is empty, Flex Forms will use the HubSpot API to dynamically generate a new form inside your HubSpot account the very first time a user submits this Flex Form.Options:1: Yes — create when GUID is empty0: No — require selecting an existing form manually
Contact Processing
default: Relies on your global HubSpot account deduplication settings.enabled: Forces the creation of a brand new contact record, bypassing deduplication.disabled: Updates an existing contact if found, but drops the payload if the contact does not already exist.
lifecyclestage property (e.g., subscriber, lead, marketingqualifiedlead, customer).hubspot_internal_name=flex_forms_block_name.field_map above.Advanced Owner Routing
none: Do not assign an owner.select: Assign a fixed owner to all submissions from this form.conditional: Use logic rules to assign different owners based on how the user answered the form.
owner_mode to be set to select.owner_id|field|operator|value.Example: 55|country_dropdown|=|United States (If they select US, assign to Owner ID 55).Supported operators: =, !=, contains, >, <Telemetry & Tracking
hubspotutk) if you capture it manually (often a text field with Hide enabled so respondents never see it).hubspotutk cookie from the user’s browser and attaches it to the API payload, allowing HubSpot to tie the submission to their browsing history. Use this setting to disable tracking for strict GDPR compliance.