Sage 300 and Zendesk integration
Sage 300 manages your core business: customers, orders, inventory, and invoices. Zendesk manages support tickets and customer communication. Connecting them gives your support team order history and customer context without leaving Zendesk. New customers and recent orders from Sage 300 populate Zendesk organizations and ticket fields automatically. Support agents see the whole picture - what a customer ordered, when it shipped, and its value - so they can resolve issues faster and make better decisions about escalation or replacement.
What moves between them
The main flow is from Sage 300 into Zendesk. ml-connector polls Sage 300 on a schedule for new and modified customers (ARCustomers) and orders (OEOrders), then creates or updates matching Organizations in Zendesk and enriches ticket custom fields with order numbers, amounts, and dates. Organizations in Zendesk are created from ARCustomers, mapped by customer ID. Support tickets are enriched with order context from OEOrders so agents can see customer purchase history without leaving Zendesk. The sync runs on a configurable schedule and uses Sage 300 date filters to fetch only records created or updated since the last poll, avoiding large full-table scans.
How ml-connector handles it
ml-connector stores both credential sets encrypted. For Sage 300, it encodes the uppercase username and password in Base64 for each REST request in the HTTP Authorization header, accepting the customer's IIS domain URL without modification. On the Zendesk side, it stores the OAuth2 access token and presents it as a Bearer token on each request, monitoring for token expiry signals (though Zendesk tokens persist until revoked). ml-connector polls Sage 300 at a configurable cadence using OData filters with DocumentDate gt and last-sync timestamp to retrieve only new records. It maps ARCustomers to Zendesk Organizations by external ID, creates or updates them, then maps OEOrders to ticket custom fields, preserving order number, order date, order amount, and customer linkage. Because Sage 300 is pull-only, ml-connector does not wait for webhooks; it uses polling intervals tuned to your order and customer creation patterns. Zendesk webhook events are optional; if enabled, ml-connector can ingest ticket updates to trigger backflows to Sage 300 for support case logging. Every record carries a timestamp and deduplication key so replays do not create duplicates.
A real-world example
A mid-sized distributor uses Sage 300 for order management and customer records and Zendesk for customer support. Support agents fielding customer calls previously had to switch out of Zendesk to look up orders in Sage 300, or ask customers to provide order numbers verbally. Now, when a customer emails support, ml-connector has already synced their organization and recent orders into Zendesk, so agents see a 12-month order history, total purchase value, and last order date in the ticket context. When a customer calls about a backorder, the agent immediately spots the order in Zendesk, checks its status in the ERP without leaving the ticket, and offers a faster resolution or alternative. Support tickets also log back to Sage 300 as cases for follow-up, closing the loop between support and operations.
What you can do
- Sync Sage 300 customer records (ARCustomers) into Zendesk as organizations, mapped by customer ID and external reference.
- Enrich Zendesk support tickets with order context from Sage 300 (order number, date, total, customer), so agents see purchase history without switching systems.
- Poll Sage 300 on a schedule tuned to your order and customer creation patterns, using OData filters to fetch only new and modified records.
- Handle Sage 300 HTTP Basic Auth with uppercase credentials and Zendesk OAuth2 bearer tokens transparently, with credential rotation on token expiry.
- Track poll timestamps and deduplication keys to prevent duplicate organization and ticket enrichment on replayed syncs.
Questions
- Does ml-connector write data back to Sage 300 from Zendesk?
- The primary flow is Sage 300 to Zendesk. ml-connector reads customers and orders from Sage 300 and updates Zendesk organizations and tickets. Optionally, if you enable Zendesk webhooks, support ticket events can trigger case records in Sage 300, creating a two-way flow for issue tracking. Most configurations are read-only from Sage 300 into Zendesk.
- How does ml-connector handle Sage 300's uppercase Basic Auth requirement?
- ml-connector stores the username and password encrypted, converts them to uppercase before each request, and Base64-encodes them for the HTTP Authorization header. The customer supplies the uppercase credentials during setup, and ml-connector applies them to all Sage 300 API calls without modification.
- Why does ml-connector poll Sage 300 instead of using webhooks?
- Sage 300 has no webhooks or change-data-capture system. ml-connector polls at a configurable schedule, using OData date filters to fetch only records created or updated since the last sync. This approach is efficient, avoids large full-table scans, and aligns sync timing with your business processes like daily order batches.
Related integrations
More Sage 300 integrations
Other systems that connect to Zendesk
Connect Sage 300 and Zendesk
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started