Skip to content
Norbelys
Esc
↑↓navigate↵open⌘Jpreview

Campaign content

Write one HTML body for each variant and let Norbelys prepare its plain-text alternative.

A campaign contains ordered steps. Each step has one or more variants, each with a subject and one authored html body. Create them inline with POST /v1/campaigns, or replace the ordered steps with PATCH /v1/campaigns/{id}. Include existing step and variant IDs when editing them. A changed variant gets a new content version; messages already created keep the version they chose.

{
  "name": "A",
  "subject": "Hello {{ person.given_name | default(\"there\") }}",
  "preheader": "A quick idea for your team",
  "html": "<p>Hello {{ person.given_name | default(\"there\") }},</p><p>A short introduction.</p>",
  "weight": 1
}

preheader is optional preview text. It is separate from the body and does not replace the plain-text MIME alternative. Norbelys derives that alternative from the rendered HTML, so you never have to keep a second body in sync. Template values printed into HTML are escaped. Use default(...) for values that may be absent; an undefined printed value is a validation error when the message is created.

The first step is due when a person is enrolled. Later steps use their delay_seconds after the previous message was sent, within the campaign’s send window. The sender pool, variant allocation and reply stop rules are configured on the campaign. A campaign may also request AI personalization snippets through a step’s personalisation_prompt; those snippets fill variables.* in the variant’s HTML, and the template’s defaults remain usable if generation is unavailable.

To send one person’s version of a step outside an enrollment, use POST /v1/messages with step_id or variant_id and person_id. Add to to preview that version at a different address. Direct messages use the same endpoint with from, to, subject and html; see email content.

Was this page helpful?