Pular para o conteúdo

Retenção das mensagens

O Turbo Notify leva as suas mensagens até o WhatsApp e traz as respostas de volta. Ele não precisa guardar o que foi dito, e por isso guarda o conteúdo por pouco tempo: 1 hora por padrão, ou o prazo mais longo que você escolher dentro do seu plano. A mensagem em si (status, datas e horas, participantes, recibos, reações) fica bem mais tempo, 12 meses, sem o conteúdo: só o conteúdo expira.

Os dois prazos

  • Conteúdo (por plano, em horas): o texto, a legenda, a referência da mídia, a transcrição de áudio e o preview. Enquanto o prazo não acaba, você lê tudo pela API. Quando ele acaba, o Turbo Notify apaga esse conteúdo do banco em até 15 minutos. Não é um filtro de leitura: o dado deixa de existir.
  • Registro da mensagem (12 meses, igual em todo plano): que a mensagem existiu, o status final, quando foi enviada ou recebida e quem participou. Esse prazo não muda com o plano e não é ajustável. Uma mensagem fora do prazo de conteúdo continua consultável e operável pela API, só que sem o conteúdo e com content_expired: true.

Prazo de conteúdo por plano

Todo plano começa em 1 hora. Nos planos que oferecem mais de uma opção, você escolhe o prazo em Cobrança, no dashboard (abre em nova aba) .

PlanoPrazos disponíveisPadrão
Gratuito1 hora1 hora
Lobo Solitário1 ou 7 horas1 hora
Empresarial1, 7, 24 ou 72 horas1 hora
Personalizado1, 7, 24 ou 72 horas1 hora

Um prazo mais longo dá mais tempo para ler o conteúdo de novo pela API (por exemplo, para um atendente revisar uma conversa no fim do dia). Se você guarda o que precisa no seu próprio sistema assim que recebe o webhook, 1 hora basta.

Quando você muda de plano

  • Para um plano com prazo maior: a sua escolha continua a mesma. As novas opções aparecem em Cobrança e você decide se quer usá-las.
  • Para um plano com prazo menor: quando a mudança entra em vigor, a retenção passa para o maior prazo que o novo plano oferece sem passar da sua escolha. Exemplos: 72 ou 24 horas no Empresarial viram 7 horas no Lobo Solitário; 7 horas no Lobo Solitário viram 1 hora no Gratuito. O conteúdo além do novo prazo é apagado no processamento seguinte.
  • Uma mudança agendada para o fim do ciclo só muda a retenção no dia em que entra em vigor. Até lá, o prazo que você escolheu continua valendo.

Um único prazo para consulta, listagem, webhook e polling

O prazo de conteúdo vale, com o mesmo número, para todos os caminhos pelos quais você recupera o conteúdo:

  1. GET /v1/numbers/{ref}/messages/{id} devolve a mensagem completa dentro do prazo. Depois dele, devolve a mesma mensagem com content_expired: true, preview e text vazios e os blocos de mídia e de conteúdo estruturado como {"kind": "unavailable", "reason": "expired"} (veja Conteúdo expirado).
  2. GET /v1/numbers/{ref}/messages continua listando a mensagem, com content_expired: true e preview vazio. O remetente e o grupo continuam na mensagem, e ela segue nos filtros group_id e contact_id.
  3. GET /v1/events continua devolvendo os eventos (o registro de eventos fica 90 dias), com o conteúdo dos eventos message.* (preview, transcrição) já apagado.
  4. A cópia guardada de uma entrega de webhook já concluída (entregue ou que esgotou as novas tentativas) tem o conteúdo apagado no mesmo prazo.

A única exceção é a entrega de webhook ainda não concluída: se o seu endpoint ainda não respondeu com sucesso, o Turbo Notify guarda o conteúdo dessa entrega até ela ser entregue ou até acabarem as novas tentativas, no máximo 72 horas. Assim uma instabilidade do seu lado não faz você receber uma notificação sem o conteúdo. Depois de concluída, a entrega segue o prazo do seu plano.

