Skip to main content
Events follow the 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 includes person, 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 includes person, 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, after call.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_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.
The payload structure is identical to 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 in call.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 to conversation_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 to conversation_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 to contact_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 to contact_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 to thread.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 as partner.esim.ready, with status: FAILED and failure_code set to the reason.