> ## Documentation Index
> Fetch the complete documentation index at: https://docs.polymorfa.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Envie um acompanhamento após a entrega ou a leitura

> Envie uma mensagem de acompanhamento pelo mesmo número, contada a partir da entrega ou da leitura da primeira mensagem. Respostas e opt-outs a cancelam.

Uma campanha pode enviar uma mensagem de acompanhamento para cada destinatário.
A espera começa quando o WhatsApp informa que a primeira mensagem foi entregue
ou lida, e o acompanhamento sai do número que enviou a primeira mensagem. Um
destinatário que responde ou faz opt-out nunca o recebe.

> [!NOTE]
>
> Os acompanhamentos estão em beta. Quando o beta for oferecido à sua equipe, um
> proprietário ou administrador da equipe seleciona **Participar** na linha do
> beta de acompanhamentos de campanha por confirmação, na etapa de mensagem do
> builder de campanhas, revisa os termos e seleciona **Aceitar e participar**.
> Enquanto sua equipe não tiver entrado e o beta não estiver disponível para ela,
> solicitações que definem um acompanhamento, ou que lançam ou copiam uma campanha
> que tem um, respondem `403 feature_unavailable`. Remover um acompanhamento de um
> rascunho sempre funciona.

## Como funciona o tempo de espera

* **A entrega inicia a espera.** O acompanhamento vence depois do seu intervalo,
  contado a partir da primeira vez que o WhatsApp informa que a primeira
  mensagem foi entregue.
* **A leitura tem prioridade.** Se o WhatsApp informar que a primeira mensagem
  foi lida antes de o acompanhamento começar a ser enviado, a espera recomeça a
  partir dessa primeira leitura. Leituras posteriores não a alteram de novo.
* **Sem confirmação, sem acompanhamento.** Um acompanhamento nunca é enviado
  apenas por tempo. Destinatários que desativaram as confirmações de leitura
  informam somente entregas, então a espera deles começa na entrega.
* **Um acompanhamento expirado nunca é enviado.** A expiração conta a partir do
  envio da primeira mensagem. Um acompanhamento que não for enviado até lá é
  marcado como `expired` e nunca é enviado.

| Configuração | Padrão | Intervalo permitido |
| - | - | - |
| `delaySeconds` | 86.400 (1 dia) | 60 a 604.800 (7 dias) |
| `expirySeconds` | 604.800 (7 dias) | 86.400 a 2.592.000 (30 dias), e maior que o intervalo de espera |

A [janela de envio](/pt-br/guides/campaigns/send-a-campaign) da campanha também vale:
um acompanhamento que vence fora da janela espera a próxima abertura, desde que
não tenha expirado.

## O que cancela um acompanhamento

* O destinatário responde ao número que enviou a primeira mensagem.
* O número de telefone entra na sua lista de opt-outs, seja por uma palavra-chave
  STOP, pela API, por uma importação ou pelo console. Um START posterior não
  restaura um acompanhamento cancelado.
* Você encerra a campanha.
* O número de envio muda: é renomeado, conectado de novo como uma nova conexão
  ou troca de tipo de envio. Um acompanhamento só é enviado pelo número e pela
  conexão originais.
* Sua equipe sai do beta, ou o beta é desativado.

Pausar uma campanha retém os acompanhamentos. As esperas continuam contando,
então um acompanhamento cuja expiração passa enquanto a campanha está pausada
expira sem ser enviado. Enquanto o número de envio estiver offline ou
desativado, o acompanhamento espera até o número voltar ou até expirar.

Um acompanhamento que já começou a ser enviado nunca é retirado nem enviado
duas vezes. Se o resultado for desconhecido, por exemplo depois de uma queda de
conexão, a Polymorfa o reconcilia a partir do envio original e informa
`outcome_unknown` até conseguir comprovar o resultado.

## Requisitos

* A campanha envia uma única primeira mensagem: uma mensagem composta ou um
  modelo. Uma campanha com uma sequência de mensagens compostas não pode ser
  lançada com um acompanhamento.
* O acompanhamento é um texto (de 1 a 16.384 caracteres, com os mesmos
  marcadores `{{variable}}` da campanha) ou um modelo de mensagem
  (`templateId`). O texto do acompanhamento não pode conter links rastreados
  (`{{link:key}}`).
* Em um número da Cloud API, o acompanhamento segue a mesma regra da janela de
  24 horas de qualquer mensagem composta: fora dela, um acompanhamento em texto
  falha. Use um modelo aprovado para alcançar destinatários fora dessa janela.
* O acompanhamento preenche as variáveis da mesma forma que a primeira mensagem,
  incluindo o mapeamento de variáveis da campanha. Um destinatário sem valor
  para uma variável que não tem fallback inline não recebe o acompanhamento; ele
  termina como `failed` com o motivo `missing_variable`. O console aceita apenas
  variáveis que a primeira mensagem ou o seu mapeamento já usam.
* Você só pode adicionar, alterar ou remover o acompanhamento enquanto a
  campanha for um rascunho não lançado. O lançamento o congela.
