Search documentation...

ChangelogBook a demoSign up

NetSuite (SOAP)

Sync business-critical data from your data warehouse to Netsuite with Hightouch

Netsuite is a premium destination and is only available on Business tier plans.

Check out our playbook and blog post to learn how to automate usage-based billing to streamline your finance operations.

Supported syncing

TypeDescriptionSupported Sync ModesAPI Reference
EntitiesSync data from any source to entities in NetSuite, for example, Customers, Invoices, Sales Orders, and Journal EntriesUpsert, Update, InsertNetSuite schema browser

For more information about sync modes, refer to the sync modes docs.


The Hightouch NetSuite REST destination offers a few advantages over the SOAP destination:

  • The NetSuite REST API uses JSON for web service requests and responses, which is easier to read and debug in the live debugger compared to XML.
  • Hightouch prioritizes supporting the latest REST API features and versions.
  • The NetSuite REST destination supports the inline mapper to build objects and arrays

Unless you have a particular entity that's only supported by the SOAP API, we recommend using the REST NetSuite destination.

Setup in NetSuite

Before you can use Hightouch to sync data to NetSuite, you need to create and and configure a NetSuite integration. Then, to grant access to Hightouch to synchronize data between your source and NetSuite, you need to create a role, a user, and an authentication token for the integration.

Depending on your NetSuite account's setup, you may need an admin role to complete setup in NetSuite. Netsuite permission changes to a role or user don't occur immediately. These changes can take a few minutes or hours to go into effect.

Create an integration

  1. Go to Setup > Integration > Manage Integrations or use the global search to find and go to the Manage Integrations page.

Global search in NetSuite

This page shows a list of enabled integrations for your account.

Integrations page in NetSuite

  1. Click New to create a new integration with the following properties:
  • A Name that can easily be associated with Hightouch, for example, "Hightouch Integration"
  • Set State to Enabled
  • Check Token-Based Authentication
  • Uncheck TBA:Authorization flow
  • Uncheck Authorization Code Grant
  • Leave other authentication options unchanged.

Integration creation in NetSuite

  1. Scroll to the bottom of the page and click Save.
  2. Scroll to Client credentials and Copy and store the Consumer Key / Client ID and Consumer Secret / Client secret in a secure location. You'll need them to connect to Hightouch.

Integration credentials in NetSuite

Create a role

  1. Go to Setup > Users/Roles > Manage Roles and click New or use the global search to find and go to the New Role page.

Global search in NetSuite

  1. Create a role with the following properites:
  • A descriptive Name, for example, "Hightouch Role."
  • Check Do not restrict employee fields
  • For multi-subsidiary NetSuite users, check All under Accessible subsidiaries
  • Under Authentication, check Web Services only Role.

New role in NetSuite

  1. Add the following permissions under Permissions > Setup
    • Access Token Management: Full
    • Custom Body Fields: Full
    • Custom Column Fields: Full
    • Custom Entity Fields: Full
    • Custom Fields: Full
    • Custom Item Fields: Full
    • SOAP Web Services: Full
    • User Access Tokens: Full

Role permissions

  1. Under Permissions > Lists and Permissions > Transactions, provide Full permissions for the NetSuite entities you plan on syncing to. For example, if you want to update sales orders, you need to go to the Transactions tab and select Sales Order from the list. If you want to update accounts, you need to go to Lists and select Accounts from the list.

Role permissions

Create a user

Now you can create a new user that uses this role.

  1. Go to the Manage Users page. Create a new user or select the user you will be using Hightouch with.
  2. For new users: fill the Employee form with all required fields.
  3. On the Access tab, check Manually assign or change password and assign a secure password.
  4. Under Roles Assign the role, for example, "Hightouch Role," you previously created.
  5. Click Save.

New user

Create an access token

  1. Go to the Setup > Users/Roles > Access Tokens page, or use the global search to find it.
  2. Click New Access Token.

New access token

  1. Select the integration, user, and role you previously configured.

New access token

  1. When you click Save, NetSuite displays a Token ID and a Token Secret. Copy and store them in a secure location. You'll need them to connect to Hightouch.

New access token

Enable SOAP web services

Finally, go to Setup > Company > Enable Features > SuiteCloud > SuiteTalk (Web Services) and enable SOAP Web Services. Once you check this box, NetSuite prompts you to agree to terms of service.

