---
title: "Fiz meu CRM num fim de semana com IA. Aí chegou o WhatsApp."
description: "Sábado: CRUD, funil e login prontos. Domingo: o WhatsApp. A parede tem nomes — Business Manager, verificação, template, janela de 24 horas — e este é o mapa dela."
url: "https://wame.api.br/blog/crm-em-um-fim-de-semana-e-ai-chegou-o-whatsapp"
language: "pt-BR"
og:type: "article"
published_time: "2026-09-23"
modified_time: "2026-09-23"
author: "Raphael Serafim"
keywords: "criar crm com ia, integrar whatsapp no crm, vibecoding, api oficial whatsapp meta, janela de 24 horas whatsapp, template whatsapp aprovado"
reading_time: "9 min de leitura"
---

# Fiz meu CRM num fim de semana com IA. Aí chegou o WhatsApp.

> Sábado: CRUD, funil e login prontos. Domingo: o WhatsApp. A parede tem nomes — Business Manager, verificação, template, janela de 24 horas — e este é o mapa dela.

A ideia era das simples: um CRM enxuto, para acompanhar orçamento de serviço. Contato, orçamento, estágio, histórico. Nada de campo customizável, nada de automação, nada de relatório bonito. Só o que resolve.

Na sexta à noite era um parágrafo no bloco de notas. No domingo de manhã era um sistema funcionando, com login, banco e tela. E no domingo à noite era um sistema funcionando com uma tarefa aberta que eu não fazia ideia de que levaria semanas: "plugar o WhatsApp".

## Sábado de manhã: o esqueleto

O primeiro prompt foi longo de propósito. Descrevi o negócio em prosa — quem usa, o que registra, o que precisa ver — e pedi o modelo de dados antes de qualquer código.

Voltou com as entidades certas, os relacionamentos certos e dois índices que eu teria esquecido. Aprovei, pedi as migrações, pedi o CRUD. Em duas horas eu tinha API e banco.

A tela veio depois do almoço. Kanban de estágios, arrastar e soltar, formulário lateral, busca. A IA acerta isso de olhos fechados porque é a parte mais repetida da internet inteira. O que eu fiz de útil foi revisar: corrigi duas validações frouxas e troquei uma query N+1 que ela deixou passar.

Autenticação à noite. Sessão, hash de senha, expiração. Funcionou de primeira e eu fui dormir com a sensação, honesta, de que a profissão tinha mudado.

## Domingo: "agora é só plugar o WhatsApp"

Escrevi isso literalmente, nessas palavras, no chat. E ela respondeu com um arquivo inteiro: um cliente HTTP, uma função `enviarMensagem`, um endpoint de webhook, tratamento de erro. Bonito, tipado, comentado.

Nada daquilo podia funcionar, e eu levei uma hora para entender por quê.

O código apontava para uma URL da Graph API com um número de versão que eu não sabia se existia, esperava um `PHONE_NUMBER_ID` que eu não tinha, e um token que eu também não tinha. Quando pedi "me diz como obtenho esse token", a resposta foi um passo a passo de doze itens que começava assim: crie uma conta no Business Manager.

Aí a ficha caiu. O trabalho que faltava não era de programação.

### A parede, item por item

**Business Manager.** Não é login no Facebook. É uma conta de negócio, com CNPJ, com administrador definido, e ela é o guarda-chuva de tudo o que vem depois. Se você vai fazer isso para um cliente, a conta é do cliente, não sua — e você vai precisar que alguém do lado dele entre e conceda acesso.

**Verificação de negócio.** Documento do CNPJ, comprovante, às vezes revisão manual. O prazo não é seu. Pode sair rápido, pode não sair. Enquanto não sai, o seu limite de envio é baixo e você não vai a lugar nenhum.

