Sage X3 and HubSpot integration
Sage X3 runs manufacturing, distribution, and finance; HubSpot manages customer relationships and sales pipelines. Connecting the two keeps your customer master data, supplier records, and order data in agreement between ERP and CRM. New customers and suppliers added to Sage X3 sync to HubSpot as contacts and companies, and order histories in X3 populate HubSpot commerce objects so sales teams see the complete customer context. ml-connector bridges the different REST and GraphQL endpoints and handles the polling cadence Sage X3 requires.
What moves between them
The primary flow runs from Sage X3 into HubSpot. Customer records from Sage X3 sync to HubSpot contacts and companies, and supplier records also map to HubSpot companies. Product catalogs and sales invoices from X3 sync to HubSpot commerce objects and deals so sales and service teams see order history, pricing, and delivery status. Purchase orders remain in X3 since HubSpot is sales-facing, not procurement-facing. GL account mappings keep commerce invoices aligned with your financial structure.
How ml-connector handles it
ml-connector stores both Sage X3 credentials (either Basic Auth or OAuth2) and the HubSpot Private App token encrypted, handling the 5-minute X3 access token refresh cycle transparently. Since Sage X3 has no native webhooks, ml-connector polls the updatedDate field on customers, suppliers, and invoices on a schedule you set, typically daily or per business cycle. It batches customer and supplier syncs to stay within HubSpot's 100-record batch limit and maps X3 customer classifications to HubSpot company industry and segment fields. It tracks which X3 invoices have already synced so the same invoice does not duplicate in HubSpot, and it re-attempts failed syncs with exponential backoff before surfacing errors to your audit log. Every record carries a full audit trail including the source X3 ID, the sync timestamp, and any field transformations.
A real-world example
A mid-market distributor runs Sage X3 for procurement, inventory, and financial reporting, and uses HubSpot to manage customer relationships and track opportunities. Before the integration, the sales team manually entered new customer names and key contacts into HubSpot after Finance added them to Sage X3, and order history was looked up in separate systems, leading to data drift and duplicates. With Sage X3 and HubSpot connected, each new customer in X3 appears in HubSpot automatically as a company record with all contacts, and sales reps see the complete order history, payment status, and GL account coding for each customer without switching systems. The initial customer sync took 20 minutes; incremental syncs run nightly and catch new customers, address changes, and contact updates in under an hour.
What you can do
- Sync Sage X3 customers and suppliers to HubSpot contacts and companies, with automatic mapping of X3 customer classifications to HubSpot fields.
- Keep order and invoice records from Sage X3 visible in HubSpot deals and commerce objects so sales teams see full customer history.
- Handle the 5-minute Sage X3 access token refresh cycle and support both OAuth2 and HTTP Basic Auth for X3 endpoints.
- Poll Sage X3 on a schedule you control using updatedDate delta detection since X3 does not support webhooks.
- Manage HubSpot Private App token credentials encrypted and batch customer syncs to stay within HubSpot batch operation limits.
Questions
- Does this integration move data both directions or only one way?
- The primary flow is Sage X3 into HubSpot. Customers, suppliers, products, and invoices sync from X3 to HubSpot so your sales and service teams see up-to-date customer records and order history. Pricing, product details, and customer classifications can also sync back from HubSpot to X3 if your workflow requires it, but the core flow is one-way to keep HubSpot the system of record for customer engagement.
- Does this work with Sage X3 on-premise or only cloud SaaS?
- Both. ml-connector works with on-premise Sage X3 installations using HTTP Basic Auth against the customer-specific server URL, and with Sage X3 cloud SaaS deployments using OAuth2. You provide the server URL, port, and folder name, and ml-connector handles the authentication method appropriate to your deployment. Access tokens expire in 5 minutes, so ml-connector refreshes them automatically on each poll cycle.
- How does the integration handle the fact that Sage X3 has no webhooks?
- Since Sage X3 does not support outbound webhooks or native push notifications, ml-connector polls customers, suppliers, and invoices on a schedule you set, typically daily or after each business cycle. It detects changes by reading the updatedDate and modifiedDateTime fields on records, so only records that have actually changed are synced to HubSpot. This reduces load on both systems while keeping data current and accurate.
Related integrations
More Sage X3 integrations
Other systems that connect to HubSpot
Connect Sage X3 and HubSpot
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started