InícioCasos de uso › API de WhatsApp para petshop e veterinário

API de WhatsApp para petshop e clínica veterinária: banho, tosa e vacina avisados sozinhos

Quem recebe a mensagem é o tutor; quem recebe o serviço é o pet. Com a API do zapon, o seu sistema confirma o banho na marcação, lembra na véspera com o nome do animal, avisa quando ele está pronto para retirada e dispara a vacina pela data do prontuário. A resposta do tutor volta por webhook e dá baixa sozinha.

Este ramo tem uma particularidade que nenhum outro negócio de agenda tem: o destinatário da mensagem não é quem recebe o serviço. Você fala com a Carla, mas o combinado é sobre o Thor — e a Carla ainda tem a Mel, do antipulgas mensal, e o Bento, com reforço da antirrábica em abril. Automação construída em torno do cliente erra. A chave do fluxo é o pet.

Daí saem três buracos de caixa: o banho e tosa que fura, com banhista parado e o leva-e-traz na rua atrás de um animal que não vai sair; o retorno de vacina que ninguém remarca, porque não há agendamento — só uma data de vencimento no prontuário; e a rotina preventiva, que depende de o tutor lembrar do vermífugo sozinho. Os três se resolvem com o mesmo canal: uma API de WhatsApp chamada pelo sistema que já tem a agenda e o prontuário. O zapon expõe uma API REST — header token, JSON entrando e saindo. Abaixo, o fluxo, os endpoints em cURL e Node e o que fazer com a resposta.

A dor: o serviço é do pet, a conversa é com o tutor

Por que a agenda de banho e tosa fura tanto?

Porque banho é compromisso de baixa prioridade: o tutor marca por telefone, não anota, e no dia aparece um imprevisto. Faltar não dói para ele — o custo fica com a casa, que segurou a vaga, escalou o banhista e às vezes mandou o carro sair. Um lembrete na véspera que se responde com um toque devolve a vaga a tempo.

Por que o telefone do petshop não para de tocar?

Por uma pergunta repetida o dia inteiro: já posso buscar? Enquanto o tutor não sabe se a tosa acabou, ele liga, e cada ligação tira alguém do balcão ou da tesoura. Ligação também não deixa registro; a resposta pelo WhatsApp chega como evento com telefone, horário e conteúdo, e vira campo na ficha do agendamento.

O que a casa precisa ter para começar

O que preciso para avisar o tutor por WhatsApp automaticamente?

Três coisas: um número de WhatsApp, uma conta no zapon com esse número conectado por QR Code ou código de pareamento, e um sistema que saiba quais pets têm banho amanhã e quais têm vacina vencendo. Não é preciso servidor próprio, conta na Meta, aprovação de template nem aplicativo instalado no celular do balcão.

O meu sistema precisa ter cadastro separado de tutor e de pet?

Precisa, e provavelmente já tem: todo software do ramo guarda peso, porte e carteira de vacinação por animal. O que costuma faltar é o caminho de volta — dado o pet, achar o telefone do tutor; dado o telefone que respondeu, achar de qual pet ele fala. Se o cadastro tem só o cliente, com uma observação escrita "cachorro Thor", o trabalho começa aí, não na API.

O fluxo do petshop e da clínica, passo a passo

Como funciona o fluxo de banho, tosa e vacina ponta a ponta?

Cinco etapas: (1) o banho é agendado e o tutor recebe a confirmação com o nome do pet, o serviço e a janela do leva-e-traz; (2) na véspera sai o lembrete com botões; (3) no dia, quando o pet sai do banho, sai o aviso de pronto para retirada; (4) o tutor responde e o webhook entrega isso ao seu sistema; (5) em paralelo, a régua sanitária dispara vacina, vermífugo e antipulgas pela data do prontuário.

Os quatro primeiros nascem de um agendamento. O quinto nasce de uma data — por isso é rotina à parte.

1. O que enviar assim que o banho é agendado?

A confirmação escrita, com o nome do pet e o serviço exatamente como foi combinado: tosa na máquina, tosa higiênica, hidratação, corte de unha. Tosa entendida errada é a reclamação mais cara do ramo, e a defesa é ter o combinado por escrito no celular do tutor desde a marcação. Diga a janela do leva-e-traz e o que ele precisa separar. Se a entrega falhar aqui, você descobre hoje que o telefone está errado, não na véspera.

2. Como mandar o lembrete da véspera?

