Assistência técnica não perde dinheiro no reparo. Perde no tempo morto entre etapas: a OS parada porque o cliente ainda não decidiu se aprova, e o aparelho consertado que ninguém vem buscar. As duas ocupam a mesma prateleira e nenhuma delas depende do técnico.
O aparelho fica parado porque a decisão do cliente é econômica, não técnica: ele calcula se um reparo de R$ 380 compensa num aparelho que já pensava em trocar. Essa conta ele adia — mais ainda quando aprovar exige ligar para a loja em horário comercial. Uma API de WhatsApp encurta essa distância. O zapon expõe uma API REST simples — header token, JSON entrando e saindo — que o seu sistema de OS chama como chamaria qualquer serviço. Abaixo: o fluxo, os endpoints em cURL e Node, a régua de retirada e o cuidado de quem guarda o aparelho de outra pessoa.
A dor: a OS parada e a prateleira cheia
Por que a OS fica parada esperando aprovação de um conserto barato?
Porque a decisão não é sobre o conserto, é sobre o aparelho: o cliente pesa consertar contra trocar, e essa conta é adiável. Enquanto adia, o aparelho ocupa bancada. Um laudo com valor, prazo e garantia, respondível com um toque, encurta a espera porque tira o único trabalho que sobrava para ele.
- A OS aguardando aprovação. O técnico já gastou o tempo do diagnóstico. Se o cliente some, esse tempo virou custo — e, sem taxa de laudo combinada na entrada, virou prejuízo.
- O aparelho pronto que ninguém busca. Consertado, testado, embalado. Ele fica ali porque o cliente se acostumou a viver sem ele: comprou outro, usou o antigo, resolveu de outro jeito. A urgência do dia da entrada evaporou.
Por que o aparelho pronto vira custo para a loja?
Porque a prateleira é finita e a responsabilidade não. Enquanto o aparelho está com a assistência, ela responde pela guarda: espaço, organização por protocolo e risco em caso de furto ou dano. Um aparelho parado dois meses consome o lugar de três OS que girariam no período. E quanto mais tempo passa, mais difícil fica localizar o cliente.
Ligar para cada cliente não resolve?
Resolve caro. Trinta aparelhos parados são trinta ligações, com ocupado, caixa postal e recado que ninguém retorna — feitas pelo mesmo balconista que atende quem está na loja. E a ligação não deixa registro do que foi dito, enquanto a mensagem enviada fica gravada com data e hora e serve depois como prova de que a loja tentou avisar.
O que a assistência precisa ter para começar
O que preciso para avisar cliente de OS por WhatsApp automaticamente?
Três coisas: um número de WhatsApp da loja, uma conta no zapon com esse número conectado por QR Code ou código de pareamento, e um sistema que saiba o estado de cada OS. Não é preciso servidor próprio, conta na Meta, aprovação de template nem aplicativo instalado no balcão.
- Um número. Use o da fachada. A API opera o mesmo número e não substitui o aparelho: o balcão continua atendendo. Com duas lojas, uma conexão por loja.
- Uma conexão no zapon. Cada conexão é um número e tem o seu
token, credencial de todas as chamadas daquele número. Conecta-se lendo o QR Code no painel ou por código de pareamento.
- Quem dispara. Ou o seu sistema de OS chama os endpoints direto, ou uma ferramenta de automação lê a base e chama a API por HTTP.
Preciso trocar o número que a loja já divulga?
Não, e trocar é ruim para você: o número da fachada é o que o cliente reconhece como legítimo. Assistência técnica é alvo constante de golpe por mensagem, e a defesa mais barata é o cliente saber que a loja só fala por um número. Nunca use o celular pessoal de um técnico — quando ele sai, o histórico das OS sai junto.
Como o meu sistema de OS entra nisso?
Se ele roda código próprio, chama a API direto: uma requisição na abertura da OS, outra quando o laudo fica pronto, outra quando o status vira "pronto para retirada". Se é fechado, leia os dados por fora — relatório, banco, planilha — e dispare dali. O que a API precisa saber é sempre o mesmo: telefone e texto.
O fluxo da OS, da bancada à retirada
Como funciona o fluxo de uma OS avisada por WhatsApp do começo ao fim?
Cinco etapas: (1) o aparelho entra na bancada e o cliente recebe o protocolo com o prazo do laudo; (2) sai o laudo e o orçamento com botões de aprovar, recusar e falar com o técnico; (3) se o prazo mudar, ele é reavisado; (4) quando fica pronto, recebe o valor final e o que trazer; (5) se não buscar, entra a régua de retirada, escalonada e registrada.
1. O que enviar quando o aparelho entra na bancada?
O protocolo, o aparelho identificado, o defeito como o cliente relatou e o prazo do laudo. E uma frase que evita discussão: ainda não há orçamento, o que existe é previsão de diagnóstico. Expectativa mal ancorada aqui vira cobrança amanhã. Se a loja cobra taxa de laudo quando o cliente recusa o reparo, é aqui que isso precisa estar escrito, porque foi agora que ele assinou o termo de recebimento.
2. Como mandar o laudo e o orçamento com botões?
O laudo em linguagem que o cliente entende — o que o técnico encontrou, não o código da peça —, o valor, o prazo do reparo e a garantia do serviço. Três botões resolvem o caso: aprovar, não consertar, falar com o técnico. O terceiro existe porque parte dos clientes não recusa por preço, recusa por dúvida. E quem recusa precisa ler, na mesma mensagem, que o aparelho fica disponível para retirada e por quanto tempo. 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.
3. O que fazer quando o prazo do reparo muda?
Reavisar. Peça sob encomenda que não chegou, fornecedor atrasado, reparo mais complexo do que o laudo apontou: o cliente aceita prazo novo, não aceita silêncio. A regra é curta — reavisar prazo é obrigação, narrar cada etapa interna é ruído. Ele não precisa saber que a placa foi para o teste de bancada. Precisa da data nova e do motivo, em uma frase.
4. Como avisar que o aparelho está pronto para retirada?
Valor final, horário da loja, o que trazer (comprovante do protocolo e documento com foto) e o lembrete de que o aparelho será testado com o cliente presente, antes de sair do balcão. Esse teste na frente do cliente é o que fecha a garantia sem discussão, e dizer isso na mensagem já reduz o retorno de "cheguei em casa e não funcionava".
5. Como funciona a régua de retirada quando ninguém vem buscar?
Escalonada, com espaçamento crescente e tom mudando a cada degrau: um aviso poucos dias depois de pronto, outro por volta de dez dias citando o prazo de guarda combinado, e um terceiro perto do fim desse prazo, em tom formal. Cada envio guarda o identificador da mensagem, e é esse registro que transforma a régua em prova de tentativa de contato.
A régua de retirada: o aparelho pronto que ninguém busca
Quantas vezes devo avisar o cliente de que o aparelho está pronto?
Três, espaçadas e diferentes entre si. A primeira é um lembrete simples. A segunda, por volta de dez dias, repete o valor e cita o prazo de guarda. A terceira, perto do fim do prazo, é formal e registra que a loja tentou. Mais do que isso vira insistência, e insistência custa denúncia.
A régua não é disparo em lote sobre a lista de OS antigas. É uma rotina diária que calcula, para cada aparelho pronto, quantos dias se passaram, e envia só quem cai no degrau daquele dia. Aparelho retirado sai da régua no mesmo instante.
régua de retirada escalonada — Node
// retirada.js — roda uma vez por dia, às 10h
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;
}
// degraus da régua: dias desde que a OS ficou pronta -> texto do aviso
const DEGRAUS = {
3: (os) => `${os.cliente}, o seu ${os.aparelho} (OS ${os.numero}) está pronto e testado.\n` +
`Valor na retirada: R$ ${os.valor}. Atendemos de segunda a sexta, das 9h às 18h.`,
10: (os) => `${os.cliente}, o seu ${os.aparelho} da OS ${os.numero} continua aqui, pronto desde ${os.prontoEm}.\n` +
`Valor: R$ ${os.valor}. Combinamos guarda de ${os.diasGuarda} dias no termo de recebimento.`,
25: (os) => `${os.cliente}, terceiro aviso sobre a OS ${os.numero} (${os.aparelho}), pronta desde ${os.prontoEm}.\n` +
`O prazo de guarda combinado termina em ${os.fimDaGuarda}. Procure a loja ou responda por aqui.`
};
const pausa = (ms) => new Promise((r) => setTimeout(r, ms));
const diasDesde = (d) => Math.floor((Date.now() - new Date(d)) / 86400000);
for (const os of await ordensProntas()) {
if (os.status !== "pronto" || os.retiradoEm || os.cliente.optOut) continue; // já buscou, já saiu
const degrau = diasDesde(os.prontoEm);
const montar = DEGRAUS[degrau];
if (!montar) continue; // só dispara no dia exato do degrau
if (await jaAvisado(os.id, degrau)) continue; // rodou 2x hoje? manda uma só
try {
const id = await enviarTexto(os.cliente.telefone, montar(os));
await registrarTentativa(os.id, degrau, id); // o Id é a prova do aviso
} catch (e) {
await registrarFalha(os.id, degrau, String(e)); // vira tarefa do balcão
}
await pausa(5000); // não despeje a prateleira de uma vez
}
Como registrar cada tentativa de contato?
Guardando o Id devolvido em cada envio, junto do número da OS, do degrau e do horário. Serve para duas coisas. A operacional: rodar a rotina duas vezes no mesmo dia não duplica a mensagem, e o balcão responde "avisamos nos dias 12, 19 e 3" olhando um campo. E a que importa quando o assunto esquenta — a mensagem enviada, com data e conteúdo, é registro de que a loja tentou contato antes de qualquer providência.
Quando parar de insistir e o que fazer com o aparelho abandonado?
Pare no terceiro aviso. Depois dele o caso deixa de ser rotina automática e vira decisão de gestão: telefonar, mandar carta, escalar para o dono. Mensagem semanal sobre o mesmo aparelho não aumenta a chance de retirada e aumenta a de o número ser denunciado. E o que a loja pode fazer com aparelho não retirado depende do termo de recebimento assinado na entrada — prazo de guarda, aviso prévio e consequência precisam estar lá. Esta página não dá orientação jurídica; ela resolve o passo anterior, que é garantir aviso repetido e registrado.
Os endpoints que a assistência usa na prática
Quais endpoints da API do zapon uma assistência técnica precisa?
Três dão conta do fluxo: POST /chat/send/text para protocolo, prazo e régua de retirada, POST /chat/send/buttons para o orçamento respondido com um toque e POST /user/check para conferir telefones de OS antigas. Todos usam a base https://api.zapon.dev e o header token. São 49 endpoints publicados, mas a OS vive nesses três.
A autenticação é um header só, token: não é Authorization, não é Bearer, não há OAuth. Trate-o como a chave do cofre — quem tem o token envia mensagem em nome da loja, e é isso que um golpista precisaria para parecer legítimo.
Como enviar o aviso de entrada na bancada pela API?
Um POST em /chat/send/text com dois campos obrigatórios: Phone, o número em formato internacional só com dígitos, e Body, o texto.
entrada na bancada — cURL
curl -X POST https://api.zapon.dev/chat/send/text \
-H "token: SEU_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"Phone": "5511999999999",
"Body": "Marcelo, recebemos o seu aparelho.\n\nOS: 9218\nAparelho: notebook, série 8QK4T21\nDefeito relatado: não liga, sem sinal de carga\nPrazo do laudo: até 21/09\n\nAinda não há orçamento — o valor só sai depois do diagnóstico na bancada. Assim que o laudo ficar pronto, enviamos por aqui. Este é o único número da loja: nunca pedimos senha nem pagamento por outro canal."
}'
A resposta traz o identificador da mensagem no WhatsApp:
resposta da API
{
"code": 200,
"success": true,
"data": {
"Details": "Sent",
"Id": "7A41C9D0E2B84F13A6C5D8901E7B4432",
"Timestamp": "2026-09-18T10:04:31-03:00"
}
}
Grave esse Id no histórico da OS. Ele prova qual mensagem saiu e em que momento, e é o que impede reenvio duplicado quando a rotina roda de novo.
Como oferecer aprovar, não consertar e falar com o técnico em botões?
O endpoint /chat/send/buttons envia botões de resposta rápida. Cada um carrega um id definido por você, e é ele que volta no webhook. Coloque o número da OS aí dentro: a resposta chega amarrada à ordem certa, sem casar telefone e sem interpretar texto livre.
orçamento do reparo — botões
POST https://api.zapon.dev/chat/send/buttons
token: SEU_TOKEN
{
"Phone": "5511999999999",
"Body": "Marcelo, o laudo da OS 9218 ficou pronto. O problema é a placa de carga, que queimou; a bateria está boa.\n\nReparo: R$ 380 (peça e mão de obra)\nPrazo: 4 dias úteis após a aprovação\nGarantia do serviço: 90 dias sobre a peça trocada\n\nSe preferir não consertar, sem problema: o aparelho fica disponível para retirada por 30 dias, com a taxa de laudo de R$ 60.",
"Footer": "Assistência Exemplo — OS 9218",
"Buttons": [
{ "id": "os9218|aprovar", "text": "Aprovar" },
{ "id": "os9218|recusar", "text": "Não consertar" },
{ "id": "os9218|falar", "text": "Falar com técnico" }
]
}
O rótulo do botão é curto por natureza do WhatsApp — até vinte caracteres. Toda a informação que sustenta a decisão vai no Body. Se precisar de mais opções, como reparo completo e reparo parcial, o /chat/send/list entrega um menu em lista.
Como conferir os telefones das OS antigas antes da primeira régua?
Antes de rodar a régua em cima do estoque parado, limpe a base: cadastro de assistência acumula telefone fixo, número antigo e dígito faltando de OS de dois anos atrás. O POST /user/check recebe uma lista e diz quais têm conta no WhatsApp — os que não têm viram tarefa de telefone, não de mensagem.
checar telefones das OS antigas — cURL
curl -X POST https://api.zapon.dev/user/check \
-H "token: SEU_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "Phone": ["5511999999999", "5511888888888"] }'
// resposta
{ "code": 200, "success": true, "data": { "Users": [
{ "Query": "5511999999999", "IsInWhatsapp": true, "JID": "[email protected]" },
{ "Query": "5511888888888", "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, "digitando", marcar como lido e histórico. Fora do trio principal, os úteis aqui são imagem, para a foto da peça queimada junto do laudo, e documento, para o PDF da OS e do termo de garantia.
A resposta do cliente: webhook, regra e ação
Como recebo no meu sistema a aprovação do orçamento?
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 de OS. A API não sabe o que é uma ordem de serviço; sabe que uma mensagem chegou.
Qual é o formato do evento de mensagem recebida?
O corpo traz o tipo do evento e a mensagem completa. Assim chega quem respondeu por texto:
webhook — mensagem recebida
{
"type": "Message",
"event": {
"Info": {
"ID": "3EB0A91C77D45B2E8F60",
"Chat": "[email protected]",
"Sender": "[email protected]",
"IsFromMe": false, "IsGroup": false,
"PushName": "Marcelo Prado",
"Timestamp": "2026-09-21T15:47:02-03:00"
},
"Message": { "conversation": "pode consertar" }
}
}
// quando ele toca num botão, muda só o bloco Message:
"Message": { "buttonsResponseMessage": {
"selectedButtonID": "os9218|aprovar",
"Response": { "SelectedDisplayText": "Aprovar" }
} }
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 da loja envia também gera evento, com IsFromMe igual a true: ignore, ou o balconista respondendo um cliente dispara a sua automação.
Como gravar a aprovação e agendar a retirada de quem recusou?
A aprovação precisa de carimbo de tempo — é ela que autoriza abrir o aparelho e comprar a peça. A recusa precisa de outra coisa: colocar a OS na fila de retirada, porque aquele aparelho vira prateleira no minuto seguinte. E qualquer mensagem que peça ou ofereça dado sensível sai do fluxo automático e vai para uma pessoa.
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();
// dado sensível nunca entra na automação: senha, desbloqueio, código, pagamento
const SENSIVEL = /senha|pin|desbloqueio|padr[ãa]o|c[óo]digo|pix|cart[ãa]o/;
if (SENSIVEL.test(texto)) return filaDoBalcao(telefone, texto, "sensivel");
const os = botao ? await buscarOS(botao.split("|")[0].replace("os", ""))
: await osAbertaPorTelefone(telefone);
if (!os) return filaDoBalcao(telefone, texto, "sem os");
const acao = botao ? botao.split("|")[1]
: /^(aprovo|aprovado|pode consertar|pode fazer)$/.test(texto) ? "aprovar"
: /^(n[ãa]o consertar|n[ãa]o compensa|deixa pra l[áa])$/.test(texto) ? "recusar" : null;
if (acao === "aprovar") {
await registrarAprovacao(os.id, { // carimbo de tempo é o que vale depois
canal: "whatsapp", telefone,
evento: info.ID, em: info.Timestamp, valor: os.orcamento
});
await moverParaFila(os.id, "em_reparo");
return enviarTexto(telefone,
`Orçamento aprovado, obrigado. Prazo de ${os.prazoDias} dias úteis a partir de hoje. Avisamos por aqui quando estiver pronto.`);
}
if (acao === "recusar") {
await registrarRecusa(os.id, { evento: info.ID, em: info.Timestamp });
await agendarRetirada(os.id, 30); // entra na régua de retirada
return enviarTexto(telefone,
`Certo, não vamos consertar. O aparelho fica disponível para retirada por 30 dias, de segunda a sexta, das 9h às 18h. Taxa de laudo: R$ ${os.taxaLaudo}.`);
}
return filaDoBalcao(telefone, texto, "falar com tecnico"); // o resto é assunto de gente
});
E quando o cliente escreve qualquer outra coisa?
Ele vai escrever, e quase sempre é dúvida técnica: "vai perder minhas fotos?", "a peça é original?". Não responda isso automaticamente — pergunta técnica respondida errado por robô custa mais caro que a demora. O que a automação não reconhecer vira pendência com telefone e texto, e o técnico responde no próprio WhatsApp da loja. O papel da automação é sinalizar quem espera resposta, não conduzir o atendimento.
Dados dentro do aparelho: o que a mensagem nunca pode pedir
Por que a mensagem da assistência exige um cuidado que outros ramos não exigem?
Porque o aparelho na sua bancada tem a vida do cliente dentro: fotos, mensagens, contas de banco, senhas salvas. Isso muda o que a loja pode escrever e o que nunca pode pedir. Senha, PIN, padrão de desbloqueio e código recebido por SMS não trafegam por mensagem — em nenhuma hipótese, nem "só para testar".
A regra prática não tem exceção: desbloqueio se combina presencialmente, com o cliente digitando ele mesmo no balcão. Pedir por escrito cria três problemas de uma vez: a senha fica gravada numa conversa que várias pessoas da loja leem, a assistência passa a responder por tudo o que acontecer naquela conta, e o cliente aprende que "a assistência pede senha por mensagem" — o roteiro exato do golpe que ele vai receber depois.
Como escrever o aviso de retirada sem virar isca de golpe?
O golpe mais comum contra cliente de assistência é uma mensagem de outro número dizendo que o aparelho está pronto e pedindo pagamento antecipado por PIX. Ele funciona porque copia a linguagem da loja. Três hábitos derrubam a eficácia dele:
- Nunca mande link de pagamento sem que o cliente espere. Cobrança de surpresa é o formato do golpe. Pagamento antecipado se combina no balcão.
- Informe o canal oficial no primeiro contato. Na mensagem de entrada na bancada, diga qual é o único número da loja e que ela nunca pede senha nem pagamento por outro canal.
- Confirme valor e forma de pagamento sempre pelo mesmo número. Quem recebeu algo de outro número tem uma instrução única: responder na conversa que já existe e perguntar.
Quem consegue ler a conversa depois da mensagem enviada?
Ela fica no WhatsApp da loja: quem tem acesso ao aparelho ou aos aparelhos conectados vê o histórico inteiro, com endereço, valor e número de série de todo mundo. Isso merece o cuidado da chave da loja — bloqueio de tela e retirada dos aparelhos conectados quando alguém deixa a equipe. O mesmo vale para o texto que você guardar no banco.
Consentimento, horário e uso responsável
Posso mandar mensagem para toda a base de clientes antigos?
Para falar de uma OS que aquele cliente abriu, sim: é comunicação de serviço, ele deixou o telefone para isso. Campanha de "traga seu aparelho antigo" e oferta de acessório são marketing, e exigem consentimento registrado e descadastro que funciona. Misturar as duas no mesmo canal transforma o número da loja num número denunciado.
- Só fale da OS que existe. Protocolo, laudo, orçamento, mudança de prazo, aparelho pronto, retirada e garantia o cliente espera. Anúncio de serviço novo, não.
- Nunca peça dado sensível. Senha, PIN, padrão de desbloqueio, código de verificação, número de cartão. Reconheceu esse assunto na mensagem recebida, tire do fluxo e chame uma pessoa — foi o que a checagem
SENSIVEL do exemplo em Node fez.
- Horário de loja. Régua de retirada de manhã, orçamento no horário comercial. Mensagem de assistência às 22h assusta, e cliente assustado denuncia. Se a rotina só for rodar às 23h, segure para o dia seguinte.
- Descadastro que funciona. Quem pede para não receber para de receber em todas as rotinas — o papel do
optOut no exemplo da régua. O pedido chega em qualquer palavra, então alguém precisa olhar a fila de exceções todo dia.
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 com boas práticas: falar de OS com quem tem OS, manter volume e ritmo compatíveis com uma assistência de verdade, parar no terceiro aviso de retirada, responder quem responde e respeitar quem pediu 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 uma assistência com um número?
R$ 27 por mês por número conectado, sem cobrança por mensagem: o valor é o mesmo se a loja mandar 40 ou 4.000 mensagens. A conta tem cota de 300 mensagens diárias por número, teto alto para o vaivém de ordens de serviço da bancada e uma proteção contra o volume que faz o WhatsApp bloquear. O teste é de 14 dias sem cartão e a contagem só começa na primeira conexão — dá para criar a conta, integrar com a sua OS e só depois conectar o número.
Essa previsibilidade pesa mais aqui do que parece. Uma OS bem tratada gera de cinco a sete mensagens: entrada, laudo, mudança de prazo, pronto e até três avisos de retirada. Com cobrança por mensagem, o cálculo vira "vale a pena mandar o terceiro aviso?", e a resposta racional é cortar justamente o aviso que esvazia a prateleira.
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 webhook: Disconnected avisa a queda e LoggedOut avisa que o número precisa reler o QR Code. E quando um envio falhar, registre numa lista visível — o que o registrarFalha fez — e faça alguém olhar essa lista todo dia. Aviso de retirada que não saiu precisa virar tarefa, não silêncio.
Perguntas frequentes
Como aviso o cliente da garantia do serviço pelo WhatsApp?
Escreva a garantia em duas mensagens do fluxo: no orçamento, para pesar na decisão de aprovar, e no aviso de aparelho pronto, para ficar registrada antes da retirada. Diga o prazo, o que está coberto e o que não está — peça trocada costuma ter cobertura diferente do resto do aparelho. Como a conversa fica gravada com data, ela vira a referência que o balcão consulta quando o cliente volta meses depois.
A régua de retirada resolve o problema do aparelho abandonado?
Resolve a maior parte, que é esquecimento, e organiza o resto. O que ela garante é aviso repetido, espaçado e registrado, com o identificador de cada mensagem guardado na OS. O que ela não faz é decidir o destino do aparelho não retirado: isso depende do termo de recebimento assinado na entrada e da orientação do advogado da loja. Esta página não dá orientação jurídica.
E quando a peça não tem previsão de chegada?
Avise assim mesmo, dizendo que não há previsão e quando você vai reavisar. Silêncio é pior do que prazo ruim: o cliente sem notícia liga, cobra e desconfia. Combine uma data de retorno mesmo sem data de chegada, e ofereça a saída honesta de cancelar o reparo e retirar o aparelho como está.
O cliente aprovou pelo botão e depois contestou o valor. O que fazer?
Mostre o registro. Quando a aprovação chega por botão, o webhook entrega o identificador da OS, o telefone, o horário e o texto exato do botão tocado, e o seu sistema grava tudo com carimbo de tempo. Some a isso a mensagem original do orçamento, que trazia valor, prazo e garantia por escrito na mesma conversa. Por isso o valor vai no corpo da mensagem, e não só no rótulo do botão.
Posso pedir a senha do aparelho por mensagem para testar o reparo?
Não. Senha, PIN, padrão de desbloqueio e código recebido por SMS não trafegam por mensagem em nenhuma hipótese. O desbloqueio se combina presencialmente, com o cliente digitando ele mesmo no balcão. Pedir por escrito deixa a senha gravada numa conversa que várias pessoas leem, joga para a loja a responsabilidade pelo que acontecer naquela conta e ensina o cliente a atender o roteiro do golpista.
Um cliente recebeu mensagem falsa se passando pela loja. Como reagir?
Responda pela conversa que já existe, confirmando que aquela cobrança não é da loja, e reforce a regra: valor e forma de pagamento só valem pelo número oficial, e a loja nunca pede PIX antecipado nem senha por mensagem. Depois, mova o aviso para o começo do fluxo, na mensagem de entrada na bancada, dizendo qual é o único número da loja. Cliente avisado antes não cai.
Quanto custa, quantas mensagens por dia e dá para testar antes?
R$ 27 por mês por número conectado, sem cobrança por mensagem, com cota de 300 mensagens por dia por número — mais do que a fila de OS de uma assistência movimentada consome, e o bastante para segurar os picos que colocam o número em risco. 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 integrar com o seu sistema de OS antes de o relógio começar a correr.