Skip to main content
The visitor acts on a component in the thread, and what they tap or type goes back to the agent. Build one when the agent needs structured input or has to show more than a sentence. In the dashboard: Assistants → your agent → Embed & Widgets → Components. If your agent has no Components tab, contact Ringg.

Before you start

An installed widget

Components render only in the web widget’s chat thread.

A 2.0 widget version

The 1.0 line can’t render them; pin a 2.0.0-beta build.

A chat-mode embed

Components are designed for text conversations.

Build a component

1

Open the Components tab

Click New component. Everything you build is listed on this tab; agents that still have fixed-purpose widgets also see them below, under Legacy widgets.

Embed & Widgets → Components → New component.

2

Pick a starting point

Six templates ship with the builder: Start blank, Plan comparison, Lead form, Info card, Calendar slots and Quick actions. Picking one opens the builder; every block, label, colour and action stays editable.

Choosing Start blank opens the builder on an empty canvas.

3

Describe what you need

The Chat panel builds the component from a plain-English description:
To build from a design instead, use Add an image or screenshot: up to three PNG, JPEG or WebP images.

Typing the description, sending it, and the component being built (build fast-forwarded).

4

Save it, then use it in the agent

Check it collects what you asked for, set Name (the mention token is shown beneath it), then click Save.Save before you edit the prompt: the @ menu offers only saved, enabled components. Type @ where the component should appear and pick it under Chat Components; it inserts as a mention chip.
The token comes from the name: lowercased, each run of characters outside 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.

5

Tune any block by hand

Open the Blocks panel and select any block; its inspector opens on the right. In the video, the City input goes to 50% width and its label becomes “Current city”. The preview updates as you type.

Selecting the City input, then editing its width and label.

6

Keep iterating in chat

Back in Chat, ask for a change such as “Add one more button for adding new member” and it edits the existing component. Switch between chat and hand-editing freely, then Save.

A follow-up instruction editing the existing component (rebuild fast-forwarded).

Use chat for structure (“a card with an image, three facts and two buttons”) and the inspector for exact values such as a width or an Action ID. The preview switches between Component and In chat, and Interact lets you click through it on sample data; real values arrive during the conversation.

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:
Inside the repeated block, ${{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 a data-ringg attribute; see Styling.

Common questions

Save it in the builder and check its switch on the Components tab, then type @ again.
No. Ringg refuses to delete or turn off a component the prompt still mentions, with “Remove tool references from the prompt before deleting the tool.” Remove the mention from the prompt first.
No; see Pick a CDN version. The React Native and Flutter packages render them natively.

Next steps

Wire it to your API

Fetch data before showing, send data on tap, fire page events.

Copy a recipe

Lead capture, live pricing, slot booking, downloads.