Before you start
An installed widget
A 2.0 widget version
2.0.0-beta build.A chat-mode embed
Build a component
Open the Components tab
Embed & Widgets → Components → New component.
Pick a starting point
Choosing Start blank opens the builder on an empty canvas.
Describe what you need
Typing the description, sending it, and the component being built (build fast-forwarded).
Save it, then use it in the agent
@ menu offers only saved, enabled components. Type @ where the component should appear and pick it under Chat Components; it inserts as a mention chip.a-z0-9 turned into one _, leading and trailing _ dropped, cut to 48 characters. A component created from a template whose name is taken gets a number (lead_form_2); a duplicated one gets _copy.Saving the component, then inserting its mention in the agent's prompt from the @ menu.
Tune any block by hand
Selecting the City input, then editing its width and label.
Keep iterating in chat
A follow-up instruction editing the existing component (rebuild fast-forwarded).
Show it in a conversation
Send agent text with widget is off by default, so the component is sent on its own, which reads better in chat. Turn it on to let the agent add a sentence alongside it.Blocks
A component is a tree of typed blocks. The builder’s add-block palette groups them as below.Layout
Content
Inputs
Every input has a name; the submitted value arrives under that key.Actions
button is the only block that reacts to a tap. What a tap does is set under When tapped; see Working with data.
Sizing
width is a percentage of the parent (0 to 100). height, font_size, gap and padding are pixels.
A button with no width set fills its parent, so two buttons side by side need explicit widths. Put them in a Stack set to horizontal and give each 50.
Conditional and repeated blocks
To show a block only for some answers, give it a condition on an input’s value:eq, ne, in, gt, lt or truthy. Combine several in one all or any group; groups don’t nest.
To repeat a block over a list, point it at an array binding. It renders once per item, with the item under an alias you choose, plus its index:
${{plan.name}} and ${{plan_index}} resolve per item. max_items accepts 1 to 50 and defaults to 20. Give repeated inputs a bound name such as qty_${{item.id}}, so each copy submits under its own key.
Styling
Components inherit the widget theme. For anything else, every rendered block carries adata-ringg attribute; see Styling.
Common questions
Can I delete a component the prompt still mentions?
Can I delete a component the prompt still mentions?
Does it work on the 1.0 CDN version?
Does it work on the 1.0 CDN version?