Pular para o conteúdo principal

Webhooks

Webhooks permitem que sistemas externos recebam notificações automáticas quando eventos acontecem no MeuCardapio.ai. Em vez de consultar a API repetidamente para verificar mudanças, o sistema envia uma requisição HTTP (POST) para a URL configurada sempre que um evento ocorre.


O que são webhooks?

Um webhook funciona como um "aviso automático". Quando algo acontece no seu estabelecimento (um novo pedido, uma mudança de status, um pagamento confirmado), o MeuCardapio.ai envia os dados desse evento para a URL que você configurou. Isso permite:

  • Integrar com sistemas próprios (ERP, CRM, BI)
  • Automatizar fluxos de trabalho (ex: notificar equipe no Slack quando chega pedido)
  • Sincronizar dados com outras plataformas em tempo real
  • Criar dashboards personalizados com dados atualizados

Casos de uso

CenárioDescrição
Integração com ERPEnvie pedidos automáticamente para o sistema de gestão da empresa
Notificações personalizadasDispare alertas no Slack, Discord ou Telegram quando um pedido chegar
Painel de BIAlimente dashboards com dados de vendas em tempo real
Automação de marketingDispare campanhas quando um pedido for entregue
Controle de estoqueAtualize quantidades no estoque externo a cada venda

Eventos disponíveis

O MeuCardapio.ai dispara webhooks para os seguintes eventos de pedido:

EventoIdentificadorQuando é disparado
Novo pedidonovo_pedidoUm novo pedido foi recebido pelo estabelecimento
Pedido aceitopedido_aceitoO estabelecimento aceitou/confirmou o pedido
Em preparaçãopedido_em_preparacaoO pedido entrou em preparação na cozinha
Pedido prontopedido_prontoO pedido ficou pronto para retirada ou entrega
Saiu para entregapedido_saiu_entregaO pedido saiu para entrega ao cliente
Pedido entreguepedido_entregueO pedido foi entregue ao cliente
Pedido canceladopedido_canceladoO pedido foi cancelado
Pagamento confirmadopagamento_confirmadoO pagamento online do pedido foi aprovado
Pagamento recusadopagamento_recusadoO pagamento online do pedido foi recusado

Configurando um webhook

Passo 1: Acesse a tela de webhooks

No menu lateral, acesse Configurações > Integrações > Webhooks.

Passo 2: Crie um novo webhook

Clique no botao "+ Novo Webhook" para abrir o formulario de configuração.

Passo 3: Preencha os dados

CampoDescriçãoObrigatório
URL de destinoEndereço HTTPS que receberao as notificaçõesSim
EventosSelecione quais eventos devem disparar o webhookSim
Headers de autenticacaoCabecalhos HTTP extras para autenticacao (ex: Authorization: Bearer TOKEN)Não
DescriçãoNome ou descrição para identificar o webhookNão
AtivoLiga ou desliga o webhook sem precisar deletarSim
Importante

A URL de destino deve utilizar HTTPS para garantir a seguranca dos dados transmitidos. URLs HTTP não são aceitas.

Passo 4: Configure a autenticacao

Para proteger o endpoint que recebe os webhooks, adicione headers de autenticacao personalizados:

Exemplos comuns de headers:

Authorization: Bearer seu-token-secreto-aqui
X-API-Key: minha-chave-secreta
X-Webhook-Secret: segredo-compartilhado
Dica

Valide o header de autenticacao no seu servidor para garantir que as requisicoes realmente vieram do MeuCardapio.ai.

Passo 5: Salve e ative

Clique em Salvar. O webhook será criado e comecara a disparar notificações para os eventos selecionados.


Testando o webhook

Após configurar o webhook, utilize o botao "Testar" para enviar uma requisicao de teste ao seu endpoint.

  1. Clique no botao Testar ao lado do webhook desejado
  2. O sistema enviara um payload de teste para a URL configurada
  3. Verifique se o seu servidor recebeu a requisicao e respondeu com status 200
informação

O payload de teste contem dados fictícios. Use-o apenas para validar que a comunicação entre o MeuCardapio.ai e o seu servidor está funcionando corretamente.


Payload JSON

Todas as notificações são enviadas via POST com o header Content-Type: application/json. Abaixo, exemplos dos payloads para cada tipo de evento.

Novo pedido (novo_pedido)

{
"evento": "novo_pedido",
"timestamp": "2026-03-31T14:30:00.000Z",
"dados": {
"pedido": {
"id": 12345,
"código": "A1B2",
"status": "Novo",
"horário": "2026-03-31T14:30:00.000Z",
"cliente": {
"nome": "João Silva",
"telefone": "11999998888"
},
"itens": [
{
"nome": "X-Burger Especial",
"quantidade": 2,
"valorUnitario": 29.90,
"total": 59.80,
"observacao": "Sem cebola",
"adicionais": [
{
"nome": "Bacon extra",
"valor": 5.00
}
]
}
],
"endereço": {
"logradouro": "Rua das Flores",
"número": "123",
"complemento": "Apto 45",
"bairro": "Centro",
"cidade": "São Paulo",
"cep": "01001-000"
},
"pagamento": {
"forma": "Pix",
"status": "Pendente",
"total": 69.80
},
"taxaEntrega": 10.00,
"desconto": 0,
"totalPedido": 69.80
}
}
}