Uma rotina diária varre os agendamentos do dia seguinte e dispara um lembrete por pet. A mensagem vai para o tutor, mas nomeia o animal: "amanhã é o banho do Thor" funciona; "seu agendamento de amanhã" não diz nada a quem tem três. Com leva-e-traz, confirme endereço e janela de coleta no mesmo texto — o motorista sai antes de o tutor acordar. Botões deixam a resposta a um toque; aceite texto também.

3. Quando avisar que o pet está pronto para retirada?

No instante em que o banhista dá baixa no serviço. É o passo que mais reduz telefone tocando e o mais fácil de integrar. Diga o nome do pet, que ele está pronto, até que horas a casa espera e o valor a pagar. Entre as 13 formas de envio existe imagem, e o uso óbvio aqui é a foto do pet depois da tosa.

4. Como o tutor responde para confirmar ou remarcar?

Na conversa, tocando no botão ou escrevendo: confirma, remarca, avisa que vai buscar mais tarde ou manda uma dúvida. Isso vira um evento entregue por webhook no endereço que a casa cadastrar, com a mensagem inteira. É a peça que fecha o ciclo — e vale a regra dura do ramo: dúvida clínica nunca é respondida por automação.

5. Como a régua sanitária dispara sem agendamento?

Uma rotina separada varre o prontuário procurando datas de vencimento: reforço anual de vacina, vermífugo por intervalo, antipulgas mensal, retorno pós-cirúrgico e retirada de pontos. Cada linha encontrada é um par de pet e tipo. Antes de enviar, a rotina agrupa por tutor: quem tem três animais recebe uma mensagem, não três seguidas.

Os endpoints que a casa usa na prática

Quais endpoints da API do zapon um petshop precisa?

Três resolvem o fluxo: POST /chat/send/text para as mensagens, POST /chat/send/buttons para o lembrete com resposta em um toque e POST /user/check para conferir quais telefones do cadastro de tutores ainda têm WhatsApp. Base https://api.zapon.dev, header token. São 49 endpoints publicados, todos com schema, mas a agenda do petshop vive nesses três.

A autenticação é um header só, token, copiado da conexão no painel: não é Authorization, não é Bearer, não há OAuth. Trate-o como senha.

Como enviar a confirmação do banho pela API?

Um POST em /chat/send/text com dois campos: Phone, o número em formato internacional só com dígitos, e Body, o texto.

confirmação de banho e tosa — cURL
curl -X POST https://api.zapon.dev/chat/send/text \
  -H "token: SEU_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "Phone": "5511999999999",
    "Body": "Carla, o banho do Thor está agendado.\n\nData: 14/03 (sexta)\nServiço: banho + tosa higiênica (sem tosa na máquina)\nLeva-e-traz: passamos entre 8h e 9h na Rua das Palmeiras, 45\n\nSepare a coleira e a medicação de uso contínuo, se houver. Para remarcar, é só responder por aqui."
  }'

O parêntese dizendo o que não está incluído custa uma linha e evita a discussão do balcão. A resposta traz o identificador da mensagem:

resposta da API
{
  "code": 200,
  "success": true,
  "data": {
    "Details": "Sent",
    "Id": "7A31C0D45E9B22F1A88C4B7E10D3F662",
    "Timestamp": "2026-03-08T10:41:17-03:00"
  }
}

Guarde esse Id junto do agendamento: ele prova qual mensagem saiu e impede reenvio duplicado.

Como pedir a confirmação da véspera em botões?

O /chat/send/buttons envia botões, de rótulo curto. Cada um carrega um id definido por você, e é ele que volta no webhook. Aqui o formato importa: o id precisa carregar o agendamento e o pet, porque a mesma conversa pode ter dois lembretes abertos no mesmo dia. Além da resposta rápida, o mesmo endpoint monta botão que abre um link ("type": "cta_url"), botão que abre o discador ("type": "cta_call") e botão que copia um código ("type": "copy") — e os tipos convivem na mesma mensagem. O toque em resposta rápida volta no webhook; os outros três agem no aparelho de quem recebe.

lembrete da véspera com botões
POST https://api.zapon.dev/chat/send/buttons
token: SEU_TOKEN

{
  "Phone": "5511999999999",
  "Body": "Carla, amanhã é o banho do Thor (banho + tosa higiênica). O leva-e-traz passa entre 8h e 9h na Rua das Palmeiras, 45. Podemos confirmar?",
  "Footer": "Petshop Exemplo",
  "Buttons": [
    { "id": "bnh4471|thor|confirmar", "text": "Confirmar" },
    { "id": "bnh4471|thor|remarcar",  "text": "Remarcar" },
    { "id": "bnh4471|thor|cancelar",  "text": "Cancelar" }
  ]
}

