Agendar uma mensagem parece uma mudança pequena, mas altera o significado do botão “enviar”: a mensagem deixa de representar necessariamente uma decisão tomada naquele instante. Segundo o Xataka.com.br, o WhatsApp testa no Android um recurso que permite escolher data e hora para o envio. Para quem desenvolve sistemas de comunicação, o detalhe interessante não é o seletor de horário; é como preservar privacidade, entrega confiável e uma expectativa clara sobre quando uma mensagem foi realmente enviada.
Como funciona o agendamento de mensagens no WhatsApp
De acordo com informações do WABetaInfo reproduzidas pelo Xataka.com.br, o recurso aparece na versão beta 2.26.40.7 para Android. O fluxo testado é direto: escrevo a mensagem, mantenho o botão de envio pressionado e escolho uma data e um horário. A faixa relatada vai de dez minutos a duas semanas de antecedência.
Depois de agendada, a mensagem fica pendente e pode ser consultada ou excluída nas informações da conversa. O envio deve ocorrer automaticamente, mesmo que o celular de quem a programou esteja offline naquele momento. O teste inclui mensagens de texto, links, fotos e vídeos, em conversas individuais e grupos. Imagens e vídeos, por enquanto, são agendados um de cada vez.
Há uma limitação relevante em grupos: segundo o relato, uma pessoa que entrar no grupo depois que a mensagem for agendada não a receberá. Também não está confirmado se a versão final vai informar ao destinatário que a mensagem foi programada. Uma informação anterior do WABetaInfo indicava que esse aviso não apareceria, mas isso ainda pode mudar.
O detalhe técnico: enviar depois exige uma fila confiável
Quando um aplicativo agenda uma mensagem sem depender de o celular permanecer conectado, não basta deixar um temporizador rodando no aparelho. O sistema precisa manter o agendamento em algum lugar capaz de sobreviver a uma bateria descarregada, a uma reinstalação ou a uma conexão instável. No caso do WhatsApp, os detalhes internos dessa implementação não foram divulgados; portanto, não dá para afirmar exatamente como a fila é construída.
Em sistemas distribuídos, uma abordagem comum é registrar um trabalho com um horário de execução e deixá-lo em uma fila persistente. Um processo de backend busca os trabalhos vencidos e tenta entregá-los. Isso traz problemas conhecidos: o servidor pode reiniciar, a rede pode falhar, uma tentativa pode ser repetida e o mesmo trabalho pode ser processado mais de uma vez.
Por isso, “executar uma vez” não deve ser tratado como garantia. Na prática, filas costumam oferecer entrega pelo menos uma vez: uma tarefa pode ser repetida após uma falha. O sistema precisa de idempotência, ou seja, uma forma de reconhecer que aquela mensagem já foi processada, para evitar envios duplicados.
Criptografia de ponta a ponta e mensagens agendadas
O Xataka.com.br relata que o agendamento testado mantém suporte à criptografia de ponta a ponta. Isso não significa que a mensagem possa ser programada sem decisões importantes de segurança. Se o celular do remetente estiver offline e o envio ainda precisar acontecer, algum componente do sistema terá de conservar informações suficientes para encaminhar a mensagem no horário previsto.
Uma arquitetura possível é armazenar conteúdo já criptografado e entregar o texto cifrado no momento programado. Mas essa é uma explicação técnica geral, não uma descrição confirmada da implementação do WhatsApp. O ponto para quem constrói sistemas é reduzir o que fica armazenado, proteger metadados quando possível e definir claramente quem pode cancelar ou alterar um agendamento.
Também há uma diferença entre criptografar o conteúdo e ocultar todos os metadados. Horário, identificadores de conversa e estado de entrega podem ser necessários para operar o serviço. Criptografia de ponta a ponta protege o conteúdo contra leitura por intermediários, mas não torna automaticamente invisível toda a atividade do sistema.
O horário de envio muda a interpretação da conversa
Hoje, ao ver uma mensagem recebida às 10h, é comum presumir que a outra pessoa decidiu enviá-la perto daquele horário. Com agendamento, ela pode ter escrito o conteúdo na noite anterior. O horário passa a registrar o momento de entrega, não necessariamente o momento em que a mensagem foi composta ou aprovada.
Isso pode ser útil para lembrar um aniversário, enviar uma atualização durante o expediente ou evitar uma notificação de madrugada. Também pode gerar ruído: uma mensagem programada pode chegar depois que o contexto mudou, que o problema já foi resolvido ou que a pessoa deixou de fazer parte do grupo.
Na minha experiência, esse é um problema clássico de produto: a interface mostra um evento simples, mas usuários atribuem a ele um significado maior do que o sistema garante. Se o horário exibido for apenas o de entrega, vale considerar se o produto deve tornar esse fato explícito. A decisão afeta confiança, comunicação e até a forma como as pessoas interpretam uma resposta tardia.
Na Prática: uma fila de agendamento com BullMQ
Para um sistema próprio, eu não criaria um temporizador por mensagem dentro de uma requisição HTTP. Se o processo reiniciar, o temporizador desaparece. Usaria uma fila persistente, validaria o limite de agendamento e enviaria um identificador idempotente ao serviço de entrega.
O exemplo abaixo usa Node.js, BullMQ e Redis. Ele demonstra o agendamento de um payload já criptografado, com janela de dez minutos a quatorze dias, tentativas automáticas e identificador único. Para executar, instale bullmq e ioredis e tenha um Redis disponível. A função de entrega é ilustrativa: ela não conecta ao WhatsApp.
const { Queue, Worker } = require('bullmq');
const IORedis = require('ioredis');
const { randomUUID } = require('node:crypto');
const connection = new IORedis({
host: '127.0.0.1',
port: 6379,
maxRetriesPerRequest: null
});
const queue = new Queue('scheduled-messages', { connection });
const TEN_MINUTES = 10 * 60 * 1000;
const FOURTEEN_DAYS = 14 * 24 * 60 * 60 * 1000;
async function scheduleMessage({ encryptedPayload, sendAt }) {
const delay = new Date(sendAt).getTime() - Date.now();
if (delay < TEN_MINUTES || delay > FOURTEEN_DAYS) {
throw new Error('O horário precisa estar entre 10 minutos e 14 dias.');
}
const id = randomUUID();
await queue.add(
'deliver',
{ id, encryptedPayload },
{
jobId: id,
delay,
attempts: 5,
backoff: { type: 'exponential', delay: 1000 },
removeOnComplete: true
}
);
return id;
}
new Worker('scheduled-messages', async (job) => {
// Troque por um adaptador de entrega autorizado.
// Não registre o conteúdo em texto puro nos logs.
console.log('Entregando mensagem agendada:', job.data.id);
console.log('Payload cifrado recebido:', Boolean(job.data.encryptedPayload));
}, { connection });
scheduleMessage({
encryptedPayload: 'CIPHERTEXT_DE_EXEMPLO',
sendAt: new Date(Date.now() + 15 * 60 * 1000).toISOString()
}).then((id) => console.log('Agendada:', id))
.catch(console.error);
Esse exemplo cobre a fila, não todo o produto. Em produção, eu também implementaria cancelamento, autorização por conversa, expiração, auditoria, métricas de atraso e uma política de retenção. O identificador único ajuda a evitar duplicidade na fila, mas o serviço de destino ainda precisa tratar repetições de forma idempotente. E eu não colocaria texto puro nos logs: logs costumam ter acesso mais amplo e retenção maior do que o banco principal.
Alternativas reais: app, automação e API oficial
O recurso nativo do WhatsApp, se chegar à versão estável, tende a ser a alternativa mais simples para uma pessoa que quer programar uma mensagem ocasional. Aplicativos de lembrete ou automações do sistema podem ajudar, mas muitas vezes apenas notificam o usuário ou dependem de permissões e de o aparelho estar ativo. Isso não é equivalente a uma entrega agendada no servidor.
Para empresas, a situação é diferente. A plataforma oficial do WhatsApp Business permite integrações, mas não deve ser confundida com um botão genérico de agendamento para qualquer conversa. Mensagens iniciadas pela empresa estão sujeitas às regras da plataforma, incluindo consentimento e, fora da janela de atendimento aplicável, o uso de modelos aprovados. Eu evitaria automação baseada em controlar a interface do WhatsApp Web: além de frágil, pode contrariar regras do serviço e comprometer contas.
Erros comuns ao implementar agendamento
- Usar o fuso horário do servidor sem informar isso ao usuário. Grave instantes em UTC, mas preserve o fuso escolhido quando a intenção for “às 9h no horário local”. Horário de verão e mudanças de fuso podem alterar a execução esperada.
- Confiar em um temporizador em memória. Um reinício pode apagar o agendamento. Prefira uma fila persistente ou uma tabela durável com um processo responsável por localizar tarefas vencidas.
- Ignorar duplicatas e retentativas. Uma falha depois do envio, mas antes de confirmar o sucesso, pode levar a uma nova tentativa. Use chaves idempotentes e estados de entrega bem definidos.
- Guardar conteúdo sensível sem necessidade. A fila, os backups e os logs também fazem parte da superfície de risco. Armazene o mínimo e evite registrar mensagens em texto puro.
- Tratar o horário agendado como garantia de entrega exata. Filas podem atrasar por manutenção, congestionamento ou indisponibilidade do serviço. Mostre o horário previsto e diferencie “agendado”, “enviado” e “entregue”.
- Esquecer que o contexto pode mudar. Uma mensagem pode ficar obsoleta antes do envio. Ofereça uma forma simples de revisar, cancelar ou atualizar o agendamento.
Perguntas frequentes sobre mensagens agendadas no WhatsApp
O agendamento já está disponível para todos?
Não segundo as informações citadas pelo Xataka.com.br. O recurso está em teste para alguns participantes do beta de Android. A versão para iPhone estaria em desenvolvimento, mas não havia data anunciada para o lançamento geral.
O celular precisa ficar ligado na hora do envio?
O teste relatado indica que a mensagem pode ser enviada mesmo com o aparelho do remetente offline. A implementação técnica exata não foi detalhada publicamente.
Quem recebe sabe que a mensagem foi agendada?
Isso ainda não está confirmado para a versão final. Uma informação anterior do WABetaInfo indicava que o destinatário não veria essa indicação, mas o comportamento pode mudar antes do lançamento.
É possível agendar fotos, vídeos e mensagens em grupos?
Os testes incluem texto, links, fotos e vídeos, além de conversas individuais e grupos. Imagens e vídeos só poderiam ser agendados um de cada vez. Em grupos, quem entrar depois do agendamento pode não receber aquela mensagem.
Posso usar esse recurso para automatizar mensagens comerciais?
O recurso do aplicativo é voltado ao uso dentro das conversas e não substitui uma integração empresarial. Para automação comercial, use as ferramentas oficiais do WhatsApp Business e respeite consentimento, modelos de mensagem e as regras de atendimento.
Para mim, o valor desse recurso está menos em “mandar depois” e mais em separar o momento de escrever do momento de interromper alguém. Essa separação parece simples na interface, mas exige decisões cuidadosas sobre filas, privacidade, fusos horários, cancelamento e expectativa de entrega — os mesmos problemas que encontro ao projetar qualquer sistema de notificações confiável.
Gostou? Me segue no GitHub e deixa um comentário se tiver dúvida ou quiser aprofundar algum ponto.