Webhook events reference
This is the exhaustive list of event types you can subscribe to with Webhook subscriptions. Every event payload has the same envelope shape:
{
"event": "<event name from the table below>",
"tenantId": "...",
"timestamp": "<ISO 8601>",
"data": { ... }
}
The data shape varies by event type.
Conversation lifecycle
conversation.created— A new conversation is created — via any channel, including viaPOST /v1/conversations/outbound.conversation.updated— A conversation’s status, assignee, or other top-level fields change.conversation.resolved— A conversation moves to Done.conversation.reopened— A conversation moves from Done back to Active, usually because the customer replied.
Useful for keeping a third-party system in sync with conversation state, or for shipping resolution data downstream (analytics, CSAT triggers from your own systems, etc.).
Messages
message.received— An inbound message arrives from a customer, on any channel.message.sent— An agent (or an Agent Stack, or an automation) sends a reply.
Useful when you’ve pushed a conversation in via the API and need the agent’s reply back. Subscribe to message.sent and ship the reply wherever the customer is (your own chat surface, your CRM, your marketplace inbox).
Contacts
contact.created— A new contact is created in CRM.contact.updated— An existing contact’s data changes.
Useful for keeping a customer-data platform or CRM in sync with Atender.
SLA
sla.warning— A conversation is approaching its SLA deadline. The exact warning threshold is set on the SLA policy.sla.breached— A conversation has missed its SLA.
Useful for paging out, pinging a Slack channel, or triggering escalation in your own systems before or after a breach.
Assignment
assignment.changed— A conversation’s assignee changes — assigned to a user, transferred to a team, or unassigned.
Useful for analytics on routing patterns or for keeping a workforce-management tool in sync with who’s working what.
Tags
tag.added— A tag is attached to a conversation.tag.removed— A tag is detached from a conversation.
Useful when downstream systems care about labeling — for example, when “vip” is added to a conversation, ping the account manager.
Picking events to subscribe to
Subscribe to the events you actually need to react to. Atender will not let you reduce noise after the fact — every subscription gets every event in its events array.
Common patterns:
- Mirror conversations into a third-party system:
conversation.created,conversation.updated,message.received,message.sent,conversation.resolved. - Ship agent replies back to a custom channel:
message.sentonly. - Page on SLA breaches:
sla.warningandsla.breached. - Sync contacts to a CDP:
contact.createdandcontact.updated.