entity.action naming convention. Allo delivers events at least once — your endpoint may receive the same event more than once. Use the webhook-id header to deduplicate. See Best practices for details.
Event summary
| Event | Description |
|---|---|
call.received | Inbound call starts ringing |
call.triggered | Outbound call initiated |
call.completed | Call finished with full data |
tag.added | Tag added to a call |
tag.removed | Tag removed from a call |
sms.received | Inbound SMS received |
sms.sent | Outbound SMS sent |
contact.created | Contact created |
contact.updated | Contact updated |
call.received
Fired when an inbound call starts ringing, before the call is answered. When a matching contact is found, the event includesperson, company, and deals objects with contact context.
| Field | Type | Description |
|---|---|---|
from_number | string | Caller’s phone number |
to_number | string | Your Allo phone number |
started_at | string | ISO 8601 timestamp when the call started ringing |
user_email | string | Email of the Allo user assigned to the number |
person | object or null | Matching contact person. Absent if no contact matches the caller’s number. |
company | object or null | Company linked to the contact. null if none. |
deals | array or null | Deals linked to the contact. null if none. |
Person object
| Field | Type | Description |
|---|---|---|
id | string | Unique contact identifier |
name | string or null | First name |
last_name | string or null | Last name |
email | string or null | Primary email address |
emails | array of strings | All email addresses |
numbers | array of strings | All phone numbers |
job_title | string or null | Job title |
<property> | any | Each contact property you have defined appears as a top-level key (e.g. linkedin_url, lead_source). Only non-null values are included. |
Company object
| Field | Type | Description |
|---|---|---|
id | string | Unique company identifier |
name | string or null | Company name |
Deal object
| Field | Type | Description |
|---|---|---|
id | string | Unique deal identifier |
name | string or null | Deal name |
status | string or null | Deal stage or status |
value | number or null | Deal monetary value |
currency | string or null | Currency code (e.g. EUR, USD) |
close_date | string or null | Expected close date (ISO 8601) |
call.triggered
Fired when an outbound call is initiated. When a matching contact is found, the event includesperson, company, and deals objects with contact context.
| Field | Type | Description |
|---|---|---|
from_number | string | Your Allo phone number |
to_number | string | Recipient’s phone number |
started_at | string | ISO 8601 timestamp when the call was initiated |
user_email | string | Email of the Allo user who placed the call |
person | object or null | Matching contact person. Absent if no contact matches the recipient’s number. |
company | object or null | Company linked to the contact. null if none. |
deals | array or null | Deals linked to the contact. null if none. |
person, company, and deals objects use the same schema as call.received.
call.completed
Fired after a call ends. Includes the full call data: recording, transcript, summary, tags, and transfer details. This event is typically sent about 30 seconds after the call hangs up.Fields
| Field | Type | Description |
|---|---|---|
id | string | Unique call identifier |
start_date | string | ISO 8601 timestamp when the call started |
recording_url | string or null | URL to the call recording (MP3). Null if recording is disabled. |
from_number | string | Caller’s phone number |
from_name | string | Caller’s name (from contacts) or your business name |
to | string | Recipient’s phone number |
to_name | string | Recipient’s name (from contacts) or your business name |
length_in_minutes | number | Call duration in minutes (decimal) |
length | string | Human-readable duration (e.g., "5m 30s") |
tag | string or null | Primary tag assigned to the call |
tags | array of strings | All tags assigned to the call |
summary | string | AI-generated call summary |
transcriptions | array | Call transcript entries (see below) |
concatenated_transcript | string | Full transcript as a single string |
data_collected | object | Custom data collected during the call (e.g., from IVR) |
type | string | INBOUND or OUTBOUND |
result | string | Call outcome (see values below) |
integration_id | string or null | External CRM integration ID for the contact |
transfer_from | object | Transfer origin details (see below) |
transfer_to | object | Transfer destination details (see below) |
user_email | string | Email of the Allo user who handled the call |
original_to_number | string or null | Original dialed number (if the call was routed) |
original_to_name | string or null | Original recipient name |
transfer_original_call_id | string or null | Call ID of the original call if this was a transfer |
ivr_result | array | IVR menu selections made during the call (see below) |
Call result values
| Value | Description |
|---|---|
ANSWERED | Call was answered |
VOICEMAIL | Caller left a voicemail |
TRANSFERRED_AI | Call was handled by the AI agent |
TRANSFERRED_EXTERNAL | Call was transferred to an external number |
BLOCKED | Call was blocked |
FAILED | Call failed to connect |
Transcription entry
| Field | Type | Description |
|---|---|---|
source | string | USER (your side) or EXTERNAL (caller/recipient) |
time | string | ISO 8601 timestamp of the transcription segment |
text | string | Transcribed text |
Transfer object
| Field | Type | Description |
|---|---|---|
number | string or null | Phone number involved in the transfer |
user_email | string or null | Email of the Allo user |
user_name | string or null | Name of the Allo user |
IVR result entry
| Field | Type | Description |
|---|---|---|
dtmf_key | string or null | DTMF digit pressed by the caller |
text_key | string or null | Menu label selected |
tag.added
Fired when a tag is added to a call.| Field | Type | Description |
|---|---|---|
call_id | string | ID of the call the tag was added to |
tag_key | string | Tag identifier |
tag_name | string | Human-readable tag name |
user_email | string or null | Email of the user who added the tag |
tag.removed
Fired when a tag is removed from a call.| Field | Type | Description |
|---|---|---|
call_id | string | ID of the call the tag was removed from |
tag_key | string | Tag identifier |
tag_name | string | Human-readable tag name |
user_email | string or null | Email of the user who removed the tag |
sms.received
Fired when an inbound SMS is received.| Field | Type | Description |
|---|---|---|
id | string | Unique message identifier |
direction | string | INBOUND |
type | string | SMS or MMS |
content | string | Message text |
sent_at | string | ISO 8601 timestamp |
from_number | string | Sender’s phone number |
to_number | string | Your Allo phone number |
from_name | string | Sender’s name (from contacts) |
to_name | string | Your business name |
user_email | string | Email of the Allo user assigned to the number |
sms.sent
Fired when an outbound SMS is sent.| Field | Type | Description |
|---|---|---|
id | string | Unique message identifier |
direction | string | OUTBOUND |
type | string | SMS or MMS |
content | string | Message text |
sent_at | string | ISO 8601 timestamp |
from_number | string | Your Allo phone number |
to_number | string | Recipient’s phone number |
from_name | string | Your business name |
to_name | string | Recipient’s name (from contacts) |
user_email | string | Email of the Allo user who sent the message |
contact.created
Fired when a new contact is created.| Field | Type | Description |
|---|---|---|
id | string | Unique contact identifier |
name | string | First name |
last_name | string | Last name |
company | string or null | Company name |
emails | array of strings or null | Email addresses |
numbers | array of strings | Phone numbers |
contact.updated
Fired when an existing contact is modified.contact.created. The data object contains the full contact state after the update.