Connect Salesforce to NetSuite
Keep the CRM and the ERP in step: push closed-won deals into NetSuite as sales orders, map customers and items cleanly, and send billing and fulfillment status back to Salesforce, with every sync recorded as an ordered run log you can replay.
Why teams connect Salesforce and NetSuite
Sales lives in Salesforce, finance lives in NetSuite, and the handoff between them is usually a spreadsheet, a nightly export, or a person rekeying orders. That gap is where revenue leaks and month-end slows down.
- Closed-won deals become NetSuite sales orders without manual re-entry, so fulfillment starts the same day
- Customers and items are matched, not duplicated, using external IDs on both sides
- Invoice, payment, and fulfillment status flows back to Salesforce, so reps stop asking finance for updates
- Every sync is an ordered event log, so a disputed order has a record of exactly what moved and when
Worked example
The order-to-cash flow most teams turn on first.
Closed-won Opportunity to NetSuite Sales Order, status back to Salesforce
Triggered when an Opportunity reaches Closed Won, with a human approval step for any order above a threshold.
- Trigger: Salesforce
New or updated recordonOpportunitywhereStageName = Closed Won. - Resolve customer: look up NetSuite
CustomerbyexternalId= SalesforceAccount.Id. If none, create it from Account fields. - Resolve items: for each
OpportunityLineItem, match NetSuiteItembyProduct2.ProductCode → itemId. - Approval: if
Amount > 50,000, pause for finance approval by email link. Otherwise continue. - Create order: NetSuite
Create recordonSalesOrder, mapping the fields in the table below. - Write back: Salesforce
Update recordon the Opportunity, settingNetSuite_SO_Number__candOrder_Status__c = Submitted. - Ongoing: a second flow listens for NetSuite
InvoiceandItemFulfillmentchanges and updatesOrder_Status__con the Opportunity.
Field mapping
The starting map for the Opportunity to Sales Order step. Adjust to your NetSuite form and Salesforce customizations.
| Salesforce | NetSuite | Notes |
|---|---|---|
Account.Id | Customer.externalId | Match key. Creates the customer if missing. |
Opportunity.Id | SalesOrder.externalId | Idempotency key, prevents duplicate orders on retry. |
Opportunity.CloseDate | SalesOrder.tranDate | Order date. |
Opportunity.CurrencyIsoCode | SalesOrder.currency | Fails the run if the currency is not set up in NetSuite. |
OpportunityLineItem.Quantity | SalesOrder.item.quantity | Line level. |
Product2.ProductCode | SalesOrder.item.item | Resolved to internal item ID before write. |
OpportunityLineItem.UnitPrice | SalesOrder.item.rate | Override, so NetSuite price rules do not restate the quoted price. |
Owner.Email | SalesOrder.salesRep | Resolved to a NetSuite employee record. |
What syncs, each direction
- Orders and customers. Closed-won opportunities become sales orders. New accounts become customers. Quote revisions update the open order. (Salesforce to NetSuite)
- Billing and fulfillment status. Invoice created, payment received, and items shipped events update order status and paid-through date on the Opportunity. (NetSuite to Salesforce)
- Financial account fields. Credit hold, payment terms, and account balance sync onto the Salesforce Account so reps see risk before they quote. (NetSuite to Salesforce)
- Product and price book. New items and price changes keep the Salesforce price book and NetSuite item list aligned. (Either direction)
Governance and audit
The same controls apply to this sync as to every other Neblex workload.
- Ordered run log. Every sync is an event log with step-level input and output. Replay a run without re-firing external calls.
- Approval steps. Pause any flow for a person: large orders, credit holds, or first orders for a new customer.
- Scoped access. The connection uses a service account with only the objects this sync needs, not broad admin access.
- Environments. Build and test against a Salesforce sandbox and a NetSuite sandbox account, then promote the same flow to production.
Frequently asked questions
Is the Salesforce to NetSuite sync prompt or batched?
Either. The order-to-cash flow runs on the schedule you set off a Salesforce change event. High-volume item or customer syncs can run on a schedule instead.
How are duplicate customers and orders prevented?
Both sides are matched on external IDs (Salesforce record IDs stored on the NetSuite records), and the order write is idempotent, so a retry updates the existing order rather than creating a second one.
What happens when a sync fails midway?
The run stops at the failed step with the error and the data in context. Fix the cause, for example an unmapped item, and replay from that step. Steps that already succeeded are not repeated.
Do we need NetSuite SuiteScript or a bundle?
No. The connector uses NetSuite's SOAP and REST web services. No code is deployed into your NetSuite account.
Can we customize the field mapping?
Yes. The template above is a starting point. Every field, including custom fields on both sides, is mappable in the flow editor.
Connectors on this page
Salesforce
CRM
- Operations
- 1,296
- Typed outputs
- 57.9%
- Change triggers
- 95 (poll)
- Authentication
- OAuth2
NetSuite
Applications
- Operations
- 271
- Typed outputs
- 0%
- Change triggers
- 1 (poll)
- Authentication
- ConnectionString
NetSuite does not publish typed output schemas yet, so the field mapping on this page is configured in the flow rather than pre-verified.
Bring one real integration
We will build it with you against your own systems, with the run log open.