Webhooks
After every call, HubTalk AI sends an HTTP POST request to your configured webhook URL with a comprehensive JSON payload containing call metadata, transcripts, analytics, and custom variables.Configuration
Configure the webhook URL in the agent editor under Webhook in the right panel. The webhook fires once per call event (each call attempt).Payload Reference
Event Identification
Unique identifier for the call event (a specific dial attempt). A single call may have multiple attempts, each with its own
call_event_uuid.Call Information
Type of call.
outbound— Bot calls the customerinbound— Customer calls the bot
UUID of the parent call record. Groups all dial attempts for one customer within a campaign.
Customer phone number in international format (without
+).Final call status:
COMPLETED— Call finished successfullyFAILED— Call failedPENDING— Awaiting processingIN_PROGRESS— Currently active
Agent Information
Display name of the voice agent that handled the call.
Unique identifier of the agent.
UUID of the calling campaign (for outbound calls).
Attempt Details
Dial attempt number.
1 = first attempt, 2 = first retry, etc.Call event status:
PENDING— Awaiting processingANSWERED— Call was answeredNO_ANSWER— No answerBUSY— Line was busyFAILED— Error occurred
Timestamps & Duration
Call start time in ISO 8601 format (UTC). Example:
2026-02-02T10:20:24ZCall end time in ISO 8601 format (UTC). Example:
2026-02-02T10:22:05ZActual conversation duration in seconds.
Billable duration in seconds. May differ from
duration due to rounding or technical pause deductions. This is the value used for billing.Language & Voice
Language the bot started the conversation in. Example:
RU, KZ, ENLanguage the conversation ended in (may differ if the caller requested a switch).
TTS voice gender:
MALE or FEMALE.Results
Call result classification. Example:
CALL_ANSWERED_INFORMATION_TRANSFERREDCopy of the
result field.Audio Recording
S3 object key for the call recording (not a direct download URL). To get a download link, generate a presigned URL via S3 API. Example:
2026/02/02/10/0ca800d9-70ec-4e0c-a119-29d27185efce.mp3Transcript & Conversation
Full text transcript in
role: text format. Roles: assistant (bot), user (customer). Utterances separated by \n.Structured conversation split by role — separate arrays of bot and customer utterances:
Path to detailed LLM logs for this conversation. Used for debugging and analysis.
Answers & Analysis
Structured messages with metadata:
messages— Array of{role, content, timestamp}objectssummary— Statistics:total_messages,user_messages,assistant_messages
LLM-generated conversation summary in a few sentences.
Customer sentiment analysis:
positive, neutral, or negative.Analytics Data
Extended analytics including:
trace_id— Trace ID for debuggingagent_id,user_id,conversation_id— Identifiersreports.dynamic_reports— Array of custom report entries (sentiment, summary, and your custom post-call variables)
Extra Variables
Additional variables from the campaign CSV/Excel file used for personalization:
name— Variable namevalue— Value for this customercolumn_number— Column number in the source file
Legacy Fields
These fields are maintained for backward compatibility:| Field | Description |
|---|---|
answers | Old answer format (empty object). Use mapped_answers instead. |
last_answer | Last customer utterance. |
text_detail | Duplicate of full_transcript. |
answer | Duplicate of full_transcript. |
Full Payload Example
Complete webhook JSON payload
Complete webhook JSON payload