ml-connector
Sage 300WooCommerce

Sage 300 and WooCommerce integration

WooCommerce handles your online storefront and order capture. Sage 300 manages your back-office accounting, inventory, and order fulfillment. When a customer places an order on WooCommerce, you need that order to land in Sage 300 for picking, packing, invoicing, and revenue recognition without manual re-entry. ml-connector listens to WooCommerce order events and posts them into Sage 300's Order Entry system, keeping your inventory and customer master aligned across both platforms.

How Sage 300 works

Sage 300 is an on-premise ERP system that runs on Windows IIS with a SQL Server backend. It exposes Accounts Payable, Accounts Receivable, General Ledger, Purchase Orders, Order Entry, and Inventory Control through REST and OData endpoints at a customer-provided URL. Authentication uses HTTP Basic Auth with uppercase credentials sent with every request. The API supports OData filtering and pagination on list endpoints, and the Order Entry and Inventory modules can accept inbound transactions via POST. Sync is pull-based only; Sage 300 has no webhooks or change-data-capture, so updates are read by polling.

How WooCommerce works

WooCommerce is a self-hosted WordPress e-commerce plugin that each merchant deploys on their own domain. It exposes orders, customers, products, and payment information through REST APIs and a rich webhook system. Webhooks can push order.created, order.updated, customer.created, and product.created events to a registered endpoint in real time. Webhooks are disabled if 5 consecutive requests return non-2xx status, so reliability handling is required. Authentication uses API Key pairs (Consumer Key and Consumer Secret) sent with each REST call. WooCommerce has no native accounting, vendor management, or GL dimensions; it is a pure storefront and order collection tool.

What moves between them

Orders and customers flow from WooCommerce into Sage 300. When a customer places an order on WooCommerce, the order.created webhook notifies ml-connector of the sale. ml-connector enriches the order with customer profile data from WooCommerce, maps product SKUs to Sage 300 inventory items, looks up or creates the customer in Sage 300's AR system, and posts the order as an OEOrder transaction into Sage 300's Order Entry module. Customer profile updates from WooCommerce customer.updated events update the matching ARCustomer record in Sage 300. Inventory items are synced from Sage 300 into WooCommerce on a scheduled poll to keep product availability and pricing in sync.

How ml-connector handles it

ml-connector stores both credential sets encrypted: the Sage 300 Basic Auth pair (which must be uppercase) and the WooCommerce API Key pair. On the Sage 300 side, ml-connector accepts the full customer IIS URL and constructs OData calls to the OEOrders, ARCustomers, and ICItems endpoints. WooCommerce webhooks are registered at initialization and push order and customer events to ml-connector; failed webhooks are monitored and re-registered if they are disabled. The integration maps WooCommerce order lines to Sage 300 ICItems by product SKU, handles partial and refunded orders by posting adjustment batches to Sage 300, and retries failed Sage 300 posts with exponential backoff. Every order and customer sync is logged in the audit trail so a failed downstream call can be replayed.

A real-world example

A mid-market e-commerce business runs WooCommerce on a standalone domain for direct-to-consumer sales and Sage 300 on-premise for ERP. Before the integration, orders arrived in WooCommerce but had to be manually entered into Sage 300's Order Entry by the back-office team each morning, a process that took 1 to 2 hours and introduced errors when product names or customer addresses changed. The accounting team often found mismatches between WooCommerce revenue and the GL at month-end. With Sage 300 and WooCommerce connected, each order posts to Sage 300 automatically as it is placed, the AR customer record is created or updated in sync, and the inventory levels in Sage 300 drive the product availability shown on the website. The morning manual entry step is eliminated, and the GL is accurate from the moment the order is confirmed.

What you can do

  • Post completed WooCommerce orders into Sage 300's Order Entry with line items mapped to inventory stock keeping units.
  • Create or update customer records in Sage 300's AR system from WooCommerce customer profiles.
  • Map WooCommerce product SKUs to Sage 300 inventory items and sync prices and availability in both directions.
  • Handle WooCommerce webhook events with automatic recovery if webhooks are disabled due to failed responses.
  • Track every order and customer sync in the audit trail and replay failed posts when needed.

Questions

How does ml-connector handle the Sage 300 IIS Basic Auth requirement?
ml-connector stores the Sage 300 username and password encrypted in the cell, converts them to uppercase as required by the API specification, and sends them in the HTTP Authorization header with Base64 encoding on every request. The API user must be created in Sage 300's Administrative Services with Web API security group assigned; the built-in Admin user does not have API access.
How does the integration sync orders and what happens if a webhook delivery fails?
WooCommerce pushes order.created and order.updated events to ml-connector via webhooks in real time. If 5 consecutive webhook deliveries fail, WooCommerce disables the webhook automatically. ml-connector monitors webhook health and can re-register the webhook endpoint if it is disabled. Every order and customer record is logged in the audit trail so a failed Sage 300 post can be retried after the underlying issue is fixed.
Can the integration sync inventory and customer data in both directions?
Customers and orders flow from WooCommerce into Sage 300 via webhooks. Inventory items are synced from Sage 300 into WooCommerce on a scheduled poll so prices and availability on the website stay current with stock levels in the ERP. Sage 300 has no webhooks, so all Sage 300 reads are pull-based on a configurable cadence.

Related integrations

Connect Sage 300 and WooCommerce

Free to use. Add your credentials, ping your real systems, and see if we fit.

Get started