Skip to main content
If you sell detailing jobs through a WooCommerce store, you can have every order arrive in the CRM automatically. WooCommerce sends its order webhook to a delivery URL generated for your workspace, and the CRM turns each order into a lead.
A WooCommerce order becomes a Lead, not a CRM Order. It lands in the Leads tab for your team to qualify and convert. This is deliberate — a web checkout doesn’t carry the scheduling and assignment a CRM order needs.

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.
Use the WooCommerce webhook secret in the Secret field — not the Website Forms lead token. They are different credentials and the lead token will not authenticate a WooCommerce delivery.

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 answered 200 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
  • Attributionutm_source, utm_medium, utm_campaign and 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 }.

Website lead capture

Contact forms and the direct lead endpoint.

Leads

Working the leads once they arrive.