API de WhatsApp para plataformas de delivery e cardápio digital

Uma API de WhatsApp permite que a sua plataforma de pedidos avise o cliente do restaurante a cada mudança de status, mande o cardápio em formato de lista e receba respostas, tudo pelo número da própria loja. O ponto crítico não é enviar a mensagem, e sim manter centenas de restaurantes conectados na hora do almoço e do jantar.

O problema de quem vende software para restaurante

Quem opera uma plataforma de cardápio digital ou de gestão de pedidos conhece a cena: o cliente pediu às 19h40, o pedido saiu às 20h15 e ele ligou três vezes perguntando onde estava a comida. O restaurante culpa o motoboy, o motoboy culpa a cozinha e o suporte da sua plataforma recebe o chamado.

O WhatsApp resolve isso quando o aviso sai sozinho, disparado pela mudança de status que já existe no seu sistema. Só que o restaurante não quer um número genérico da plataforma falando com o cliente dele. Ele quer que a mensagem venha do WhatsApp da pizzaria, o mesmo que está no Instagram e na embalagem. Por isso a conta é uma conexão por restaurante, e a sua plataforma precisa gerenciar centenas delas.

A jornada do pedido em mensagens

Cada transição de status do pedido é um gatilho natural. A tabela abaixo mostra como uma plataforma de delivery costuma mapear eventos internos para mensagens:

Evento no seu sistemaMensagem ao clienteRecurso da API
Pedido criadoResumo dos itens, total e forma de pagamentoTexto
Restaurante aceitouPedido confirmado, previsão de preparoTexto
Em preparoAviso curto, sem repetir o resumoTexto
Saiu para entregaNome do entregador e link de acompanhamentoBotão de link (CTA)
EntregueAgradecimento e convite para avaliarLista com notas
Cliente sem pedido há 30 diasCardápio da semana, só para quem aceitou receberLista de itens

Repare que nem todo status merece mensagem. Cinco avisos num pedido de 40 minutos incomodam. Muitas plataformas deixam o restaurante escolher quais etapas notificam, e isso vira configuração dentro do seu painel, não da API.

Cardápio por lista interativa

Para pedidos recorrentes, o formato de lista funciona melhor que um link para o cardápio completo. O cliente toca em "Ver cardápio", escolhe um item e o seu webhook recebe o identificador da linha escolhida. Cada lista aceita até 10 seções com até 10 itens cada, o que cobre bem um menu do dia ou os mais pedidos. Para o cardápio inteiro, continue mandando o link.

import { DApi } from 'd-api-sdk'

const dapi = new DApi({ apiKey: process.env.DAPI_KEY! })

await dapi.interactive.sendList({
  sessionId: 'rest-4821',            // uma conexão por restaurante
  to: '5511999999999',
  title: 'Cantina da Rua 9',
  description: 'Pratos de hoje. Toque para escolher.',
  buttonText: 'Ver cardápio',
  sections: [
    { title: 'Massas', rows: [
      { rowId: 'sku-112', title: 'Lasanha bolonhesa', description: 'R$ 42,00' },
      { rowId: 'sku-118', title: 'Nhoque ao sugo', description: 'R$ 36,00' },
    ] },
    { title: 'Bebidas', rows: [
      { rowId: 'sku-301', title: 'Suco de laranja 500ml', description: 'R$ 12,00' },
    ] },
  ],
})

Quando o cliente escolhe, chega um messages.received com type: "list_response" e o campo selected_row_id com o SKU. O resto é regra do seu carrinho. Mais formatos estão em botões e listas no WhatsApp.

O pico das 12h e das 20h

Delivery tem uma curva de uso que poucos segmentos têm: duas janelas curtas concentram boa parte dos pedidos do dia. Uma integração que responde bem às 15h pode travar às 20h, e quase sempre o gargalo está no lado da plataforma, que chama a API dentro da mesma requisição que muda o status do pedido.

Três decisões evitam isso:

  • Tire o envio da requisição do painel. O restaurante clica em "saiu para entrega", o seu backend grava o status e publica um job. Um worker faz a chamada à API. Se algo atrasar, o painel da cozinha não trava.
  • Use o modo assíncrono quando fizer sentido. Os envios aceitam async: true, que devolve um commandId para consulta posterior em /api/v1/commands/{id}.
  • Isole por restaurante. Na D-API cada conexão roda em ambiente isolado e com IP próprio, então o restaurante que deu problema às 20h não arrasta os outros.

Roteiro de implementação para a sua plataforma

  1. Onboarding do restaurante: na tela de integrações do seu painel, o dono clica em "Conectar WhatsApp". O backend chama POST /api/v1/sessions com um sessionId derivado do id da loja e mostra o QR Code retornado por /sessions/{id}/qr.
  2. Webhook único: configure a mesma URL para todas as conexões. O campo sessionId no envelope diz de qual restaurante veio cada evento.
  3. Mapeamento de status: ligue cada transição do pedido a um template de texto editável pelo restaurante, com variáveis como nome, número do pedido e previsão.
  4. Monitoramento: trate connection.status e mostre um alerta no painel quando a loja desconectar. Melhor o dono descobrir às 17h do que o cliente às 20h.
  5. Respostas do cliente: mensagens que não são resposta de lista vão para a caixa de atendimento do restaurante, se a sua plataforma tiver uma, ou ficam no celular da loja.

Custo previsível para margem apertada

Plataforma de delivery vive de ticket baixo e muitos pedidos. Se cada aviso de status tiver custo, a conta cresce junto com o sucesso do restaurante, e alguém precisa decidir quais mensagens cortar. Na API de WhatsApp da D-API a cobrança é por conexão, não por mensagem, e o valor por conexão cai conforme a sua base de restaurantes cresce. As faixas estão em preços.

Se a sua plataforma atende outros segmentos além de restaurante, a visão geral de produto está em API de WhatsApp para SaaS. Para o detalhe de como o aviso de rota funciona em outras operações, veja rastreio de pedidos pelo WhatsApp. E, antes de ligar a campanha de "cardápio da semana" para toda a base, leia como evitar banimento. O teste é de 14 dias grátis falando com o time comercial, com a implementação acompanhada num grupo de WhatsApp.

Perguntas frequentes

Cada restaurante usa o próprio número de WhatsApp?

Sim. Na D-API cada restaurante vira uma conexão separada, criada pela sua plataforma via API e conectada lendo um QR Code com o celular da loja. O cliente final conversa com o número que já conhece.

O WhatsApp aguenta o volume do horário de pico?

As mensagens de pedido vão para clientes diferentes que acabaram de comprar, o que é o uso esperado do WhatsApp. O que costuma falhar nesse horário é a integração síncrona do lado da plataforma, por isso vale usar envio assíncrono e fila própria.

Dá para o cliente escolher itens do cardápio pelo WhatsApp?

Dá. A plataforma envia uma lista interativa com seções e até 10 itens por seção. Quando o cliente toca em um item, o webhook entrega o identificador escolhido e o seu sistema monta o carrinho.

O restaurante pode continuar respondendo pelo celular?

Pode. A conexão por QR Code funciona como um aparelho vinculado, então o atendente segue usando o WhatsApp da loja enquanto a plataforma envia os avisos automáticos pelo mesmo número.

Como a plataforma fica sabendo que um restaurante desconectou?

Pelo evento connection.status no webhook, que informa connected, disconnected ou logged_out por conexão. Com isso a plataforma avisa o dono da loja no painel antes de a noite de pedidos começar.

Coloque WhatsApp no seu produto sem virar time de infra

14 dias grátis falando com o time comercial, com suporte de implementação num grupo de WhatsApp.