Documentation

Webhooks

Receive signed event delivery for conversations, messages, visitors, and files. Use webhooks as your source of truth for server-side workflows.

Event types

conversation.created
conversation.assigned
conversation.resolved
conversation.reopened
message.created
message.agent_replied
visitor.identified
visitor.attributes_updated
file.uploaded

Verify signatures

import { createHmac, timingSafeEqual } from "node:crypto";

function verifyWebhook(rawBody: string, signature: string, secret: string) {
  const parts = Object.fromEntries(
    signature.split(",").map((p) => p.split("="))
  );
  const payload = parts.t + "." + rawBody;
  const expected = createHmac("sha256", secret).update(payload).digest("hex");
  return timingSafeEqual(Buffer.from(expected), Buffer.from(parts.v1));
}

See the webhook signature reference for full verification code and payload examples.