API do WhatsApp para delivery e restaurante: pedido, entrega e avaliação no mesmo chat
Como usar a API não oficial do WhatsApp no delivery: cardápio em lista, confirmação, endereço por localização, entregador em tempo real, Pix e avaliação.
A API não oficial do WhatsApp permite montar o delivery inteiro dentro da conversa: o cliente escolhe o prato num cardápio em lista, confirma o pedido, compartilha o endereço com um toque, paga por Pix, acompanha a entrega e avalia no final — sem app próprio e sem atendente digitando no pico. Neste guia você vê o fluxo completo de um restaurante com a WAME, os endpoints de cada etapa e os cuidados para o número continuar saudável.
A camada não oficial não é afiliada, endossada ou suportada pelo WhatsApp ou pela Meta. O uso é de responsabilidade de quem envia.
Por que o delivery combina com a API não oficial
Restaurante vive de conversa curta, rápida e com muito vai e volta: "tem sem cebola?", "demora quanto?", "já saiu?". Três características da camada não oficial encaixam nesse ritmo:
- Texto livre, sem template nem janela de 24h. A mensagem de "pedido saiu" não precisa de aprovação prévia.
- Recursos nativos do app: lista para cardápio, botão de pedir localização, localização em tempo real, enquete para avaliação.
- Custo fixo por instância. Sábado à noite com o triplo de pedidos não vira fatura por mensagem. A conta está em custo fixo vs cobrança por mensagem.
E o fluxo nasce seguro: é o cliente quem chama primeiro. Um bot que responde quem escreveu é o uso de menor risco que existe.
O fluxo em sete etapas
- Cliente manda "oi" (ou clica no link da bio).
- Bot responde com saudação e o cardápio em lista.
- Cliente escolhe itens; bot confirma e pergunta observações.
- Bot pede a localização com o botão nativo.
- Bot envia o resumo com o total e o Pix.
- Cozinha e entrega disparam atualizações de status.
- Depois da entrega, uma enquete de avaliação.
A estrutura do bot — webhook, estado por cliente, handoff para humano — está em como criar um bot de WhatsApp. Aqui o foco é o que é específico de restaurante.
Cardápio em mensagem de lista
A mensagem de lista organiza o cardápio em seções, e cada item volta no webhook com o rowId que você definiu:
curl -X POST "https://us.api-wa.me/SUA_KEY/message/list" \
-H "Content-Type: application/json" \
-d '{
"to": "5511999999999",
"title": "Cardápio de hoje",
"text": "Escolha um item para adicionar ao pedido:",
"buttonText": "Ver cardápio",
"footer": "Aberto até 23h",
"sections": [
{
"title": "Pizzas",
"rows": [
{ "title": "Margherita", "description": "R$ 49,90", "rowId": "pz_margherita" },
{ "title": "Calabresa", "description": "R$ 52,90", "rowId": "pz_calabresa" }
]
},
{
"title": "Bebidas",
"rows": [
{ "title": "Refrigerante 2L", "description": "R$ 14,00", "rowId": "bb_refri2l" }
]
}
]
}'A escolha chega como interactive.list_reply.id no webhook formato meta. Guarde os itens num carrinho por cliente e, a cada escolha, responda com o parcial e a lista de novo — ou botões "Adicionar mais" e "Fechar pedido" com /message/button_reply.
Duas dicas de quem já viu isso em produção:
- Cardápio muito grande não cabe em uma lista. Divida por categoria: primeiro a lista de categorias, depois os itens da categoria escolhida.
- Sempre aceite texto livre também. Parte dos clientes vai digitar "uma calabresa grande sem cebola". Um atalho para atendente humano resolve o que o bot não entender.
Se você já tem catálogo cadastrado no WhatsApp Business, há também o caminho do catálogo com carrinho.
Endereço com um toque: pedido de localização
Endereço digitado é a maior fonte de entrega errada: número trocado, bairro abreviado, complemento esquecido. O botão nativo de localização resolve:
curl -X POST "https://us.api-wa.me/SUA_KEY/message/location-request" \
-H "Content-Type: application/json" \
-d '{
"to": "5511999999999",
"text": "Toque no botão para enviar sua localização de entrega 📍"
}'O cliente compartilha, e a mensagem de localização chega no webhook com latitude e longitude. Com as coordenadas você calcula a taxa de entrega por distância e confirma se o endereço está na área atendida. Peça o complemento (apartamento, bloco) em texto logo em seguida — a coordenada não traz isso.
Um detalhe: como a pessoa já conversou com você nas etapas anteriores, a conversa está "quente" e o botão aparece normalmente. Mensagens interativas mandadas como primeira mensagem para quem nunca falou com o número podem não aparecer — por isso, se o fluxo começar do seu lado, abra com texto.
Resumo, total e Pix
Com itens e endereço, mande o resumo. Texto com título e rodapé (/message/title) deixa o pedido legível, e o pagamento vai com a mensagem de Pix:
curl -X POST "https://us.api-wa.me/SUA_KEY/message/text" \
-H "Content-Type: application/json" \
-d '{
"to": "5511999999999",
"text": "Pedido #4821\n1x Calabresa — R$ 52,90\n1x Refrigerante 2L — R$ 14,00\nEntrega — R$ 6,00\n\nTotal: R$ 72,90\nPrevisão: 40 a 50 min"
}'O envio do Pix — chave, valor e o que muda na conversão — está detalhado em cobrança por Pix pelo WhatsApp. Se preferir pagamento na entrega, troque a etapa por botões "Dinheiro" e "Cartão na entrega".
Status do pedido sem ninguém digitar
Cada mudança de status no seu sistema dispara uma mensagem curta:
const STATUS = {
preparo: 'Seu pedido está sendo preparado 👨🍳',
saiu: 'Seu pedido saiu para entrega 🛵 Previsão: 20 min.',
entregue: 'Pedido entregue! Bom apetite 😋',
};
async function avisarStatus(telefone, status) {
await fetch(`https://us.api-wa.me/${process.env.WAME_KEY}/message/text`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ to: telefone, text: STATUS[status] }),
});
}Três mensagens por pedido, para quem acabou de pedir, é exatamente o que o cliente espera receber. Não há risco em avisar — há risco em não avisar e receber cinco "cadê meu pedido?".
Entregador em tempo real
A API tem POST /{key}/message/live-location, que compartilha uma localização em tempo real a partir de latitude, longitude e uma legenda:
curl -X POST "https://us.api-wa.me/SUA_KEY/message/live-location" \
-H "Content-Type: application/json" \
-d '{
"to": "5511999999999",
"latitude": -23.5614,
"longitude": -46.6559,
"caption": "Seu entregador está a caminho"
}'Na prática, há dois desenhos. Se o restaurante tem app de entregador com GPS, o sistema envia o ponto de partida e as atualizações. Se não tem, o mais simples é o entregador compartilhar a própria localização em tempo real pelo WhatsApp dele, e o bot só avisa "saiu para entrega" com o nome de quem vai levar. Para apresentar o entregador, um cartão de contato com /message/contact evita que o cliente ligue para a loja perguntando.
Avaliação por enquete
Uma hora depois do "entregue", uma enquete curta mede a experiência sem exigir que o cliente escreva:
curl -X POST "https://us.api-wa.me/SUA_KEY/message/poll" \
-H "Content-Type: application/json" \
-d '{
"to": "5511999999999",
"name": "Como foi seu pedido hoje?",
"values": ["Excelente", "Bom", "Poderia melhorar"],
"selectableCount": 1
}'Quem responder "Poderia melhorar" merece contato humano no mesmo dia. O passo a passo de NPS e o que fazer com cada nota estão em pesquisa de satisfação com enquete.
Horário de pico: fila, não pressa
Sexta à noite, dezenas de conversas começam ao mesmo tempo. O desenho que aguenta:
- Webhook responde 200 na hora e joga o evento numa fila. Processar dentro da requisição faz o evento ser reenviado e o cliente recebe o cardápio duas vezes.
- Estado por cliente em Redis ou banco, não em memória: um deploy no meio do pico não pode apagar carrinhos.
- Idempotência pelo
idda mensagem, para descartar reentregas. Detalhes em webhook em produção.
Os envios da camada não oficial já saem com ritmo humano — online, "digitando…", envio —, então você não precisa inventar atrasos. E como o bot só responde quem escreveu, o volume do pico é o comportamento mais natural possível para o número.
Promoção: só para quem pediu
Aqui mora o único risco real do delivery. A tentação é pegar a base de quem já pediu e mandar "Hoje tem pizza em dobro!" para todo mundo. Mensagem idêntica para centenas de números que não pediram é o padrão clássico de spam: gera bloqueios, denúncias e, na WAME, esbarra no freio da própria API, que recusa com 429 o mesmo texto repetido para números demais em poucos minutos.
A WAME não apoia spam. Os caminhos que funcionam:
- Opt-in explícito no fim do pedido: "Quer receber nossas promoções por aqui? Responda SIM." Guarde a resposta e respeite o "SAIR". O processo está em lista de contatos com opt-in e opt-out.
- Canal do WhatsApp, que só alcança quem escolheu seguir: canal pela API.
- Status, visto por quem salvou o número do restaurante: postar status pela API.
Seguindo isso, a taxa de bloqueio fica muito baixa para quem usa do jeito certo — e o número que recebe os pedidos continua no ar.
Recusar ligação no pico
Muito cliente liga em vez de escrever, e no pico ninguém atende. Recusar a ligação automaticamente e responder "Estamos atendendo por aqui, me diga seu pedido 👇" converte a ligação perdida em pedido. O fluxo está em recusar ligação automaticamente.
Conclusão
No delivery, a API não oficial do WhatsApp transforma o chat no próprio app de pedidos: cardápio em lista, endereço pelo botão de localização, total com Pix, status automático, entregador em tempo real e avaliação por enquete — tudo por endpoints simples e com custo fixo, mesmo no pico. O cuidado que segura o número é um só: responder quem chamou e mandar promoção apenas para quem pediu. Os endpoints de cada etapa estão na documentação.
Pronto para automatizar seu WhatsApp?
Crie sua conta gratuita e comece a enviar mensagens pela API em minutos.
Começar grátisPerguntas frequentes
Dá para receber pedidos de delivery pelo WhatsApp de forma automática?+
Dá. Com a API não oficial da WAME, um bot recebe a mensagem pelo webhook, mostra o cardápio em mensagem de lista, confirma itens, pede o endereço com o botão nativo de localização e envia o total com Pix. O restaurante só vê o pedido pronto no sistema.
Como pego o endereço do cliente pelo WhatsApp sem ele digitar?+
Use POST /{key}/message/location-request. O cliente recebe um botão nativo para compartilhar a localização, e as coordenadas chegam no webhook. É mais preciso que endereço digitado e evita erro de número e complemento.
Posso mostrar a localização do entregador em tempo real?+
A API tem POST /{key}/message/live-location, que envia uma localização em tempo real a partir de latitude e longitude. O caso mais simples é o entregador compartilhar a própria localização pelo app; pela API, o sistema pode enviar o ponto de partida e as atualizações de status em texto.
Posso mandar promoção para todos os clientes do delivery?+
Só para quem pediu para receber. Promoção para a base inteira, sem opt-in, é o que mais gera denúncia e bloqueio. A WAME não apoia spam. Uma alternativa segura é um Canal do WhatsApp ou status, que só alcançam quem escolheu seguir ou salvou seu número.
O que acontece no horário de pico, quando chegam muitos pedidos juntos?+
Receba o webhook, responda 200 na hora e processe cada conversa numa fila. Os envios saem com ritmo humano automaticamente. Como o bot está respondendo quem escreveu primeiro, o volume de pico é o comportamento mais seguro possível para o número.
Continue lendo
Agente de voz no WhatsApp: latência, interrupção (barge-in) e silêncio
Como deixar um agente de voz no WhatsApp natural: latência, streaming, detecção de fala, interrupção (barge-in), silêncio e eco, com exemplos em Node.js.
Anti-detecção na API não oficial do WhatsApp: como a WAME protege seu número
Como funciona a camada de anti-detecção da API não oficial da WAME: identidade de dispositivo, tempo humano, ritmo de envio, reconexão e monitor de saúde.
API do WhatsApp em C# (.NET): enviar mensagens e receber webhook
Tutorial de API do WhatsApp em C# e .NET: HttpClient tipado, envio de texto, imagem e lista, webhook em ASP.NET Core com fila em background e tratamento de 429.