HubSpot
Use GrowthLoop audiences and warehouse CRM data for HubSpot lists and records.
Connect this destination to export audience membership into a HubSpot contact list, or to write warehouse rows onto HubSpot CRM records, for use in HubSpot lists and workflows.
This destination writes to your HubSpot account and is a good fit when you want to:
- Make GrowthLoop audiences available as HubSpot contact lists
- Create or update contacts, companies, deals, tickets, or line items from a warehouse table
This maps to GrowthLoop Audiences, Journeys, and Syncs:
| Use it for | Audiences | Journeys | Syncs |
|---|---|---|---|
| Sending GrowthLoop audiences to HubSpot contact lists | ✓ | ✓ | |
| Creating or updating HubSpot CRM records from a warehouse table | ✓ |
Prerequisites
Make sure you have:
- A HubSpot account you can authorize for GrowthLoop.
- Permission to connect an app to the HubSpot account that should receive audiences and syncs.
Set up HubSpot as a destination
- In GrowthLoop, click the Destinations tab on the left sidebar.
- Click New Destination in the upper right corner.
- Search for HubSpot and click Add Hubspot Audience.

- Log in to HubSpot, choose the account you want to connect, then click Connect app.



- After you grant GrowthLoop access, enter the required information, then click Create.

| Field | Description |
|---|---|
| Destination Name | Name this destination in GrowthLoop. Use a name so your team recognizes its purpose, like "HubSpot Email". |
| Sync Frequency | Set the default export frequency to Hourly or Daily. You can override this setting for individual exports and syncs. |
| Access Token | Automatically populated by HubSpot. |
| Refresh Token | Automatically populated by HubSpot. |
| Prefix for Personalization Fields (optional) | Prefix GrowthLoop adds to personalization fields. The default value is fw. Leave this blank for no prefix. If you set one, it must start with a letter and use up to 5 letters or numbers. |
GrowthLoop validates the connection. HubSpot then appears in your list of connected destinations.
Export to HubSpot
From within GrowthLoop, export from an audience or from a journey Destination Node. See Export an audience or Build a journey if you need more information on these steps.
After building or selecting an audience, click Export, then search for Hubspot. In a journey, add a Destination Node under Email and select Hubspot Audience.

Map contact identifiers
On an audience or in a journey Destination Node, map Email Address. This destination matches contacts on email.
You can also map additional fields, including custom attributes from the audience or from the journey. GrowthLoop writes those values as HubSpot custom properties.

Configure the export
This is where you set the campaign type and schedule for audience exports. On a journey Destination Node, you set timing on the journey canvas.

