CRPRO HubEntrar no painel

Erro 131047 no WhatsApp: janela de 24 horas fechada

O 131047 aparece quando a empresa manda uma mensagem livre — texto, mídia, botões, qualquer coisa que não seja template — para um contato que não falou com ela nas últimas 24 horas. É a regra da janela de atendimento da Meta, e costuma pegar quem está integrando pela primeira vez: a mesma chamada funciona no teste e é recusada no dia seguinte.

O que a Meta diz

Na tradução oficial: “mais de 24 horas se passaram desde que o destinatário respondeu pela última vez ao número do remetente”. A solução que a Meta indica é uma só: enviar um template.

Descrição na tabela de códigos da MetaMore than 24 hours have passed since the recipient last replied to the sender number.

Como a janela funciona

  • Ela abre quando o contato manda uma mensagem ou liga para o número da empresa.
  • Dura 24 horas e reinicia a cada nova mensagem ou ligação do contato.
  • Com ela aberta, a empresa manda o que quiser: texto, mídia, botões, listas.
  • Com ela fechada, só sai template aprovado pela Meta.

A janela é contada a partir da mensagem do contato, não da sua. Responder não estica o prazo: se o contato escreveu às 10h de segunda e você respondeu às 18h, a janela fecha às 10h de terça do mesmo jeito.

Por que integrações caem nele

  • O teste mascara a regra. Quem testa acabou de mandar mensagem para o número, então a janela está sempre aberta durante o desenvolvimento.
  • Atendimento que responde no dia seguinte. O contato escreveu na sexta à noite, o atendente responde na segunda pela API — e a resposta volta recusada.
  • Follow-up agendado. Lembrete, pesquisa de satisfação ou recuperação de carrinho disparados dias depois precisam ser template.
  • Coexistência. O que a equipe responde pelo celular não abre nem estende a janela da API. E quem escreveu antes da conexão do número não tem janela aberta: a primeira resposta pela API precisa ser template.

A Meta registra ainda um problema conhecido: em casos raros, a empresa recebe a mensagem do contato e mesmo assim não consegue responder dentro da janela. Se o erro aparecer com a janela claramente aberta, guarde o message_id e o horário para o suporte.

Como resolver

Envie um template aprovado. Quando o contato responder, a janela reabre e a conversa volta a ser livre. O passo a passo, com criação, aprovação e envio, está em enviar template. Para não depender do erro, decida o tipo da mensagem antes de enviar, guardando a hora da última mensagem de cada contato:

Escolher entre texto livre e template
// Guarde a hora da ultima mensagem de cada contato a partir do
// message.received (occurred_at) e decida o tipo antes de enviar.
const JANELA_MS = 24 * 60 * 60 * 1000
const margem = 5 * 60 * 1000 // fila e relogio: nao arrisque o ultimo minuto

function corpoDoEnvio(contato, texto) {
  const aberta = Date.now() - contato.ultimaMensagemEm < JANELA_MS - margem
  if (aberta) return { to: contato.wa_id, type: 'text', text: { body: texto } }
  return {
    to: contato.wa_id,
    type: 'template',
    template: { name: 'retomar_atendimento', language: { code: 'pt_BR' } },
  }
}

A resposta dentro da janela também tem custo próprio desde outubro de 2026, depois de uma franquia mensal por número; os detalhes estão em preços.

Como o 131047 aparece no CRPRO Hub

O CRPRO Hub não bloqueia o envio por causa da janela: quem decide é a Meta. A Meta não informa se este código vem na resposta da chamada ou depois, por webhook, e recomenda tratar as duas vias. Na chamada, o envio responde 502:

Recusa na chamada
{
  "error": {
    "code": "META_SEND_FAILED",
    "message": "A Meta recusou o envio da mensagem.",
    "details": {
      "meta_code": 131047
    }
  }
}

Depois do 202, a recusa chega no message.status com status: "failed". O objeto de erro também traz title e message, cujo texto a Meta não publica para este código:

message.status com 131047
{
  "id": "7a2c9e10-4b3d-4f5e-8a6b-1c2d3e4f5a6b",
  "event": "message.status",
  "channel_id": "9f6a9c1e-2f3d-4a5b-8c7d-1e2f3a4b5c6d",
  "occurred_at": "2026-10-03T12:00:00.000Z",
  "data": {
    "message_id": "wamid.EXEMPLO456",
    "status": "failed",
    "recipient_id": "5521999999999",
    "conversation": null,
    "pricing": null,
    "errors": [
      {
        "code": 131047,
        "error_data": {
          "details": "More than 24 hours have passed since the recipient last replied to the sender number."
        },
        "href": "https://developers.facebook.com/documentation/business-messaging/whatsapp/support/error-codes/"
      }
    ]
  }
}
Ao receber um 131047, não repita o mesmo envio: mande o template e guarde a mensagem livre para depois que o contato responder.

Perguntas frequentes

Uma ligação abre a janela de 24 horas?

Sim. Segundo a Meta, a janela de atendimento começa quando o contato manda uma mensagem ou faz uma ligação, e reinicia a cada nova mensagem ou ligação dele.

Mensagem enviada pelo celular, em coexistência, abre ou estende a janela?

Não. Na coexistência, a janela vale só para o que sai pela Cloud API; mensagens enviadas pelo aplicativo WhatsApp Business não abrem, não estendem e não afetam a janela da API.

Qual template usar depois do 131047?

Um template aprovado da categoria certa: utilidade para continuar um atendimento ou avisar sobre um pedido, marketing para conteúdo promocional. Quando o contato responder, a janela reabre e a conversa segue livre.

Erros parecidos

  • 132001 — O template não existe nesse idioma ou não está aprovado.
  • 132000 — O número de variáveis enviadas não bate com o template.
  • 131026 — A mensagem não pôde ser entregue ao contato.
  • 131049 — O WhatsApp segurou um template de marketing pelo limite por contato.

A lista completa, com o que fazer em cada caso, está em códigos de erro da Meta. Os erros do próprio CRPRO Hub, como META_SEND_FAILED, estão em erros da API.

Fontes

Fonte: códigos de erro da Cloud API, janela de atendimento, documentação da Meta conferida em 3 de outubro de 2026.