Rishidocs

Recebendo eventos de outros sistemas via webhook

5 min de leituraAtualizado há 1 semana

Se a sua loja não roda em WooCommerce — ou se você quer disparar mensagens a partir de qualquer sistema externo (ERP, plataforma própria, ferramenta de automação tipo n8n/Make/Zapier) — o caminho é a tela Mensagens dentro da sua conexão Meta.

Cada mensagem que você cria nessa tela ganha uma URL de webhook própria. Você manda um POST pra essa URL com o número do cliente e os valores das variáveis, e o Rishi dispara o template configurado. Sem plugin, sem código no Rishi — só uma URL.

Onde criar

  1. No Rishi, abra sua conexão Meta e vá na aba Mensagens (no menu da conexão, ao lado de WooCommerce e Webhooks).
  2. Clique em Nova mensagem.

Você cai numa tela com template, variáveis e — depois de salvar — o endpoint do webhook.

Configurando a mensagem

Nome da mensagem — apenas pra você identificar internamente (ex: "Confirmação de pagamento via API", "Pedido novo do ERP X"). Não vai pro cliente.

Template — escolha um dos templates aprovados da sua conexão. Só aparece o que está com status Aprovado na Meta.

Variáveis — pra cada placeholder do template ({{1}}, {{2}}...) você define um nome de campo que vai aparecer no payload do webhook. Exemplo: customer_name, order_id, tracking_code. Esses são os campos que o seu sistema vai mandar no JSON quando chamar a URL.

Use nomes claros, em snake_case. O sistema que vai consumir essa URL (ou a pessoa configurando) lê esses nomes — customer_name é melhor que var1.

Salve a mensagem. Depois de salvar, o card Webhook aparece à direita com a URL única dessa mensagem.

A URL do webhook

A URL fica nessa cara: https://app.rishi.com.br/api/meta/messages/{id-único}/trigger?signature=...

Ela já contém assinatura de segurança embutida — você não precisa mandar header de Authorization. A própria URL autentica.

Tratá-la como segredo. Quem tiver essa URL consegue disparar a mensagem. Não cole em código público, repositório aberto ou frontend que vai pro navegador.

Tem dois botões na tela:

  • Copiar URL do webhook — copia a URL pronta pra colar no seu sistema.
  • Copiar curl de teste — copia um comando curl com payload de exemplo, ótimo pra testar no terminal antes de codar.

O payload (formato do POST)

A requisição é um POST com Content-Type: application/json. O body precisa ter:

  • phone_number — número do cliente no formato internacional sem +, sem espaços, sem traços. Exemplo: 5511999999999 (55 = Brasil, 11 = DDD, 9 dígitos).
  • As variáveis configuradas na mensagem — usando exatamente os nomes que você definiu.

Exemplo de payload completo, considerando uma mensagem com variáveis customer_name, order_id, total:

{
  "phone_number": "5511999999999",
  "customer_name": "Maria",
  "order_id": "12345",
  "total": "R$ 199,90"
}

A resposta do Rishi confirma que recebeu (HTTP 2xx) e enfileira o envio. Se você quer ver se chegou, acompanhe pelos logs da mensagem (mostrados na tela depois de criar).

Guias de integração

A tela tem três guias prontos pra orientar quem vai configurar do outro lado:

WooCommerce (sem usar nosso plugin)

Algumas pessoas preferem configurar pelo painel do WooCommerce em vez de instalar o plugin Automações para WhatsApp. É possível:

  1. No WordPress: WooCommerce → Configurações → Avançado → Webhooks.
  2. Clique em Adicionar webhook.
  3. Tópico — escolha o evento (ex: "Pedido atualizado").
  4. URL de entrega — cole a URL de webhook do Rishi.
  5. Formato — JSON.
  6. Salve e ative.

Limitação: o WooCommerce manda o payload dele (estrutura própria com billing.first_name, line_items etc), não no formato do Rishi. Você precisa garantir que os nomes das variáveis na sua mensagem batam com os caminhos do payload Woo — ou usar uma camada intermediária (n8n/Make) pra traduzir.

Pra quem usa Woo, o caminho mais direto é o plugin oficial, que já cuida disso.

n8n / Make / Zapier

Plataformas de automação visual são o caso mais comum.

  1. Crie um novo workflow no n8n/Make/Zapier.
  2. Trigger — o que dispara o fluxo (novo pedido no Shopify, registro no Typeform, planilha atualizada, o que for).
  3. Adicione um nó HTTP Request apontando pra URL de webhook do Rishi.
  4. Method — POST. Content-Typeapplication/json.
  5. Body — monte o JSON com phone_number + suas variáveis, mapeando os campos do trigger pra cada chave.
  6. Teste com um caso real e ative o workflow.

Integração manual (código direto)

Se seu sistema é desenvolvido por você, basta um POST. Em qualquer linguagem:

curl -X POST 'https://app.rishi.com.br/api/meta/messages/{id}/trigger?signature=...' \
  -H 'Content-Type: application/json' \
  -d '{
    "phone_number": "5511999999999",
    "customer_name": "Maria",
    "order_id": "12345"
  }'

Não precisa de header de autenticação — a assinatura está na própria URL.

Quando usar mensagem com webhook em vez do plugin Woo

  • Sua loja não é WooCommerce.
  • Você usa mais de um sistema e quer disparar pelo que faz mais sentido (ex: o ERP é o ponto de verdade pro pagamento, não o WooCommerce).
  • Você precisa de um caso muito específico que os hooks padrão do plugin não cobrem.
  • Você quer uma camada de transformação no meio (limpar dados, juntar de duas fontes, esperar uma condição) usando uma plataforma de automação.

Pra notificações simples de pedido em loja Woo, o plugin é mais rápido. Pra qualquer outro caso, a mensagem com webhook é a saída.

Logs e teste

Depois de criar a mensagem, a tela mostra um histórico de cada vez que a URL foi chamada — qual payload chegou, se a mensagem foi disparada, se houve erro. É o lugar pra debugar quando "tô mandando POST mas não chega no WhatsApp".

Falhas comuns:

  • phone_number em formato errado — deve ser só dígitos, com país e DDD, sem + ou separadores.
  • Faltando alguma variável — se a mensagem espera order_id e o payload não tem, a Meta rejeita.
  • Template foi rejeitado — se o template original perdeu aprovação na Meta, nenhuma mensagem desse tipo sai. Verifique em Templates.

Use o botão Copiar curl de teste e rode no seu terminal antes de codar do lado do seu sistema. Se o curl funcionar, sabe que a configuração tá certa e o problema é do outro lado.

Próximos passos

Foi útil?