Skip to main content
Esses eventos cobrem o ciclo de vida completo de uma conversa — desde a abertura até o encerramento, passando por atribuições e reabertura. Use-os para manter seu CRM sincronizado, acionar SLAs ou gerar relatórios de atendimento.

Lista de eventos

EventoQuando dispara
conversation.createdUma nova conversa é iniciada por um contato ou criada manualmente
conversation.assignedA conversa é atribuída a um atendente ou agente de IA
conversation.closedA conversa é marcada como encerrada
conversation.reopenedUma conversa encerrada volta ao status aberto

conversation.created

Quando dispara

Uma nova conversa começa — seja porque um contato enviou a primeira mensagem, seja porque um atendente ou automação criou a conversa manualmente via API.

Payload

{
  "event": "conversation.created",
  "event_id": "evt_01HX3B2K8MFQR4YZDNV7P9WCE",
  "timestamp": "2026-04-19T14:30:00Z",
  "workspace_id": "ws_abc123",
  "data": {
    "conversation_id": "conv_01HX3B2K",
    "contact_id": "cont_456",
    "channel_id": "chan_789",
    "channel_type": "whatsapp",
    "status": "open",
    "assigned_to": null,
    "assigned_type": null,
    "tags": [],
    "created_at": "2026-04-19T14:30:00Z"
  }
}

Campos principais

CampoTipoDescrição
conversation_idstringID único da conversa
contact_idstringID do contato que iniciou
channel_idstringID do canal por onde a conversa chegou
channel_typeenumwhatsapp, instagram, widget, telegram, slack
statusenumopen, closed
assigned_tostring | nullID do atendente ou agente atribuído
assigned_typeenum | nullagent (IA) ou attendant (humano)
tagsarrayTags aplicadas na conversa

Exemplo de uso

Use conversation.created para registrar novas conversas no seu CRM ou disparar uma notificação para o time de vendas quando um lead novo entrar.

conversation.assigned

Quando dispara

A conversa é atribuída (ou reatribuída) a um atendente humano ou a um agente de IA. Isso inclui atribuições automáticas via regras de roteamento e atribuições manuais pelo inbox.

Payload

{
  "event": "conversation.assigned",
  "event_id": "evt_01HX3C5N2PGTS6YADOV8Q1XDF",
  "timestamp": "2026-04-19T14:31:00Z",
  "workspace_id": "ws_abc123",
  "data": {
    "conversation_id": "conv_01HX3B2K",
    "contact_id": "cont_456",
    "channel_id": "chan_789",
    "channel_type": "whatsapp",
    "assigned_to": "usr_321",
    "assigned_type": "attendant",
    "previous_assigned_to": null,
    "previous_assigned_type": null,
    "assigned_at": "2026-04-19T14:31:00Z"
  }
}

Campos principais

CampoTipoDescrição
assigned_tostringID do atendente ou agente que recebeu
assigned_typeenumagent | attendant
previous_assigned_tostring | nullQuem estava responsável antes, se houver
previous_assigned_typeenum | nullTipo do responsável anterior
assigned_atstringTimestamp ISO 8601 da atribuição

Exemplo de uso

Use para calcular tempo médio de primeira resposta (FRT) — registre o assigned_at e compare com o timestamp da primeira mensagem do atendente.

conversation.closed

Quando dispara

A conversa é marcada como encerrada, seja pelo atendente manualmente, por uma automação de tempo limite de inatividade ou via API.

Payload

{
  "event": "conversation.closed",
  "event_id": "evt_01HX3D7P4RHTW7ZBEPV9S2YEG",
  "timestamp": "2026-04-19T16:45:00Z",
  "workspace_id": "ws_abc123",
  "data": {
    "conversation_id": "conv_01HX3B2K",
    "contact_id": "cont_456",
    "channel_id": "chan_789",
    "channel_type": "whatsapp",
    "closed_by": "usr_321",
    "closed_by_type": "attendant",
    "resolution": "resolved",
    "duration_seconds": 8700,
    "message_count": 24,
    "closed_at": "2026-04-19T16:45:00Z"
  }
}

Campos principais

CampoTipoDescrição
closed_bystringID de quem encerrou
closed_by_typeenumattendant, agent, automation, api
resolutionenumresolved, unresolved, spam
duration_secondsintegerDuração total da conversa em segundos
message_countintegerTotal de mensagens trocadas
closed_atstringTimestamp ISO 8601 do encerramento

Exemplo de uso

Use conversation.closed com duration_seconds e resolution para alimentar dashboards de qualidade de atendimento e calcular CSAT automaticamente.

conversation.reopened

Quando dispara

Uma conversa que estava fechada volta ao status open. Isso acontece quando um contato envia nova mensagem numa conversa encerrada ou quando um atendente reabre manualmente.

Payload

{
  "event": "conversation.reopened",
  "event_id": "evt_01HX3E9Q5SJUW8ZCFQWA3ZFH",
  "timestamp": "2026-04-20T09:10:00Z",
  "workspace_id": "ws_abc123",
  "data": {
    "conversation_id": "conv_01HX3B2K",
    "contact_id": "cont_456",
    "channel_id": "chan_789",
    "channel_type": "whatsapp",
    "reopened_by": null,
    "reopened_reason": "new_message",
    "reopened_at": "2026-04-20T09:10:00Z"
  }
}

Campos principais

CampoTipoDescrição
reopened_bystring | nullID de quem reopenou (null se foi por nova mensagem)
reopened_reasonenumnew_message, manual, api
reopened_atstringTimestamp ISO 8601 da reabertura

Exemplo de uso

Monitore conversation.reopened com reopened_reason: "new_message" para identificar padrões de contatos que retornam — pode indicar resolução insatisfatória na primeira vez.
Sempre use o event_id para garantir idempotência. Em caso de retentativa, o mesmo evento pode ser entregue mais de uma vez com o mesmo event_id.