Logotipo Hedhog

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

FieldTypeRequiredNotes
namestringyes
slugstringnoUnique identifier slug
descriptionstringno
subjectstringnoEmail subject line
content_htmlstringnoHTML email body
content_textstringnoPlain-text fallback body
content_type"html" | "text"noDefault: "html"
status"active" | "inactive"noDefault: "active"

Exclusão em massa de templates. Publica um evento campaign.template.deleted.

Body

FieldTypeRequiredNotes
idsnumber[]yesIDs 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

FieldTypeRequiredNotes
namestringno
slugstringno
descriptionstringno
subjectstringno
content_htmlstringno
content_textstringno
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

FieldTypeRequiredNotes
emailstringyesRecipient of the test email
namestringnoRecipient display name