Como usar webhooks

Última atualização em Jul 05, 2025

Webhooks são retornos de chamada HTTP configurados para cada conta. Eles são acionados quando ações como a criação de uma mensagem ocorrem no Chatwoot. Vários webhooks podem ser criados para uma única conta.

Como adicionar um webhook?

Etapa 1. Acesse Configurações → Integrações → Webhooks. Clique no botão "Configurar".

Etapa 2. Clique no botão "Adicionar novo webhook". Um modal será aberto. Aqui, insira a URL para a qual a solicitação POST deve ser enviada. Em seguida, você precisa selecionar os eventos que deseja assinar. Esta opção permitirá que você ouça apenas os eventos relevantes no Chatwoot.

O Chatwoot enviará uma solicitação POST com o seguinte payload para as URLs configuradas para diversas atualizações em sua conta.

Um payload de webhook de exemplo

{

"event": "message_created", // Nome do evento
"id": "1", // ID da mensagem
"content": "Olá", // Conteúdo da mensagem
"created_at": "2020-03-03 13:05:57 UTC", // Horário de envio da mensagem
"message_type": "incoming", // Será do tipo incoming, outgoing ou template. O usuário do widget envia mensagens de entrada e o agente envia mensagens de saída para o usuário.
"content_type": "enum", // Este é um enum, pode ser input_select, cards, form ou text. O message_type será template se content_type for um destes. O valor padrão é texto
"content_attributes": {} // Este será um objeto, valores diferentes são definidos abaixo
"source_id": "", // Este seria o ID externo se a caixa de entrada for uma integração com o Twitter ou Facebook.
"sender": { // Este forneceria os detalhes do agente que enviou esta mensagem
"id": "1",
"name": "Agent",
"email": "agent@example.com"
},
"contact": { // Este forneceria os detalhes do usuário que enviou esta mensagem
"id": "1",
"name": "contact-name"
},
"conversation": { // Este forneceria os detalhes da conversa
"display_id": "1", // Este é o ID da conversa que você pode ver no painel.
"additional_attributes": {
"browser": {
"device_name": "Macbook",
"browser_name": "Chrome",
"platform_name": "Macintosh",
"browser_version": "80.0.3987.122",
"platform_version": "10.15.2"
},
"referer": "<http://www.chatwoot.com>",
"initiated_at": "Ter 03 Mar 2020 18:37:38 GMT-0700 (Horário Padrão das Montanhas)"
}
},
"account": { // Isso fornecerá os detalhes da conta
"id": "1",
"name": "Chatwoot",
}
}

Eventos de webhook suportados em Chatwoot

O Chatwoot publica vários eventos nos endpoints de webhook configurados. Se desejar configurar um webhook, consulte o guia aqui.

Cada evento tem sua estrutura de payload com base no tipo de modelo em que atua. A seção a seguir descreve os principais objetos que usamos no Chatwoot e seus atributos.

Objetos

Um payload de evento pode incluir qualquer um dos seguintes objetos. Os vários tipos de objetos suportados pelo Chatwoot estão listados abaixo.

Conta

{
"id": "inteiro",
"nome": "string"
}

Caixa de entrada

{
"id": "inteiro",
"nome": "string"
}

Contato

{
"id": "inteiro",
"nome": "string",
"avatar": "string",
"tipo": "contato",
"conta": {
// <...Objeto Conta>
}
}

Usuário

{
"id": "inteiro",
"nome": "string",
"e-mail": "string",
"tipo": "usuário"
}

Conversa

