POST /api/messages/send abre a constatação bulk_outside_campaigns no número
que o executa. Por isso, mensagens para pessoas que não escreveram primeiro
pertencem a uma campanha, onde o ritmo, os limites por número, a lista de
opt-outs e a verificação de contato são aplicados para você. Consulte
Constatações e
Envie uma campanha.
Esta página descreve cada verificação pela qual passa um envio de campanha e a
recusa exata que você recebe quando uma delas falha. Cada código está listado em
Erros.
As duas superfícies públicas executam essas verificações. Uma campanha se
comporta da mesma forma tenha sido criada e lançada por
/messaging/projects/{projectSlug}/campaigns ou por /platform/campaigns.
Campanhas é um recurso do Pro
As campanhas enviam a partir de números em um plano que inclui Campanhas. Você pode criar e editar um rascunho no Free ou no Standard, e um rascunho pode selecionar números de qualquer plano. No console, números Free e Standard aparecem desativados na seleção de remetentes, com uma ação de upgrade. No lançamento, cada número selecionado comsenderConfig.sessionIds precisa
estar no projeto, estar conectado e estar em um plano que inclui Campanhas, e
todos os números selecionados precisam usar um único tipo de envio. Uma campanha
que não seleciona números usa apenas números elegíveis do seu projeto, e o
projeto precisa ter pelo menos um número em um plano que inclui Campanhas. Ela
também envia por um único tipo de envio: números do WhatsApp quando algum estiver
pronto; caso contrário, números da Cloud API; caso contrário, números de teste.
Um número selecionado que se desconecta ou está em resfriamento enquanto a
campanha é executada fica de fora até estar pronto de novo; a campanha não é
pausada por causa dele. Se esse número também perdeu Campanhas, a campanha é
pausada assim que ele estiver pronto para enviar de novo. Se um número
selecionado for removido do projeto, ou se os números selecionados acabarem em
tipos de envio diferentes (por exemplo, depois que um número passa para a Cloud
API), a campanha é pausada e
campaign.paused traz o código
invalid_parameter. Altere a seleção e depois retome.
Um número cujo plano não pode ser determinado é tratado como sem direito de uso.
A verificação falha de forma fechada.
Limites de frequência por contato
Os limites de frequência por contato exigem que o beta seja oferecido e
habilitado para a sua equipe. Definir um limite sem acesso retorna
403 feature_unavailable.Defina o limite da equipe no Console
- Abra Campanhas e depois Configurações.
- Em Limite de frequência por contato, participe do beta se a sua equipe ainda não participou.
- Informe um limite para Por contato, 24 horas móveis, Por contato, 7 dias móveis ou para os dois. Deixe um campo vazio para não ter limite nessa janela.
- Selecione Salvar.
Defina um limite de campanha no Console
Uma campanha pode ter o seu próprio limite. Em cada janela vale o menor entre o limite da campanha e o limite da equipe, então um limite de campanha só pode deixar o envio mais restrito.- No builder de campanhas, abra a etapa Agendamento.
- Em Limite de frequência desta campanha, informe um ou os dois limites. O limite da equipe aparece ao lado deles.
- O rascunho é salvo automaticamente. A etapa Revisão lista o limite antes do lançamento.
Defina o limite da equipe pela API
Leia ou substitua o limite da equipe comGET /platform/campaign-settings/frequency-cap
e
PUT /platform/campaign-settings/frequency-cap.
Use uma chave de API da equipe com campaigns:read ou campaigns:manage,
respectivamente. Tokens de projeto não podem gerenciar configurações da equipe.
Proprietários e administradores da equipe conectados podem alterar as
configurações.
Envie os dois campos de limite ao substituir as configurações. Os dois como
null removem o limite da equipe. Quando os dois estão definidos, o limite de 24
horas não pode ser maior que o limite de 7 dias. Uma equipe que nunca salvou
configurações tem os dois limites null e a revisão 0.
O frequencyCap opcional de uma campanha usa os mesmos campos de limite. Em cada
janela vale o menor entre o limite dela e o limite da equipe. Um limite de
campanha só pode deixar o envio mais restrito. Altere-o enquanto a campanha for
um rascunho ou estiver pausada; uma campanha em andamento retorna 409.
Removê-lo mantém o limite da equipe em vigor.
A verificação reserva capacidade de forma atômica antes do envio. Contam os
claims ativos, os envios bem-sucedidos e os envios com resultado incerto; claims
que falharam, foram liberados ou adiados não contam. As mensagens acima do limite
são ignoradas com frequency_cap_exceeded. Para primeiras mensagens ignoradas, o log de destinatários e a exportação CSV mostram
failureReason: frequency_cap. Filtre-as com
status=skipped&reason=frequency_cap.
Em uma mensagem de sequência posterior, o destinatário mantém o status do
primeiro envio e o restante da sequência dele é interrompido. Um acompanhamento
por confirmação barrado pelo limite é cancelado com esse motivo. Alterar um
limite nunca tenta novamente mensagens já ignoradas.
As análises da campanha informam frequencyCap.skippedRecipientCount, contando
uma vez cada destinatário com uma mensagem barrada pelo limite. No Console, a
página Análises da campanha mostra esse número como Ignoradas pelo limite de frequência. Os Logs mostram campaign.frequency_cap.skipped.
O evento campaign.recipient_skipped traz o motivo e messageIndex; um
acompanhamento por confirmação também traz followUpId.
Se o acesso ao beta for retirado ou não puder ser verificado, as campanhas que
usam um limite salvo da equipe ou da campanha são pausadas antes do próximo
despacho. Os limites salvos continuam legíveis e removíveis. Para enviar sem o
beta, remova os dois limites aplicáveis e retome. As verificações normais de
remetente, opt-out, saldo e segurança continuam valendo.
Limites de vazão
senderConfig.throughput define o ritmo da campanha. Um valor acima do limite é
recusado com 400 campaign_throughput_capped, que indica o campo. Os limites por
número são verificados quando você salva o rascunho e de novo no lançamento. O
limite de taxa depende dos planos dos números selecionados, então é verificado
no lançamento:
Uma campanha que já está em andamento é reduzida ao limite em vez de ser
encerrada, então uma alteração no meio do envio deixa a campanha mais lenta em
vez de interrompê-la. Os limites são por número, não por campanha: duas campanhas
que compartilham um número compartilham os limites dele. Enquanto um número tem o
ritmo reduzido por uma restrição, a campanha envia na menor taxa entre a sua
própria e a taxa reduzida, listada em
Restrições.
Predefinições de intervalo
Uma campanha envia uma mensagem de cada vez. Depois de cada mensagem, ela espera60000 / ratePerMinute milissegundos mais um atraso aleatório entre
jitterMinMs e jitterMaxMs. As predefinições de intervalo do console definem
esses campos; envie os mesmos valores em senderConfig.throughput para dar o
mesmo ritmo a uma campanha criada pela API:
Os limites por número e o limite de taxa dos planos dos números selecionados
continuam valendo além da predefinição. Uma predefinição com taxa acima desse
limite é recusada no lançamento com
400 campaign_throughput_capped.
Todo envio de campanha tem digitação e ritmo
Um envio que vem de uma campanha sempre usa pelo menos um indicador de digitação antes de cada mensagem de texto e um ritmo com variação aleatória, quaisquer que sejam as configurações de Safe Mode do número. Uma campanha nunca aumenta as configurações de presença ou de confirmação de leitura do número, porque elas ficam visíveis para os seus contatos de um jeito que a digitação e o ritmo não ficam. A pausa de um envio é limitada pelo próprio intervalo da campanha entre destinatários, então o ritmo nunca reduz a vazão que você configurou. Consulte Safe Mode.Números com opt-out nunca recebem mensagens
Uma campanha verifica a lista de opt-outs da sua equipe duas vezes. Quando a campanha é lançada, todo destinatário que está na lista é marcado comoskipped com failureReason opted_out e contado uma vez
em skippedCount. No momento do envio, um número que está na lista nunca é
reservado para envio, então um número adicionado à lista depois do lançamento da
campanha também fica suprimido, e colocar de novo na fila um destinatário
ignorado não envia para ele.
Destinatários que nunca escreveram primeiro ficam retidos
A verificação de contato é feita por destinatário, no momento do envio, no número que está prestes a enviar. Um destinatário que nunca escreveu para esse número fica retido em vez de receber a mensagem, e a retenção traz409 bansafe_cold_held.
Duas coisas mudam o resultado:
- Defina
senderConfig.throughput.coldSendPolicycomoallowpara enviar mensagens a pessoas que não escreveram primeiro. Isso aumenta o risco de banimento do número; o padrão éhold. - Envie para pessoas que escreveram para esse número. A verificação é por número, então um contato que escreveu para um dos seus números continua frio em outro.
coldSendPolicy da sua campanha. Consulte
Restrições para ver a escada em si e como cada
degrau é suspenso.
O que a segurança faz com um destinatário
Um envio de campanha passa pelo degrau de restrição do número, além das verificações acima. O que acontece com o destinatário depende de qual verificação barrou o envio:
Um destinatário retido pela segurança nunca é uma falha de entrega.
failedCount conta os envios que o WhatsApp recusou, não os envios que a
Polymorfa nunca fez.
Números oficiais do WhatsApp Business
Uma campanha que envia a partir de um número oficial do WhatsApp Business também segue dois sinais do WhatsApp.Limite de mensagens de marketing por pessoa
O WhatsApp limita quantas mensagens de marketing uma pessoa recebe de todas as empresas. Quando uma pessoa está nesse limite, o WhatsApp retém a mensagem e informa o erro131049. O WhatsApp pede que os remetentes esperem pelo menos 24
horas antes de enviar esse modelo de novo para a pessoa, então a campanha não
tenta novamente esses destinatários:
- O destinatário é ignorado com
lastErrorwhatsapp_marketing_limit. campaign.recipient_skippedinforma o motivowhatsapp_marketing_limit.- O destinatário ignorado é contado uma vez em
skippedCount, não emfailedCount.
sentCount passa então para skippedCount. O WhatsApp também pode
informar a mensagem como entregue em um dos dispositivos da pessoa e retida em
outro. A entrega prevalece: o destinatário conta como entregue e volta para
sentCount.
Para alcançar essas pessoas depois, envie para elas em uma nova campanha pelo
menos 24 horas depois de terem sido ignoradas.
Qualidade do número e limite de mensagens
Uma campanha em andamento é pausada quando um número usado por ela perde situação com o WhatsApp enquanto a campanha é executada:
A Polymorfa compara cada número com a situação que ele tinha quando a campanha
começou a enviar por ele. Um número que já estava amarelo no lançamento pode
executar uma campanha; ele só é pausado se cair mais. A classificação é
verificada no máximo a cada cinco minutos enquanto a campanha envia, então uma
queda pode levar até cinco minutos para pausar a campanha. Assim que a Polymorfa
detecta a queda, a campanha não envia mais nada a partir desse número até você
retomá-la.
Revise a qualidade do número no WhatsApp Manager e depois retome ou encerre a
campanha. Uma campanha retomada continua a partir da situação atual do número e
só é pausada de novo se ela cair mais.
Encerrar e excluir
Encerrar sempre significa cancelar. Encerrar passa uma campanha em rascunho, em andamento ou pausada paracancelling e depois para cancelled quando os envios
já em curso terminam, e os destinatários que ainda não receberam o envio não o
recebem. Encerrar nunca é bloqueado por uma suspensão do espaço de trabalho nem
pela perda do direito de uso do plano, então uma campanha pausada por uma
verificação sempre pode ser encerrada.
Excluir remove uma campanha draft, completed, failed, cancelled ou
archived. Uma campanha que ainda está ativa, incluindo um rascunho com
lançamento agendado, é recusada com 409 state_conflict: encerre-a primeiro e
depois exclua. Se uma campanha concluída ou com falha ainda tiver um evento final
para entregar, excluir ou arquivar retorna 409 state_conflict. Tente novamente
depois que esse evento for entregue.
Um número novo aumenta o volume aos poucos
O limite diário de um número começa baixo e sobe até operNumberDailyCap da
campanha ao longo de warmupDays dias, em linha reta. Com os padrões
(warmupDailyStart 20, perNumberDailyCap 500, warmupDays 14), o teto de cada
dia é:
Um número é tratado como novo durante os seus primeiros 14 dias, aqui e na
constatação
warmup_ignored, que começa nas mesmas 20 mensagens por dia. O
aquecimento sozinho não mantém essa constatação fechada: verifique-a no número
enquanto uma nova campanha é executada. Consulte
Constatações.
O aquecimento é ancorado na idade do número, não em quando ele executou a
primeira campanha: a Polymorfa usa o primeiro instante em que consegue comprovar
que o número estava em uso, como quando o número foi vinculado ou a mensagem mais
antiga que o histórico dele contém. A âncora só se move para trás, então um
número que já está aquecido não pode voltar para o aquecimento. Um número cuja
idade não pode ser determinada é tratado como aquecido e envia com o limite
completo.
Enquanto um número está em aquecimento, os destinatários além do limite do dia
não são descartados. Eles continuam na fila para a próxima janela, e
campaign.cap_reached informa o número, o limite e quando a janela é
reiniciada.
O WhatsApp também pode limitar quantas conversas novas um número de dispositivo
vinculado inicia em um ciclo. Quando o WhatsApp limita um número, o número sai do
grupo até o ciclo reiniciar, e campaign.cap_reached informa capType
new_chat. Consulte
Limite de conversas novas do WhatsApp.