Blocks: one pool, different content per audience
A Block is a named set of content for one section of a template, such as Client Summary or Partner Summary. A campaign picks which Block each pool row sends, so the same messages can carry different content to different audiences.
Three parts
| Part | What it is | Where |
|---|---|---|
| Block definition | A template section made reusable: its fields, in order. No content. | Template page, Compose Block on a section |
| Block | A named, described set of entries built on one definition | Blocks page |
| Entry | One row of content filling the definition's fields | Inside a Block |
Make a definition
Open the template, find the section (Summary, Hero...) and press Compose Block. It takes the whole section and is named after it; click the green Block: name badge to rename it. To block only part of a section, move those fields into a section of their own first (tick them, Sections, New section). On a section not saved yet, or with changes pending, the button reads Save and Compose Block: it saves the page, then makes the block.
A definition follows its section: add, reorder or rename fields and it updates, and every entry keeps its values field by field.
Make Blocks and entries
On Blocks, press New: pick the template, then the definition, then name and describe the Block. Add its entries with Add entry. Clone copies a Block with its entries (Client Summary to Partner Summary, then edit). The description edits in place with the pencil.
Use them in a campaign
On the campaign, each pool row has a Blocks column:
- None (grey): the pool's templates have no definitions.
- Choose (red): there are definitions and nothing is picked on this row.
- Partial / Assigned: some or all are picked.
Click it. Templates are on the left; for each section pick Message content or Block, then which Block, then how its entries go out:
- Sequential: the next entry each time this contact gets a send.
- Fixed: always the one entry you pick.
- Rotational: each message starts at entry 1 and moves on the 2nd, 3rd... time that same message goes to the contact.
Variants: different blocks for part of a row's audience
When only the blocks differ by audience, use variants on one row instead of attaching the pool again. Click the row's Blocks cell to open Assign Blocks: a table of the row's versions with their name, description, template, and how many blocks and filters each has. Default is what everyone the row admits gets. + Add variant adds a version with its own name and filter (the same filter builder as the row). Clicking a row opens it in its own dialog, Variant (1 / 2) and so on: a table with one row per block section (the section, its Block and the setting), and the filters below it, one per row. Save or Cancel there returns to Assign Blocks; nothing is written until you press Save on Assign Blocks. On a variant, each section is Same as default until you pick a Block for it, so a variant can change only the close and keep the rest.
How a contact's version is chosen:
- The row's filter still decides who gets the step. A variant's filter only decides which blocks they see, among contacts the row already admits.
- Variants are checked in order and the first match wins. The arrows on each variant row (Move up, Move down) set the order; the bin icon removes it.
- A contact matching no variant gets the default blocks.
- A variant's Block for a section replaces a pin on that section.
- A contact who changes audience (a prospect who becomes a member) gets the new version on the next send, and the Block's entries continue from where that contact was. Nothing resets.
Saving is refused when a variant can never apply: its filter contradicts the row's, a variant above it has no filter, or a variant above it has the same filter. The table flags these while you edit. Two variants that can both match are fine: the first one wins, which is how a specific variant above a broader one works. Saving also warns, without refusing, when a variant sets a section the default leaves to each message.
Every send records which row and which variant it used.
When to attach the pool again instead: when the pool itself differs by audience. Add it again (listed under Add again for another audience) with its own filter. If two rows of the same pool both admit a contact, the first row in order sends; the pool takes one turn, not two.
On the message
A section with a definition shows a note: the Block chosen for the pool row fills it; where the row picks none, the message's own content (the fields below) is used.
Claims and the appeal
Open an entry. Under Claims this entry states, confirm the approved claims it makes. Code finds a claim by its words, its link or its figure. AI can find one stated in other words. Under Appeal, pick the one appeal the entry makes: Functional, Emotional, Signal or Proof. Code suggests one from the words. Both hold for the entry's exact wording. After an edit, confirm again. Radar, Claims then shows what each claim and each appeal did.
Safe by design
- A definition used by a campaign row, a message or a rotation cannot be unblocked, lose its section, or have a field retyped or moved out; the page says what uses it.
- A Block a campaign row uses is not deleted, and neither is an entry in use; you are told where.
- If a template section goes away, its Blocks are kept, marked Detached, so their content is not lost. Delete them when you no longer need them.
API and MCP
Everything here is in the public API (/v1/block-sets, /v1/blocks, campaign pool bindings) and the MCP connector (list_block_sets, compose_block_set, bind_assignment_blocks and more). See the developer center.