**O número.** Ele não pode estar ativo no app do WhatsApp. Se o cliente usa aquele número no celular da loja, ou ele libera o número — perdendo o histórico do aparelho — ou você usa outro. Essa conversa costuma ser mais difícil do que qualquer parte técnica do projeto, e é melhor tê-la antes de prometer prazo. Existe o caminho de coexistência, e existe [o caminho de registrar um número pela API sem instalar o app](/blog/whatsapp-sem-celular-conexao-mobile-api) — mas os dois precisam ser escolhidos no começo, não no fim.

**O app na Meta.** Para falar com a Cloud API você precisa de um aplicativo registrado, com as permissões certas, e dependendo do caso de virar Tech Provider. É burocracia de desenvolvedor, e ela tem um caminho alternativo: usar um parceiro que já passou por isso. A WAME, por exemplo, conecta a conta oficial [pelo Embedded Signup da Meta, sem criar app e sem virar Tech Provider](/blog/whatsapp-api-oficial-sem-tech-provider).

**O webhook.** Precisa de HTTPS, precisa ser público e precisa responder à verificação da Meta. `localhost` não serve. Eu subi um túnel para testar, funcionou, e depois passei uma tarde inteira descobrindo que trocar o endereço do túnel sem reapontar a URL faz as mensagens simplesmente pararem de chegar — sem erro em lugar nenhum, porque do outro lado é a Meta recebendo um `502` e desistindo em silêncio. É a primeira das [sete causas de webhook que não chega](/blog/webhook-whatsapp-nao-chega-como-testar).

**O template.** Esta foi a pior, porque ela não é um obstáculo de setup — é uma regra de produto que entra no meio do sistema já escrito.

## A janela de 24 horas desmonta a sua tela

Eu tinha uma caixa de digitação. Escrevia, clicava, mandava. Era a tela mais óbvia do sistema.

Então li a regra: você responde com texto livre dentro de 24 horas depois da última mensagem do cliente. Fora disso, para iniciar conversa, só com **template aprovado** — um texto submetido antes, com as variáveis marcadas como `{{1}}`, que passa por análise da Meta e pode ser recusado.

Isso significa três mudanças no que eu já tinha feito:

1. A conversa precisa de um campo dizendo quando a janela expira, atualizado toda vez que o cliente escreve.
2. A tela precisa saber bloquear a caixa de digitação e oferecer a lista de templates no lugar dela.
3. A minha ideia de "mandar um lembrete de orçamento três dias depois" deixou de ser uma linha de código e virou um template a ser aprovado, com um texto que a Meta precisa aceitar.

A terceira foi a que doeu, porque o lembrete era metade do valor do produto. O [guia de como criar, aprovar e disparar template](/blog/templates-whatsapp-api-criar-aprovar-enviar) explica o mecanismo e o que faz a Meta recusar — variável abrindo o texto, duas variáveis coladas, numeração que pula. Cada uma dessas volta como recusa genérica se você descobrir na tentativa.

## O que eu faria diferente

Olhando para trás, o erro não foi técnico. Foi de ordem.

Eu construí de dentro para fora: dados, telas, regras e, por último, o canal. Deveria ter feito o contrário, porque o canal é a única parte com dependência externa e prazo que não é meu. As outras eu controlo.

A ordem que eu usaria hoje:

1. Resolver o canal primeiro. Mandar uma mensagem de teste para o meu próprio celular, por API, antes de existir uma linha de CRM.
2. Modelar a conversa já com a janela dentro dela.
3. Escrever o webhook sabendo que ele será reentregue, antes de qualquer tela.
4. Só então CRUD, funil e painel — que é a parte que a IA faz numa tarde de qualquer jeito.

Invertendo, o fim de semana teria rendido a mesma coisa e a semana seguinte não teria sido retrabalho.

## O que resolveu

Duas decisões, e nenhuma delas é heroica.

A primeira: parar de integrar contra a Meta direto e usar uma API gerenciada. O que sobra do meu lado é um `POST` para mandar e um endereço para receber. A conta na Meta continua sendo do dono do número — isso não tem como terceirizar, e quem prometer o contrário está errado —, mas app, token, renovação e formato de webhook saem da minha lista.