Para mais opções, como três janelas de horário para remarcar, o /chat/send/list entrega um menu em lista sem estourar o limite de três botões.

Como limpar os telefones antigos do cadastro de tutores?

Cadastro de petshop acumula número de dez anos atrás, telefone fixo e celular sem o nono dígito. Antes de rodar a régua de vacina, passe a lista no POST /user/check. Enviar para número morto não é só desperdício: sequência de entregas que não chegam é o padrão que um número de spam produz.

checar telefones de tutores — cURL
curl -X POST https://api.zapon.dev/user/check \
  -H "token: SEU_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "Phone": ["5511999999999", "551133334444"] }'

// resposta
{ "code": 200, "success": true, "data": { "Users": [
  { "Query": "5511999999999", "IsInWhatsapp": true,  "JID": "[email protected]" },
  { "Query": "551133334444",  "IsInWhatsapp": false, "JID": "" }
] } }

São 13 formas de envio ao todo — texto, imagem, áudio, vídeo, documento, sticker, localização, contato, enquete, lista, botões, template e edição de mensagem já enviada —, mais reação, presença de "digitando", marcar como lido e histórico. Fora do trio principal, a casa usa imagem, para a foto depois da tosa, e documento, para a carteira de vacinação em PDF.

A régua sanitária por pet: uma data no prontuário vira mensagem

Como transformar a data de vencimento da vacina em lembrete automático?

A régua sanitária não olha para a agenda, olha para o prontuário. Todo dia uma rotina busca os pets cujo reforço, vermífugo ou antipulgas vence numa janela à frente — quinze dias para vacina, três para o antipulgas mensal — e monta uma mensagem por tutor. A chave da varredura é o animal: cada pet tem a sua carteira, os seus intervalos e o seu peso.

É a diferença estrutural do ramo. No banho existe um agendamento com data e hora, e a mensagem pendura nele. Na vacina não existe nada: existe a anotação de que a antirrábica do Thor foi aplicada em 12 de abril do ano passado. Ninguém marcou o retorno, e o vencimento passa em silêncio até o dia em que o tutor precisa da carteira em dia para viajar.

Como fica a rotina de disparo da régua em Node?

Ela faz quatro coisas na ordem: varre os vencimentos, descarta quem pediu para não receber, agrupa por tutor e só então envia, guardando o Id e respirando entre um envio e outro.

régua sanitária — Node
// regua-sanitaria.js — roda todo dia às 9h
const API = "https://api.zapon.dev";
const TOKEN = process.env.ZAPON_TOKEN;

async function enviarTexto(phone, body) {
  const r = await fetch(`${API}/chat/send/text`, {
    method: "POST",
    headers: { "token": TOKEN, "Content-Type": "application/json" },
    body: JSON.stringify({ Phone: phone, Body: body })
  });
  const json = await r.json();
  if (!r.ok || !json.success) throw new Error(json.error || `HTTP ${r.status}`);
  return json.data.Id;
}

const pausa = (ms) => new Promise((r) => setTimeout(r, ms));

// vencimentos do prontuário: vacina, vermífugo, antipulgas, retirada de pontos
const pendencias = await vencimentosDoDia();
// cada item: { tutorId, pet, tipo, vence, optOut }

// tutor com 3 pets recebe UMA mensagem, nunca três seguidas
const porTutor = new Map();
for (const p of pendencias) {
  if (p.optOut) continue;                // descadastro vale para toda rotina
  if (!porTutor.has(p.tutorId)) porTutor.set(p.tutorId, []);
  porTutor.get(p.tutorId).push(p);
}

for (const [tutorId, itens] of porTutor) {
  const tutor = await buscarTutor(tutorId);
  const linhas = itens.map((i) => `- ${i.pet}: ${i.tipo} vence em ${i.vence}`).join("\n");
  const corpo = itens.length === 1
    ? `${tutor.nome}, o ${itens[0].tipo} do ${itens[0].pet} vence em ${itens[0].vence}. Reservo um horário?`
    : `${tutor.nome}, os seus pets têm ${itens.length} pendências:\n\n${linhas}\n\nDá para resolver tudo na mesma visita. Reservo?`;
  try {
    const id = await enviarTexto(tutor.telefone, corpo);
    await registrarEnvio(tutorId, "regua_sanitaria", id);   // guarda o Id: evita duplicar
  } catch (e) {
    await registrarFalha(tutorId, "regua_sanitaria", String(e)); // vira tarefa do balcão
  }
  await pausa(5000);   // ritmo de casa que trabalha, não de rajada
}

