Allow about five minutes. Keep LeadDecide Settings open in one tab and CTM in another. You will need CTM settings access and the complete inbound webhook URL LeadDecide showed when the connection was saved.

Before you begin

Treat the full webhook URL like a password. It contains the secret that routes activity to one LeadDecide workspace. Do not put the real URL in screenshots, analytics, chat, or support tickets, and do not use the example below as your callback URL.

Example format only: https://app.leaddecide.com/api/inbound/ctm?organization=your-workspace&webhook_key=YOUR_SECRET_KEY

1. Open the webhook builder in CTM

In CTM, go to Settings > Integrations > Webhooks. Select New Webhook to open a blank webhook configuration.

The CTM Webhooks screen with the New Webhook button visible
Open CTM Webhooks and choose New Webhook. Account and activity details are excluded from this example.

2. Name it and use the End trigger

On the General tab, use a recognizable name such as LeadDecide Inbound. Set Trigger to At the end of a call/form/chat, once all data has been captured [end]. Leave Disabled off so the webhook can run after it is saved.

One End webhook is enough for calls, forms, and chats. Do not also create start, ringing, answered, or delayed-end webhooks for the same activity unless you deliberately want repeated refreshes.

CTM finishes transcribing a call a few minutes after the End webhook fires, so the transcript is usually not in that first payload. LeadDecide asks CTM for the transcript again automatically once the call is a few minutes old (and whenever a reviewer presses Refresh AI), stores it on the lead, and re-runs the AI review with it. You do not need a separate transcription webhook.

If your CTM account also logs outbound calls and LeadDecide should receive only inbound calls, use a CTM Trigger with Direction set to inbound and Run Webhook, then select Through a trigger [route] here instead of End.

CTM General webhook settings with a LeadDecide name and the End trigger selected
Give the webhook a clear name, choose the End trigger, and keep the webhook enabled.

3. Configure the callback and JSON body

Open the Connection tab and paste the complete URL generated by LeadDecide into Callback URL. Preserve every character, including both query parameters. Set the request method to POST, choose Log Data as the request body type, and leave Integration Format set to None. CTM sends Log Data as JSON without a custom template.

Leave integration or custom formatting, Custom Headers, Authentication, and Filter blank unless your agency has a specific reason to use them. The callback URL already contains the LeadDecide credential, and CTM sends its native signature headers automatically.

CTM Connection settings showing a redacted LeadDecide callback URL and Log Data request body
Paste your own complete callback URL, then use POST and Log Data. Leave Integration Format at None; CTM sends the body as JSON. The credential is redacted here on purpose.

4. Save, then test once

Select Save Changes. Return to the Webhooks list and select Testonce for the new webhook. CTM's Test action sends the latest real call in the account, so that call may appear for the first time or refresh in LeadDecide. Do not keep selecting Test while you wait.

5. Verify CTM and LeadDecide

In CTM, open API Logs and inspect the test delivery. A response status of 200 or 201 confirms LeadDecide accepted it: 201 means the activity was created, while 200 usually means an existing activity was refreshed. Then open the LeadDecide inbox and confirm the latest real call appears in the intended workspace.

If the test fails, check the full callback URL first, followed by POST, Log Data, JSON, and the End trigger. A copied URL with a missing or outdated secret will not authenticate.

Optional: receive inbound text messages

CTM handles inbound text messages as a separate event. If you need them in LeadDecide, create a second webhook with the same callback and connection settings, but choose the inbound_text trigger. Keep the original End webhook for calls, forms, and chats. Do not add more call-phase webhooks, and do not use outbound_text for inbound lead capture.

Update CTM whenever the provider is reconnected

The webhook secret rotates whenever CTM is reconnected in LeadDecide, so the callback URL must be replaced in every related CTM webhook, including the optional inbound_text webhook. Save before testing again; the old URL is no longer the active credential.