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
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.
Person object
Company object
Deal object
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.
The
person, company, and deals objects use the same schema as call.received.
call.answered
Fired the moment a call is answered on the other side, for both inbound and outbound calls, aftercall.received / call.triggered (ring) and before call.completed (hang-up). Use it to react in real time when the prospect picks up. When a matching contact is found, the event includes person, company, and deals objects with contact context.
The
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
Recording download link
recording_download_url lets your server download the recording file without an Allo login. It stays valid for 48 hours, which covers the full webhook retry schedule, so a late retry still carries a working link. Download the file when you receive the event, or call Get recording download link later for a fresh link valid for 60 minutes.
Allo sets the link only on lines of accounts created by a partner. It is null on every other account, on calls without a recording, and on calls of a HIPAA-enabled team. Anyone who has the link can download the recording until it expires, so keep it on your server.
Call result values
Handle unknown values gracefully: new outcomes may be added.
Transcription entry
Transfer object
IVR result entry
tag.added
Fired when a tag is added to a call.tag.removed
Fired when a tag is removed from a call.sms.received
Fired when an inbound SMS is received.sms.sent
Fired when an outbound SMS is sent.contact.created
Fired when a new contact is created.contact.updated
Fired when an existing contact is modified.contact.created. The data object contains the full contact state after the update.
summary.updated
Fired when someone edits a call’s summary, in the Allo apps or with Update summary. Only edits to the summary Allo shows by default for that call trigger it: the number’s default summary template, or the standard summary when the number has none. The AI-generated summary itself is delivered incall.completed.
conversation_note.created
Fired when an internal note is added to a conversation, from the Allo apps or via the Notes API.conversation_note.created events are deduplicated by note ID: you receive at most one per note.
User object
Mention entry
conversation_note.updated
Fired when a conversation note’s content is edited. The payload structure is identical toconversation_note.created, with the updated content, mentions, and updated_at. Unlike *.created events, conversation_note.updated may be re-delivered. Deduplicate with the webhook-id header.
conversation_note.deleted
Fired when a conversation note is deleted. The payload structure is identical toconversation_note.created, with the note’s final state and deleted: true. May be re-delivered. Deduplicate with the webhook-id header.
contact_note.created
Fired when a note is added to a person’s CRM profile, from the Allo apps or via the Notes API.contact_note.created events are deduplicated by note ID: you receive at most one per note.
The
user and mentions objects use the same schema as conversation_note.created.
contact_note.updated
Fired when a person note’s content is edited. The payload structure is identical tocontact_note.created, with the updated content, mentions, and updated_at. May be re-delivered. Deduplicate with the webhook-id header.
contact_note.deleted
Fired when a person note is deleted. The payload structure is identical tocontact_note.created, with the note’s final state and deleted: true. May be re-delivered. Deduplicate with the webhook-id header.
thread.created
Fired when a discussion thread is started on a conversation item (a call, an SMS, or a conversation note), from the Allo apps or via the Threads API. Includes the thread’s first comment.thread.created events are deduplicated by thread ID: you receive at most one per thread.
Comment object
The
user, resolved_by, and mentions objects use the same schema as conversation_note.created.
thread.comment.created
Fired when a comment is added to an existing thread.data is the comment object from thread.created. thread.comment.created events are deduplicated by comment ID: you receive at most one per comment.
thread.comment.updated
Fired when a thread comment’s content is edited.data is the comment object from thread.created, with the updated content, mentions, and updated_at. May be re-delivered. Deduplicate with the webhook-id header.
thread.resolved
Fired when a thread is marked as resolved.data is the thread object from thread.created without the comment field. May be re-delivered. Deduplicate with the webhook-id header.
thread.unresolved
Fired when a resolved thread is reopened. The payload structure is identical tothread.resolved, with resolved: false and resolved_at / resolved_by set to null. May be re-delivered. Deduplicate with the webhook-id header.
teammate_message.created
Fired when a teammate sends a direct message to another teammate in the Allo apps. These messages are private: the event is only delivered to a webhook endpoint that belongs to the sender or the recipient and to no one else. An endpoint shared with the rest of the team, such as one a team admin set up for everyone, does not receive it.partner.account.login
Fired when a reseller-provisioned account signs in on a device for the first time, the moment its number goes live. Delivered to the partner’s webhook endpoint (not the account’s), so resellers can track activation.partner.esim.ready
Fired when an eSIM you ordered with Order eSIM is ready, usually 5 to 15 minutes after the order. From that moment, calls to the number ring the eSIM. Delivered to the partner’s webhook endpoint (not the account’s). The payload never carries the activation code: get it with Get eSIM activation code.partner.esim.failed
Fired when an eSIM you ordered could not be provisioned. Delivered to the partner’s webhook endpoint (not the account’s). The payload has the same fields aspartner.esim.ready, with status: FAILED and failure_code set to the reason.