O registrarEnvio serve para não repetir a pendência se a rotina rodar de novo e para não cobrar a mesma vacina daqui a três dias. Vencimento não some porque o tutor ignorou a mensagem; sem marcar que já avisou, a régua vira insistência diária — o caminho mais curto para o bloqueio.

Um tutor, vários pets: como não confundir o Thor com a Mel

Como avisar um tutor que tem mais de um pet sem mandar três mensagens?

Agrupando antes de enviar. A varredura termina com pendências soltas; entre ela e o envio entra um agrupamento por tutor, e o texto muda conforme o tamanho do grupo: um pet vira uma frase, dois ou mais viram uma lista com o nome de cada animal. Três mensagens seguidas do mesmo número, no mesmo minuto, é o que o tutor denuncia.

O agrupamento resolve a saída. Falta a volta, onde a maioria das integrações quebra: o tutor toca em "Confirmar" e o seu sistema precisa saber de qual animal ele fala. Se o id do botão carregar só o agendamento, a semana em que a Carla tiver banho do Thor e retorno da Mel vai gerar a baixa errada — e o erro só aparece quando o motorista chegar na porta.

O que o id do botão precisa carregar?

Três pedaços separados por barra vertical, no formato bnh4471|thor|confirmar: o agendamento, o pet e a ação. O primeiro diz onde dar baixa, o segundo permite responder chamando o animal pelo nome e o terceiro diz o que fazer. Use o identificador interno do pet, não o nome digitado: dois cachorros chamados Thor no mesmo cadastro é questão de tempo.

E quando o tutor responde em texto, sem tocar no botão?

Aí não há id, só um telefone e uma frase. Procure o próximo compromisso daquele tutor: se ele tem um só, aplique a ação nele; se tem dois em aberto, não adivinhe — pergunte qual, listando os nomes dos animais, ou mande para a fila do balcão. Baixa errada em agenda é pior que baixa nenhuma, porque ninguém confere.

A resposta do tutor: webhook, regra e ação

Como recebo no meu sistema a resposta do tutor?

Cada conexão tem um webhook próprio: você cadastra no painel a URL do seu sistema e escolhe os eventos. A partir daí, toda mensagem que chega no número vira um POST nessa URL, com o conteúdo inteiro no corpo — telefone, identificador, horário, texto e, quando é resposta de botão, o id que você definiu.

O ciclo tem três partes que não se misturam: o webhook entrega o evento, a sua regra interpreta e a ação acontece no seu sistema. A API não sabe o que é um banho nem o que é uma dose de reforço.

Qual é o formato do evento de mensagem recebida?

O corpo traz o tipo do evento e a mensagem completa. Assim chega quem respondeu escrevendo:

webhook — mensagem recebida
{
  "type": "Message",
  "event": {
    "Info": {
      "ID": "3EB0F91C7A5D40B2E118",
      "Chat": "[email protected]",
      "Sender": "[email protected]",
      "IsFromMe": false, "IsGroup": false,
      "PushName": "Carla Menezes",
      "Timestamp": "2026-03-13T19:22:05-03:00"
    },
    "Message": { "conversation": "pode vir buscar ele sim" }
  }
}

// quando ele toca num botão, muda só o bloco Message:
    "Message": { "buttonsResponseMessage": {
      "selectedButtonID": "bnh4471|thor|confirmar",
      "Response": { "SelectedDisplayText": "Confirmar" }
    } }

Duas observações que economizam horas: o corpo pode chegar como JSON puro ou como formulário codificado, com o JSON dentro de um campo — aceite os dois. E o que o próprio número envia também gera evento, com IsFromMe igual a true: ignore, ou a atendente respondendo um tutor no aparelho aciona a sua automação.

Como dar baixa no agendamento a partir da resposta?

Descarte o que não interessa, separe agendamento e pet a partir do id, decida pela ação e responda ao tutor. Antes de tudo isso, um filtro que só existe neste ramo: o que parece sintoma sai da automação e vai para a fila da clínica.

