QAD and WooCommerce integration
QAD runs manufacturing, inventory, and finance. WooCommerce runs the online store on the merchant's WordPress site. Connecting the two means web orders and refunds reach QAD without re-keying, and the WooCommerce catalog reflects the items and stock that QAD owns. WooCommerce has no ERP accounting of its own, so the integration maps its orders and products onto QAD's sales and item records and lets QAD remain the system of record for finance. ml-connector handles the different APIs on each side and moves data on the cadence you set.
What moves between them
The main flow runs from WooCommerce into QAD. New and updated orders, and any refunds, move from WooCommerce into QAD as sales records, with WooCommerce customers matched or created against QAD customers. Product and stock data flows the other direction, so the WooCommerce catalog reflects QAD item masters, prices, and on-hand quantity. WooCommerce reports and gateway settings are read-only references, and QAD stays the system of record for finance, so ml-connector does not push ledger entries back into the store.
How ml-connector handles it
ml-connector stores both credential sets encrypted. For WooCommerce it accepts the store URL, Consumer Key, and Consumer Secret and authenticates over HTTP Basic, falling back to query-string keys when a host strips the Authorization header. For QAD it accepts the full tenant URL per customer, since QAD publishes no shared base address, and refreshes the QAD bearer token when a call returns 401. WooCommerce order, refund, and product webhooks are verified by recomputing the base64 HMAC-SHA256 of the raw body against the webhook secret, so a bad signature is rejected. Because QAD cloud is pull-only, items and stock are polled on the schedule you set rather than pushed. WooCommerce SKUs map to QAD items and order lines map to QAD sales records, so each line references an item that already exists in QAD. WooCommerce has no idempotency key, so ml-connector checks order meta_data before creating a record to avoid duplicates, walks the X-WP-TotalPages link headers to read every page, and watches for webhooks that auto-disable after five failed deliveries. Every record carries a full audit trail and can be replayed if a downstream call fails.
A real-world example
A small consumer-goods manufacturer with roughly 70 staff runs QAD Adaptive ERP for production, inventory, and finance, and sells direct to shoppers through a WooCommerce store on its WordPress site. Before the integration, a coordinator copied each day's web orders into QAD by hand and emailed the warehouse about refunds, while the storefront often showed stock that QAD had already committed to wholesale orders. With QAD and WooCommerce connected, every order and refund flows into QAD as it happens and on-hand quantities from QAD keep the catalog accurate, so the website stops overselling and the manual order entry is gone.
What you can do
- Bring WooCommerce orders and refunds into QAD as sales records without manual re-keying.
- Match or create WooCommerce customers against QAD customer records.
- Push QAD item prices and on-hand stock to the WooCommerce catalog so the store stays accurate.
- Map WooCommerce SKUs to QAD items and verify HMAC-SHA256 signatures on every Woo webhook.
- Authenticate WooCommerce with store-URL API keys and QAD with its tenant-specific token, with retries and a full audit trail.
Questions
- Which direction does data move between QAD and WooCommerce?
- The main flow is WooCommerce into QAD. Orders, refunds, and customers move from WooCommerce into QAD as sales records, while product prices and stock flow from QAD out to the WooCommerce catalog. QAD stays the system of record for finance, so ml-connector does not write ledger entries back into the store.
- Does WooCommerce need OAuth and a tenant URL like QAD does?
- No. WooCommerce authenticates with a Consumer Key and Consumer Secret sent over HTTP Basic against the merchant's own store URL, not OAuth2 or a managed host. ml-connector accepts the store URL plus the key pair for WooCommerce and the separate tenant URL and bearer token for QAD, and stores both sets encrypted.
- How does the integration avoid duplicate orders and missed events?
- WooCommerce has no idempotency key, so ml-connector checks an order's meta_data for an existing reference before creating the matching QAD record. It reacts to signed WooCommerce order and refund webhooks for speed, and because those webhooks auto-disable after five failed deliveries it monitors webhook status and can fall back to paging the REST API so nothing is missed.
Related integrations
More QAD integrations
Other systems that connect to WooCommerce
Connect QAD and WooCommerce
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started