Receba novidades do Hedhog no seu e-mail
Novos lançamentos, receitas e breaking changes — sem spam.
Submódulo Campaign
templates
Gerencia templates reutilizáveis de conteúdo de e-mail (nome, assunto, corpo em HTML/texto simples) que as campanhas podem referenciar.
Caminho de origem: libraries/campaign/src/services/campaign-template.service.ts
Arquivo do módulo: campaign.module.ts
Introdução
O submódulo Templates fornece uma pequena biblioteca de conteúdo autocontida — linhas `campaign_template` — que as campanhas referenciam por `template_id` em vez de duplicar o texto de assunto/corpo em cada campanha. Cada template carrega um nome, um slug opcional, uma descrição opcional, um assunto, um corpo em HTML e/ou texto simples, uma flag `content_type` ("html" | "text") e um `status` ("active" | "inactive") usado para ocultar templates aposentados dos seletores sem excluir seu histórico.
No momento do envio, o CampaignEmailWorkerService só recorre ao assunto/corpo armazenado de um template quando a própria campanha não possui `content_html`/`content_text` ou `subject` inline — os campos da própria campanha sempre têm precedência. Isso permite que uma campanha seja totalmente dona do seu conteúdo ou delegue a um template compartilhado, e permite que um único template seja reutilizado por várias campanhas simultaneamente, já que a resolução acontece por envio em vez de copiar o conteúdo do template para o registro da campanha no momento da criação.
O CampaignTemplateService também mantém uma ponte retrocompatível com o submódulo Core Mail (`getMailTemplates` / `getSnapshot`), lendo das tabelas compartilhadas `mail` / `mail_locale` / `mail_var`. Isso permite que integrações mais antigas, que esperavam que os templates de campanha residissem nas tabelas de template de e-mail do Core, continuem resolvendo assunto/corpo e listas de variáveis, mesmo que a autoria de novos templates aconteça através de `campaign_template`.
Toda criação, atualização e exclusão de um template publica um evento de domínio `campaign.template.*` através do outbox do submódulo Integration, permitindo que outras partes da plataforma (ou sistemas externos via webhooks) reajam a mudanças no ciclo de vida do template sem polling.
O endpoint `send-test` neste submódulo é um placeholder simples: ele resolve o template por ID e retorna uma mensagem de confirmação sem realmente enviar o e-mail, ao contrário dos endpoints de envio de teste no nível da campanha e no nível da lista de destinatários, que de fato enfileiram uma entrega real através do `CampaignDispatchService`.
Endpoints HTTP
7 endpoints
Lista paginada de templates de campanha.
- Query
- page, pageSize, search, status
Cria um novo template de e-mail. Publica um evento campaign.template.created.
Body
| Field | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | — |
| slug | string | no | Unique identifier slug |
| description | string | no | — |
| subject | string | no | Email subject line |
| content_html | string | no | HTML email body |
| content_text | string | no | Plain-text fallback body |
| content_type | "html" | "text" | no | Default: "html" |
| status | "active" | "inactive" | no | Default: "active" |
Exclusão em massa de templates. Publica um evento campaign.template.deleted.
Body
| Field | Type | Required | Notes |
|---|---|---|---|
| ids | number[] | yes | IDs to delete |
Obtém um template por ID.
- Params
- id (int)
Atualiza um template. Apenas os campos fornecidos são alterados. Publica um evento campaign.template.updated.
- Params
- id (int)
Body
| Field | Type | Required | Notes |
|---|---|---|---|
| name | string | no | — |
| slug | string | no | — |
| description | string | no | — |
| subject | string | no | — |
| content_html | string | no | — |
| content_text | string | no | — |
| content_type | "html" | "text" | no | — |
| status | "active" | "inactive" | no | — |
Exclui um único template.
- Params
- id (int)
Resolve o template por ID e retorna uma mensagem de confirmação. Endpoint placeholder — não dispara de fato um e-mail.
- Params
- id (int)
Body
| Field | Type | Required | Notes |
|---|---|---|---|
| string | yes | Recipient of the test email | |
| name | string | no | Recipient display name |