AtlasCustomer portalAPI DocumentationGo to Atlas

Webhook events

Last updated October 14, 2026

Who can use this feature?
Admins only.

Overview

This article lists the events you can subscribe to with Atlas webhooks, shows the payload format, and explains how to verify that a request really comes from Atlas.

Related articles:
•  Webhooks in Atlas: Create, edit and delete webhook subscriptions.
•  API keys in Atlas: Send requests to Atlas from your own applications.

Key Features

  • JSON payloads: Every event is sent as an HTTP POST request with a JSON body.
  • Signed requests: Atlas signs each payload with your subscription's "Secret Key" (HMAC).
  • Account, conversation, message, customer and session events: Subscribe to the changes that matter to your workflows.

How to verify the webhook signature

Atlas uses HMAC (Hash-based Message Authentication Code) signing to prove that a request comes from Atlas and wasn't tampered with.

  1. When an event triggers, Atlas signs the raw JSON body with your subscription's "Secret Key" and adds the signature to a request header (for example, X-Atlas-Signature).
  2. Your server receives the raw JSON body and the signature header.
  3. Your server computes an HMAC hash of the raw JSON body with your saved "Secret Key" and compares it with the signature:
  • Signatures match: The request is authentic. Return 200 OK.
  • Signatures don't match: Reject the request with 401 Unauthorized.
Important:
Endpoint URLs are public. Verifying the signature stops third parties from sending fake payloads to your server.

Payload format

All events are sent as HTTP POST requests with a JSON body like this:

{
  "event": "conversation.tags",
  "data": {
    "id": "11111111-2222-3333-4444-555555555555",
    "number": 1001,
    "status": "OPEN",
    "priority": "LOW",
    "tags": [
      "tag-uuid-abc-123"
    ],
    "customerId": "cust-99999999-8888-7777-6666-555555555555",
    "customer": {
      "id": "cust-99999999-8888-7777-6666-555555555555",
      "firstName": "John",
      "email": "john.doe@example.com"
    },
    "assignedAgent": {
      "id": "agent-12345678-abcd-efgh-5678-1234567890ab",
      "firstName": "Alex",
      "email": "alex.support@company.com"
    },
    "createdAt": 1700000000
  }
}
  • event: The event that triggered the request, for example conversation.tags.
  • data: The full payload for your server to process.

Supported events

AccountConversationMessage and sidebarCustomerSession
  • Account Created: A new account is created.
  • Account Updated: Account details or configuration change.
  • Conversation Created: A new conversation or ticket is opened.
  • Conversation Agent Changed: A conversation is assigned or reassigned to a different agent.
  • Conversation tags Changed: Tags are added to or removed from a conversation.
  • Conversation custom fields Changed: Custom fields on a conversation are modified.
  • Conversation Status Changed: A conversation's status changes (for example, Open, Pending or Closed).
  • Conversation priority Changed: A conversation's priority changes.
  • Conversation Message Delivery Status: The delivery status of a message changes.
  • New Message Received: A new incoming message arrives from a customer.
  • Sidebar Message Received: A new sidebar message is received.
  • Sidebar Message Sent: A sidebar message is sent.
  • Customer Created: A new customer profile is created.
  • Customer Updated: Customer profile information is updated.
  • Customer Custom Fields Updated: Custom fields on a customer profile are modified.
  • Customer Note Created/Updated: An internal note on a customer profile is created or edited.
  • Customer Note Deleted: An internal note on a customer profile is removed.
  • Session Recording Finished: A recorded session completes and becomes available.

FAQs & Troubleshooting

Why does signature verification fail?

Compute the HMAC on the raw JSON body exactly as received, before parsing it, and use the "Secret Key" of that specific subscription.

What should my endpoint return?

Return 200 OK for a valid request and 401 Unauthorized when the signature doesn't match.

Was this article helpful?