Escolha uma superfície
Dois caminhos públicos chegam ao mesmo mecanismo de campanhas, com as mesmas verificações, os mesmos erros e os mesmos resultados.
A leitura exige
campaigns:read. Criar, lançar, reagendar, pausar, retomar,
interromper e excluir exigem campaigns:manage. Os exemplos abaixo usam a
Messaging API; a Platform API recebe o ID da campanha no caminho. Na Platform
API, uma chave de API da equipe indica o projeto com projectId em toda
requisição de campanha, e um token de projeto fica vinculado ao próprio projeto
e omite esse campo.
Crie a campanha com os destinatários
Use o Console
No builder de campanhas, escolha um público, importe um CSV ou cole números de telefone. O resumo da importação mostra os destinatários mantidos, os duplicados e as linhas inválidas. Para números colados, o resumo continua visível depois da importação, para que você corrija os números de origem antes de continuar. Selecione os números que vão enviar a campanha. Números Free e Standard aparecem desativados na seleção, com uma ação de upgrade, e você pode salvar o rascunho antes de fazer o upgrade. Cada número mostra o tipo de envio. Depois que você seleciona um, os números de outro tipo de envio ficam desativados, porque uma campanha envia por um único tipo. Em Intervalo entre mensagens, escolha uma predefinição de Rápido (de 1,8 a 5 segundos entre mensagens) a Muito lento (de 2 a 5 minutos), ou escolha Personalizado para definir você mesmo a taxa e o atraso aleatório. A tabela de predefinições de intervalo lista os valores da API por trás de cada predefinição. Aguarde Rascunho salvo antes de lançar. Se o salvamento falhar, o builder mostra o motivo e marca as alterações como não salvas. Uma restrição de envio também aparece na etapa de revisão; resolva-a antes de lançar. A etapa de revisão verifica de novo o público selecionado. Se a contagem de destinatários mudou desde que o rascunho foi salvo, revise a nova contagem e confirme-a antes de lançar. O builder verifica mais uma vez quando você lança; se a contagem mudar durante a revisão, ele para e pede que você confirme o público atualizado. Escreva na mensagem qualquer instrução de opt-out. O builder não acrescenta um rodapé nem envia um pedido de consentimento separado. Revise as configurações de palavras-chave da sua equipe antes de enviar. O agendamento usa o fuso horário local do seu navegador. Confira o fuso ao lado da data e da hora e de novo na etapa de revisão antes de agendar. Para enviar apenas em horários definidos, ative Enviar apenas nos horários definidos na etapa de agendamento. A opção começa com segunda a sexta, das 09:00 às 18:00, no fuso horário do seu navegador. A etapa de revisão e a página da campanha mostram a janela. Consulte Escolha quando a campanha envia.Use a API
Envie os destinatários na requisição, aponte para um público comrecipientListId ou faça as
duas coisas.
recipients aceita no máximo 1.000 entradas e funciona no modo tudo ou
nada: uma entrada inválida faz a requisição ser recusada e é identificada, para
que uma campanha nunca seja criada sem alguém por omissão silenciosa. Um número
repetido na requisição é mantido uma vez. Valem as mesmas regras de número e de
variável dos membros de público.
senderConfig.sessionIds fixa os números que enviam a campanha. Um rascunho
pode fixar números de qualquer plano. Quando você lança, todo número fixado
precisa estar conectado e em um plano que inclua Campanhas. Uma campanha que
não fixa nenhum número usa os números conectados e sem restrições do projeto
cujos planos incluem Campanhas, com um único tipo de envio: números do WhatsApp
quando houver algum pronto, senão números da Cloud API, senão números de teste.
Para enviar de um conjunto específico, fixe esse conjunto.
Adicione mais destinatários enquanto a campanha ainda é um rascunho, 1.000 por
requisição:
added, recipientCount, duplicateCount,
invalidCount e até 20 invalidRows, e ignora um número que já está na
campanha. Depois que a campanha é lançada, o acréscimo retorna 409.
Envie um Idempotency-Key para que um acréscimo possa ser repetido com
segurança após um timeout ou uma resposta perdida. Depois que um acréscimo dá
certo, uma nova tentativa com a mesma chave e o mesmo corpo em até 24 horas não
é aplicada de novo: ela retorna as contagens daquele acréscimo com
Idempotent-Replayed: true, mesmo que a campanha tenha sido lançada nesse
meio-tempo. Um acréscimo que falhou não deixa registro, então uma nova
tentativa com a mesma chave o executa de novo. O acréscimo da Platform API
aceita o mesmo cabeçalho.
Edite o rascunho
Envie apenas os campos que você quer mudar. Na Messaging API,name,
recipientListId, senderConfig, scheduledAt, sendWindow, templateId
e variableMapping podem ser atualizados; qualquer outro campo é recusado com
400. templateId e variableMapping só mudam enquanto a campanha é um
rascunho não lançado; depois do lançamento, um valor diferente retorna 409.
Um scheduledAt não nulo precisa ser um inteiro em milissegundos Unix, de zero
até o máximo de Date do JavaScript; um valor fora desse intervalo retorna
400.
PATCH /platform/campaigns/{campaignId}, além de messagesArray (consulte
Envie várias mensagens). Depois do lançamento, um
messagesArray diferente também retorna 409.
Para enviar a outro público, atualize o rascunho com outro recipientListId.
Depois que a campanha é lançada, o público fica fixo e a atualização retorna
409. Mudar o público de um rascunho substitui os destinatários existentes;
depois da mudança, adicione os destinatários individuais que você ainda quiser.
Um rascunho salva qualquer seleção de números, em qualquer plano; o lançamento
a verifica. Depois do lançamento, um novo senderConfig precisa passar pelas
verificações de lançamento e pode retornar 402 campaigns_not_entitled ou
400 invalid_parameter. Um scheduledAt diferente só é aceito antes do
lançamento. Para mover um início agendado que ainda não começou,
reagende-o.
Envie várias mensagens
Uma campanha envia um modelo aprovado ou até 10 mensagens compostas, em ordem. Defina as mensagens compostas commessagesArray na requisição de criação ou
atualização de campanha da Platform API. Cada mensagem tem um texto source e
pode ter também media, buttons e um footer. delayAfterSec é a espera
mínima, de 0 a 86.400 segundos, depois que a mensagem anterior foi aceita. Uma
campanha com modelo envia apenas o modelo.
Um modelo precisa estar completo e, em números da Cloud API, aprovado para
todos os números de envio. Números com dispositivos vinculados e números de
teste o enviam como uma mensagem comum. Modelos de autenticação (código de uso
único) não podem ser enviados por uma campanha; o lançamento retorna
400 invalid_parameter em templateId.
"templateId": null faz um rascunho que tinha um modelo passar a usar as
mensagens compostas; enquanto um modelo estiver definido, ele é a única
mensagem enviada.
Anexe mídia com uma media.url https pública, que o número de envio baixa no
momento do envio. O lançamento retorna 400 invalid_parameter, indicando a
mensagem, quando um anexo não tem url.
{{name}} insere uma variável do destinatário; {{name | fallback}} usa o
fallback quando a variável está ausente ou vazia. Uma mensagem sem texto,
mídia, botão de link ou de chamada, rodapé ou formulário de fluxo não é
enviada. Em números do WhatsApp, botões de link e de chamada são enviados como
linhas de texto e as respostas rápidas ficam de fora.
Toda mensagem passa pelas mesmas verificações da primeira: ritmo, limites por
número, cota de aquecimento, indicador de digitação e histórico de contato do
destinatário. Antes de cada mensagem, a Polymorfa verifica de novo a lista de
opt-outs da equipe, então um destinatário que responde STOP não recebe mais
nada. O ritmo, os limites e uma campanha pausada podem tornar uma espera mais
longa que delayAfterSec, nunca mais curta. Cada mensagem seguinte é enviada
pelo número que enviou a primeira. Se esse número não puder enviar, a mensagem
aguarda até que ele possa.
Como os resultados de várias mensagens são contados
status, sentAt, deliveredAt, readAt e externalMessageId do
destinatário descrevem a primeira mensagem. sentCount, failedCount e
skippedCount da campanha contam cada destinatário uma vez.
Uma mensagem seguinte que falha recebe novas tentativas conforme as
configurações de novas tentativas da campanha, como uma primeira mensagem. As
classes de falha
conversation_window_closed, recipient_not_on_whatsapp e
template_not_approved não recebem novas tentativas, porque outra tentativa
falharia da mesma forma.
A campanha termina quando todos os destinatários foram resolvidos e nenhuma
mensagem está aguardando. nextMessageAt em um destinatário mostra quando a
próxima mensagem dele está prevista.
Para enviar mais uma mensagem apenas depois que a primeira foi entregue ou
lida, e nunca a quem respondeu ou fez opt-out, adicione um
acompanhamento. Uma campanha com acompanhamento
envia uma única primeira mensagem.
Em um número da Cloud API, o WhatsApp entrega uma mensagem que não é um
modelo aprovado somente dentro de 24 horas após a última mensagem do
destinatário para esse número. Fora dessa janela, cada mensagem composta
falha com
conversation_window_closed. Uma campanha que precisa alcançar
pessoas fora dessa janela envia um modelo aprovado.Preencha as variáveis de modelo e de mensagem
Cada{{variable}} é preenchida por destinatário. Defina variableMapping
para indicar uma variável do destinatário e um fallback opcional:
templateId e variableMapping quando você
cria uma campanha ou atualiza um rascunho.
Cada variável é preenchida nesta ordem:
- O valor do destinatário para
source, ou para a variável de mesmo nome quandosourceé omitido. Um valor vazio ou só com espaços conta como nenhum valor. - O
fallbackdo mapeamento. - Um fallback escrito em uma mensagem composta como
{{first_name | there}}.
{{phone}} é preenchido com o número do destinatário, a menos que o
destinatário tenha a própria variável phone não vazia, que é usada no lugar.
Os valores de exemplo do modelo nunca são enviados aos destinatários.
Um mapeamento tem no máximo 50 variáveis. Os nomes usam letras, dígitos, _,
. ou -, e um fallback tem de 1 a 1.024 caracteres. Um mapeamento inválido
retorna 400 invalid_parameter, e error.param indica o campo. templateId e
variableMapping só podem mudar enquanto a campanha é um rascunho não lançado;
depois, um valor diferente retorna 409.
No Console, escolha Usar um modelo na etapa Mensagem, selecione o
modelo e defina o campo do destinatário e o fallback de cada variável. A prévia
mostra a mensagem que um destinatário recebe.
Varie a mensagem por peso
Para não enviar o mesmo texto a todos os destinatários, dê a uma campanha de duas a cinco alternativas emmessageVariations. Cada destinatário recebe uma
alternativa, escolhida por peso, e a mantém se o envio for repetido. Ao
contrário de um teste A/B, nada é comparado e nenhuma vencedora é escolhida.
A variação ponderada está em beta. Um proprietário ou administrador da equipe
inscreve a equipe na página Campanhas do Console. Até que a equipe esteja
inscrita e o beta seja oferecido a ela, definir messageVariations, lançar uma
campanha que as tenha e retomar uma campanha assim retornam
403 feature_unavailable.
keyé única na campanha: uma letra minúscula, seguida de até 15 letras minúsculas, dígitos,_ou-.weighté um inteiro de 1 a 99, e os pesos somam 100.sourcetem de 1 a 4.096 caracteres.- Todas as alternativas precisam usar os mesmos marcadores
{{variable}}e os mesmos fallbacks em linha, para que os mesmos destinatários se qualifiquem qualquer que seja a alternativa recebida. - Uma campanha com alternativas envia apenas as alternativas. Ela não pode ter também mensagens compostas, um modelo ou variantes A/B.
- As alternativas são enviadas apenas de números do WhatsApp vinculados.
Selecione-os com
senderConfig.sessionIds. Uma campanha cujos números passam a ser números oficiais (Cloud API) é pausada antes do próximo envio. - As alternativas só mudam enquanto a campanha é um rascunho não lançado. Envie
nullpara removê-las. Depois do lançamento, uma atualização retorna409. - Envios de teste de um rascunho com alternativas retornam
409 state_conflict.
Envie um teste
Antes de lançar, envie uma cópia do conteúdo de um rascunho para o seu próprio telefone. Um teste passa pelas mesmas verificações de renderização, envio e segurança da campanha lançada, a partir do número que você escolher. Ele envia todas as mensagens do rascunho em ordem, sem os intervalos entre elas, e para na primeira mensagem que não for enviada. Ele renderiza o conteúdo com os valores de exemplo selecionados para o teste, então a mensagem de cada destinatário pode ser diferente onde os valores dele forem diferentes. A chave de API precisa decampaigns:manage e campaigns:read, porque o teste pode
usar valores de exemplo armazenados dos destinatários.
- Destinatário do teste.
toprecisa ser o telefone de um número conectado à sua equipe, em qualquer projeto. Vincule o seu próprio telefone a um projeto para receber testes nele. Um destinatário do teste que está na lista de opt-outs da equipe é recusado. - Número de envio.
sessionIdprecisa estar conectado e em um plano que inclua Campanhas, o mesmo requisito do lançamento. Quando a campanha seleciona números comsenderConfig.sessionIds, teste a partir de um deles. - Variáveis. Sem
sampleRecipientIdnemvariables, o primeiro destinatário da campanha preenche as variáveis, ou o primeiro membro do público quando o rascunho não tem destinatários próprios. Indique um destinatário comsampleRecipientIde substitua valores específicos comvariables. O teste aplica o mapeamento de variáveis e os fallbacks da campanha a todas as mensagens do rascunho. - Estatísticas. Um teste não é um destinatário da campanha. Ele não altera as contagens nem as análises da campanha e não envia webhooks de campanha.
- Limites. Uma equipe pode enviar 20 testes por hora, e no máximo 5 por hora para um mesmo destinatário do teste.
Na Platform API, envie o mesmo corpo para
POST /platform/campaigns/{campaignId}/test-send, com projectId quando usar
uma chave de API da equipe. No Console, escolha Enviar teste na etapa de
revisão do builder ou na página de um rascunho.
Escolha quando a campanha envia
Por padrão, uma campanha envia em qualquer horário do dia. DefinasendWindow
na criação, ou em uma atualização pela Messaging API ou pela Platform API, para
enviar apenas nos dias da semana e nos horários locais escolhidos:
Um destinatário cuja vez chega fora da janela não falha nem é ignorado. O
destinatário continua
queued e é enviado depois que a janela abrir de novo,
no ritmo normal da campanha. A campanha continua running, as contagens não
mudam e nenhum evento de destinatário é enviado durante a espera. Uma campanha
cuja janela está fechada para todos não envia nada até a janela abrir. As
mudanças de horário de verão seguem as regras do fuso horário.
Com recipientTimeZone definido como true, o fuso de cada destinatário é:
- o fuso na variável do destinatário indicada por
timeZoneVariable, quando for um nome IANA válido; - senão, o fuso do país do número de telefone, quando o país inteiro usa um
único deslocamento de UTC. Por exemplo, números
+44usamEurope/London. Países com vários deslocamentos, como Estados Unidos, Brasil e México, não são resolvidos dessa forma; - senão, o
timeZoneda janela.
timeZoneVariable a cada membro do público ou destinatário da requisição, por
exemplo "variables": { "timeZone": "Asia/Tokyo" }. Se essa variável tiver
mais de 5.000 valores distintos não vazios, o lançamento retorna
400 invalid_parameter com error.param definido como
sendWindow.timeZoneVariable. Corrija os valores do público antes de lançar.
Uma janela inválida retorna 400 invalid_parameter, e error.param indica o
campo, como sendWindow.hours[1]. Envie "sendWindow": null para remover a
janela. Você pode mudar ou remover a janela enquanto a campanha é um rascunho
ou está pausada. Uma campanha em andamento retorna 409 state_conflict: pause-a,
atualize a janela e retome-a. Se uma campanha pausada ainda tiver envios em
andamento, a edição retorna 409 state_conflict; tente novamente depois que
esses envios forem concluídos. Um envio travado que não chegou ao provedor pode
ser recuperado em uma tentativa de edição posterior. Se a entrega pode ter
começado, a edição retorna 409 state_conflict enquanto esse envio está em
andamento. Tente novamente depois que ele for concluído. Se o resultado dele se
perder, o destinatário acaba se tornando um envio com falha e resultado
desconhecido; a campanha não o envia de novo. A nova janela vale para os
destinatários restantes.
Lance a campanha
scheduledAt, ou imediatamente quando nenhum horário de
início é definido. No lançamento, a Polymorfa copia o público para a campanha,
ignora os números na lista de opt-outs da equipe
e define recipientCount a partir dos destinatários que existem.
Em uma campanha agendada, esse retrato é feito quando a requisição de
lançamento é aceita. Adições, remoções ou alterações posteriores no público de
origem não mudam os destinatários dessa campanha. Os opt-outs são verificados
de novo antes do envio.
O lançamento verifica a seleção de números salva na campanha em relação aos
planos dos números naquele momento, então um número que mudou de plano depois
que o rascunho foi salvo é verificado no novo plano. Todo número fixado precisa
estar conectado e em um plano que inclua Campanhas, e todos os números fixados
precisam usar um único tipo de envio:
Para enviar a todos, adicione fallbacks ou mapeie outra variável do
destinatário e lance de novo. Para lançar sem esses destinatários, envie
"skipMissingVariables": true no corpo do lançamento. Eles são marcados como
skipped, com lastError missing_variable, antes de a primeira mensagem ser
enviada, e contados em skippedCount. Cada mensagem é verificada de novo pelas
mesmas regras quando é enviada, então nenhum destinatário recebe uma mensagem
com uma variável vazia; um destinatário ignorado nesse momento emite
campaign.recipient_skipped com reason missing_variable.
Criar, lançar, reagendar, pausar, retomar, interromper e enviar teste aceitam o
cabeçalho Idempotency-Key na Messaging API; a Platform API o aceita em
lançar, reagendar, pausar, retomar, interromper e enviar teste. Uma chave
repetida não inicia um segundo lançamento nem um segundo envio de teste. Uma
nova tentativa depois que a primeira requisição deu certo retorna
409 idempotency_completed em vez da resposta original. Uma nova tentativa
enquanto a primeira requisição ainda está em execução retorna
409 idempotency_in_progress, e uma chave reutilizada com uma requisição
diferente retorna 409 idempotency_conflict. Consulte
Erros.
Exija aprovação para envios grandes
Um proprietário ou administrador da equipe pode exigir aprovação para qualquer lançamento que enviaria para mais destinatários do que um limite. No Console, defina isso em Campanhas > Configurações. Pela API:409 campaign_approval_required. A mensagem de erro indica a solicitação de
aprovação que foi registrada. Lançar de novo com a campanha inalterada retorna
a mesma solicitação. Um lançamento feito por um proprietário ou administrador
conectado ao Console não precisa de aprovação.
Liste as solicitações de uma campanha, das mais recentes para as mais antigas:
action retida (launch, resume ou reschedule)
e os reasons: audience_threshold, agent_request ou ambos. Cada
solicitação tem um status:
Um lançamento, uma retomada ou um novo horário de início solicitado por um
agente de IA pelo servidor MCP hospedado sempre registra uma solicitação com o
motivo
agent_request, qualquer que seja o limite. Consulte
Servidor MCP.
Um proprietário ou administrador aprova ou rejeita uma solicitação na página da
campanha no Console. Aprovar lança a campanha na mesma etapa, com todas as
verificações de lançamento, o horário de início solicitado e os destinatários
contados para a solicitação. Se o conteúdo, os números de envio, o agendamento,
o modelo ou os destinatários da campanha mudaram depois da solicitação, nada é
enviado e a resposta é 409 campaign_approval_stale; lance de novo para
solicitar uma nova aprovação. Uma solicitação pode ser aprovada uma vez. Um
horário de início solicitado que já passou inicia a campanha quando ela é
aprovada.
Reagende um lançamento agendado
Uma campanha lançada aguarda oscheduledAt antes de enviar qualquer coisa.
Até lá, você pode antecipar ou adiar esse início, ou começar a enviar agora,
sem interromper e lançar a campanha de novo:
POST /platform/campaigns/{campaignId}/reschedule, com projectId no corpo
quando usar uma chave de API da equipe.
scheduledAt é obrigatório. Defina-o como um horário Unix em milissegundos,
ou como null para começar a enviar agora. Um horário que não está no futuro
também inicia a campanha agora. A resposta é a campanha com o novo
scheduledAt e o operationId da execução de entrega. Enviar de novo o
horário de início atual não muda nada.
Reagendar muda apenas quando a campanha começa. Os destinatários e as
mensagens continuam como estavam quando você a lançou. Cada envio ainda é
verificado quando a campanha começa, da mesma forma que um início que nunca foi
movido. Cada alteração aceita é registrada como uma entrada rescheduled no
histórico da campanha e envia um evento
campaign.rescheduled.
Depois que uma campanha é lançada, uma atualização não muda o
scheduledAt.
Uma atualização que envia um scheduledAt diferente retorna 409; em vez
disso, reagende a campanha.
No Console, abra uma campanha agendada e escolha Reagendar. Escolha uma
nova data e hora no fuso horário do seu navegador, ou escolha Iniciar
agora.
Acompanhe o envio
Liste os destinatários na ordem da fila, com paginação por cursor.limit vai
de 1 a 100, com padrão 25.
page.nextCursor até page.hasMore ser false. Filtre com status
(queued, sending, sent, delivered, read, failed ou skipped), com
reason ou com os dois.
messagesSent, nextMessageAt e sequenceError informam o progresso de uma
campanha com várias mensagens.
Motivos de falha
failureReason é o motivo estável pelo qual um destinatário não recebeu o
envio, ou pelo qual a última tentativa dele não deu certo. É null quando nada
deu errado. Nunca contém o conteúdo da mensagem, o número do destinatário nem
um erro bruto. Filtre por ele com reason.
Novos códigos podem ser adicionados, então trate um valor desconhecido como
other. O campo legado lastError retorna o mesmo código normalizado de
failureReason; erros brutos armazenados não são retornados.
Exporte os destinatários como CSV
GET .../recipients/export retorna CSV na ordem da fila. Exportações sem
filtro retornam até 1.000 linhas por requisição (limit, padrão 1.000). Cada
página começa com uma linha de cabeçalho. Quando restam mais linhas, envie o
cabeçalho de resposta Polymorfa-Next-Cursor como cursor para obter a
próxima página.
Os filtros de status e de motivo de falha retornam uma página de até 1.000
destinatários correspondentes. Exportações filtradas não podem usar cursor, e
limit, se enviado, precisa ser 1000; qualquer outro valor retorna 400. Se
mais de 1.000 destinatários corresponderem, a API retorna 409 sem um arquivo
parcial. Para resultados maiores, exporte todos os destinatários e filtre o CSV
localmente.
GET /platform/campaigns/{campaignId}/recipients/export?projectId=....
No Console, o painel Destinatários da campanha filtra por status e motivo,
e Baixar CSV salva até 1.000 destinatários filtrados pela mesma exportação.
Para resultados filtrados maiores, limpe os filtros, baixe todos os
destinatários e filtre o arquivo localmente.
As análises da campanha informam o funil e o tempo de resposta:
Uma resposta conta uma vez por destinatário. Ela é atribuída ao destinatário
mais recente para o qual o número que respondeu recebeu um envio, no mesmo
número de envio, em até 7 dias depois desse envio.
Para contar quem abre um link na mensagem, consulte
Rastreie links de campanha.
Inscreva um webhook de projeto em
campaign.recipient_delivered,
campaign.recipient_read e campaign.recipient_replied para acompanhar cada
destinatário depois do envio, quando sua equipe estiver inscrita no beta de
eventos de engajamento de destinatários e o lançamento gradual dele estiver
ativado. As cargas do webhook incluem os IDs da campanha e do destinatário, o
número de envio e o ID da mensagem original, quando disponível. O evento de
resposta inclui o tempo decorrido, mas não o corpo da mensagem. Se sua equipe
tem acesso ao beta do stream de eventos com credencial de servidor, as entradas
dele expõem o tipo e o horário do evento sem esses campos do destinatário. Use
a API de Campanhas para obter o status do destinatário a partir de uma
notificação do stream. Tokens de cliente não podem abrir esse stream.
A Platform API também lista o histórico do ciclo de vida da campanha, do mais
recente para o mais antigo:
kind (launched, rescheduled, paused, resumed,
cancelled, completed ou failed) e o horário em que aconteceu. Uma entrada
rescheduled tem payload.previousScheduledAt e payload.scheduledAt. Uma
entrada failed tem payload.reason: "all_recipients_failed". A campanha
falha quando todos os destinatários terminam como falha. Se algum destinatário
recebeu o envio ou foi ignorado, a campanha é concluída e as contagens mostram
esses resultados.
Pause, retome e interrompa
skipped com failureReason
campaign_cancelled e é contado uma vez em skippedCount. A campanha passa
para cancelling e depois para cancelled quando os envios já em andamento
terminam. Uma campanha sem execução de entrega ativa fica cancelled na hora,
e operationId é null. A interrupção nunca é bloqueada por suspensão nem
pela perda do direito do plano, então uma campanha restrita sempre pode ser
interrompida.
No Console, Interrupção solicitada confirma que sua solicitação foi aceita.
A página de detalhes é atualizada até a campanha chegar a Cancelada e
mostra os resultados finais dos destinatários. Os envios já em andamento podem
terminar durante essa transição.
Uma campanha sem execução de entrega ativa não pode ser pausada nem retomada.
Interrompa-a, duplique-a e lance a cópia.
Arquive ou exclua
Arquive uma campanhacompleted, failed ou cancelled quando quiser manter
o histórico dela e marcá-la como arquivada. Uma campanha que ainda está
iniciando, em andamento, pausada ou sendo interrompida não pode ser arquivada.
Excluir remove uma campanha draft, completed, failed, cancelled ou
archived. Qualquer outra campanha, e um rascunho que ainda tem um lançamento
agendado, é recusada com 409: interrompa-a primeiro e depois exclua-a. Se uma
campanha concluída ou com falha ainda tiver um evento final a entregar, excluir
ou arquivar retorna 409. Arquivar e excluir também aguardam o fim da execução
de entrega. Tente novamente depois que o evento e a execução terminarem.
Reenvie o que falhou
POST .../requeue devolve os destinatários com falha para queued. Defina
includeSkippedError como true para devolver à fila também os destinatários
ignorados. Um número na lista de opt-outs da equipe nunca é reservado para
envio, qualquer que seja o status do destinatário.
Se a entrega não puder começar, o destinatário continua na fila para uma nova
tentativa automática. Se um envio pode ter chegado ao WhatsApp, mas o resultado
não pode ser confirmado, o destinatário não recebe o envio de novo
automaticamente.