{
"additional_attributes": {
"navegador": {
"nome_do_dispositivo": "string",
"nome_do_navegador": "string",
"nome_da_plataforma": "string",
"versão_do_navegador": "string",
"versão_da_plataforma": "string"
},
"referente": "string",
"iniciado_em": {
"carimbo_de_hora": "iso-data-hora"
}
},
"pode_responder": "booleano",
"canal": "string",
"id": "inteiro",
"id_caixa_de_entrada": "inteiro",
"caixa_de_entrada_do_contato": {
"id": "inteiro",
"id_contato": "inteiro",
"id_caixa_de_entrada": "inteiro",
"id_da_caixa_de_entrada": "inteiro",
"id_de_origem": "string",
"criado_em": "data/hora",
"atualizado_em": "data/hora",
"hmac_verificado": "booleano"
},
"messages": ["Matriz de objetos de mensagem"],
"meta": {
"sender": {
// Objeto de contato
},
"assignee": {
// Objeto de usuário
}
},
"status": "string",
"unread_count": "integer",
"agent_last_seen_at": "unix-timestamp",
"contact_last_seen_at": "unix-timestamp"tamp",
"timestamp": "unix-timestamp",
"account_id": "integer"
}

Mensagem

{
"id": "integer",
"content": "string",
"message_type": "integer",
"created_at": "unix-timestamp",
"private": "boolean",
"source_id": "string / null",
"content_type": "string",
"content_attributes": "object",
"sender": {
"type": "string - contact/user"
// Objeto Usuário ou Contato
},
"account": {
// Objeto Conta
},
"conversation": {
// Objeto Conversation
},
"inbox": {
// Objeto Caixa de Entrada
}
}

Um webhook de exemplo payload

{
"event": "event_name"
// Atributos relacionados ao evento
}

Eventos de Webhook

O Chatwoot suporta os seguintes eventos de webhook. Você pode se inscrever neles ao configurar um webhook no painel ou usando a API.

conversation_created

Este evento será acionado quando uma nova conversa for criada na conta. O payload do evento é o seguinte.

{
"event": "conversation_created"
// <...Atributos da Conversa>
}

conversation_updated

Este evento será acionado quando houver uma alteração em qualquer um dos atributos do Conversa.

{
"event": "conversation_updated",
"changed_attributes": [
{
"<attribute_name>": {
"current_value": "",
"previous_value": ""
}
}
]
// <...Atributos da Conversa>
}

conversation_status_changed#

Este evento será acionado quando o status da conversa for alterado.

Observação: se você estiver usando APIs de bots de agentes em vez de webhooks, este evento ainda não é compatível.

{
"event": "conversation_status_changed"
// <...Atributos da Conversa>
}

message_created#

Este evento será acionado quando uma mensagem for criada em uma conversa. O payload do evento é o seguinte.

{
"event": "message_created"
// <...Atributos da Mensagem>
}

message_updated#

Este evento será acionado quando uma mensagem for atualizada em uma conversa. O payload do evento é o seguinte.

{
"event": "message_updated"
// <...Atributos da Mensagem>
}

webwidget_triggered#

Este evento será acionado quando o usuário final abrir o widget de chat ao vivo.

{
"event": "webwidget_triggered",
"id": "",
"contato": {
// <...Objeto Contato>
},
"caixa de entrada": {
// <...Objeto Caixa de entrada>
},
"conta": {
// <...Objeto Conta>
},
"conversa_atual": {
// <...Objeto Conversa>
},
"id_de_origem": "string",
"info_evento": {
"iniciado_em": {
"carimbo_de_hora": "string-de-data"
},
"referente": "string",
"idioma_do_widget": "string",
"idioma_do_navegador": "string",
"navegador": {
"nome_navegador": "string",
"versão_do_navegador": "string",
"nome_do_dispositivo": "string",
"nome_da_plataforma": "string",
"versão_da_plataforma": "string"
}
}
}

conversation_typing_on#

Este evento é acionado quando um agente começa a digitar em uma conversa. Pode ser uma nota privada ou uma mensagem para o cliente. Você pode usar a flag is_private para distinguir entre as duas.

{
"event": "conversation_typing_on",
"conversation": { ...<Objeto de Conversa> },
"user": { ... <Objeto Usuário / AgentBot / Capitão> },
"is_private": true
}

conversation_typing_off#

Este evento é acionado quando um agente para de digitar ou sai da janela de conversa.

{
"event": "conversation_typing_off",
"conversation": { ...<Objeto de Conversa> },
"user": { ... <Objeto Usuário / AgentBot / Capitão> },
"is_private": true
}