Pular para o conteúdo principal
Uma campanha envia um modelo para uma lista de destinatários. Crie e execute campanhas com messaging.campaigns, que identifica um projeto pelo slug dele. Gerencie públicos, configurações de opt-out e edições de rascunho no cliente de equipe. Uma campanha envia a partir de Números cujo plano inclui Campanhas. Quando nenhum dos Números elegíveis se qualifica, a criação ou o lançamento falha com 402 campaigns_not_entitled. Veja Envie uma campanha.

Construa (build) um público

Um público é uma lista reutilizável de destinatários. Públicos usam um cliente de equipe:
create aceita até 1.000 membros. Adicione mais com audiences.addMembers(audienceId, { members }). Linhas inválidas aparecem em invalidRows em vez de fazer a solicitação falhar. Percorra os membros página por página com audiences.listMembers(audienceId, { cursor }).

Crie uma campanha

Passe destinatários diretamente em recipients, um público em recipientListId, ou os dois. A campanha começa como rascunho. variableMapping preenche cada {{variable}} do conteúdo com um campo do destinatário, com um valor de fallback para destinatários que não têm valor:
O mapeamento e o modelo só mudam antes do lançamento. Veja Variáveis do modelo. sendWindow limita quando as mensagens saem. Destinatários fora da janela ficam na fila até ela abrir de novo. timeZone usa por padrão o fuso horário da equipe, ou UTC. Defina recipientTimeZone: true para usar o fuso horário de cada destinatário. Omita sendWindow para enviar a qualquer hora.

Adicione destinatários

Cada chamada adiciona até 1.000 destinatários antes do lançamento. O SDK a envia uma vez e não tenta novamente. Se a resposta se perder, liste os destinatários antes de adicioná-los de novo.

Lance, pause, retome e pare

Omita scheduledAt para começar agora. Um lançamento recusa, com 422 campaign_variables_missing, destinatários que não têm valor nem fallback para uma variável; passe skipMissingVariables: true para ignorá-los. Cada chamada retorna assim que a mudança é aceita; o envio continua em segundo plano como uma operação. Uma parada que cancela a campanha na hora retorna operationId: null, então verifique isso antes de aguardar. Esses quatro métodos criam uma chave de idempotência quando você não passa uma. Se uma resposta se perder, leia a campanha antes de tentar novamente. Mude o horário de uma campanha lançada que ainda não começou a enviar, ou inicie-a agora:
scheduledAt: null inicia a campanha agora. reschedule envia uma chave de idempotência e faz uma única tentativa, a menos que você defina maxNetworkRetries.

Acompanhe a entrega

Os webhooks informam cada mudança do ciclo de vida como campaign.launched, campaign.paused, campaign.resumed e campaign.stopped. Veja Eventos de campanha. A primeira entrega, a primeira leitura e a primeira resposta de um destinatário que recebeu o envio chegam como campaign.recipient_delivered, campaign.recipient_read e campaign.recipient_replied. Esses eventos trazem metadados de tempo, não o conteúdo da resposta, e exigem a inscrição da equipe no beta. A versão 0.1.0-dev.20261004041625 do SDK os tipa como CampaignRecipientDeliveredPayload, CampaignRecipientReadPayload e CampaignRecipientRepliedPayload. Em versões anteriores, leia os campos documentados de event.payload. As solicitações de criação e atualização de campanhas aceitam links rastreados em trackedLinks, e CampaignRecipientLinkOpenedPayload tipa campaign.recipient_link_opened. O relatório de aberturas de links ainda não tem método no SDK; chame a API para obtê-lo. Baixe os destinatários em CSV, uma página por vez:
Um destinatário de uma campanha com várias mensagens informa o progresso em messagesSent, nextMessageAt e sequenceError. Envie de novo para os destinatários que falharam com messaging.campaigns.requeue("<project-slug>", campaignId). Passe { includeSkippedError: true } para também recolocar na fila os destinatários ignorados com erro.

Altere um rascunho

Altere um rascunho com messaging.campaigns.update(projectSlug, campaignId, body), ou altere o público ou a janela de envio dele com o cliente de equipe:
sendWindow: null remove a janela. O público e o agendamento só podem mudar antes do lançamento. A janela de envio pode mudar enquanto a campanha é um rascunho ou está pausada.

Gerencie palavras-chave de opt-out

Quando a captura de palavras-chave está ativada, um contato que responde a uma mensagem de campanha com uma palavra-chave de opt-out entra na lista de opt-out da equipe, e as campanhas o ignoram. Uma palavra-chave de opt-in o remove de novo.
updateSettings substitui os três campos. Os métodos de opt-out precisam de uma chave da equipe; credenciais de projeto são recusadas. Veja Opt-outs.

Confirmações opcionais de STOP

Para as confirmações opcionais de STOP, use optOuts.getConfirmationSettings, optOuts.updateConfirmationSettings e optOuts.getConfirmationSummary, disponíveis a partir da versão 0.1.0-dev.20261005233122 do SDK. Esses métodos do cliente da organização preservam o envelope da API em response.data.data. Use o teamId e a revision retornados ao gravar uma preferência e escolha en, pt-BR ou es antes de ativar. Uma revisão desatualizada exige uma nova leitura. Nunca tente novamente de forma automática um salvamento de preferência incerto; leia a preferência salva para confirmar o resultado. O acesso ao beta e a ativação pelo cliente continuam separados.

Crie um público a partir de uma campanha

O público é um retrato dos destinatários com esse resultado. Números que estão na lista de opt-out ficam de fora. O SDK envia essa solicitação uma vez; depois de uma resposta perdida, liste os públicos antes de criar outro. Veja Públicos.