SEND_EMAIL node sends. You can author
them in the app’s builder, or from an agent or script with four tools (each is
also a REST endpoint):
A template is written one of two ways, and you send exactly one:
document— the builder’s blocks:heading,text,button,image,divider,spacer,html,social,footer, pluscontainer(a framed card) andcolumns(side by side). Styling is optional; what you leave out takes the builder’s defaults.html— your own markup. It is sanitized on save: scripts, event handlers and external stylesheets are removed, and the response lists what was removed inremoved.
{{path}} grammar in the subject and the body — {{customer.name}},
{{person.<attribute>}}, {{engagement.chatLink}} — and resolve at send; see
Template variables for what a path can be.
{ "name": …, "subject": …, "html": "<table>…</table>" }.
Sending one
A template sends through a journey. Build it on an email initiative with aSEND_EMAIL step that points at the PUBLISHED template (journeys_email_templates
lists those, along with whether your domain and sender are ready), then launch
the initiative, which publishes the journey. Then enroll people:
- Directly:
initiatives_participants_addwith anemailfor each person. - On behavior: give the journey a
cdp_eventtrigger, and every time that event is recorded for a person with an email (cdp_events_record), they are enrolled.
Rules worth knowing
- New templates are drafts. A journey can only send a
PUBLISHEDtemplate; publish withemail_templates_updateand"status": "PUBLISHED". - Changing a published template needs
"confirm": true. Journeys reference the template itself, so an edit changes what they send from their next send, and setting it back toDRAFTmakes those sends fail. Call withoutconfirmfirst to see the refusal. - Unknown fields are rejected, not ignored, so a typo such as
backgroundfor a button’sbgfails with a validation error instead of quietly taking the default. - Blocks → HTML is one way. Sending
htmlto a block template converts it; an HTML template does not accept adocumentagain. - A footer block goes at the top level of the email, not inside a container or a
column. Omit
unsubscribeLabelfor the document language’s default link text, or send""for no unsubscribe link (transactional email). - Not available here yet: test sends, image upload (use an image URL you host, or one from the builder’s library), and deleting a template.