receptor do webhook — Node/Express
app.post("/whatsapp/eventos", express.json(), async (req, res) => {
  res.sendStatus(200);                        // responda primeiro, processe depois

  const ev = req.body?.event ?? req.body, info = ev?.Info ?? {};
  if (info.IsFromMe || info.IsGroup) return;   // o que a loja enviou, e grupos, fora
  if (await jaProcessado(info.ID)) return;     // o mesmo evento pode chegar 2x

  const telefone = String(info.Chat || "").split("@")[0];
  const botao = ev?.Message?.buttonsResponseMessage?.selectedButtonID ?? "";
  const texto = (ev?.Message?.conversation ??
                 ev?.Message?.extendedTextMessage?.text ?? "").trim().toLowerCase();

  // sintoma nunca é respondido por automação — vai para o veterinário
  const SINTOMA = /(vomit|diarrei|convuls|sangr|apatic|engasg|atropel|nao come|não come|caroco|caroço|manca)/;
  if (SINTOMA.test(texto)) return filaClinica(telefone, texto, "prioridade");

  const [agendaId, petId, acaoBotao] = botao.split("|");  // bnh4471 | thor | confirmar
  const ag = agendaId ? await buscarAgendamento(agendaId, petId)
                     : await agendamentoUnicoEmAberto(telefone); // null se houver 2+
  if (!ag) return filaDoBalcao(telefone, texto);   // não adivinhe o pet

  const acao = acaoBotao
    || (/^(1|sim|pode|confirmo|confirmado)$/.test(texto) ? "confirmar"
      : /^(2|remarcar|outro dia)$/.test(texto)           ? "remarcar"
      : /^(3|cancelar|nao vai|não vai)$/.test(texto)     ? "cancelar" : null);

  if (acao === "confirmar") {
    await atualizarStatus(ag.id, "confirmado");
    return enviarTexto(telefone, `Confirmado. Buscamos o ${ag.pet.nome} entre ${ag.janela}.`);
  }
  if (acao === "cancelar") {
    await atualizarStatus(ag.id, "cancelado");
    await liberarVaga(ag);                    // avisa a fila de espera do banho
    await tirarDaRota(ag);                    // e o motorista não sai à toa
    return enviarTexto(telefone, `Banho do ${ag.pet.nome} cancelado. Quando quiser, é só chamar.`);
  }
  if (acao === "remarcar") {
    await atualizarStatus(ag.id, "remarcar");
    return enviarTexto(telefone, `Certo. O balcão te chama com os horários do ${ag.pet.nome}.`);
  }
  return filaDoBalcao(telefone, texto);        // o resto é assunto de gente
});

E quando o tutor escreve qualquer outra coisa?

Ele vai escrever: quanto fica a tosa de um shih tzu, se tem ração sem grãos, que a Mel está coçando a orelha. As duas primeiras esperam o balcão. A terceira exige disciplina: orientação clínica, dose de medicamento e triagem de sintoma são trabalho de médico-veterinário, e nenhuma automação deve responder isso, nem com um texto pronto e prudente. O papel do fluxo é sinalizar que aquela conversa espera uma pessoa.

Consentimento, horário e uso responsável

Posso mandar lembrete de vacina para toda a base de tutores?

Depende de quem é o tutor hoje. Lembrete de reforço de um pet que é cliente da casa é comunicação sobre um serviço em curso: a vacina foi aplicada ali e o vencimento está no prontuário. A mesma mensagem para quem passou uma vez há três anos não é lembrete, é prospecção — e prospecção exige consentimento registrado e descadastro que funciona.

Sobre horário: como o leva-e-traz sai cedo, o lembrete da véspera precisa sair na noite anterior, para dar tempo de tirar o pet da rota. Mas noite anterior é entre 18h e 20h, não 23h. Se a rotina falhar e só rodar tarde, segure para as 7h. A régua sanitária, que não tem urgência, cabe no meio da manhã. E o descadastro precisa ser um campo do cadastro do tutor, consultado por toda rotina — foi o que o optOut fez no exemplo em Node.

Sobre bloqueio de número, sem promessa mágica. Mensagem não solicitada aumenta o risco: quando muita gente denuncia ou bloqueia um número, o WhatsApp age. Esse risco existe em qualquer API — inclusive na oficial da Meta — e não pode ser eliminado, só reduzido: fale com quem já é cliente da casa, mantenha volume compatível com o tamanho do petshop, agrupe as pendências em vez de disparar uma mensagem por pet e pare na hora em que alguém pedir para sair. Quem promete que o número nunca será bloqueado não está sendo honesto.

Preço, conexão e o que esperar do painel

