Documentation

Steps and blocks reference

Reference for Journey steps and blocks.

Every Journey is a list of screens. Each screen has a type. One type, info_page, is built from blocks — the smaller pieces you stack to make a screen say what you want.

Screen types

Each screen stores its answer under the screen's variable.

TypeWhat the person doesAnswer shape
single_selectPicks one option from a list. Can advance on tap.The option ID
multi_selectPicks any number of options from a list.A list of option IDs
inputFills one or more fields. Each field is text, email, number, or tel.A value per field
sliderDrags a slider between a minimum and a maximum.A number
swipe_cardsSwipes through a stack of cards, yes or no on each.yes or no per card
counter_selectSets a count on each option with plus and minus.A count per option
info_pageReads. No question — this screen is made of blocks.None

Every screen also supports a heading, a description, validation, a background, and routing rules that pick the next screen from the answers so far.

Blocks

Blocks fill an info_page. Three of them collect an answer: single_select, multi_select, and pricing_plans. The rest present content.

Text and layout

BlockWhat it shows
headingTitle or heading text
textBody text paragraph
decorated_textRich text with an optional image on the left or right
listBulleted or numbered list
quoteQuote card with author, role, and optional star rating
calloutHighlighted info, warning, success, or tip box
cardStyled container with icon, title, and description
columnsSide-by-side layout holding other blocks
spacerVertical space between blocks
dividerHorizontal line separator
floating_labelSmall label that pins to the top while the page scrolls
badgeSmall label pill
iconIcon or emoji

Media

BlockWhat it shows
imageImage or illustration
videoHTML5 video, or a YouTube or Vimeo embed
lottieAnimated illustration from a Lottie file
carouselSwipeable slide deck
device_framePhone mockup wrapping a screenshot or a video
avatar_groupOverlapping row of avatars with an optional overflow count

Numbers and charts

BlockWhat it shows
statLarge number with a label
metricStat card with an animated counter, label, and accent
counterNumber that counts up from zero
progress_barHorizontal progress indicator
circular_progressCircular progress indicator with multiple segments
comparison_barVertical bar chart for comparisons
line_chartLine chart with one or more series
tableComparison table with check, cross, lock, warning, icon, or text cells
gravity_binIcons that fall and pile up with simulated gravity

Sequence and motion

BlockWhat it shows
timelineVertical timeline with a connecting line and content nodes
checklistCheckbox list that ticks itself in sequence
accordionExpandable FAQ-style sections
feature_rowIcon on the left, title and text on the right
before_afterSplit, stacked, or swipeable comparison of two states
notification_stackMock push notifications sliding in one after another

Action and answer

BlockWhat it does
buttonRuns an action: next, back, skip, open a link, start a purchase, or open the discount-code box
single_selectPick-one option group; stores the choice in a variable
multi_selectPick-many option group; stores the choices in a variable
pricing_plansSelectable plans in featured, minimal, or comparison style; the selection drives the purchase_intent event

Templates

Any text field can reference an answer with ${...}.

You picked ${goal}, so we'll start there.

The same syntax reaches into a selected plan:

You're subscribing to ${selectedPlan.name} — ${selectedPlan.amount} ${selectedPlan.currency}/${selectedPlan.period}.

Available plan paths: id, name, amount, currency, period, originalAmount, perUnitLabel, display, trialDays, introOffer, description, badge, icon, features, and metadata.

Templates and computed variables run in a restricted expression language. It reads properties and array items, does arithmetic and comparisons, and allows common string and array helpers plus Math. It never runs arbitrary JavaScript, and never runs code supplied through Journey data.

AI agent or LLM? Read this page as markdown

On this page