Dynamic containers and split-test containers are different tags with different purposes.
<dynamic-container> swaps content based on a condition you write. <split-test> swaps content based on a traffic split. See Split Testing.Core concepts
- One container = one slot. A container marks a single location on the page. To vary the header and the footer you need two containers.
- Variants are saved components. You cannot swap a raw div or section — convert it to a component first. The node stores the component’s code.
- The contents of the container are the default. Whatever you author inside the tag renders whenever no Dynamic Content node fills it.
- One node fills one container. Four possible banners in one slot means one container, one component per alternative, and one Dynamic Content node per condition branch.
Step 1 — Create the components
Dynamic content works by swapping saved components.- Build the section you want to show (a specific pricing table, a banner, a video block).
- Right-click the element and select Transform to Component.
- Once saved you can delete it from the page — unless it is also your default content.
- Repeat for every variation.
Step 2 — Add the container
In the page builder
Right-click the element (or the area where the slot should live) and choose Wrap in → Dynamic Container, or drag the Dynamic Content block onto the page. Then set the Dynamic Container Name trait — that is the label you will pick from in Page Events. Anything left inside the container is its default content.On a coded page
Listing container IDs
The dropdown is populated from:id is exactly what the node stores in its container field. The same endpoint serves split-test-container and form.
Step 3 — Fill it from Page Events
Open Manage Page Events and add a Dynamic Content node (dynamic_container).
Connect it beneath whatever decides that this variant applies — an entry node for an unconditional swap, or the appropriate output of a condition.
The node runs on the server, before the HTML is sent, and it continues down its output afterwards — so you can chain further actions behind it.
Field detail: Node Reference → Dynamic Content.
How it renders
When a Dynamic Content node targets a container and bothcontainer and component are set, the renderer replaces the entire <dynamic-container> element — including the default content — with a div carrying the original id, holding the resolved component:
id does not match, or the node is missing its container or component — the tag and its default content are left exactly as authored.
The
name attribute plays no part in matching at render time; matching is on id alone. name exists so a human can find the container in the Page Events dropdown.Examples
Affiliate-specific banner
- Loaded → Referred By Affiliate (select the affiliate)
- Output 1 → Dynamic Content → container
Hero Banner, componentaffiliate-42-banner - Output 2 → nothing; the default banner renders
Two independent slots on one page
Country-specific pricing
- Loaded → Is From Country with
CAselected - Output 1 → Dynamic Content → container
pricing, componentpricing-cad - Output 2 → Is From EU → Output 1 → Dynamic Content → container
pricing, componentpricing-eur - Everything else falls through to the container’s default content
Use cases
- Affiliate-specific content — different pricing or bonuses per referral source
- Location-based offers — region-specific copy, currency or compliance text
- Traffic source targeting — a hero that matches the ad the visitor clicked
- Customer vs prospect — a different block for people who have already bought
- Whitelisted vs compliant — pair with the whitelist nodes for review-safe content
The <component> tag
<component> embeds a saved component directly, with no Page Events involved. This is what a filled dynamic container becomes internally, and you can use it anywhere on a page.
Renders as:
Component lookup tolerates the
custom- prefix: general-footer-2 and custom-general-footer-2 resolve to the same component when one of them exists. Components that embed themselves are not re-expanded, so a self-referencing component will not loop.Troubleshooting
The container dropdown is empty
The container dropdown is empty
On builder pages, check the block is a Dynamic Container and that its Dynamic Container Name trait is filled in. On coded pages, check the tag is written exactly as
<dynamic-container id="…" name="…"> with id immediately before name. Save the page, then click the reload icon on the node.The component dropdown is empty or missing my component
The component dropdown is empty or missing my component
Save the page after creating components, then click the reload icon next to the component dropdown. Components must be saved as components — raw sections do not appear.
Default content renders instead of the component
Default content renders instead of the component
Confirm the node’s branch actually ran (the Debug Window → Page Events tab shows which path was taken), and that the node has both a container and a component set. A node missing either field is skipped silently.
The wrong slot got swapped
The wrong slot got swapped
Two containers sharing the same
id will both be matched. Make id unique per page.I need traffic split between versions, not a condition
I need traffic split between versions, not a condition
That is a component split test, not dynamic content. See Split Testing.