Skip to main content
Widgets define what appears inside a cover step. They let a cover act like an intro page, a lead form, an embedded page, or a custom screen. Choose the widget based on the job of the cover: explain, collect, embed, or extend.

Headline

Headline widgets are best for intro, transition, and closing screens. They show copy, optional media, and one or two calls to action.
FieldTypeRequiredDefaultNotes
type"headline"YesDiscriminator.
idstringYesWidget id.
titlestringYesHeadline copy. Inline markdown.
titleColorstringNoCSS color for the title.
descriptionstringNoSubtitle copy. Inline markdown.
descriptionColorstringNoCSS color for the description.
logoobjectNoBrand logo above the title. { src, alt?, height? }.
imageobjectNoPositioned image beside or above the copy. See Widget image.
textAlign"left" | "middle" | "right"NoCopy and CTA alignment.
ctaobjectNoPrimary call-to-action. See Navigation and actions.
secondaryCtaobjectNoSecond CTA rendered after cta. Same shape.

Form

Form widgets collect information from viewers before, during, or after a demo.
FieldTypeRequiredDefaultNotes
type"form"YesDiscriminator.
idstringYesWidget id.
logoobjectNoBrand logo above the copy. Same shape as the headline logo.
imageobjectNoPositioned image. See Widget image.
titlestringNoCopy above the fields.
descriptionstringNoCopy above the fields.
fieldsobject[]YesAt least one field. See Form fields.
submitobjectNo{ "label": "Submit", "action": { "type": "next" } }Submit button. Uses the same CTA shape.

Form fields

FieldTypeRequiredDefaultNotes
idstringYesField id.
labelstringYesField label.
type"text" | "dropdown"No"text"Field shape.
placeholderstringNoPlaceholder text.
requiredbooleanNofalseWhether the field is required.
optionsobject[]Conditional{ value, label } choices. Required when type: "dropdown".

Embed

Embed widgets place another web page or tool inside the cover screen.
FieldTypeRequiredDefaultNotes
type"embed"YesDiscriminator.
idstringYesWidget id.
srcstringYesEmbed URL. May be empty while authoring.
iframeTitlestringNoIframe title attribute for accessibility.
sandboxstringNoallow-scripts allow-same-origin allow-forms allow-popups allow-popups-to-escape-sandbox allow-presentationSpace-separated sandbox flags.
allowstringNocamera; microphone; fullscreen; payment; clipboard-writeIframe allow feature policy.

Custom

Custom widgets are for teams that render their own cover experience with custom code.
FieldTypeRequiredDefaultNotes
type"custom"YesDiscriminator.
idstringYesWidget id.
namestringYesSelects the registered custom renderer. Non-empty.
dataobjectNoOpaque prop bag passed through.

Widget image

The optional image on headline and form widgets.
FieldTypeRequiredDefaultNotes
srcstringYesAsset reference (asset:<id>), in-repo path, or raw https:/data: URL.
altstringNoAlt text.
naturalWidthnumberNoIntrinsic width in px. Positive.
naturalHeightnumberNoIntrinsic height in px. Positive.
position"left" | "right" | "top"No"right"Placement relative to the copy.
layout"standard" | "hero"No"hero"hero renders full-bleed; standard is a contained, rounded card.