Oracle NetSuite and Salesforce integration
Oracle NetSuite runs your financials, orders, and vendor relationships. Salesforce runs your sales pipeline and customer interactions. Connecting the two keeps customer and vendor master data aligned across both systems so your sales team is not working from stale or duplicate records. New customers added to NetSuite appear in Salesforce within minutes. Vendor information syncs both directions, and every record carries a full audit trail.
What moves between them
The main flow is from Oracle NetSuite into Salesforce. Customer records from NetSuite (company name, billing address, payment terms, shipping information) sync into Salesforce Accounts, while NetSuite contact records map to Salesforce Contacts linked to their parent Accounts. Vendor records can also sync bidirectionally if your Salesforce org uses a custom vendor object. Every record is keyed by its NetSuite ID so renames and moves do not create duplicates. The sync runs on a schedule (typically daily or hourly depending on change volume) and can also ingest NetSuite webhook events if they are enabled in your instance.
How ml-connector handles it
ml-connector stores both credential sets encrypted and handles the different token lifecycles: NetSuite OAuth tokens (60 minutes, no refresh) are obtained fresh before each call, while Salesforce tokens (2 hours default) are cached and refreshed on 401 response. On the NetSuite side, ml-connector accepts the account-specific base URL and uses SuiteQL to bulk-read customers and vendors, also listening for Event Subscription webhooks if your NetSuite instance publishes them. On the Salesforce side, ml-connector posts Account and Contact records via the REST API, handling rate limits (429) with exponential backoff. Customer and vendor records are deduplicated by NetSuite ID stored in a hidden Salesforce field, so an update in NetSuite (address change, phone number) touches the existing Salesforce Account rather than creating a duplicate. Every sync action is logged with the NetSuite source record ID, Salesforce destination record ID, and any transformation applied, so a failed Salesforce write can be audited and replayed.
A real-world example
A mid-sized B2B services company runs Oracle NetSuite for accounting and order management, and Salesforce for their sales team and customer service desk. Before the integration, the sales team maintained a hand-curated spreadsheet of customers synced from NetSuite monthly, and customer service reps had to search NetSuite directly to look up payment terms or recent invoices. After a customer address change in NetSuite, the sales team discovered it weeks later, leading to failed deliveries. With NetSuite and Salesforce connected, Accounts and Contacts in Salesforce update in minutes when NetSuite customer records change, the sales team sees accurate company details and payment terms in Salesforce, and customer service reps no longer need to leave Salesforce to find a customer's history.
What you can do
- Sync NetSuite customer and vendor master data (name, address, contact person, payment terms) into Salesforce Accounts and Contacts.
- Keep Salesforce Accounts current as NetSuite customer records are edited or new customers are created.
- Map NetSuite contact records to Salesforce Contacts linked to their parent Accounts, maintaining the organizational structure.
- Deduplicate by NetSuite ID so customer name changes or address updates land on existing Salesforce records without creating duplicates.
- Handle NetSuite OAuth token refresh (60-minute expiry) and Salesforce session tokens (2-hour default) automatically, with retries on rate limits.
Questions
- Which direction does data move between Oracle NetSuite and Salesforce?
- The primary flow is from NetSuite into Salesforce. Customers, vendors, and contacts created or updated in NetSuite sync into Salesforce Accounts and Contacts. Vendor records can also sync bidirectionally if your Salesforce org has a custom vendor object configured. Salesforce serves as the read-only view of NetSuite master data in your sales and customer service processes.
- How are NetSuite customers matched to Salesforce Accounts to avoid duplicates?
- ml-connector stores the NetSuite ID on every Salesforce Account record (in a hidden field) and uses that as the primary key. When a customer record in NetSuite is updated, ml-connector looks up the matching Salesforce Account by NetSuite ID and updates it in place rather than creating a new Account. This prevents duplicates even if the customer name changes.
- How does ml-connector handle the different token lifespans between NetSuite and Salesforce?
- NetSuite OAuth tokens expire after 60 minutes with no refresh token available, so ml-connector obtains a fresh token before each request. Salesforce tokens expire after a configurable session timeout (default 2 hours) and can be refreshed on a 401 response. ml-connector manages both lifecycles transparently, caching Salesforce tokens and obtaining NetSuite tokens on demand, so the sync pipeline never blocks on credential expiry.
Related integrations
More Oracle NetSuite integrations
Other systems that connect to Salesforce
Connect Oracle NetSuite and Salesforce
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started