* Testes A/B e variações ponderadas funcionam com acompanhamentos: a primeira
  mensagem de cada destinatário inicia a espera dele.

A espera, as confirmações e os cancelamentos são gratuitos. Cada acompanhamento
enviado é uma mensagem de campanha, com as mesmas verificações de saldo, plano
e segurança da primeira mensagem.

## Adicione um acompanhamento

### Use o console

Na etapa de mensagem do builder de campanhas, ative **Enviar um acompanhamento**,
escreva a mensagem ou escolha um modelo de mensagem e defina quanto tempo esperar
e quando parar de esperar. A etapa de revisão mostra o acompanhamento antes do
lançamento.

### Use a API

Envie `followUp` ao criar ou atualizar um rascunho:

```bash theme={null}
curl -X PATCH "https://api.polymorfa.com/messaging/projects/$PROJECT_SLUG/campaigns/$CAMPAIGN_ID" \
  -H "Authorization: Bearer $POLYMORFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "followUp": {
      "delaySeconds": 86400,
      "expirySeconds": 604800,
      "message": { "type": "text", "text": "Hi {{first_name}}, still interested? Reply YES to hold your size." }
    }
  }'
```

Para enviar um modelo de mensagem, use
`"message": { "type": "template", "templateId": "<template UUID>" }`. Envie
`"followUp": null` para remover o acompanhamento. Na Platform API, envie o mesmo
campo para `POST /platform/campaigns` ou `PATCH /platform/campaigns/{campaignId}`.

Um acompanhamento que a API recusa responde `400 invalid_parameter` com
`param: "followUp"`. Lançar uma campanha que combina um acompanhamento com uma
sequência de mensagens responde `409 state_conflict`.

## Leia os resultados dos acompanhamentos

Os resultados dos acompanhamentos são contados separadamente da primeira
mensagem. As contagens e os webhooks da primeira mensagem mantêm o seu
significado.

### Análises da campanha

`GET /messaging/projects/{projectSlug}/campaigns/{id}/analytics` e
`GET /platform/campaigns/{campaignId}/analytics` retornam um objeto `followUps`:

| Campo | Significado |
| - | - |
| `total` | Destinatários com acompanhamento |
| `waiting` | Aguardando uma confirmação de entrega ou de leitura |
| `scheduled` | Com o horário definido a partir de uma confirmação e aguardando o envio |
| `sending` | Sendo enviados agora |
| `sent` | Enviados |
| `delivered`, `read` | Acompanhamentos enviados que o WhatsApp informou como entregues ou lidos |
| `replied` | Acompanhamentos enviados que o destinatário respondeu |
| `cancelled`, `expired`, `failed` | Encerrados sem envio |
| `unknown` | Envio iniciado, resultado ainda não comprovado |
| `nextDueAt` | Envio agendado mais próximo, em milissegundos Unix, ou null |

Todas as contagens são zero para uma campanha sem acompanhamento.

### Destinatários

Cada destinatário de `GET /messaging/projects/{projectSlug}/campaigns/{id}/recipients`
ou `GET /platform/campaigns/{campaignId}/recipients` tem um objeto `followUp`,
ou null quando nenhum acompanhamento foi criado para esse destinatário. Ele
inclui `status`, `anchorKind` (`delivered` ou `read`), `firstDeliveredAt`,
`firstReadAt`, `dueAt`, `expiresAt`, `sentAt`, `deliveredAt`, `readAt`,
`repliedAt`, `reason` e `commandId`. Os horários estão em milissegundos Unix.

`status` é um destes valores: `waiting_receipt`, `scheduled`, `sending`, `sent`,
`cancelled`, `expired`, `failed` ou `outcome_unknown`. `reason` explica um
cancelamento, uma expiração, uma falha ou uma espera, por exemplo `reply`,
`opt_out`, `wait_expired`, `campaign_stop`, `sender_changed`,
`feature_withdrawn`, `send_window`, `sender_unavailable` ou `missing_variable`.

A exportação CSV de destinatários adiciona as colunas `followUpStatus`,
`followUpAnchor`, `followUpDueAt`, `followUpExpiresAt`, `followUpSentAt`,
`followUpReadAt`, `followUpRepliedAt`, `followUpReason` e `followUpCommandId`.

### Histórico da campanha

`GET /platform/campaigns/{campaignId}/events` registra cada mudança de estado de
um acompanhamento como um evento `followup.<status>`, como `followup.scheduled`
ou `followup.cancelled`, com o destinatário, o número de envio e o motivo. Ele
nunca contém o texto da mensagem nem números de telefone. As mesmas mudanças de
estado aparecem nos [Logs](/pt-br/console/audit-logs) do Console como linhas
`campaign.followup.<status>`. Os acompanhamentos não adicionam eventos de
webhook.

## Saída do beta

Sair do beta, ou a desativação do beta, cancela os acompanhamentos que ainda não
começaram a ser enviados. Envios já iniciados terminam e nunca são repetidos.
Entrar de novo depois não restaura acompanhamentos cancelados. Os resultados
continuam legíveis, e você ainda pode remover o acompanhamento de um rascunho.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.