Eventos de Webhook

Todos os eventos enviados via webhook pela Triction, com o objeto enviado em cada um.

📌

As webhooks são gerenciadas via API: você cria, atualiza, lista e remove

suas configurações pelos endpoints de webhook. Comece por
Criar um webhook.

A Triction envia webhooks para uma URL configurada por você sempre que algo
relevante acontece na conta (um card é criado, um contato é atualizado, uma
tarefa é executada, etc.). Assim você mantém sistemas externos sincronizados em
tempo real, sem ficar consultando a API.

Como o webhook é entregue

Toda notificação é um HTTP POST para a callbackUrl configurada, com o
seguinte formato:

ItemValor
MétodoPOST
Cabeçalhox-triction-access-token: <verificationToken da sua configuração>
Content-Typeapplication/json
Timeout por tentativa10 segundos
Reenviosaté 13 tentativas, com backoff exponencial (começa em 10s)

O corpo sempre tem a mesma envelope (envelope de entrega):

{
  "entity": "card",
  "event": "CREATED",
  "data": { }
}
  • entity — a entidade que gerou o evento (ex.: card, contact, company).
  • event — o tipo do evento (ex.: CREATED, UPDATED, MOVED).
  • data — o objeto da entidade que disparou o evento (descrito por entidade abaixo).

🔐

Valide a origem da chamada conferindo o cabeçalho x-triction-access-token

contra o verificationToken que você definiu ao criar a configuração de webhook.

ℹ️

Os campos presentes em data podem variar conforme a operação: relações

(etiquetas, contato, empresa, etc.) só aparecem quando estavam carregadas no
momento do disparo. Os campos de coluna da entidade (escalares) estão sempre
presentes. Campos nulos podem vir como null ou omitidos.

Como assinar os eventos

Cada configuração de webhook vale para uma entidade e uma lista de
eventos dessa entidade. As configurações (listar eventos válidos, criar, listar,
atualizar e remover) são gerenciadas pela API — os endpoints ficam na
API Reference, na seção Webhooks.

Só é possível ter uma configuração ativa por entidade. Para receber vários
eventos da mesma entidade, inclua todos eles no campo events da mesma configuração.


Eventos por entidade

Card (card)

Cards são oportunidades (vendas) ou tickets (suporte). O data é o objeto do card.

EventoQuando dispara
CREATEDCard criado
UPDATEDDados do card alterados
DELETEDCard excluído
MOVEDCard movido de etapa do funil
RESPONSIBLE_CHANGEDResponsável do card alterado
MARKED_AS_WINCard marcado como ganho
MARKED_AS_LOSTCard marcado como perdido
MARKED_AS_OPENCard reaberto
MARKED_AS_FREEZECard congelado
MARKED_AS_SOLVETicket marcado como resolvido
MARKED_AS_UNSOLVETicket marcado como não resolvido
MARKED_AS_ARCHIVETicket arquivado

Legenda de status: 1 Aberto · 2 Ganho · 3 Perdido · 4 Congelado ·
5 Resolvido · 6 Não resolvido · 7 Arquivado · 8 Descartado.
Legenda de type: 1 Oportunidade · 2 Ticket.

{
  "entity": "card",
  "event": "CREATED",
  "data": {
    "id": 1024,
    "title": "Proposta - Empresa ACME",
    "status": 1,
    "type": 1,
    "funnelId": 5,
    "funnelStepId": 12,
    "uniqueValue": 1500.0,
    "recurrentValue": 0,
    "companyId": 88,
    "contactId": 230,
    "responsibleId": 7,
    "ticketCategoryId": null,
    "labels": [{ "id": 3, "name": "Quente", "color": "#FF0000" }],
    "toCloseDate": "2026-07-10T00:00:00.000Z",
    "freezeUntilDate": null,
    "archivedUntilDate": null,
    "observations": "Cliente pediu retorno na próxima semana",
    "externalId": null,
    "integrationId": null,
    "customFields": [],
    "createdById": 7,
    "createdAt": "2026-06-21T13:40:00.000Z",
    "updatedAt": "2026-06-21T13:40:00.000Z",
    "deletedAt": null
  }
}

Contact (contact)

EventoQuando dispara
CREATEDContato criado
UPDATEDContato atualizado
DELETEDContato excluído

Legenda de status: 1 Ativo · 0 Inativo.

{
  "entity": "contact",
  "event": "CREATED",
  "data": {
    "id": 230,
    "name": "Maria Silva",
    "role": "Gerente de Compras",
    "cpf": "123.456.789-00",
    "photoUrl": null,
    "birthDate": null,
    "companyId": 88,
    "responsibleId": 7,
    "status": 1,
    "phones": [{ "id": 41, "number": "+5511999998888" }],
    "emails": [{ "id": 33, "email": "[email protected]" }],
    "labels": [{ "id": 3, "name": "Quente", "color": "#FF0000" }],
    "cep": "01310-100",
    "street": "Av. Paulista",
    "addressNumber": "1000",
    "neighborhood": "Bela Vista",
    "city": "São Paulo",
    "state": "SP",
    "country": "Brasil",
    "observation": null,
    "externalId": null,
    "integrationId": null,
    "createdAt": "2026-06-21T13:40:00.000Z",
    "updatedAt": "2026-06-21T13:40:00.000Z",
    "deletedAt": null
  }
}

