Sage 100 and Mailchimp integration
Sage 100 runs your on-premises accounting and order management. Mailchimp runs your email campaigns and audience. Connecting the two keeps your customer records in Mailchimp fresh from Sage 100, so every campaign reaches the current contact list without manual exports and re-uploads. New customers in Sage 100 appear in Mailchimp within minutes, customer contact updates sync automatically, and dormant or inactive accounts can be unsubscribed in batch.
What moves between them
Customer data flows from Sage 100 into Mailchimp. ml-connector polls Sage 100 every 15 minutes for AR customer and contact changes, reading the DateLastUpdated field to find records modified since the last sync. For each new or updated customer, ml-connector upserts a matching contact in the designated Mailchimp list, mapping Sage 100 customer name, address, phone, and email to Mailchimp contact fields. If a Mailchimp webhook signals an unsubscribe or permanent hard bounce, ml-connector can flag the customer record in Sage 100 or stop syncing that contact, depending on your configuration. E-commerce orders from Sage 100 sales transactions can also be posted to Mailchimp as e-commerce orders, tagged with Sage 100 order numbers and customer references.
How ml-connector handles it
ml-connector stores both credential sets encrypted: Sage 100 username and password (plus company code and SOAP or agent endpoint URL), and Mailchimp API key (from which the data center prefix is extracted automatically). On every poll cycle, ml-connector calls Sage 100's SOAP endpoint or local agent to fetch AR customers and contacts with DateLastUpdated greater than the last sync timestamp. If Sage 100 returns a COM locking conflict (typically due to concurrent user access), ml-connector backs off exponentially and retries. Each customer record is normalized: multi-segment GL account codes are parsed to extract dimension fields, contact email is validated, and phone is cleaned to a standard format. The customer is then upserted to the target Mailchimp list using email as the unique key, with Sage 100 customer number stored in a custom Mailchimp field for two-way lookup. Mailchimp webhooks for unsubscribe and hard bounce are registered if supported by your Mailchimp plan, and ml-connector can consume those webhooks to suppress future syncs for that contact. Every record carries an audit timestamp, sync status, and failure reason, so failed records can be replayed once the conflict is resolved.
A real-world example
A mid-sized goods distributor runs Sage 100 on-premises to manage AR, AP, and inventory across three warehouses. The marketing team sends monthly account reviews and new product notifications via Mailchimp campaigns. Before the integration, the marketing coordinator manually exported the current customer list from Sage 100 every month, cleaned duplicate emails in a spreadsheet, and re-uploaded the list to Mailchimp by hand. This process took 2-3 hours and often shipped stale data, so campaigns bounced or reached old contacts. After syncing Sage 100 and Mailchimp, every new customer added in Sage 100 appears in Mailchimp within 15 minutes, contact updates flow automatically, and inactive accounts are marked do-not-email by audit rules. The monthly campaign now always targets the current customer set with no manual work.
What you can do
- Poll Sage 100 for new and updated AR customers every 15 minutes and upsert them to Mailchimp lists with full contact details.
- Map Sage 100 customer names, addresses, phone numbers, and email addresses to Mailchimp contact fields, storing the Sage 100 customer number for two-way lookup.
- Extract the Mailchimp data center prefix from the API key automatically and route all Mailchimp calls to the correct regional endpoint.
- Handle Sage 100 COM record locking with exponential backoff retries, so concurrent user access does not break synchronization.
- Consume Mailchimp hard bounce and unsubscribe webhooks to suppress future sends and optionally flag customer records in Sage 100.
Questions
- Does ml-connector require Sage 100 to be on a public IP or cloud server?
- No. Sage 100 is on-premises only and cannot be accessed remotely without a local Windows agent. ml-connector works with both SOAP Web Services (if available at your IIS hostname) or a local agent that wraps the BOI COM layer. Your network must be configured to reach the agent or SOAP endpoint from ml-connector's deployment location, typically through a VPN or firewall rule.
- Which Sage 100 records sync to Mailchimp, and what about GL accounts and invoices?
- AR customers and contacts sync to Mailchimp list members and e-commerce customers. Mailchimp has no GL accounts, invoices, or vendor records - it is an audience management platform, not an ERP. If you need to sync AP vendors, invoices, or GL entries, those require a different connector paired with an accounting-specific system.
- How does ml-connector handle Sage 100's company code and multi-segment GL account structure?
- ml-connector accepts the 3-character company code per customer configuration and includes it in every Sage 100 API call. Multi-segment GL account codes (e.g. 4000-01-00) are parsed automatically using customer-supplied mapping rules, so the same integration logic works across different Sage 100 configurations. Customer contact email is used as the unique key in Mailchimp, while the Sage 100 customer number is stored in a custom field for reference and replay.
Related integrations
More Sage 100 integrations
Other systems that connect to Mailchimp
Connect Sage 100 and Mailchimp
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started