NetSuite Inventory & Financial Sync to Salesforce (Make.com)

Keep Sales teams informed with real-time ERP data using Make.com's advanced mapping and error handling.

Tools: NetSuiteSalesforce

Platform: Make.com

Short Answer

A fully automated sync where Salesforce Accounts and Products are updated based on NetSuite triggers. Sales reps gain a 360-degree view of inventory and invoice aging directly within the CRM, powered by Make.com’s robust integration engine.

The Problem

Sales teams often lack visibility into actual stock levels and customer payment statuses, leading to 'out-of-stock' sales and pitching to accounts with credit holds. Manually reconciling NetSuite financial data into Salesforce is prone to error and creates data silos between finance and sales.

The Outcome

A fully automated sync where Salesforce Accounts and Products are updated based on NetSuite triggers. Sales reps gain a 360-degree view of inventory and invoice aging directly within the CRM, powered by Make.com’s robust integration engine.

Step-by-Step Guide

1. **Establish NetSuite Connection**: In Make.com, add the NetSuite module. Use 'Token-Based Authentication' (TBA). You will need your Account ID, Consumer Key, Consumer Secret, Token ID, and Token Secret from NetSuite (Setup > Integration). 2. **Configure NetSuite Trigger**: Select the 'Watch Records' module. Choose 'Saved Search' as the source. This is more efficient than polling the entire database. Set the interval (e.g., every 15 minutes). 3. **Sanitize Data**: Add a 'Set Multiple Variables' module to clean NetSuite's complex key-value pairs. Use the `trim()` and `ifempty()` functions to handle null values from the ERP. 4. **Branching Logic**: Insert a 'Router'. - **Path A (Inventory)**: Set a filter where `Record Type` equals `Inventory Item`. - **Path B (Financials)**: Set a filter where `Record Type` equals `Customer` or `Invoice`. 5. **Salesforce Connection**: Search for the Salesforce module and connect via OAuth 2.0. Ensure the Make.com Connected App in Salesforce has 'API' and 'Refresh Token' scopes enabled. 6. **Lookup Record (Prevent Duplicates)**: Use the 'Search Records' module in Salesforce. Search for the Account or Product using the `NetSuite_Internal_ID__c` custom field to prevent creating duplicates. 7. **Map Inventory Data**: In the 'Update a Record' Salesforce module, map the NetSuite `quantityavailable` to the Salesforce `Quantity_on_Hand__c` field. 8. **Map Financial Data**: Map NetSuite `balance` to Salesforce `Total_Outstanding_Balance__c` and `overduebalance` to a custom alert field. 9. **Implement Error Handling**: Right-click the Salesforce modules and select 'Add error handler'. Use the 'Break' directive to automatically retry on 500-level errors or a 'Commit' directive to ignore minor validation errors. 10. **Enable Scenario**: Save the scenario and toggle the scheduling to 'On'.

Data Mapping

| NetSuite Field | Salesforce Field | Transformation / Logic | | :--- | :--- | :--- | | Internal ID | NetSuite_ID__c (External ID) | `Raw Value` (Required for Upsert) | | Quantity Available | Quantity_on_Hand__c | `parseNumber(quantityavailable)` | | Total Amount (Invoice) | Amount | `Total * 1.0` (Ensure Float) | | Days Overdue | Credit_Status_Alert__c | `if(overdue > 0; "🔴 Credit Hold"; "🟢 Clear")` | | Base Price | Unit Price | `map(pricing; "baseprice")` |

Gotchas & Failure Modes

* **Sub-list Handling**: NetSuite returns items in sub-lists (arrays). You must use a Make.com **Iterator** if you are processing multiple Line Items from a single Sales Order. * **API Limits**: Salesforce and NetSuite both have strict concurrency limits. Set the 'Max number of cycles' in Make.com scenario settings to a lower value if you encounter 'Concurrent Request Limit Exceeded' errors. * **Field Permissions**: Ensure the Salesforce Integration User has 'Edit' permissions on custom fields like `NetSuite_ID__c`; otherwise, Make.com will return a 400 error despite a valid connection. * **TBA Lifetime**: NetSuite Tokens can be revoked or expire. If the scenario suddenly fails with a 401 error, refresh the Connection tokens in the Make.com 'Connections' tab.

Verification Checklist

- [ ] **Run Once Test**: Use the 'Run Once' button and manually input a NetSuite Internal ID to see the data flow. - [ ] **Check Execution History**: Verify that the 'Input' bundle from NetSuite matches the 'Output' bundle sent to Salesforce. - [ ] **Verify Mapping**: Ensure currency values aren't being truncated (check Decimal places). - [ ] **Validate Duplicates**: Search Salesforce for the test record to ensure only one instance exists. - [ ] **Trigger Error Handler**: Temporarily change a Salesforce field to 'Read Only' to ensure the Make.com error handler catches the failure and notifies you.

Ready to Automate?

Build this automation with Make.com in minutes.