CRM Updates (Post Call) Webhooks

Configure the Post call webhooks from Convin to your system.

CRM Updates (Post Call) Webhooks

The CRM Updates Webhook Integration allows you to automatically receive call level updates from Convin into your CRM or internal system. Whenever a call reaches a status you’ve selected, Convin will send an HTTP request to the webhook endpoint you configure, with the post call payload.

This helps you keep your CRM/internal systems updated in real time with call outcomes, recordings, meeting links, and any custom fields you originally passed through the Lead Ingestion API.


Configuring the Webhook in Convin

During the Create Campaign flow (for automated campaigns), you can configure how Convin sends call updates to your CRM.

1. Select Trigger Call Statuses

In the CRM Update Integration section:

  • Use the multi-select dropdown to choose one or more call statuses.

  • When a call transitions into any of the selected statuses, Convin will trigger a webhook.

Common statuses include: Processed, Failed, Not Answered, etc.

2. Select HTTP Method

You can choose the request type Convin uses to send data to your system:

POST / PUT / PATCH

Select the method your API endpoint expects.

3. Configure Webhook URL

Enter the endpoint URL where you want Convin to send the webhook.

Example:

https://yourdomain.com/crm/webhook/lead-update

Convin will send call-level updates to this URL whenever the selected, call status based trigger conditions occur.

4. Add Custom Headers

If your endpoint requires custom headers (e.g., API keys, tokens, tenant identifiers), you can add them here.

Examples:

  • Authorization: Bearer xxxxx
  • X-Client-ID: abc123

Convin will attach these headers to every webhook request.

5. Add Query Parameters

If your webhook endpoint requires static query parameters, you can define them here.

Example:

  • source=convin
  • workspace_id=xyz

Convin will automatically append them to the webhook URL when sending the request.

Webhook Payload Structure

Convin sends two types of payloads depending on the call status group:

1. Payload for Processed Calls

Processed Calls are calls that were answered by the end customer and then processed by Convin for call analysis. This payload includes additional fields like recording URL, meeting link, dispositions, and extracted entities. Sample Payload:

{
  "campaign.id": "f1a22dbd-7442-426c-b598-50a5223f8daf",
  "campaign.name": "test",
  "call.id": "3841871",
  "call.sid": "26defdeaa1d8457a6a7bb24d6e6919br",
  "call.status": "PROCESSED",
  "call.disconnected_by": "Customer",
  "call.retry_attempts": "0",
  "call.callback_for_id": null,
  "call.timestamps.attempted_at": "2025-11-27T07:22:41.437405+00:00",
  "call.timestamps.started_at": "2025-11-27T07:24:56.596200+00:00",
  "call.timestamps.ended_at": "2025-11-27T07:25:16.596200+00:00",
  "call.timestamps.scheduled_at": null,
  "call.timestamps.current": "2025-11-27T09:31:31.977098+00:00",
  "call.duration_seconds": "10",
  "call.recording_url": "https://voicebot-ap-south-1.s3.amazonaws.com/.../recording_3841871.wav?...",
  "customer.name": "",
  "customer.phone_number": "+919876543210",
  "customer.calling_number": "+919876543210",
  "agent.name": "Neha",
  "meeting.convin_meeting_id": "90",
  "meeting.url": "https://sample.convin.ai/call/ai_conversation/90/stats",
  "analysis.summary": null,
  "analysis.lead_interest": null,
  "analysis.lead_interest_reason": null,
  "analysis.dispositions.test.level_1": "Service",
  "analysis.dispositions.test.level_2": "Call Resolution",
  "analysis.dispositions.test.level_3": "Feedback Request",
  "analysis.entities.entityname1": "abc",
  "analysis.entities.entityname2": "abc",
  "passthrough_data.sample1": "1234",
  "passthrough_data.sample2": "abc",
  "passthrough_data.sample3": "abc"
}

2. Payload for All Statuses Except Processed

Sample Payload:

{
  "campaign.id": "f1a22dbd-7442-426c-b598-50a5223f8daf",
  "campaign.name": "test",
  "call.id": "3841871",
  "call.sid": "26defdeaa1d8457a6a7bb24d6e6919br",
  "call.status": "CONNECTED",
  "call.disconnected_by": null,
  "call.retry_attempts": "0",
  "call.callback_for_id": null,
  "call.timestamps.attempted_at": "2025-11-27T07:22:41.437405+00:00",
  "call.timestamps.started_at": "2025-11-27T07:24:56.596200+00:00",
  "call.timestamps.ended_at": "2025-11-27T07:24:56.596200+00:00",
  "call.timestamps.scheduled_at": null,
  "call.timestamps.current": "2025-11-27T07:24:56.688963+00:00",
  "call.duration_seconds": "10",
  "call.recording_url": null,
  "customer.name": "",
  "customer.phone_number": "+919876543210",
  "customer.calling_number": "+919876543210",
  "agent.name": "Neha",
  "meeting.convin_meeting_id": null,
  "meeting.url": null,
  "analysis.summary": null,
  "analysis.lead_interest": null,
  "analysis.lead_interest_reason": null,
  "analysis.dispositions": null,
  "analysis.entities": null,
  "passthrough_data.sample1": "1234",
  "passthrough_data.sample2": "abc",
  "passthrough_data.sample3": "abc"
}

