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 forAudiencesJourneysSyncs
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

  1. In GrowthLoop, click the Destinations tab on the left sidebar.
  2. Click New Destination in the upper right corner.
  3. Search for HubSpot and click Add Hubspot Audience.
Select Destination modal showing Add Hubspot Audience
  1. Log in to HubSpot, choose the account you want to connect, then click Connect app.
HubSpot login during destination setup
HubSpot account picker during destination setup
HubSpot Connect app confirmation
  1. After you grant GrowthLoop access, enter the required information, then click Create.
HubSpot destination setup form with destination name and sync frequency
FieldDescription
Destination NameName this destination in GrowthLoop. Use a name so your team recognizes its purpose, like "HubSpot Email".
Sync FrequencySet the default export frequency to Hourly or Daily. You can override this setting for individual exports and syncs.
Access TokenAutomatically populated by HubSpot.
Refresh TokenAutomatically 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.

Journey Destination Node with export name, match fields, and personalization signals

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.

HubSpot match fields with Email Address mapped

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.

HubSpot export settings with campaign type, schedule, and personalization fields
SettingAudience exportJourney Destination Node
Export NameDefaults 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 typeChoose a one-time or ongoing export.The journey schedule controls when the journey runs and contacts are sent to HubSpot.
ScheduleSet 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 fieldsOptional. 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.

BehaviorWhat happens
What GrowthLoop writesA HubSpot list as a Contact object, plus mapped personalization fields. Direction is GrowthLoop → HubSpot.
When it runsGrowthLoop 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 typeGrowthLoop exports the audience as a Contact list.
Match fieldEmail Address.
PersonalizationAdditional fields appear under Flywheel Contact Properties as Flywheel Personalization - flywheel_personalization_[field name].
One-time exportsGrowthLoop sends current membership once.
Ongoing adds and removalsOngoing exports add contacts who enter the audience and remove those who leave the list.
DeletesGrowthLoop 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:

ObjectUse it forSync modes
ContactsCreate or update people in HubSpotInsert, Update, or Upsert
CompaniesCreate or update organizationsInsert, Update, or Upsert
DealsCreate or update sales opportunitiesInsert, Update, or Upsert
TicketsCreate or update support requestsInsert, Update, or Upsert
Line ItemsCreate or update products or services on dealsInsert, 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.

📘

Note

HubSpot 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 fieldDescription
EmailUnique contact identifier. Required
First Name, Last Name, Phone Number, Company, Job Title, Address, Lifecycle StageOptional contact fields

Company fields

Destination fieldDescription
Company NameUnique company identifier. Required
Domain, Industry, Phone Number, Number of Employees, Address, Annual RevenueOptional company fields

Deal fields

Destination fieldDescription
Deal NameDeal identifier. Required
Deal Stage, Amount, Close Date, Deal Type, Associated Contacts, Associated CompaniesOptional deal fields

Ticket fields

Destination fieldDescription
Ticket NameTicket identifier. Required
PipelineTicket pipeline. Required
Ticket Status, Priority, Source, Description, Associated Contacts, Associated CompaniesOptional ticket fields

Line Item fields

Destination fieldDescription
NameItem identifier. Required
PriceUnit price. Required
Product IDProduct identifier. Required
Description, SKU, Discount, Tax, Associated DealsOptional line item fields

Sync behavior

BehaviorWhat happens
When it runsGrowthLoop sends the sync as a batch on the next successful run.
InsertGrowthLoop adds new records. Existing records are not updated.
UpdateGrowthLoop updates mapped fields on records that already exist. New records are not added.
UpsertGrowthLoop adds new records and updates mapped fields that changed in the warehouse.
Rate limitsHubSpot daily and per-second limits can pause a large sync across more than one day. Status stays Processing.
List membershipSyncs do not add or remove contacts from a HubSpot list.
DeletesGrowthLoop 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.
HubSpot Lists page showing an exported GrowthLoop audience
HubSpot contact properties showing Flywheel personalization fields

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.

ProblemCauseResolution
Connection fails to validateThe HubSpot account was not authorized, or you selected the wrong accountSign in again with the HubSpot account that should receive audiences, then click Connect app
Rows fail to match on an exportEmail Address is not mappedMap the warehouse column that contains the customer's email address
A sync stays ProcessingThe sync exceeded HubSpot's daily API limitWait 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 listSyncs update CRM records onlyExport an audience to manage list membership

What’s Next

Export an audience after you connect a destination

Did this page help you?