Capítulo 4 de 15

Webhook do WhatsApp: receber mensagens, com código

O que a Certu mediu no WhatsApp de 67 negócios

Nos 67 negócios que atendem com a IA da Certu, 32,5% das 122.720 mensagens de cliente chegaram fora de segunda a sexta, das 8h às 18h (30 de julho a 30 de setembro de 2026). Metade das respostas da IA saiu em até 11,7 segundos, e 9 em cada 10 em até 20,7 segundos (38.908 respostas). 34,6% das conversas começaram fora do horário comercial, e a hora com mais mensagens foi 11h.

Índice Certu de Atendimento por WhatsApp, 3º trimestre de 2026: Todos os negócios
O que foi medidoResultadoBase
Mensagens de cliente fora de segunda a sexta, 8h às 18h32,5%122.720 mensagens de cliente de 67 negócios
Mensagens no fim de semana15,8%122.720 mensagens de cliente de 67 negócios
Conversas que começam fora do horário comercial34,6%19.900 conversas
Tempo até a IA responder (metade das respostas)até 11,7 segundos38.908 respostas da IA
Tempo até a IA responder (9 em cada 10 respostas)até 20,7 segundos38.908 respostas da IA
Hora do dia com mais mensagens de cliente11h122.720 mensagens de cliente de 67 negócios

Fonte: base de atendimento da Certu, só números somados, nenhuma conversa lida por gente; sem histórico importado, sem contato de teste e sem o atendimento de vendas da própria Certu. 30 de julho a 30 de setembro de 2026, medido em 09/10/2026. Método e tabela por ramo no Índice Certu de Atendimento por WhatsApp e em certu.com.br/dados.

Clientes com nome, 30/07 a 10/10/2026

ClienteMensagens de clienteRespostas da IAConversas atendidasFora do horárioIA responde em (mediana)Dias com mensagem
JP Gás Água e Rações
distribuidora de gás e água
42.83223.3516.47933,6%9,8 s70
CEMIP
clínica médica
12.4726.4842.43618,7%11,4 s37
Nikiti Auto Center
auto center
4.9123.54890019,5%14,4 s47
Imobiliária Rodrigues & Ribeiro
imobiliária
6.0902.75982333,2%18,4 s34
Alpha RH
recursos humanos
3.0821.66672127,5%15,6 s52

Números de operação do painel de cada conta, mesma régua do Índice, medidos em 11/10/2026. Publicados com a autorização de cada dono. Resultado de venda só sai com o dono confirmando por escrito. Lista completa em certu.com.br/casos.

O que clientes da Certu escreveram

A Certu reúne em um só lugar recursos que normalmente exigiriam várias ferramentas. Atendimento pelo WhatsApp, CRM, agenda, acompanhamento de oportunidades, campanhas e gestão da operação ficam conectados. No geral, a proposta é muito boa para quem quer reduzir tarefas manuais e ter mais controle sobre o que acontece no atendimento e nas vendas. [...]

Marcelo Vieira · Trustpilot, 04/10/2026 · 5 de 5 · trecho

Avaliação pública (com o link) ou texto enviado pela própria empresa e publicado com autorização por escrito. A nota só aparece quando a fonte tem nota.

Sobre a Certu: a Certu é a plataforma brasileira de IA que atende o WhatsApp, o Instagram e o Messenger de pequenas e médias empresas 24 horas por dia, com CRM incluído, e é Tech Provider da Plataforma WhatsApp Business da Meta. Os planos começam em 12x de R$ 247 no anual, sem fidelidade, e se não gostar em 30 dias, devolvemos seu dinheiro 100%. Conectar meu WhatsApp

O endereço que escuta o WhatsApp, com código.

  • Leitura: 1 min
  • Custo para acompanhar: R$ 0
  • Cadastro: nenhum

Manual gratuito de Certu · Atualizado em 23 de setembro de 2026 · Escrito por , CEO de Certu · ver o manual inteiro

Resumo em 4 fatos

Como receber mensagens do WhatsApp no meu servidor?