A segunda: dar à IA a documentação certa antes de pedir código. A WAME publica a documentação em formato de texto para modelo, em [`https://wame.api.br/llms.txt`](https://wame.api.br/llms.txt), e a referência completa em `https://wame.api.br/llms-full.txt`. Colei o endereço no contexto do editor, pedi de novo o cliente HTTP, e dessa vez o que voltou apontava para endpoints que existem.

Foi a diferença entre um arquivo bonito que não roda e um arquivo simples que roda. A primeira mensagem chegou no meu celular no mesmo dia.

## O que ainda dá trabalho depois disso

Para não terminar com cara de propaganda, vale dizer o que continuou difícil mesmo depois de o canal estar resolvido.

Webhook reentregue duas vezes vira mensagem duplicada na tela, e isso só aparece quando tem tráfego. Status de entrega chega fora de ordem, e o tique azul volta a cinza se você escrever `status = evento.status`. A janela fecha de madrugada e o atendente descobre de manhã, com a caixa de digitação bloqueada e sem entender por quê.

Nenhuma dessas é culpa da API. São o custo de ter gente de verdade usando, e cada uma custa um incidente para ser descoberta. A lista completa está em [o que quebra quando o sistema sai da sua máquina](/blog/vibecoding-primeiro-cliente-o-que-quebra), e o mapa das três partes que a IA não resolve num CRM está em [Como criar um CRM do zero com IA](/blog/criar-crm-com-ia-o-que-a-ia-nao-resolve). Vale ler os dois antes, não depois.

## Conclusão

Um CRM num fim de semana é verdade. A parte que a IA faz, ela faz — e faz bem.

O que não cabe no fim de semana é o canal, porque a maior parte dele não é código: é conta, documento, número e espera. Quem descobre isso no domingo à noite perde a semana seguinte; quem descobre na sexta reorganiza o projeto e não perde nada.

Se você está com um protótipo pronto e a tarefa "plugar o WhatsApp" aberta há dias, o caminho mais curto é aceitar que ela não é uma tarefa de programação, resolver a parte externa com quem já a resolveu, e voltar a fazer o que você estava fazendo bem.

## Perguntas frequentes

### Dá mesmo para fazer um CRM em um fim de semana com IA?

A parte interna, sim: modelo de dados, CRUD, funil, login e painel saem em horas e ficam utilizáveis. O que não cabe num fim de semana é qualquer coisa que dependa de aprovação de terceiro — conta na Meta, verificação de negócio e template. Essas etapas têm prazo que não é seu.

### Por que a IA escreveu um código de WhatsApp que não funciona?

Porque a instrução "integra o WhatsApp" não tem código como resposta completa. O modelo preenche o que falta com material antigo que ele viu no treino e devolve algo plausível. Dando a ele a documentação atual da API que você vai usar, em texto, o resultado muda na mesma hora.

### Preciso do número do cliente fora do aplicativo do WhatsApp?

Para a API oficial, o número não pode estar ativo no app como estava antes. Há caminhos de coexistência e há o registro do número diretamente pela API, mas a escolha precisa ser feita no início do projeto, porque ela afeta o que o cliente perde ou mantém no aparelho.

### O que é a janela de 24 horas e por que ela muda o meu sistema?

É o prazo em que você pode responder com texto livre depois que o cliente escreveu. Fora dela, iniciar conversa exige template aprovado. Isso obriga a sua conversa a guardar a data de expiração e a sua tela a oferecer templates quando a janela fecha — duas mudanças que é melhor fazer antes da tela existir.

### Quanto tempo leva, na prática, até a primeira mensagem sair?

Com uma API gerenciada e uma conta já conectada, o primeiro envio costuma acontecer no mesmo dia. O que demora é a parte que depende da Meta: verificação de negócio e aprovação de template, que podem levar de dias a semanas e não aceleram por esforço seu.