Quanto custa para um petshop com um número?

R$ 27 por mês por número conectado, sem cobrança por mensagem: o valor não muda se a casa mandar 40 avisos por dia ou 200. O teto é de ritmo, não de preço: 300 mensagens por dia em cada número conectado, calibrado para o WhatsApp não ler a agenda de banho e de vacina como disparo em massa. O teste é de 14 dias sem cartão e a contagem só começa na primeira conexão — dá para criar a conta, escrever a integração com calma e só depois conectar o número.

Essa previsibilidade importa aqui porque o número de mensagens por cliente é alto: confirmação, lembrete, aviso de retirada e mais a régua sanitária de cada animal. Com cobrança por mensagem, o custo cresceria junto com o movimento até alguém cortar o aviso de retirada — justamente o que mais economiza tempo do balcão.

Como sei que a conexão continua de pé?

O painel mostra o estado de cada conexão e atualiza a cada 10 segundos enquanto a página está aberta. Para não depender de alguém olhar a tela, assine os eventos de conexão no seu webhook: Disconnected avisa a queda e LoggedOut avisa que o número precisa reler o QR Code. E faça alguém conferir no começo do expediente a lista de falhas de envio — foi o que o registrarFalha guardou.

Perguntas frequentes

Como o fluxo lida com um tutor que tem mais de um pet?

A chave de tudo é o pet, não o cliente. A varredura acha pendências por animal, agrupa por tutor antes de enviar e manda uma mensagem só, listando cada pet pelo nome. Na volta, o id do botão carrega agendamento e pet, então a baixa cai no registro certo. Quando a resposta vem em texto e o tutor tem dois compromissos em aberto, a regra não adivinha: pergunta qual ou manda para a fila do balcão.

O banho é quinzenal. Como lembrar sem virar chateação?

Cliente recorrente precisa de menos mensagem, não de mais. Para quem tem banho fixo, o lembrete da véspera basta, e a confirmação inicial pode sair só quando a data mudar. Ofereça um caminho para o tutor pedir menos avisos e respeite essa escolha em todas as rotinas. Repetição idêntica toda quinzena é o que faz alguém silenciar o número da casa.

Dá para fazer triagem de emergência veterinária por mensagem?

Não, e o fluxo deve ser construído para impedir isso. Vômito, convulsão, sangramento, engasgo, atropelamento e apatia são trabalho de médico-veterinário, e um texto automático nessa hora atrasa o atendimento. O que a automação faz é reconhecer o assunto pelo conteúdo da mensagem e colocar a conversa no topo da fila humana.

Posso mandar o resultado do exame do pet pelo WhatsApp?

Mande o aviso de que o resultado saiu e como retirá-lo, não o laudo interpretado. Enviar o PDF é possível entre as formas de envio da API, mas resultado sem leitura de um veterinário gera pânico ou falsa tranquilidade, e as duas coisas voltam como ligação. O melhor arranjo é avisar que está pronto e oferecer o retorno para explicar.

O leva-e-traz atrasou. Dá para avisar automaticamente?

Dá, e é um dos avisos mais bem recebidos. Se o sistema da rota sabe que o motorista está atrasado, ele chama a API com a nova janela e o nome do pet. Vale a mesma regra dos outros envios: uma mensagem por ocorrência, nunca uma a cada dez minutos, e sempre com o horário novo.

A casa tem loja e clínica no mesmo número. Isso atrapalha?

Não, desde que a sua regra saiba separar. O webhook entrega tudo o que chega naquele número, e cabe ao seu código decidir: resposta de botão de banho dá baixa na agenda, assunto de produto vai para a fila comercial e o que parece sintoma vai para a fila da clínica. Se o volume dos dois lados crescer muito, separe em duas conexões, cada uma com o seu token e o seu webhook.

Quanto custa, qual é o limite diário e como funciona o teste?

R$ 27 por mês por número conectado, sem cobrança por mensagem, com limite de 300 mensagens por dia em cada número conectado — proteção contra o bloqueio que atinge quem dispara em rajada. O teste é de 14 dias sem cartão e só começa a contar quando você conecta o primeiro número, então dá para preparar a integração antes de gastar dia de teste. Com dois números, são duas conexões, e cada uma tem a sua própria cota diária.

Outros casos de uso

Pare de perder vaga de banho e data de vacina.

14 dias grátis, sem cartão — a contagem só começa quando você conectar o número. Crie a conta, leia o QR Code e mande o primeiro lembrete hoje.