CJM
Webhooks

Set up an outbound webhook

Send selected CJM events from one project to your own endpoint.

This Webhooks page is an outbound flow: CJM → your URL. Use it to notify an automation, data warehouse, or backend when selected project events happen.

It is different from Custom CRM inbound webhooks, which send data from your CRM to CJM, and from a lead form's inbound webhook.

An Administrator configures, changes, tests, or disables an outbound webhook. A Viewer can see its configuration.

Before you start

Prepare one public HTTPS endpoint that accepts JSON POST requests. It should respond quickly with a 2xx status after receiving a valid request. Keep a secret available to configure both CJM and your receiving endpoint; it must be at least eight characters long.

Each project has one outbound webhook URL. Select several triggers when they should reach the same endpoint; use your receiver to route them by the X-CJM-Trigger header or event.trigger in the body.

Configure the webhook

  1. Open Webhooks for the project.
  2. Enter the public Webhook URL.
  3. Keep Enabled on to deliver events, or turn it off to pause delivery without removing the setup.
  4. Enter Secret. It is required the first time you enable the webhook.
  5. Select at least one trigger.
  6. Select Create webhook or Update webhook.

After a secret exists, leave Secret empty to keep it. Enter a new value and save to rotate it. Update the receiver with the same value at the same time, otherwise it will reject future signatures.

For Meta Event Sent, select Settings beside the trigger to limit delivery to the Meta delivery modes you need.

Test the receiver

After saving, select Send test beside an enabled, already saved trigger. CJM queues a realistic test payload for that trigger.

The confirmation only means CJM queued the request; it does not prove the endpoint received or accepted it. Check the receiver's request log, validate the signature, and confirm the expected body there. A trigger must be saved and enabled before its test button is available.

Use system.test when you only need to validate connectivity. It does not represent real customer activity.

Delivery behaviour

CJM sends JSON with the headers and body described in Webhook triggers reference.

  • A 2xx response is successful.
  • A 4xx response is a final failure and is not retried.
  • Network errors, 429 responses, and 5xx responses can be attempted up to five times.
  • The request times out after 10 seconds.

The current dashboard does not expose a delivery-log screen. Diagnose delivery from the receiver's logs and make sure it returns a clear 2xx response after accepting the request.

Common problems

  • Send test is unavailable: save the webhook, keep it enabled, and enable that specific trigger.
  • The receiver rejects requests: compare the configured secret and validate the signature from the exact raw request body.
  • The same event arrives more than once: use X-CJM-Event-Id to make processing idempotent; retries can repeat a request after a temporary failure.
  • No events arrive: verify the endpoint is public, selected triggers match the event you expect, and no firewall blocks CJM.

On this page