Important Notes About Payloads

  • All values in the JSON payload are sent as strings, including numbers and timestamps.

  • Any custom fields you originally sent via the Lead Ingestion API will be included in the webhook under the prefix:
    passthrough_data.<your_field_name>

  • Disposition fields and entity fields vary depending on your workspace configuration.

  • The payload is always sent exactly as shown, with no transformations or formatting changes.

Payload Fields Definition

This document describes all fields included in the webhook payload sent by Convin after a call is Connected or Processed.
The payload helps you capture call outcomes, timestamps, customer details, agent details, analytics, and any custom fields (passthrough data) you originally sent through the Lead Ingestion API.

1. Campaign Fields

FieldDescription
campaign.idUnique identifier of the campaign on Convin where the call was executed.
campaign.nameName of the campaign configured in Convin.

2. Call Fields
FieldDescription
call.idUnique Convin call identifier.
call.sidTelephony provider’s session/call ID.
call.statusCurrent status of the call. Examples: CONNECTED, PROCESSED.
call.disconnected_byWho ended the call: Customer, Agent, System, or null (if not applicable).
call.retry_attemptsNumber of retry attempts made for the lead.
call.callback_for_idReference to another call ID if this call is a callback; else null.
call.duration_secondsTotal duration of the call in seconds.
call.recording_urlURL to access the call recording. Only available when the call is PROCESSED.

3. Call Timestamp Fields

These fields track the lifecycle of the call.

FieldDescription
call.timestamps.attempted_atTimestamp when the system attempted to place the call.
call.timestamps.started_atTimestamp when the call actually connected.
call.timestamps.ended_atTimestamp when the call ended.
call.timestamps.scheduled_atScheduled call time for calls configured for future delivery; may be null.
call.timestamps.currentTimestamp when the webhook event was generated.

4. Customer Fields
FieldDescription
customer.nameCustomer’s name (if provided during lead ingestion).
customer.phone_numberCustomer’s primary phone number used for the call.
customer.calling_numberNumber dialed by the agent—usually the same as phone_number unless overridden.

5. Agent Fields
FieldDescription
agent.nameName of the AI Agent or Human Agent assigned to the call.

6. Meeting Fields

(Only populated when meeting links or call analysis pages are generated.)

FieldDescription
meeting.convin_meeting_idConvin meeting identifier.
meeting.urlURL to view the call details & analytics on Convin.

7. Analysis Fields

These contain call-level insights generated by Convin’s Conversation Intelligence.

FieldDescription
analysis.summaryAI-generated summary of the conversation (if enabled).
analysis.lead_interestDetected lead interest level (e.g., Hot, Warm, Cold).
analysis.lead_interest_reasonReason for the interest classification.
analysis.dispositions.*Disposition tags configured in your Convin account. Multi-level dispositions are sent as hierarchical fields. Example:

analysis.dispositions.test.level_1: Service

analysis.dispositions.test.level_2: Call Resolution

analysis.dispositions.test.level_3: Feedback Request
analysis.entities.entitynameXExtracted entity values from the call (e.g., policy number, product name).

8. Passthrough Data
FieldDescription
passthrough_data.*These fields contain the exact key–value pairs that you sent to Convin in your Lead Ingestion API request. They are simply echoed back to you in the webhook response for end-to-end traceability.

Example:
If your Lead Ingestion API request included:

{ "lead_source": "Facebook Ads", "product_interest": "Home Loan" }

Then the webhook payload will include:

"passthrough_data.lead_source": "Facebook Ads", "passthrough_data.product_interest": "Home Loan"

This ensures you can easily reconcile webhook events with your original lead submission.

Summary

With the CRM Updates Webhook Integration, you can:

  • Automatically sync call events to your CRM or backend.
  • Receive detailed call metadata, recordings, outcomes, and analytics.
  • Get passthrough fields exactly as you sent them.
  • Control trigger conditions, HTTP method, headers, and query params.

For any help during setup or configuration, please reach out to your Convin Project Manager.

Was this article helpful?