Sage X3 and FedEx integration
Sage X3 runs procurement and inventory for mid-market manufacturers and distributors. FedEx handles carrier logistics and shipment tracking. Connecting the two automates the flow of purchase orders and sales shipments from X3 into FedEx for label creation and tracking, then pulls tracking events back into X3 so procurement and shipping teams see the status of every shipment without manual re-entry. ml-connector bridges the different authentication models and polling cadences, handles FedEx rate limits, and maintains a full audit trail.
What moves between them
The main flow is from Sage X3 into FedEx. When a user creates a purchase order or sales shipment in X3, ml-connector polls X3 at a configurable interval, detects new or updated orders, and creates shipment records in FedEx, returning the label and tracking number to the X3 order. Tracking events flow back from FedEx into X3 either via FedEx webhooks (if the customer has the paid subscription) or by polling the Track API on a schedule. Shipment reference data such as addresses and freight class are read from X3 and do not flow back to FedEx.
How ml-connector handles it
ml-connector stores the Sage X3 connection URL, OAuth2 client ID and secret, and the FedEx API credentials encrypted in its secure vault. On the X3 side, it refreshes the OAuth2 token every 4 minutes (ahead of the 5-minute expiry) to avoid mid-request failures, and polls for shipments using updatedDate filters to detect new or changed records. FedEx credentials are also refreshed proactively, but ml-connector caches the token for 1-hour TTL to avoid hitting FedEx's 3-tokens-per-second auth rate limit. When FedEx returns a 429 (transaction rate limit), ml-connector backs off and retries with jitter. Every shipment created in FedEx is tagged with the X3 purchase order or sales order number in the freight description field for later lookup. Tracking events are polled in batches (up to 30 per request) and stored with their FedEx tracking number and X3 shipment reference so teams can trace packages without leaving X3. Webhook support is optional: if a customer enables FedEx's Advanced Integrated Visibility, ml-connector registers and validates the webhook signature, pushing events into X3 in real time instead of polling.
A real-world example
A mid-size manufacturer in the industrial equipment space distributes products across North America via FedEx. The supply chain team manages purchase orders and shipments in Sage X3 but had to log into FedEx separately to pull tracking numbers and create labels, then paste them back into X3 spreadsheets for operational visibility. With X3 and FedEx connected, every outbound shipment in X3 triggers an automatic FedEx label, and tracking events appear in X3 without manual intervention. The warehouse team can see delivery status in the same system they use for inventory and orders, and the finance team can match carrier charges to shipments using the X3 reference.
What you can do
- Detect new and updated purchase orders and sales shipments in Sage X3 and automatically create FedEx shipment labels.
- Retrieve FedEx tracking numbers and apply them to the corresponding X3 orders for end-to-end visibility.
- Poll FedEx Track API for delivery status updates or consume FedEx webhook events if Advanced Integrated Visibility is enabled.
- Manage FedEx token refresh independently from X3 to avoid rate-limit lockouts on the auth endpoint.
- Maintain a complete audit trail of every shipment created, label generated, and tracking event received.
Questions
- Which direction does data flow between Sage X3 and FedEx?
- The main flow is from X3 into FedEx. Purchase orders and shipments created or updated in X3 trigger FedEx label creation, and tracking numbers are returned to X3. Tracking events flow from FedEx back into X3 so teams see delivery status without leaving the ERP. Reference data such as shipper and recipient addresses are read from X3 and do not write back to FedEx.
- How does ml-connector handle Sage X3's short token expiry?
- X3 access tokens expire in 5 minutes, but ml-connector refreshes them every 4 minutes (ahead of the deadline) to avoid failures mid-request. FedEx tokens are also refreshed proactively, and ml-connector caches them for 1-hour TTL to avoid hitting FedEx's auth rate limits of 3 tokens per second.
- Does the integration support FedEx webhooks, or does it only poll?
- ml-connector supports both. If a customer has FedEx Advanced Integrated Visibility enabled and can register a webhook, ml-connector will validate the signature and consume tracking events in real time. Customers without the webhook subscription can use free polling via the FedEx Track API instead.
Related integrations
More Sage X3 integrations
Other systems that connect to FedEx
Connect Sage X3 and FedEx
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started