user.created, user.updated, user.deleted) and real-time availability (user.status_changed). These are account-level webhooks, delivered to the endpoints you register under Account → Webhooks. See the overview.
All examples show the full request body, including the envelope. Fields with empty values are omitted from payloads: they are never sent as null. Fields shown in bold are always present. A bold field nested inside an optional object is always present whenever that object is. Everything else is optional.
user.created
Fires when a new user is added to your account. The payload carries the user’s full profile (name, email, role, language, extension, timestamps), how their outbound number is chosen, and, when CloudTalk can resolve them, the call groups they belong to and the numbers assigned to them. Use it to automatically provision the new team member in your CRM, helpdesk or workforce-management tools.Example
user.updated
Fires when a user’s profile changes: their name, email, role, language, extension, outbound number selection, assigned numbers or group membership. The payload carries the user’s full, current profile (the same shape asuser.created), so you can overwrite the profile fields in your copy to stay in sync. To find out what changed, compare with the version you previously stored.
Treat groups and associated_numbers with more care: both are resolved best effort, so their absence means either that the set is empty or that CloudTalk could not resolve it at that moment. If the difference matters to you, confirm the current membership through the API before clearing your stored copy.
Example
user.deleted
Fires when a user is removed from your account. Because the user no longer exists, the payload carries only their id: it matches the id from earlieruser.created and user.updated events. Use it to deactivate or archive that person in your connected systems.
Example
user.status_changed
Fires every time a user’s availability changes: when they go online, pick an away status, go offline, or start and finish a call. Use it to power live wallboards, presence indicators, or workforce-management tools that need to know who is available right now.Example
What each status means
CloudTalk resolves a user’s availability from three inputs, in this order: whether they are connected at all, whether they are in a call, and which status they picked themselves. When a call ends, the status returns to the value the picked status resolves to. The first input that applies wins, so a user in a call reads ason_call no matter which status label they chose.
This is a high-frequency event on busy accounts. The payload is deliberately minimal: join
user_id against the profile data you received from user.created and user.updated. Switching between two statuses that resolve to the same status value, for example Lunch to Meeting, does produce an event: status stays idle and sub_status changes.