Mudança de status (pedido_em_preparacao, pedido_pronto, etc.)

{
"evento": "pedido_em_preparacao",
"timestamp": "2026-03-31T14:35:00.000Z",
"dados": {
"pedido": {
"id": 12345,
"código": "A1B2",
"statusAnterior": "Novo",
"statusAtual": "Em preparação",
"horárioAlteracao": "2026-03-31T14:35:00.000Z"
}
}
}

Pagamento confirmado (pagamento_confirmado)

{
"evento": "pagamento_confirmado",
"timestamp": "2026-03-31T14:32:00.000Z",
"dados": {
"pedido": {
"id": 12345,
"código": "A1B2"
},
"pagamento": {
"forma": "Pix",
"status": "Aprovado",
"valor": 69.80,
"códigoTransacao": "TXN-987654321"
}
}
}

Logs de execucao

Acompanhe o histórico de todas as chamadas feitas pelo webhook na aba Logs.

Cada registro de log mostra:

ColunaDescrição
Data/HoraMomento em que a chamada foi feita
EventoTipo do evento disparado
URLEndereço de destino
Status HTTPCódigo de resposta do servidor (200, 400, 500, etc.)
Tempo de respostaDuração da requisicao em milissegundos
PayloadDados enviados (clique para expandir)
Dica

Use os logs para diagnosticar problemas. Se o status HTTP for diferente de 200, verifique se a URL está correta e se o servidor está online.


Política de retentativas

Quando o servidor de destino não responde ou retorna um erro (status HTTP diferente de 2xx), o MeuCardapio.ai faz retentativas automáticas:

TentativaIntervalo
1a retentativa30 segundos após a falha
2a retentativa2 minutos após a 1a
3a retentativa10 minutos após a 2a
4a retentativa1 hora após a 3a

Após 4 tentativas sem sucesso, o evento será marcado como falho nos logs. O webhook permanece ativo para eventos futuros.

Atenção

Se o seu endpoint falhar repetidamente por mais de 24 horas, o webhook será desativado automáticamente. Reative-o manualmente após corrigir o problema.


Resolução de problemas

O webhook não está disparando

  1. Verifique se o webhook está com status Ativo
  2. Confirme que os eventos desejados estão selecionados
  3. Acesse os Logs para verificar se ha tentativas com erro

Recebo erro 401 ou 403

O servidor de destino está rejeitando a autenticação. Verifique:

  • O header Authorization está correto
  • O token não expirou
  • O endpoint aceita requisicoes POST

Recebo erro 500

O servidor de destino está com erro interno. Verifique:

  • Os logs do seu servidor para entender a causa do erro
  • Se o endpoint consegue processar o payload JSON enviado

Recebo erro de timeout

O MeuCardapio.ai aguarda no máximo 10 segundos por uma resposta. Se o seu servidor demora mais:

  • Processe o webhook de forma assíncrona (receba, responda 200 e processe em background)
  • Otimize o tempo de resposta do endpoint

Os dados do payload estão incompletos

  • Verifique se o evento correto está selecionado
  • Use o botao Testar para comparar o payload esperado

Boas práticas

  1. Responda rápido: Retorne HTTP 200 o mais rápido possível e processe os dados em segundo plano
  2. Valide a autenticação: Sempre verifique os headers de autenticação antes de processar o payload
  3. Trate duplicatas: Em caso de retentativas, o mesmo evento pode chegar mais de uma vez. Use o campo id do pedido para identificar duplicatas
  4. Use HTTPS: Nunca exponha dados sensíveis em URLs HTTP
  5. Monitore os logs: Acompanhe os logs periodicamente para identificar falhas

Perguntas frequentes

Quantos webhooks posso cadastrar?

Não há limite. Cadastre quantos webhooks forem necessários, cada um com eventos e URLs diferentes.

Posso enviar o mesmo evento para URLs diferentes?

Sim. Crie webhooks separados, cada um apontando para uma URL diferente, ambos com o mesmo evento selecionado.

Os webhooks funcionam com pedidos de iFood e 99Food?

Sim. Pedidos recebidos de qualquer origem (cardápio digital, iFood, 99Food, Keeta, balcao) disparam os mesmos eventos de webhook.

Qual o formato da data/hora no payload?

Todas as datas seguem o formato ISO 8601 (ex: 2026-03-31T14:30:00.000Z) no fuso horário UTC.

Posso pausar um webhook temporariamente?

Sim. Desative o webhook na tela de configuração. Os eventos não serao enviados enquanto estiver inativo, e não há fila de eventos perdidos.

O que acontece se meu servidor estiver fora do ar?

O sistema fará até 4 retentativas com intervalos crescentes. Se todas falharem, o evento será registrado como falho nos logs. Eventos futuros continuarao sendo disparados normalmente.