ml-connector
DeltekWooCommerce

Deltek and WooCommerce integration

Deltek Vantagepoint runs project accounting and finance. WooCommerce runs the online store. Connecting the two turns paid store orders into accounting records without re-keying. Completed WooCommerce orders post into Deltek as AR invoices tied to the correct client firm and project, customers become Deltek client records, and store refunds show up as matching credit entries. ml-connector handles the different APIs on each side and moves the data on a schedule you control.

How Deltek works

Deltek Vantagepoint exposes firms, contacts, employees, projects, AR invoices, AP invoices, journal entries, cash receipts, and GL accounts through a REST JSON API on a tenant-specific URL such as company.deltekfirst.com. It authenticates with OAuth2 using the password grant, which must be explicitly enabled in newer versions, and every call carries a bearer token refreshed against the token endpoint. Vantagepoint offers workflow-driven outbound webhooks configured per record-save event, but they carry no HMAC signature, so finance records are read by polling. The older Costpoint product is SOAP and file based and is pull only.

How WooCommerce works

WooCommerce is an open-source plugin running on the merchant's own WordPress site, so there is no shared host and the store URL is supplied as a credential. Its REST API v3 at wp-json/wc/v3 exposes orders, refunds, customers, products, taxes, coupons, and read-only reports over JSON. Authentication uses a Consumer Key and Consumer Secret sent as HTTP Basic credentials over HTTPS. WooCommerce pushes outbound webhooks for order, customer, and product events, each signed with a base64 HMAC-SHA256 of the raw body in the X-WC-Webhook-Signature header, and it auto-disables a webhook after five consecutive failed deliveries.

What moves between them

The main flow runs from WooCommerce into Deltek. When an order reaches a paid or completed status, ml-connector reads the full order and posts it into Deltek as an AR invoice against the mapped project and client firm, carrying line items, taxes, and totals. The WooCommerce customer is created or matched as a Deltek client firm so the invoice has a valid owner. WooCommerce refunds flow the same direction and post as offsetting credit entries in Deltek. Product and price reference data is aligned so each invoice line points at an item Deltek recognizes, and the cadence is event-driven on order webhooks with a scheduled poll as a safety net.

How ml-connector handles it

ml-connector stores both credential sets encrypted. It presents the WooCommerce Consumer Key and Secret as HTTP Basic on every store call, and on the Deltek side it accepts the full tenant URL per customer, runs the OAuth2 password grant, and refreshes the bearer token when a call returns 401. WooCommerce order webhooks are verified by recomputing the base64 HMAC-SHA256 of the raw body and comparing it to the X-WC-Webhook-Signature header, rejecting any mismatch. Because Deltek has no signed webhook, changes there are read by polling on your schedule. Customers map to Deltek client firms and store products map to invoice line items before any posting, so every AR invoice references a firm and project that already exist. Deltek has no idempotency key, so ml-connector checks for an existing invoice by order number before creating one. It also watches for a WooCommerce webhook that has auto-disabled after five failures, and applies automatic retries, a full audit trail, and error replay on every record.

A real-world example

A regional design and engineering consultancy of about 80 people sells fixed-price report packages and template products through a WooCommerce storefront, while running Deltek Vantagepoint for project accounting and client billing. Before the integration, a bookkeeper exported store orders each week and hand-entered them as AR invoices in Deltek, matching each buyer to a client record and chasing refunds that never made it into the ledger. With Deltek and WooCommerce connected, each paid order posts itself as an AR invoice against the right project the moment it completes, new buyers become client firms automatically, and refunds post as credits. The weekly export is gone and store revenue reconciles against the project ledger on its own.

What you can do

  • Post completed WooCommerce orders into Deltek as AR invoices against the mapped project and client firm.
  • Create or match a Deltek client firm from each WooCommerce customer so invoices have a valid owner.
  • Reflect WooCommerce refunds as offsetting credit entries in Deltek.
  • Verify signed WooCommerce order webhooks and poll Deltek on a schedule you control.
  • Check for an existing invoice by order number before posting, with retries and a full audit trail on every record.

Questions

Which direction does data move between Deltek and WooCommerce?
The main flow is WooCommerce into Deltek. Paid orders post as AR invoices, customers become Deltek client firms, and refunds post as offsetting credits. Reference data such as products and projects is aligned so each invoice line lands on an item and firm Deltek recognizes.
How does the integration know when a new order is placed?
WooCommerce sends an outbound webhook on order events, signed with a base64 HMAC-SHA256 of the raw body in the X-WC-Webhook-Signature header. ml-connector recomputes that hash and rejects any mismatch before processing. A scheduled poll also runs as a safety net, since WooCommerce auto-disables a webhook after five consecutive failed deliveries.
How are duplicate invoices prevented when Deltek has no idempotency key?
Deltek Vantagepoint does not offer an idempotency header, so duplicate prevention is handled by the connector. Before posting an order, ml-connector queries Deltek for an existing AR invoice carrying that order number and only creates one if none is found. Combined with error replay, this keeps a retried delivery from producing a second invoice.

Related integrations

Connect Deltek and WooCommerce

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

Get started