| Setting | Audience export | Journey Destination Node |
|---|---|---|
| Export Name | Defaults to {audience name}_GL_Audience_{audience ID}. That is the list name in HubSpot unless you change it. | Required. Enter a name so you can find the export in GrowthLoop and the list in HubSpot. |
| Campaign type | Choose a one-time or ongoing export. | The journey schedule controls when the journey runs and contacts are sent to HubSpot. |
| Schedule | Set frequency, start date, end date, and days of the week for ongoing exports. | Users reach this node when the journey runs. Add a Delay Node or set Criteria Evaluation to control timing. |
| Personalization fields | Optional. GrowthLoop creates these as HubSpot custom properties. | Optional. GrowthLoop creates these as HubSpot custom properties. |
Export behavior
This is what GrowthLoop writes when you export an audience.
| Behavior | What happens |
|---|---|
| What GrowthLoop writes | A HubSpot list as a Contact object, plus mapped personalization fields. Direction is GrowthLoop → HubSpot. |
| When it runs | GrowthLoop sends the export as a batch on the next successful run. An export that starts Now runs within about 15 minutes. Journeys send exports on demand when users reach the Destination Node. |
| List type | GrowthLoop exports the audience as a Contact list. |
| Match field | Email Address. |
| Personalization | Additional fields appear under Flywheel Contact Properties as Flywheel Personalization - flywheel_personalization_[field name]. |
| One-time exports | GrowthLoop sends current membership once. |
| Ongoing adds and removals | Ongoing exports add contacts who enter the audience and remove those who leave the list. |
| Deletes | GrowthLoop does not delete HubSpot contacts. Remove only takes the contact off the list. |
Create a sync in GrowthLoop
Create a sync from a warehouse table to write rows onto HubSpot CRM records. See Syncs for information on how to complete those steps.
Select an Object Type:
| Object | Use it for | Sync modes |
|---|---|---|
| Contacts | Create or update people in HubSpot | Insert, Update, or Upsert |
| Companies | Create or update organizations | Insert, Update, or Upsert |
| Deals | Create or update sales opportunities | Insert, Update, or Upsert |
| Tickets | Create or update support requests | Insert, Update, or Upsert |
| Line Items | Create or update products or services on deals | Insert, Update, or Upsert |
When you configure the sync:
- Connection: Select your HubSpot destination.
- Object Type: Select an object from the table above.
- Update Rule: Choose Insert, Update, or Upsert. Every HubSpot object supports all three modes. See Sync behavior.
- Dataset/Table: Select the warehouse table that holds the records.
- Match Field: Map the required identifier for that object.
After you map fields, click Update Sync. Enable the sync with the toggle at the top of the page.
Syncs create or update CRM records. They do not add or remove contacts from a HubSpot list. To manage list membership, export an audience.
NoteHubSpot enforces daily and per-second API rate limits. If a sync exceeds the daily limit (typically 1 million records on Enterprise plans), it can take more than one day to finish. During that time, the sync status stays Processing while GrowthLoop pauses and resumes across days.
Contact fields
| Destination field | Description |
|---|---|
| Unique contact identifier. Required | |
| First Name, Last Name, Phone Number, Company, Job Title, Address, Lifecycle Stage | Optional contact fields |
Company fields
| Destination field | Description |
|---|---|
| Company Name | Unique company identifier. Required |
| Domain, Industry, Phone Number, Number of Employees, Address, Annual Revenue | Optional company fields |
Deal fields
| Destination field | Description |
|---|---|
| Deal Name | Deal identifier. Required |
| Deal Stage, Amount, Close Date, Deal Type, Associated Contacts, Associated Companies | Optional deal fields |
Ticket fields
| Destination field | Description |
|---|---|
| Ticket Name | Ticket identifier. Required |
| Pipeline | Ticket pipeline. Required |
| Ticket Status, Priority, Source, Description, Associated Contacts, Associated Companies | Optional ticket fields |
Line Item fields
| Destination field | Description |
|---|---|
| Name | Item identifier. Required |
| Price | Unit price. Required |
| Product ID | Product identifier. Required |
| Description, SKU, Discount, Tax, Associated Deals | Optional line item fields |
Sync behavior
| Behavior | What happens |
|---|---|
| When it runs | GrowthLoop sends the sync as a batch on the next successful run. |
| Insert | GrowthLoop adds new records. Existing records are not updated. |
| Update | GrowthLoop updates mapped fields on records that already exist. New records are not added. |
| Upsert | GrowthLoop adds new records and updates mapped fields that changed in the warehouse. |
| Rate limits | HubSpot daily and per-second limits can pause a large sync across more than one day. Status stays Processing. |
| List membership | Syncs do not add or remove contacts from a HubSpot list. |
| Deletes | GrowthLoop does not delete HubSpot records. |
Rows without the required identifier fail.
Confirm the export was successful
When the run finishes, confirm you can use the data in HubSpot.
- Audience export: Open CRM > Lists and look up the list. Look for the
_GL_Audience_name unless you changed Export Name. Open a contact to confirm personalization fields under Flywheel Contact Properties. - Journey Destination Node: Open CRM > Lists and look up the list named after the export.
- Contact sync: Search for the contact and check the mapped attributes.
- Company sync: Search for the company and check the mapped attributes.
- Deal sync: Search for the deal and check the mapped attributes.
- Ticket sync: Search for the ticket and check the mapped attributes.
- Line Item sync: Search for the line item and check the mapped attributes.


In GrowthLoop, review counts on the audience Exports tab, open the Activity tab on the journey Destination Node, or confirm the sync appears in the Syncs table. See Export an audience, Monitor a journey, or Syncs for more information.
Congrats on successfully exporting to HubSpot!
Troubleshooting
These are the issues we see most often. You can always email us at [email protected] for help.
| Problem | Cause | Resolution |
|---|---|---|
| Connection fails to validate | The HubSpot account was not authorized, or you selected the wrong account | Sign in again with the HubSpot account that should receive audiences, then click Connect app |
| Rows fail to match on an export | Email Address is not mapped | Map the warehouse column that contains the customer's email address |
| A sync stays Processing | The sync exceeded HubSpot's daily API limit | Wait for GrowthLoop to resume the sync on the next day. Reduce volume or split the table if this happens often |
| A sync did not change a list | Syncs update CRM records only | Export an audience to manage list membership |
Updated 18 days ago
