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
| Field | Type | Required | Notes |
|---|---|---|---|
| string | yes | Email address to suppress | |
| reason | "manual" | "bounce" | "complaint" | "unsubscribe" | "invalid" | no | Default: "manual" |
| source | string | no | Default: "manual" |
| note | string | no | Optional free-text note |
| campaign_id | number | no | Associated campaign ID |
| message_id | number | no | Associated 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
| Field | Type | Required | Notes |
|---|---|---|---|
| ids | number[] | yes | IDs to delete |
Exclui um único registro de supressão. Também reativa o destinatário correspondente.
- Params
- id (int)