Pular para o conteúdo principal
Todo webhook entregue pelo Social media studio segue o mesmo envelope e o mesmo esquema de assinatura. Esta página mostra o formato exato da requisição, como verificar a assinatura e como é o bloco data dos eventos mais comuns.

Formato da requisição

Cabeçalhos

Toda entrega inclui estes cabeçalhos:

Envelope

A menos que você configure um payloadTemplate personalizado, o corpo é um objeto JSON com quatro campos:
  • event: o nome exato do evento (igual a X-Webhook-Event)
  • category: a categoria à qual o evento pertence (por exemplo, post, inbox, subscription)
  • timestamp: timestamp ISO-8601 de quando o evento foi despachado
  • data: o payload específico do evento (veja os exemplos abaixo)
As novas tentativas reutilizam o mesmo X-Webhook-Delivery-Id. Use-o como chave de idempotência para que uma entrega repetida não reprocesse um evento já tratado.

Signature verification

Todo corpo de requisição é assinado com o segredo do seu endpoint usando HMAC-SHA256. Verifique-o em cada requisição para confirmar que a entrega realmente veio do Social media studio.
Verifique sempre usando o corpo bruto da requisição, antes de ele ser interpretado como JSON; reserializar o objeto interpretado altera os espaços em branco e invalida a assinatura.

Exemplos de payload

O formato do bloco data depende do evento. Aqui estão exemplos representativos das categorias mais usadas.

Post

Aprovação

Caixa de entrada

WhatsApp

Conta social

Assinatura

O campo newPlanName contém o identificador interno do plano, como scale para o Advanced.

IA

Central de conhecimento

Análises

Melhor horário

Indicação

Veja a Visão geral de Webhooks para a lista completa de 162 eventos em 26 categorias.

Templates de payload personalizados

Se o seu endpoint espera um formato diferente (por exemplo, Slack ou Discord), defina um payloadTemplate na sua assinatura de webhook. As variáveis disponíveis são:
  • {{event}}
  • {{category}}
  • {{timestamp}}
  • {{data}}: o objeto de dados completo em JSON
  • {{data.any_field}}: qualquer campo aninhado do payload específico do evento
As variáveis não resolvidas são mantidas como estão (por exemplo, {{data.postId}} permanece literal se o evento não fornecer postId). Veja a página de visão geral para exemplos de template para Discord e Slack.

Testes locais

Durante o desenvolvimento:
  1. Use uma ferramenta de tunelamento como o ngrok ou o Cloudflare Tunnel para expor o seu servidor local.
  2. Crie uma assinatura de webhook em Configurações → Webhooks apontando para a URL do seu túnel.
  3. Clique no botão Testar da assinatura para enviar um evento de exemplo sem disparar atividade real.
  4. Inspecione o payload no Webhook.site se quiser ver a requisição bruta antes de escrever um verificador.
Se o seu endpoint falhar em 10 entregas consecutivas, a assinatura é desativada automaticamente. Reative-a pelo painel depois de corrigir o problema.