Set it up
1
Generate the connection
In the CRM, go to Settings → Website Link → WooCommerce orders and choose Generate WooCommerce connection. You get two values: a delivery URL and a webhook secret.
2
Create the webhook in WordPress
Go to WooCommerce → Settings → Advanced → Webhooks and add a webhook.
3
Check delivery status
Back in the CRM, Delivery status lists recent webhook deliveries so you can confirm the connection works before relying on it.
How requests are authenticated
Two independent checks must both pass:
The signature is computed over the raw body bytes. If you proxy the webhook through your own middleware, forward the body unmodified — re-serializing the JSON changes the bytes and breaks the signature.
The WooCommerce ping
When you save a webhook, WooCommerce sends a ping with no signature to confirm the endpoint is reachable. That request is recognised and answered200 with { "success": true, "ping": true } without creating a lead. Any later unsigned request is rejected.
What arrives in the lead
The order is normalized before it’s stored. The lead carries:- Customer — name, phone, and email from the billing details
- Addresses — billing and shipping, formatted for reading
- Services — the order’s line items, with quantities and totals
- Vehicle and appointment details — read from order metadata where your store collects them, including a requested date and time
- Attribution —
utm_source,utm_medium,utm_campaignand similar values when your store passes them - A readable summary — the order assembled into a message your team can act on without opening WordPress
Re-delivering the same order updates the existing lead instead of creating a second one. That’s why adding an Order updated webhook is safe — status changes land on the same record.
Sensitive values are stripped before storage. Consumer keys and secrets, API keys, access tokens, authorization values, passwords, webhook secrets, and card numbers, CVV, or security codes never reach the lead record, even if your store puts them in order metadata.
Rotating and pausing
Rotate URL and secret issues a fresh pair. Deliveries fail until you paste both new values into WordPress — rotate when you’re able to update the store right away, not before a weekend. Pause stops new orders from arriving as leads while keeping the connection configured. Resume turns it back on. Pausing is the safe way to stop the flow temporarily; rotating is what you do if a credential leaked.Errors
Failures return{ "success": false, "error": "..." }, where error is a human-readable message.
A successful delivery returns
200 with { "success": true, "lead_id": ... }. The ping returns { "success": true, "ping": true }.
Related
Website lead capture
Contact forms and the direct lead endpoint.
Leads
Working the leads once they arrive.