NetSuite customer sync flow

Prev Next

Overview

Customer sync is a one-way process from ServiceTitan to NetSuite. In the initial SuiteApp release, only new customer creation is supported.

Note: Updates to existing customers do not sync.


Who uses this feature

  • Administrators, office employees, managers, accountants, and bookkeepers

  • Applies to all business types

  • Applies to all trades

Feature configuration

  • This feature is currently in Private Preview and available for specific accounts. It is subject to change.

Key behavior for customer sync

Customer syncing follows specific rules to ensure accurate data flow between ServiceTitan and NetSuite:

  • Customers are not automatically synced when created in ServiceTitan.

  • A customer is only synced when included on a transaction eligible for sync, such as a journal entry, invoice, or customer payment.

  • When a customer is synced, the SuiteApp creates a Customer Sync Record in NetSuite to:        

    • Track the relationship between the ServiceTitan and NetSuite customer

    • Facilitate status monitoring and error handling

    • Maintain linkage for ongoing transaction syncs

Customer name behaviour

  • When a Residential customer in ServiceTitan has only one name, for example Emily, the sync process will populate that name as the First Name in NetSuite and set the Last Name to NoLastName. This ensures the customer record meets NetSuite's required fields and prevents sync errors.

  • If the name contains a comma, the SuiteApp will sync the name as "Last, First." Left of the comma = lastName, right of the comma = firstName.

  • If there is no comma but there are spaces, split on the last space. Everything before space = firstName, everything after space = lastName.

  • If there are no spaces, the SuiteApp will treat the entire value as a first name (for example, only one name)

Legacy ID

The SuiteApp includes built-in logic to match ServiceTitan (ST) customers with existing NetSuite (NS) customers using the Legacy ID feature. This prevents duplicate records and ensures accurate linkage between systems. This logic is based on the Legacy ID field on the ServiceTitan customer record, which is intended to store the internal ID of the corresponding NetSuite customer.

These features are particularly valuable during initial setup or data migration, where customers may already exist in both systems and need to be aligned without duplication.

  • A field in ServiceTitan (typically a custom field) is configured to store the NetSuite internal ID

  • This field name is defined in the tenant configuration

  • Each tenant can configure its own Legacy ID field

Configuring the Legacy ID field

  1. Create or Identify the ServiceTitan Field: Select a field in ServiceTitan to store the NetSuite internal ID. This is typically a custom customer field. Ensure the field will contain the NetSuite customer internal ID values.

  2. Configure the Legacy ID field in the SuiteApp: From the tenant configuration screen, enter in the name of the field you have chosen to use for Legacy ID in ServiceTitan.        

    1. Enter the exact field name from ServiceTitan. The name must match what is sent in the payload.

    2. Incorrect mappings due to field name mismatch will result in Legacy ID failing to match customers.

  3. Populate the Field in ServiceTitan: For each customer that should link to an existing NetSuite customer, enter the NetSuite internal ID into the configured field.        

    1. The Internal ID of a NetSuite customer can be found in the URL for the customer record in NetSuite, or on the system notes for the customer record.

    2. Ensure values are accurate and correspond to valid NetSuite customer records.    

ServiceTitan tenant settings page with highlighted Legacy ID Field Name input area.

Legacy ID matching

When a transaction involving a customer is posted and in the process of syncing, the SuiteApp applies the following logic:

  1. If the Legacy ID matching finds both a Customer Sync Record and a matching NetSuite customer exist, the sync proceeds normally, and the transaction is posted to the existing NetSuite customer.

  2. If no Customer Sync Record exists but the Legacy ID field is populated on the ServiceTitan customer, the SuiteApp:        

    • Queries NetSuite to determine if a customer with that internal ID exists and whether that customer is assigned to the subsidiary associated with the transaction.

    • If the customer exists and is assigned to the correct subsidiary, a Customer Sync Record is created linking the ServiceTitan and NetSuite customers, and the transaction proceeds.

  3. If the Legacy ID field is blank, the SuiteApp will continue to create a customer in the standard workflow.

  4. If the Legacy ID field contains an invalid value (e.g., the ID does not match any NetSuite customer or contains characters/formatting that differs from a customer internal ID), the SuiteApp will fail the sync and present an error indicating the Legacy ID is invalid.

  5. If a Customer Sync Record exists but is not yet linked to a NetSuite customer, and the corresponding NetSuite customer record already exists, you can manually associate the Customer Sync Record by editing it and selecting the correct customer from the "NetSuite Record" field.

Customer merge behaviour

Customer merge behaviour differs depending on whether the merge is initiated in ServiceTitan or directly in NetSuite, and affects how customer records are synced between the two systems.

When initiated in ServiceTitan

When customers are merged in ServiceTitan, the update is reflected in NetSuite during the next integration run. The SuiteApp initiates a corresponding customer merge in NetSuite to match the ServiceTitan merge outcome. In NetSuite, both Customer Sync Records are updated to reference the surviving customer record, ensuring a single customer is used for reporting and future transactions. The non-surviving customer's name and address are retained as an address on the surviving customer record.

When initiated in NetSuite

When customers are merged directly in NetSuite, the merge does not sync back to ServiceTitan. As a result, the original customer records remain separate in ServiceTitan, while NetSuite maintains a single merged customer. Transactions from either ServiceTitan customer continue to sync to the surviving NetSuite customer.

Note: Merging customers in NetSuite without performing the corresponding merge in ServiceTitan can result in data inconsistencies. To avoid this, customer merges should always be performed in ServiceTitan first.

Want to learn more?