Company (company)

EventoQuando dispara
CREATEDEmpresa criada
UPDATEDEmpresa atualizada
DELETEDEmpresa excluída
{
  "entity": "company",
  "event": "CREATED",
  "data": {
    "id": 88,
    "name": "ACME",
    "corporateName": "ACME Comércio Ltda",
    "cnpj": "12.345.678/0001-90",
    "email": "[email protected]",
    "phone": "+551133334444",
    "cel": "+5511999990000",
    "site": "https://acme.com",
    "obs": null,
    "responsibleId": 7,
    "businessSegmentId": 2,
    "labels": [],
    "externalId": null,
    "integrationId": null,
    "createdAt": "2026-06-21T13:40:00.000Z",
    "updatedAt": "2026-06-21T13:40:00.000Z",
    "deletedAt": null
  }
}

Funil e Etapas (funnels)

⚠️

Eventos de funil e de etapa do funil chegam ambos com

entity: "funnels". Diferencie pelo valor de event.

EventoQuando disparadata
CREATEDFunil criadoFunil
UPDATEDFunil atualizadoFunil
DELETEDFunil excluídoFunil
STEP_CREATEDEtapa criadaEtapa
STEP_UPDATEDEtapa atualizadaEtapa
STEP_DELETEDEtapa excluídaEtapa
STEPS_REORDEREDEtapas reordenadasArray de etapas

Legenda de type (funil): 1 Vendas · 2 Suporte.

Exemplo de funil (CREATED/UPDATED/DELETED):

{
  "entity": "funnels",
  "event": "CREATED",
  "data": {
    "id": 5,
    "name": "Funil de Vendas",
    "status": 1,
    "type": 1,
    "cardRequiresContact": false,
    "visibilityType": 1,
    "lostReasonRequired": false,
    "winReasonRequired": false,
    "unsolvedReasonRequired": false,
    "resolvedReasonRequired": false,
    "integrationId": null,
    "createdAt": "2026-06-21T13:40:00.000Z",
    "updatedAt": "2026-06-21T13:40:00.000Z",
    "deletedAt": null
  }
}

Exemplo de etapa (STEP_CREATED/STEP_UPDATED/STEP_DELETED):

{
  "entity": "funnels",
  "event": "STEP_CREATED",
  "data": {
    "id": 12,
    "title": "Qualificação",
    "description": null,
    "stepNumber": 2,
    "color": "#3366FF",
    "funnelId": 5,
    "createdAt": "2026-06-21T13:40:00.000Z",
    "updatedAt": "2026-06-21T13:40:00.000Z",
    "deletedAt": null
  }
}

Exemplo de reordenação (STEPS_REORDERED) — data é um array:

{
  "entity": "funnels",
  "event": "STEPS_REORDERED",
  "data": [
    { "id": 12, "title": "Qualificação", "stepNumber": 1, "funnelId": 5 },
    { "id": 13, "title": "Proposta", "stepNumber": 2, "funnelId": 5 }
  ]
}

Etiquetas (labels)

EventoQuando dispara
CREATEDEtiqueta criada
UPDATEDEtiqueta atualizada
DELETEDEtiqueta excluída
{
  "entity": "labels",
  "event": "CREATED",
  "data": {
    "id": 3,
    "name": "Quente",
    "description": "Lead com alta intenção",
    "color": "#FF0000",
    "status": 1,
    "integrationId": null,
    "createdAt": "2026-06-21T13:40:00.000Z",
    "updatedAt": "2026-06-21T13:40:00.000Z",
    "deletedAt": null
  }
}

Usuários (users)

EventoQuando dispara
PASSWORD_CHANGEDSenha do usuário alterada

Atenção: a senha nunca é enviada no payload.

{
  "entity": "users",
  "event": "PASSWORD_CHANGED",
  "data": {
    "id": 7,
    "name": "João Vendedor",
    "email": "[email protected]",
    "status": 1,
    "roleId": 2,
    "customerAccountId": 1,
    "externalId": null,
    "integrationId": null,
    "createdAt": "2026-01-10T10:00:00.000Z",
    "updatedAt": "2026-06-21T13:40:00.000Z",
    "deletedAt": null
  }
}

Motivos de Finalização (termination_reasons)

EventoQuando dispara
CREATEDMotivo criado
UPDATEDMotivo atualizado
DELETEDMotivo excluído
ATTACHED_FUNNELSFunis vinculados ao motivo

Legenda de type: 1 Ganho · 2 Perdido · 3 Descarte · 4 Resolvido · 5 Não resolvido.

