The HubSpot – Netsuite integration template (NA | EU) lets you automate and synchronize the companies, contacts, and deals between HubSpot (a leading contact relationship management company) and NetSuite. This template comprises a set of prebuilt integration flows, which automate the workflow by syncing deals, companies, contacts, and opportunities between HubSpot and NetSuite.
Supported integration flows
The Celigo quickstart bundle contains workflows you can easily configure and deploy without coding or IT support. The following built-in flows sync from the specified source data to the corresponding destination.
HubSpot to NetSuite
Flow |
HubSpot companies to NetSuite customers |
HubSpot contacts to NetSuite contacts |
HubSpot deals to NetSuite sales orders |
NetSuite to HubSpot
Flow |
NetSuite contacts to HubSpot contacts |
NetSuite opportunities to HubSpot deals |
NetSuite customers to HubSpot companies |
Gather your credentials
Keep your HubSpot and NetSuite account credentials ready:
-
HubSpot – verify APIs and Authorization
- Before you set up a HubSpot connection below, ensure that you have the API and authentication details for your HubSpot app.
- Refer to the HubSpot help documentation to learn more about APIs and Authorization.
-
NetSuite – verify APIs and Authorization
- Before you set up a NetSuite connection below, ensure that you have the API and authentication details for your NetSuite app.
- Refer to the NetSuite help documentation to learn more about APIs and Authorization.
Install the HubSpot – NetSuite template
- From the NetSuite Marketplace options, select the HubSpot template and click Install.
- Review the template’s contents and ReadMe and click Install now to begin.
- Add your credentials and install the NetSuite integrator.io bundle (bundle ID: 484322).
- Install the template.
Configure the HubSpot – NetSuite flows
Additional record mapping is required to integrate the template’s exports and imports with your Google Ads and NetSuite apps.
Note that all of your flows are disabled when first installed. After configuring the flows, you may enable them in your Flows dashboard or in Flow Builder with the Off/On toggle button. Then, run or schedule each flow.
HubSpot companies to NetSuite customers
This integration flow syncs HubSpot companies as NetSuite customers.
Before you begin
Create a webhook workflow in Hubspot for the companies you’d like to export:
- Make a “company-based” active list and give it a memorable name.
- Pick the filters you want for the list. For example, you can pick the company properties you want to trigger the flow upon changing and choose “updated in the last 1 day(s)”). This will add companies to the list if any properties have been changed in the last day.
- Create custom fields in both HubSpot and Netsuite.
-
netsuiteID - Single-line Text
- Used to correlate the HubSpot record to the NetSuite record
-
netsuiteID - Single-line Text
This flow utilizes a script that maps the subsidiaryID from the global settings. The hook can be altered or removed if you want to change the mapping or hardcode it. The subsidiary ID should be changed in the integration settings from “subsidiaryid123” to the value of the subsidiary you want contacts to be placed into.
Additional resources:
Setup instructions
- After creating your workflow in HubSpot, configure your webhook in integrator.io. The verification type is Secret URL. Copy the Public URL into Hubspot.
Import NetSuite Customers
Source record field (Webhook) | Destination record field (NetSuite) |
properties.name.value | Company Name |
subsidiaryId | Subsidiary (InternalId) |
properties.companyId.value | Celigo [AT]_Hubspot_id |
properties.company_type.value | Category (Name) (Field ID: category) |
Update HubSpot companies
Source record field (Webhook) | Destination record field (NetSuite) |
{{{[Company Name]}}} | name |
netsuiteId | netsuite_id |
HubSpot contacts to NetSuite contacts
This integration flow syncs HubSpot contacts as NetSuite contacts.
Before you begin
Create a webhook workflow in Hubspot for the contacts you’d like to export:
- Make a “contact-based” active list and give it a memorable name.
- Pick the filters you want for the list. For example, you can pick the contact properties you want to trigger the flow upon changing and choose “updated in last 1 day(s)”). This will add contacts to the list if any properties have been changed in the last day.
- Create the following custom fields in your Hubspot contact object:
-
netsuite_id- Single-line Text
- Used to correlate HubSpot records to NetSuite records.
-
netsuite_id- Single-line Text
This flow utilizes a script that maps the subsidiaryID from the global settings. The hook can be altered or removed if you want to change the mapping or hardcode it. The subsidiary ID should be changed in the integration settings from “subsidiaryid123” to the value of the subsidiary you want contacts to be placed into.
Additional Resources:
- Create and edit properties
- Creating a Custom Field
- Can a Contact Property change trigger workflow? - HubSpot Community
- Update an existing contact | Contacts API
Import NetSuite contacts
Source record field (Webhook) | Destination record field (NetSuite) |
Note: This is a dynamic lookup in NetSuite that searches for the company's internal ID using the company name. | Company (Name) |
{{subsidiaryId}} | Subsidiary (InternalId) |
{{{properties.firstname.value}}} | Name |
{{{properties.lastname.value}}} | lastname |
{{#if properties.firstname}} {{{properties.firstname.value}}} {{{properties.lastname.value}}}{{else if properties.company}} {{{properties.company.value}}}{{else if properties.email}}{{{properties.email.value}}}{{else}}{{{vid}}}{{/if}} | Contact |
{{properties.email.value}} |
Update HubSpot contacts
Source record field (Webhook) | Destination record field (NetSuite) |
properties.email.value | |
ResponseNSid | netsuiteid |
“true” | sync_from_netsuite |
HubSpot products to NetSuite items
This integration flow syncs HubSpot products to NetSuite items.
Before you begin
- Create the following custom field in HubSpot products, which will be used to correlate the HubSpot products with the NetSuite items
- netsuite_id
- This flow only allows Inventory and Non-inventory items to be added and/or updated.
- This flow utilizes a script that maps the subsidiaryID from the global settings. The hook can be altered or removed if you want to change the mapping or hardcode it instead.
- The subsidiary ID should be changed in the integration settings from subsidiaryid123 to the value of the subsidiary you want contacts to be placed into.
Additional resources: Create and edit properties
Import Netsuite non-inventory items
Source record field (HubSpot) | Destination record field (NetSuite) |
description | Detailed Description |
name | Item Name/Number |
“3” | Subsidiary (InternalId) |
"1" | Tax Schedule (InternalId) |
"Sale" | Subtype |
“All” | custitem_product_line |
price | Celigoprice : CAD : List Price : Tier 0 Amount |
Import NetSuite inventory items
Source record field (HubSpot) | Destination record field (NetSuite) |
description | Detailed Description |
name | Item Name/Number |
subsidiaryId | Subsidiary (InternalId) |
"1" | Tax Schedule (InternalId) |
“All” | custitem_product_line |
price | Celigoprice : CAD : List Price : Tier 0 Amount |
Import Hubspot product (update)
Source record field (HubSpot) | Destination record field (NetSuite) |
name | properties.name |
responseid | properties.netsuite_id |
HubSpot deals to NetSuite opportunities
This integration flow syncs HubSpot Deals as NetSuite opportunities. This flow will get deals that are in all states except “Closed Won” or “Closed Lost”.
Before you begin
- Create the following custom fields in both HubSpot and NetSuite
-
netsuite_id - Single-line Text
- correlate the HubSpot deals with the NetSuite Opportunities
-
netsuite_id - Single-line Text
- A webhook workflow will need to be created in HubSpot for the deals that you'd like to export.
- Make a “deal-based” active list and name it something you will remember (i.e. “updated deals”).
- Pick the filters you want for the list.
- NOTE: to stop the flow from triggering when “DF6:NetSuite opportunities to HubSpot Deals” is run, set an additional filter in the list that only includes deals where the “netsuite_id” is unknown. This will only allow deals that are created in the HubSpot UI to travel through the workflow and ultimately into integrator.io.
- Use branching in the workflow to filter deals by status to be sent to either the opportunity or sales order flow, respectively. Choose “Send a webhook” as the action for the workflow and add the Public URL that is generated from integrator.io for the listener.
Additional Resources:
- Create and edit properties
- Create workflows
- Can a Contact Property change trigger workflow? - HubSpot Community
Import: Transfer files to Netsuite
Import response field | Source record field |
id | NSfileId |
Import: Import NetSuite opportunities
Source record field (Webhook) | Destination record field (NetSuite) |
dealName | Title |
{{Company.properties.netsuite.id}} | Company (InternalId) |
dealCurrencyCode | Currency (InternalId) |
{{#if dealAmount}} {{abs dealAmount}} {{else}} “0”{{/if}} | Projected Total |
objectId | Celigo [AT]_Hubspot_Deal_id |
dealStage | Status (Name) |
“true” | Items : Replace All Lines |
{{dateFormat ‘MM/DD/YY’ (abs closeDate)}} | Expected Close |
deal_data_currency_rate | Exchange Rate |
dealLostReason | Win/Loss Reason (Name) |
Lines.*.itemName | Items : Item (InternalId) |
Lines.*.quantity | Items : Qty |
{{#if Lines.*.description}}{{{Lines.*.description}}}{{else}}{{/if}} | Items : Description |
files2[*].NSfileId | Files : Attach File (InternalId) |
Import response field | Source record field |
id | oppId |
Import: Update HubSpot deals
Source record field (Webhook) | Destination record field (NetSuite) |
dealName | dealname |
oppID | netsuite_id |
HubSpot deals to NetSuite sales orders
This integration flow syncs HubSpot deals as NetSuite sales orders. This flow will only get deals that are in “Closed Won” stage.
Before you begin
- A webhook workflow will need to be created in Hubspot for the deals that you'd like to export.
- First, make a “deal-based” active list and name it something you will remember (i.e. “updated deals”).
- Pick the filters you want for the list.
- If you want to filter deals based on pipeline, add it to the enrollment criteria for the workflow.
- Use branching in the workflow to filter deals by status to be sent to either the opportunity or sales order flow, respectively.
- Choose “Send a webhook” as the action for the workflow and add the Public URL that is generated from integrator.io for the listener.
- Create the following custom fields in both HubSpot and NetSuite
-
netsuite_id - Single-line Text
- Correlate the HubSpot deals with the NetSuite Opportunities
-
netsuite_id - Single-line Text
Additional resources:
Note: To stop the flow from triggering when “DF6:NetSuite opportunities to HubSpot Deals” is run, set an additional criteria on the list that only includes deals where the netsuite_id is unknown. This will only allow deals created in HubSpot to travel through the workflow and ultimately into integrator.io.
Import: Transfer files to Netsuite
Import response field | Source record field |
id | NSfileId |
Import: Import NetSuite sales orders
Source record field (Webhook) | Destination record field (NetSuite) |
{{Company.properties.netsuite_id}} | Customer (InternalId) |
dealCurrencyCode | Currency (InternalId) |
{{#if dealAmount}} {{abs dealAmount}}{{else}} “0”{{/if}} | Projected Total |
objectId | Celigo [AT]_Hubspot_Deal_id |
dealStage | entitystatus |
“true” | Items : Replace All Lines |
{{date Format ‘MM/DD/YY’ (abs closeDate)}} | expectedclosedate |
deal_data_currency_rate | Exchange Rate |
dealLostReason | winlossreason |
Lines.*.itemName | Items : Item (InternaId) |
Lines.*.quantity | Items : Quantity |
Lines.*.price | Items : Rate |
{{#if Lines.*.description}}{{{Lines.*.description}}}{{else}}{{/if}} | Items : Description |
NSfileId | Files : Attach File (InternalId) |
Import: Update HubSpot deals
Source record field (HubSpot) | Destination record field (NetSuite) |
dealName | dealname |
SOID | netsuite_id |
NetSuite contacts to HubSpot contacts
This integration flow syncs NetSuite contacts to Hubspot contacts.
Before you begin
- Create the following custom fields on your Hubspot contact object
-
netsuite_id - Single-line Text
- Used to correlate HubSpot record to NetSuite record
-
netsuite_id - Single-line Text
Setup instructions
- Configure the mappings using your custom netsuite_internal_id field to write back the Netsuite ID into the HubSpot record.
- Use your custom HubspotID to sync the new ID to NetSuite.
Import HubSpot contacts
Source record field (NetSuite) | Destination record field (NetSuite) |
firstname | firstname |
lastname | lastname |
_billingaddress_addr1 | address |
assistantphone | phone |
company.internalid | netsuiteid |
Import NetSuite Contacts
Source record field (NetSuite) | Destination record field (NetSuite) |
NewContactVID | Celigo_at_Hubspot_id |
NetSuite items to Hubspot products
This integration flow syncs NetSuite items to Hubspot products.
Before you begin
- Create the following custom fields in both HubSpot and NetSuite
-
netsuiteID - Single-line Text
- Used to correlate HubSpot record to NetSuite record
-
Hubspot Product types - checkbox
- Used to indicate product types (non-inventory, inventory)
-
netsuiteID - Single-line Text
This flow uses a Netsuite Saved Search to pull the products you want to sync. This flow only allows Inventory and Non-inventory items to be added/updated.
Additional Resources:
- Create and edit properties
- NetSuite Applications Suite - Creating a Custom Field
- Saved Searches - NetSuite
Setup instructions
- Enter your safe search into the NetSuite Export in integrator.io
- Configure your mappings, including the netsuite_internal_id.
- Each Item type will have a Hubspot ID writeback.
Import HubSpot products
Source record field (NetSuite) | Destination record field (HubSpot) |
Name | name |
Base Price | price |
Description | description |
ID | netsuite_internal_id |
recordType | hs_product_type |
Import NetSuite inventory item
Source record field (NetSuite) | Destination record field (NetSuite) |
“false” | Celigo[AT]_Hubspot_Item_Sync |
ResponseHubspotProductID | Celigo[AT]_Hubspot_Item_id |
Import NetSuite non-inventory item
Source record field (NetSuite) | Destination record field (NetSuite) |
“false” | Celigo[AT]_Hubspot_Item_Sync |
ResponseHubspotProductID | Celigo[AT]_Hubspot_Item_id |
NetSuite opportunities to HubSpot deals
This integration flow syncs NetSuite opportunities as HubSpot deals.
Before you begin
- Create the following custom fields on your Hubspot deal object
-
netsuite_id - Single-line Text
- Used to correlate HubSpot record to NetSuite record
-
netsuite_id - Single-line Text
Import: Update NetSuite opportunities
Source record field (NetSuite) | Destination record field (HubSpot) |
ResponseHubspotDealID | Auth ID |
Import: Update HubSpot deals
Source record field (NetSuite) | Destination record field (HubSpot) |
customerHubSpotID | inputs[*].from.id |
ResponseHubspotDealID | inputs[*].to.id |
“company_to_deal” | inputs[*].type |
Import: Update HubSpot deals
Source record field (NetSuite) | Destination record field (HubSpot) |
_PARENT.ResponseHubspotDealID | inputs[*].from.id |
objectId | inputs[*].from.id |
“line_items_to_deal” | inputs[*].type |
NetSuite customers to HubSpot companies
This integration flow syncs NetSuite customers as HubSpot companies.
Before you begin
- Create the following custom fields in both HubSpot and NetSuite
-
netsuite_id - Single-line Text
- Used to correlate HubSpot record to NetSuite record
-
netsuite_id - Single-line Text
Import HubSpot companies
Source record field (NetSuite) | Destination record field (HubSpot) |
companyname | name |
internalid | netsuiteid |
phone | phone |
_billingaddress_addr1 | address |
_billingaddress_city | city |
_billingaddress_state | state |
_billingaddress_zip | zip |
Import NetSuite customers
Source record field (NetSuite) | Destination record field (HubSpot) |
NewHubSpotID | Celigo [AT]_Hubspot_id |
Comments
Please sign in to leave a comment.