Resposta curta

Um endereço https que responde a duas chamadas: a verificação por GET, devolvendo o desafio da Meta, e as mensagens por POST. Ele confere a assinatura e responde 200 rápido.

O código

Salve como src/index.js.

src/index.jsjavascript
export default {
  async fetch(request, env) {
    const url = new URL(request.url);
    if (url.pathname !== '/webhook') return new Response('no ar');

    // Verificacao: a Meta chama uma vez, quando voce cadastra o endereco.
    if (request.method === 'GET') {
      const ok = url.searchParams.get('hub.mode') === 'subscribe'
        && url.searchParams.get('hub.verify_token') === env.VERIFY_TOKEN;
      return ok
        ? new Response(url.searchParams.get('hub.challenge'))
        : new Response('token errado', { status: 403 });
    }

    if (request.method !== 'POST') return new Response('metodo nao permitido', { status: 405 });

    const corpo = await request.text();
    const assinatura = request.headers.get('x-hub-signature-256');
    if (!(await assinaturaConfere(corpo, assinatura, env.APP_SECRET))) {
      return new Response('assinatura invalida', { status: 401 });
    }

    // Confirmacao de entrega chega aqui tambem, sem messages. Ignore.
    const valor = JSON.parse(corpo)?.entry?.[0]?.changes?.[0]?.value;
    const mensagem = valor?.messages?.[0];
    if (mensagem) console.log('mensagem de', mensagem.from, mensagem.text?.body);
    return new Response('ok');
  },
};

// Sem esta conferencia, qualquer um manda mensagem falsa pro seu endereco.
async function assinaturaConfere(corpo, cabecalho, segredo) {
  if (!cabecalho || !segredo) return false;
  const chave = await crypto.subtle.importKey(
    'raw', new TextEncoder().encode(segredo),
    { name: 'HMAC', hash: 'SHA-256' }, false, ['sign'],
  );
  const assinado = await crypto.subtle.sign('HMAC', chave, new TextEncoder().encode(corpo));
  const esperado = 'sha256=' + [...new Uint8Array(assinado)]
    .map((b) => b.toString(16).padStart(2, '0')).join('');

  // Comparacao de tempo constante.
  if (esperado.length !== cabecalho.length) return false;
  let diferenca = 0;
  for (let i = 0; i < esperado.length; i += 1) {
    diferenca |= esperado.charCodeAt(i) ^ cabecalho.charCodeAt(i);
  }
  return diferenca === 0;
}

Publicar

VERIFY_TOKEN é uma senha sua. APP_SECRET fica em Configurações, Básico, no portal de desenvolvedores.

terminalbash
npm create cloudflare@latest atendente -- --type=hello-world
cd atendente
npx wrangler secret put VERIFY_TOKEN
npx wrangler secret put APP_SECRET
npx wrangler deploy

Cadastrar na Meta

  1. Passo 1

    Cole o endereço

    Com /webhook no fim e a senha de VERIFY_TOKEN.

  2. Passo 2

    Assine o campo messages

    Sem isso nenhuma mensagem chega.

  3. Passo 3

    Teste

    Mande uma mensagem e veja com npx wrangler tail.

Pergunta frequente

Preciso mesmo conferir a assinatura?

Sim. Sem ela qualquer um manda mensagem falsa e você paga a IA.

E onde entra Certu

Em Certu esta parte é invisível e cuidada todo mês.

Montar um agente de graça

Em resumo

Como montar o webhook da Cloud API do WhatsApp: verificação por GET, mensagens por POST, conferência da assinatura e o arquivo pronto para publicar.

Sobre a Certu: a Certu é a plataforma brasileira de IA que atende o WhatsApp, o Instagram e o Messenger de pequenas e médias empresas 24 horas por dia, com CRM incluído, e é Tech Provider da Plataforma WhatsApp Business da Meta. Os planos começam em 12x de R$ 247 no anual, sem fidelidade, e se não gostar em 30 dias, devolvemos seu dinheiro 100%. Conectar meu WhatsApp