Epicor Kinetic and Salesforce integration
Epicor Kinetic runs procurement, inventory, and financial records for manufacturing and distribution. Salesforce runs your sales pipeline and customer relationships. Connecting the two ensures that vendor records from Epicor are visible to your sales team in Salesforce, purchase orders and invoice data flows in near real-time, and sales teams can see the full supplier and order landscape without re-keying data. ml-connector handles the very different APIs on each side and moves the data on a schedule you control.
What moves between them
The main flow runs from Epicor Kinetic into Salesforce. Vendor records from Epicor are mapped to Salesforce Accounts, and contact records are mapped to Contacts. Purchase orders and AP invoices are read from Epicor on a schedule and reflected in Salesforce as Opportunities or Orders. Reference data such as part codes, GL accounts, and vendor terms are aligned on demand so that downstream records land on valid Salesforce dimensions. Data flows one direction only, since Salesforce is the CRM front-end and Epicor retains authority over procurement and financial records.
How ml-connector handles it
ml-connector stores the OAuth2 credentials for both Epicor Kinetic and Salesforce encrypted and handles the distinct refresh cycles independently. On the Epicor Kinetic side it accepts the full instance URL (including the Company segment) and maintains the OAuth2 bearer token by detecting 401 responses and re-authenticating when needed. On the Salesforce side it obtains a new OAuth2 client credentials token when the previous session expires. Because Epicor Kinetic has no webhooks and only supports polling, ml-connector polls the OData endpoints on a configurable schedule, using date filters on the UpdatedOn field to retrieve only records that have changed since the last sync, and tracks the polling watermark to avoid duplicate work. Salesforce Change Data Capture events can be consumed in real-time if enabled, or polling can be used instead. Vendor records are matched by their Epicor VendorID to an external ID field in Salesforce Accounts to prevent duplicates, and purchase orders and invoices are keyed by their Epicor document numbers. Each record carries a full audit trail showing when it was read, mapped, and written, and failed records can be replayed without re-polling the source.
A real-world example
A mid-sized manufacturing distributor runs Epicor Kinetic for procurement, inventory, and finance, and uses Salesforce to manage customer relationships and sales opportunities. Before the integration, the sales team had no visibility into the vendor and purchase order landscape, and the procurement team worked in isolation from customer context. Support teams could not quickly answer customer questions about their supplier relationships or historical orders. With Epicor Kinetic and Salesforce connected, vendor records appear as Accounts in Salesforce so the sales team can see and reference supplier relationships. Purchase order and invoice data flows from Epicor into Salesforce as Opportunities, giving the sales team context on customer sourcing patterns and payment timing. The support team can now view vendor and order history directly in Salesforce without logging into a separate system.
What you can do
- Sync vendor records from Epicor Kinetic to Salesforce Accounts with a unique external ID to prevent duplicates.
- Poll Epicor Kinetic on a configurable schedule using OData filters to retrieve only changed records since the last sync.
- Map Epicor Kinetic purchase orders and AP invoices into Salesforce Opportunities and Orders with full GL account and line item detail.
- Authenticate Epicor Kinetic with OAuth2 or Basic Auth, handle bearer token refresh cycles, and manage the Company segment requirement in Epicor URLs.
- Authenticate Salesforce with OAuth2 client credentials, detect session timeout, and obtain new tokens when the previous session expires.
Questions
- How does ml-connector handle Epicor Kinetic's Company segment and polling-only model?
- Epicor Kinetic requires the Company segment in every API URL path, and ml-connector accepts the full instance URL per customer to support both cloud and on-premises deployments. Since Epicor has no native webhooks, ml-connector polls the OData endpoints on a schedule tied to your procurement cycle, using date filters on the UpdatedOn field to retrieve only records changed since the last sync, and tracks a watermark to avoid duplicate work.
- What happens when Epicor Kinetic or Salesforce authentication tokens expire?
- Epicor Kinetic bearer tokens expire in roughly one hour, and ml-connector detects 401 responses and re-authenticates using OAuth2 or the Token Resource Service on-premises. Salesforce session tokens expire after a configurable timeout (default 2 hours) and do not refresh in the client credentials flow, so ml-connector obtains a new token from the oauth2/token endpoint when the previous session expires.
- Which direction does data move, and what records are synced?
- Data flows from Epicor Kinetic into Salesforce. Vendor records become Accounts, contacts become Contacts, and purchase orders and AP invoices become Opportunities or Orders. Salesforce is the CRM front-end and Epicor retains authority over procurement and financial data, so ml-connector does not write data back into Epicor.
Related integrations
More Epicor Kinetic integrations
Other systems that connect to Salesforce
Connect Epicor Kinetic and Salesforce
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started