Sage 100 and Shopify integration
Sage 100 runs your ERP and finance operations on-premises, while Shopify powers your e-commerce storefront in the cloud. Connecting them keeps your inventory and customer records aligned and automates the flow of orders from your store into your accounting system. New orders from Shopify land in Sage 100 as sales orders and inventory adjustments without manual re-entry, and product and customer changes flow back to your storefront so your catalog and customer profiles stay current.
What moves between them
The primary flow is from Shopify to Sage 100. Orders and fulfillments from Shopify webhooks are transformed into Sage 100 sales orders and inventory transactions, mapped to the matching customer and product identifiers. Customer records and product information also flow from Shopify into Sage 100 so the customer list and product master stay synchronized. Inventory levels are pushed from Shopify into Sage 100 at fulfillment time. Changes to product pricing and description in Sage 100 can optionally be published back to Shopify for catalog updates. The integration runs on a webhook cadence for order changes and a polling cadence (recommended every hour) for inventory rebalancing and customer synchronization.
How ml-connector handles it
ml-connector deploys an OAuth 2.0 receiver to capture Shopify webhooks and validate signatures against the X-Shopify-Webhook-Id header. On the Sage 100 side, it communicates with the local BOI agent deployed on the customer server, passing username and password per request and including the required company code. Orders from Shopify are transformed into Sage 100 sales order lines, with line quantities mapped to inventory, and customer IDs resolved or created in Sage 100 as needed. Because Sage 100 has no idempotency key mechanism, ml-connector checks for existing orders before inserting new ones to avoid duplicates, and tracks the Shopify order ID in a custom reference field for future updates. The local agent transport means network connectivity from the agent to ml-connector must be configured in the customer environment, typically with firewall rules allowing outbound HTTPS from the Sage 100 server. Fulfillments from Shopify are matched to sales orders in Sage 100 by the original order ID and posted as inventory shipments. Rate limits from Shopify are handled with exponential backoff, and the full audit trail allows order records to be replayed if a downstream shipment or customer sync fails.
A real-world example
A mid-market retailer runs Sage 100 for finance, AP, and inventory management across three warehouses, and Shopify for their multi-channel e-commerce storefront. Before the integration, the sales team exported orders from Shopify daily and manually entered them into Sage 100, a process that often introduced data entry errors and delayed fulfillment operations by one business day. With Sage 100 and Shopify connected, orders flow into Sage 100 automatically within seconds of checkout, inventory is deducted in real-time across warehouses, and customer information is kept current without duplicate entry. The finance team no longer spends time matching sales records, and the fulfillment team can pick and pack orders immediately from current inventory without waiting for manual data entry.
What you can do
- Capture orders from Shopify webhooks and post them into Sage 100 as sales orders mapped to the correct customer and products.
- Keep inventory levels synchronized between Shopify and Sage 100 across all warehouses and locations.
- Sync customer records and product information in both directions so your catalog and customer profiles stay current.
- Validate Shopify webhook signatures and handle the local Sage 100 BOI agent authentication and company code routing.
- Track order lineage with the Shopify order ID to prevent duplicates and enable order replay if downstream operations fail.
Questions
- How does ml-connector handle the Sage 100 local agent requirement?
- ml-connector must be deployed where it can reach the customer's local BOI agent over the network, typically via HTTPS outbound from the Sage 100 server. The agent receives Sage 100 username and password per request and includes the company code automatically. The customer's network team must configure firewall rules to allow the agent to reach ml-connector's webhook URL for order notifications.
- What happens if an order is sent to Sage 100 twice?
- Because Sage 100 has no idempotency key mechanism, ml-connector checks for the existence of an order by the Shopify order ID before creating a new sales order. If the order already exists, ml-connector updates the existing record instead of creating a duplicate, and the update is recorded in the audit trail for verification.
- Can inventory changes in Sage 100 be sent back to Shopify?
- Yes, via polling the Sage 100 inventory master on a schedule (recommended hourly) and comparing inventory levels to what Shopify last saw. When inventory quantities change in Sage 100 due to purchases, receipts, or adjustments, ml-connector can push those updates back to Shopify inventory levels so your storefront reflects accurate stock status.
Related integrations
More Sage 100 integrations
Other systems that connect to Shopify
Connect Sage 100 and Shopify
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started