On the same page, under Manage Authentication, enable Token Based Authentication. It should look similar to the screenshot below.

Enable SOAP Web services and Token-based authentication

Connect to NetSuite

You're now ready to create a NetSuite destination in Hightouch. Go to the Destinations overview page and click the Add destination button. Select NetSuite and click Continue.

You can then authenticate Hightouch to NetSuite by entering the following required fields into Hightouch:

  • Account ID: You can find this on your Company information page in NetSuite.
  • Consumer Key: From your new integration
  • Consumer Secret: From your new integration
  • Token Key: From your new access token
  • Token Secret: From your new access token

If your account is a Sandbox account, you need to include the suffix _SB<number> as part of the Account ID:

  • SB should be in uppercase.
  • The Sandbox suffix should be included with an underscore (_).

For example, if the Account ID in your sandbox is 1234567-sb1, then you need to set your Account ID as 1234567_SB1 in your sync configuration.

Sync configuration

Once you've set up your NetSuite destination and have a model to pull data from, you can set up your sync configuration to begin syncing data. Go to the Syncs overview page and click the Add sync button to begin. Then, select the relevant model and the NetSuite destination you want to sync to.

Syncing entities

The Hightouch NetSuite destination allows you to sync data to supported NetSuite entities, for example, customers, invoices, vendors, etc. Hightouch also supports syncing custom records types—all custom records are part of the CustomRecords namespace.

The specific entities you can sync to depend on your NetSuite implementation. You can view your available entities in the dropdown. Because of the large catalog size, it's best to search for the entities you're interested in.

Available entities in the Hightouch UI

If you like, you can choose to initialize the entity with a related record. For example, an invoice can be created from a sales order. If you enable this, you then need to select the base record.

Related records in the Hightouch UI

Record matching

To match source rows to entities in Netsuite, you need to select a source column and corresponding Netsuite field. Depending on the sync mode you select, you can match on the following Netsuite fields:

  • External ID
  • Internal ID

Update mode supports both, whereas Upsert mode only supports External ID.

Record matching in the Hightouch UI

Refer to the record matching docs for more information.

In Insert mode, NetSuite automatically generates an identifier for every new record synced, so there is no need to match an existing record.

Field mapping

You can sync columns from your model to NetSuite default and custom fields.

Mappings mirror the NetSuite SOAP schema. That means some of your model columns might need to be JSON objects.

NetSuite generally expects JSON objects when an entity references another entity. For example, in an invoice, the entity field can reference a customer, partner, vendor, employee, contact, etc. by their ID. If you select a numerical model column with external or internal IDs, Hightouch automatically converts this to the JSON object NetSuite expects.

Field mapping in Hightouch

For other JSON objects, such as nested objects or arrays, you need to ensure your model columns match NetSuite's schema expectations.

The NetSuite REST destination supports the inline mapper, which can help you build objects and arrays.

NetSuite arrays are often wrapped in a JSON object. For example, an invoice supports an item field that expects an array of items:

  "items": [
    { "item": { "id": "8" }, "line": 1, "amount": 1, "price": { "id": "-1" } }

To see the schema that NetSuite expects for different entities's fields, go to the SOAP browser.

Delete behavior

The delete behavior you select dictates what to do when a row no longer appears in your model's query results. You have the following options:

Do nothingKeep the record in NetSuite with all its synced fields
DeleteDelete the synced record from your NetSuite instance

Tips and troubleshooting

Common errors

To date, our customers haven't experienced any errors while using this destination. If you run into any issues, please don't hesitate to . We're here to help.

Live debugger

Hightouch provides complete visibility into the API calls made during each of your sync runs. We recommend reading our article on debugging tips and tricks to learn more.

Sync alerts

Hightouch can alert you of sync issues via Slack, PagerDuty, SMS, or email. For details, please visit our article on alerting.

Ready to get started?

Jump right in or a book a demo. Your first destination is always free.

Book a demoSign upBook a demo

Need help?

Our team is relentlessly focused on your success. Don't hesitate to reach out!

Feature requests?

We'd love to hear your suggestions for integrations and other features.

Last updated: Nov 2, 2023

On this page

Supported syncingREST vs SOAPSetup in NetSuiteCreate an integrationCreate a roleCreate a userCreate an access tokenEnable SOAP web servicesConnect to NetSuiteSync configurationSyncing entitiesTips and troubleshootingCommon errorsLive debuggerSync alerts

Was this page helpful?