{
  "entity": "termination_reasons",
  "event": "CREATED",
  "data": {
    "id": 15,
    "name": "Preço alto",
    "type": 2,
    "status": 1,
    "integrationId": null,
    "createdAt": "2026-06-21T13:40:00.000Z",
    "updatedAt": "2026-06-21T13:40:00.000Z",
    "deletedAt": null
  }
}

Submotivos de Finalização (termination_subreasons)

EventoQuando dispara
CREATEDSubmotivo criado
UPDATEDSubmotivo atualizado
DELETEDSubmotivo excluído
ACTIVATEDSubmotivo ativado
DEACTIVATEDSubmotivo desativado
{
  "entity": "termination_subreasons",
  "event": "CREATED",
  "data": {
    "id": 42,
    "name": "Concorrente mais barato",
    "status": 1,
    "createdAt": "2026-06-21T13:40:00.000Z",
    "updatedAt": "2026-06-21T13:40:00.000Z",
    "deletedAt": null
  }
}

Equipes (teams)

EventoQuando dispara
CREATEDEquipe criada
UPDATEDEquipe atualizada
DELETEDEquipe excluída
{
  "entity": "teams",
  "event": "CREATED",
  "data": {
    "id": 9,
    "name": "Time Comercial SP",
    "status": 1,
    "externalId": null,
    "createdAt": "2026-06-21T13:40:00.000Z",
    "updatedAt": "2026-06-21T13:40:00.000Z",
    "deletedAt": null
  }
}

Tarefas (tasks)

EventoQuando dispara
CREATEDTarefa criada
UPDATEDTarefa atualizada
DELETEDTarefa excluída
EXECTarefa executada (chegou a hora agendada)

Legenda de status: 1 Agendada · 2 Atrasada · 3 Concluída ·
4 Cancelada · 5 Falha · 6 Processando.

{
  "entity": "tasks",
  "event": "CREATED",
  "data": {
    "id": 510,
    "title": "Ligar para o cliente",
    "date": "2026-06-22T14:00:00.000Z",
    "executedAt": null,
    "typeId": 1,
    "subType": 3,
    "subTypeName": "Ligação",
    "responsibleId": 7,
    "contactId": 230,
    "companyId": 88,
    "cardId": 1024,
    "status": 1,
    "observation": "Confirmar interesse na proposta",
    "createdAt": "2026-06-21T13:40:00.000Z",
    "updatedAt": "2026-06-21T13:40:00.000Z",
    "deletedAt": null
  }
}

Anotações (notes)

EventoQuando dispara
CREATEDAnotação criada
UPDATEDAnotação atualizada
DELETEDAnotação excluída
{
  "entity": "notes",
  "event": "CREATED",
  "data": {
    "id": 301,
    "note": "Cliente prefere contato por WhatsApp.",
    "contactId": 230,
    "companyId": null,
    "cardId": 1024,
    "userId": 7,
    "integrationId": null,
    "createdAt": "2026-06-21T13:40:00.000Z",
    "updatedAt": "2026-06-21T13:40:00.000Z",
    "deletedAt": null
  }
}

Categorias de Ticket (ticket_categories)

EventoQuando dispara
CREATEDCategoria criada
UPDATEDCategoria atualizada
DELETEDCategoria excluída
{
  "entity": "ticket_categories",
  "event": "CREATED",
  "data": {
    "id": 4,
    "name": "Suporte Técnico",
    "description": "Chamados de problemas técnicos",
    "status": 1,
    "createdAt": "2026-06-21T13:40:00.000Z",
    "updatedAt": "2026-06-21T13:40:00.000Z",
    "deletedAt": null
  }
}

Anexos (attachments)

EventoQuando dispara
CREATEDAnexo enviado
DELETEDAnexo excluído
DOWNLOADEDAnexo baixado
{
  "entity": "attachments",
  "event": "CREATED",
  "data": {
    "id": 720,
    "fileName": "proposta-acme.pdf",
    "mimeType": "application/pdf",
    "url": "https://storage.triction.com/.../proposta-acme.pdf",
    "size": 84213,
    "contactId": 230,
    "companyId": null,
    "cardId": 1024,
    "noteId": null,
    "userId": 7,
    "createdAt": "2026-06-21T13:40:00.000Z",
    "updatedAt": "2026-06-21T13:40:00.000Z",
    "deletedAt": null
  }
}

Notificações (notifications)

EventoQuando dispara
CREATEDNotificação criada
UPDATEDNotificação atualizada
MARKED_AS_READNotificação marcada como lida
{
  "entity": "notifications",
  "event": "CREATED",
  "data": {
    "id": 980,
    "title": "Tarefa próxima",
    "description": "Você tem uma ligação agendada em 10 minutos.",
    "date": "2026-06-22T13:50:00.000Z",
    "key": "CREATED_BY_TASK",
    "type": "TEN_MINUTES_BEFORE",
    "entityId": "510",
    "read": false,
    "readDate": null,
    "responsibleId": 7,
    "createdAt": "2026-06-21T13:40:00.000Z",
    "updatedAt": "2026-06-21T13:40:00.000Z",
    "deletedAt": null
  }
}