Depois do prazo: só o conteúdo expira

Toda rota que recebe um {message_id} continua funcionando depois que o conteúdo expira, tanto na forma aninhada quanto na rota plana equivalente do número principal:

OperaçãoRota aninhada
Consultar mensagemGET /v1/numbers/{ref}/messages/{id}
Consultar statusGET /v1/numbers/{ref}/messages/{id}/status
Histórico de recibosGET /v1/numbers/{ref}/messages/{id}/receipts
Listar reaçõesGET /v1/numbers/{ref}/messages/{id}/reactions
Listar respostas de um eventoGET /v1/numbers/{ref}/messages/{id}/responses
ResponderPOST /v1/numbers/{ref}/messages/{id}/reply
EditarPOST /v1/numbers/{ref}/messages/{id}/edit
ApagarPOST /v1/numbers/{ref}/messages/{id}/delete
ReagirPOST /v1/numbers/{ref}/messages/{id}/react

Editar e apagar para todos continuam sujeitos aos prazos que o próprio WhatsApp aceita para essas ações. Um texto ou uma legenda só pode ser editado até 15 minutos depois do envio: depois disso a API responde 400 edit_window_expired. Nos demais casos fora do prazo, o pedido é aceito e o desfecho chega como message.edit.failed ou message.delete.failed.

As respostas dos convidados a um evento de calendário seguem o prazo das reações: ficam 12 meses junto com a mensagem. O conteúdo do próprio evento (nome, descrição, local) segue o prazo de conteúdo do seu plano.

Uma resposta a uma mensagem cujo conteúdo expirou continua encadeada na conversa; o balão de citação vai sem o texto original. Uma mensagem só responde 404 not_found quando não existe, é de outra organização ou é de outro número.

Cópias técnicas e cópias de segurança

  • Cópias técnicas de processamento (as filas internas por onde as mensagens passam entre a API e o WhatsApp) expiram em até 6 horas.
  • Cópias de segurança do banco de dados são rotativas e guardadas por 30 dias. Elas servem só para recuperação de desastre e nunca são usadas para devolver conteúdo a um cliente.

Mídia

O Turbo Notify não guarda arquivos de mídia:

  • Com armazenamento próprio configurado, o arquivo vai direto para o seu bucket assim que a mensagem chega. O que o Turbo Notify guarda é só a referência a esse arquivo, e ela é apagada junto com o resto do conteúdo. O arquivo continua no seu bucket, sob as regras de ciclo de vida que você definir: o Turbo Notify nunca apaga nada dele.
  • Sem armazenamento próprio, o arquivo não é guardado: ele passa pela memória dos nossos servidores só para ser processado e é descartado. O bloco de mídia (image/video/audio/document/sticker) vem com kind: "unavailable" e um setup_hint que mostra como configurar.

E a lei?

O Marco Civil da Internet obriga o Turbo Notify a guardar os próprios registros de acesso à aplicação por 6 meses (guardamos por 12). Essa obrigação não alcança o conteúdo das mensagens que você troca, e por isso ele fica só pelo prazo acima. O WhatsApp e a Meta guardam os registros deles segundo as regras deles.

Implicações práticas

  • Configure um webhook e guarde no seu sistema o que importa para o seu negócio (o message_id, o status final, o texto, se você precisar dele depois). A API não é um arquivo das suas conversas.
  • O status, os recibos e as reações continuam consultáveis por 12 meses; só o conteúdo some no prazo.
  • Se você reenvia manualmente pelo dashboard uma entrega de webhook já concluída depois do prazo, ela sai com o conteúdo apagado, como a consulta por id.
  • Aumentar o prazo ou mudar para um plano maior não recupera conteúdo que já foi apagado.
  • As cotas de mensagens e de contatos por ciclo são outro assunto: veja Cota e uso.

Consulta de status

Para verificar o status de uma mensagem, veja Status. Ele continua disponível por 12 meses, também depois que o conteúdo expira.