Integration

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 a run you can inspect step by step.
Two-way
Direction
Within minutes, or scheduled
Latency
Opportunity closed-won
Common trigger
Build the flow, then map fields
Setup

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 a run you can inspect, so a disputed order has a record of 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

Started when an Opportunity reaches Closed Won, with a human approval step for any order above a threshold.

  1. Trigger: Salesforce New or updated opportunity, polled on the schedule you set, with a Filter that continues only when StageName = Closed Won. For an immediate start, use a Live stream trigger on Change Data Capture instead.
  2. Resolve customer: NetSuite Upsert by external id on Customer, keyed on the Salesforce Account.Id, from the Account fields.
  3. Resolve items: read the OpportunityLineItem rows with a SOQL query, and match each NetSuite Item by Product2.ProductCode → itemId.
  4. Approval: if Amount > 50,000, a Wait for form step sends finance an approval task by email link. Otherwise continue.
  5. Write order: NetSuite Upsert by external id on SalesOrder, keyed on the Opportunity ID, mapping the fields in the table below.
  6. Write back: a Salesforce update on the Opportunity, setting NetSuite_SO_Number__c and Order_Status__c = Submitted.
  7. Ongoing: a second flow polls NetSuite invoices and item fulfillments with the Record Created or Changed trigger and updates Order_Status__c on the Opportunity.

Field mapping

The starting map for the Opportunity to Sales Order step. Adjust to your NetSuite form and Salesforce customizations.

SalesforceNetSuiteNotes
Account.IdCustomer.externalIdMatch key. Creates the customer if missing.
Opportunity.IdSalesOrder.externalIdIdempotency key. The upsert updates the same order on a retry.
Opportunity.CloseDateSalesOrder.tranDateOrder date.
Opportunity.CurrencyIsoCodeSalesOrder.currencyFails the run if the currency is not set up in NetSuite.
OpportunityLineItem.QuantitySalesOrder.item.quantityLine level.
Product2.ProductCodeSalesOrder.item.itemResolved to internal item ID before write.
OpportunityLineItem.UnitPriceSalesOrder.item.rateOverride, so NetSuite price rules do not restate the quoted price.
Owner.EmailSalesOrder.salesRepResolved 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. New invoices, payments, and shipments picked up by polling 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.

  • Run history. Every sync is a run with step-level status and errors. A failed run can be replayed from the step that failed; steps that already succeeded are not repeated.
  • Approval steps. Add a Wait for form step wherever a person should decide: 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 immediate or batched?

Either. The order-to-cash flow can start from a Salesforce Change Data Capture stream as each change arrives, or from the polled opportunity trigger every minute or more. High-volume item or customer syncs usually run on a schedule.

How are duplicate customers and orders prevented?

Both sides are matched on external IDs (Salesforce record IDs stored on the NetSuite records), and the writes use Upsert by external id, 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 REST web services and SuiteQL. No code is deployed into your NetSuite account.

Can we customize the field mapping?

Yes. The mapping above is a starting point. Every field, including custom fields on both sides, is mappable in the flow editor.

Connectors used

Salesforce

CRM & Sales

Operations
1,296
Operations with typed output
57.9%
Change triggers
31 (poll)
Signs in with
OAuth 2.0 sign-in
Connector reference

NetSuite

ERP & Enterprise Systems

Operations
271
Operations with typed output
0%
Change triggers
1 (poll)
Signs in with
Connection details
Connector reference

NetSuite does not describe its output fields in advance, so check the field mapping with Test this step when you build the flow.

See it on your data

Bring one real integration

We will build it with you against your own systems, with the run log open.