Logotipo Hedhog

Receba novidades do Hedhog no seu e-mail

Novos lançamentos, receitas e breaking changes — sem spam.

Submódulo Campaign

suppression

Lista global de supressão, independente de campanha, que o CampaignDispatchService consulta para pular e-mails aos quais não deve enviar.

Caminho de origem: libraries/campaign/src/services/campaign-suppression.service.ts

Arquivo do módulo: campaign.module.ts

Introdução

O submódulo Suppression mantém `campaign_suppression`, uma única lista global de endereços de e-mail que nunca devem receber e-mails de campanha, independentemente de em qual lista de destinatários eles apareçam. Cada envio de campanha realiza uma verificação de supressão em massa (`CampaignSuppressionService.bulkCheck`) contra todo o público antes de criar as linhas de mensagem, de modo que um endereço suprimido é pulado no momento do enfileiramento, e não silenciosamente descartado depois — a linha `campaign_message` correspondente é criada com `status: skipped` para que os totais da campanha permaneçam precisos.

Cada entrada de supressão carrega um `reason` — `manual`, `bounce`, `complaint`, `unsubscribe` ou `invalid` — mais uma `note` de texto livre, uma string `source` opcional e referências opcionais `campaign_id`/`message_id` de volta ao envio que a disparou. Adicionar uma entrada tem um efeito colateral além da própria tabela de supressão: `CampaignSuppressionService.create` também atualiza quaisquer linhas `campaign_recipient` correspondentes para `status: bounced` (quando `reason` é "bounce") ou `status: suppressed` (para todos os outros motivos), mantendo o status no nível do destinatário consistente com o registro no nível da supressão. O fluxo de descadastramento (no submódulo Unsubscribes) e qualquer futuro handler de webhook de bounce/complaint passam ambos por esse mesmo método `create`.

Remover uma entrada de supressão — seja por exclusão em massa ou por exclusão de ID único — é o inverso literal: exclui a(s) linha(s) de supressão e redefine as linhas `campaign_recipient` correspondentes de volta para `status: active`, efetivamente readmitindo aquele endereço em envios futuros. Não há um endpoint separado de "reativar"; excluir o registro de supressão é como um operador manualmente remove a supressão de um endereço.

O `GET /campaign/suppression/stats` retorna um detalhamento motivo a motivo (total, mais contagens para unsubscribe/bounce/complaint/manual/invalid), que o dashboard exibe para dar aos operadores visibilidade sobre por que sua lista de supressão está crescendo — um pico em `bounce` normalmente sinaliza um problema de entregabilidade distinto de um pico em `unsubscribe`.

Endpoints HTTP

5 endpoints

Estatísticas da lista de supressão detalhadas por motivo (bounce, complaint, unsubscribe, manual, invalid) mais uma contagem total.

Lista paginada de endereços de e-mail suprimidos.

Query
page, pageSize, search, reason, source

Adiciona um e-mail à lista de supressão. Também marca quaisquer registros de destinatário correspondentes como suprimidos (ou com bounce, se o motivo for "bounce").

Body

FieldTypeRequiredNotes
emailstringyesEmail address to suppress
reason"manual" | "bounce" | "complaint" | "unsubscribe" | "invalid"noDefault: "manual"
sourcestringnoDefault: "manual"
notestringnoOptional free-text note
campaign_idnumbernoAssociated campaign ID
message_idnumbernoAssociated message ID

Exclusão em massa de registros de supressão. Também reativa os registros de destinatário correspondentes (status redefinido para "active").

Body

FieldTypeRequiredNotes
idsnumber[]yesIDs to delete

Exclui um único registro de supressão. Também reativa o destinatário correspondente.

Params
id (int)