ml-connector
Epicor KineticMailchimp

Epicor Kinetic and Mailchimp integration

Epicor Kinetic runs your business operations; Mailchimp runs your email campaigns. Connecting the two keeps your marketing audience in sync with your active customers. New customers created in Epicor flow automatically to your Mailchimp lists, and unsubscribes from Mailchimp campaigns are recorded back into Epicor. Your sales team and marketing team work from the same customer data without manual exports or re-keying.

How Epicor Kinetic works

Epicor Kinetic exposes customers, vendors, parts, purchase orders, and GL accounts through REST endpoints and OData v4 queries. Cloud instances run at https://<tenant>.epicorsaas.com/<instance>/api/v2/odata/<Company>/, while on-premises deployments use a local server URL. Authentication uses HTTP Basic Auth, OAuth2 client credentials (cloud), API Key headers, or Token Resource Service (on-prem). Epicor has no native webhooks, so connectors poll using OData filters on change-timestamp fields ($filter: UpdatedOn gt {timestamp}) with offset pagination ($top=100&$skip=0). Bearer tokens expire in roughly one hour and must be refreshed.

How Mailchimp works

Mailchimp provides email marketing and audience management through REST API v3.0, accessed at https://{dc}.api.mailchimp.com/3.0/ where {dc} is extracted from your API key. Contacts are organized in Lists (formerly Audiences) and synced as List Members. Mailchimp supports both HTTP Basic Auth with an API key and OAuth2 Authorization Code flow. Marketing API webhooks notify ml-connector of subscribe, unsubscribe, profile update, and campaign events, eliminating the need to poll. Mailchimp has no financial entities (GL accounts, invoices, purchase orders) and is read-write for contact attributes.

What moves between them

Customer records from Epicor Kinetic flow into Mailchimp lists. Each active Epicor customer becomes or updates a Mailchimp list member, with name, email, and custom fields (e.g., industry, sales region, account status) mapped from Epicor customer attributes. Unsubscribe and complaint events from Mailchimp campaign webhooks flow back to Epicor as a contact-status flag, so your sales team knows which customers have opted out of email. Syncs run on a schedule you control, typically daily or weekly depending on your customer acquisition rate.

How ml-connector handles it

ml-connector stores both credential sets encrypted. On the Epicor side, it accepts your cloud tenant URL or on-premises server hostname and uses either OAuth2 client credentials or an API Key with Basic Auth, refreshing Bearer tokens before they expire. It polls the Epicor Customers endpoint using an OData filter on the UpdatedOn timestamp to retrieve only records changed since the last sync, then applies offset pagination to handle large customer bases. On the Mailchimp side, ml-connector extracts the data center prefix from your API key, authenticates with HTTP Basic Auth or OAuth2, and creates or updates list members in a target audience. Mailchimp webhooks for unsubscribe and profile events are registered so ml-connector can immediately record opt-outs and profile changes back to Epicor without waiting for the next polling cycle. Customer names, email addresses, and any custom fields you configure in Mailchimp (e.g., customer status, company size) are kept in sync bidirectionally. If an Epicor API call returns a transient error, ml-connector backs off and retries; all records carry a full audit trail.

A real-world example

A mid-sized distributor runs Epicor Kinetic for order management and finance, and uses Mailchimp for monthly product newsletters and promotional campaigns to their customer base. Before the integration, the sales operations team exported active customers from Epicor weekly and manually uploaded the list to Mailchimp, a process prone to delays and duplicates. When unsubscribes occurred in Mailchimp campaigns, the team had no way to flag those customers in Epicor, so sales reps continued to pitch via email. With Epicor and Mailchimp connected, every new customer created in Epicor automatically appears in the target Mailchimp audience within the next sync cycle. Unsubscribe events trigger an immediate webhook that flags the customer in Epicor, so no future campaigns are sent to opted-out recipients.

What you can do

  • Sync active Epicor Kinetic customers to Mailchimp lists automatically on a schedule, with no manual export or re-upload.
  • Map Epicor customer fields (name, email, industry, region, account status) to Mailchimp list member attributes and custom fields.
  • Record Mailchimp unsubscribe and complaint events back to Epicor as contact status changes so sales teams know who opted out.
  • Authenticate Epicor with OAuth2 or API Key and handle token refresh, and Mailchimp with HTTP Basic Auth or OAuth2.
  • Validate data consistency with full audit trail and handle transient API errors with retries and exponential backoff.

Questions

Which direction does customer data flow between Epicor Kinetic and Mailchimp?
Customer records flow from Epicor into Mailchimp lists. Unsubscribe, complaint, and profile update events from Mailchimp campaigns flow back to Epicor as contact-status flags so your team knows who has opted out. Reference fields such as customer name, email, and custom attributes are synced in both directions so updates in either system propagate to the other.
How does ml-connector handle Epicor's lack of native webhooks and different auth models for cloud vs on-premises?
ml-connector polls Epicor on a schedule using OData filters (UpdatedOn gt {timestamp}) to retrieve only changed customer records since the last sync, avoiding a full re-sync every time. For authentication, it supports OAuth2 client credentials and API Keys on cloud instances, and Token Resource Service on on-premises deployments, refreshing Bearer tokens before they expire. Mailchimp webhooks eliminate the need to poll Mailchimp, so unsubscribes are recorded back to Epicor immediately.
What happens if an Epicor customer record has no email address, or if a Mailchimp contact email is invalid?
ml-connector skips Epicor records without a valid email address during the poll, since Mailchimp list members must have an email. If a Mailchimp contact email becomes invalid after sync, Mailchimp marks the list member as cleaned and sends a webhook event that ml-connector records back to Epicor as a contact status, preventing future sends to that address. Invalid email validation is deferred to Mailchimp's deliverability engine.

Related integrations

Connect Epicor Kinetic and Mailchimp

Free to use. Add your credentials, ping your real systems, and see if we fit.

Get started