Capture a lead and push it to your CRM
The most common component. The assistant qualifies the visitor in conversation, then shows a short form instead of asking for five things one at a time.
A form component: dropdown, pill choices, conditional fields and one Send to agent button.
form, so it collects that form’s inputs and nothing else. Add Call an API on response on the component and point it at your CRM:
Compare plans on live pricing
Prices, stock and eligibility change, so render them from your API rather than typing them into the component.
A table of plans, one expander per plan, a callout for the recommendation, and pills to choose.
GET to your pricing endpoint. The response binds to api_res, and the repeat renders one card per plan.
Because the card repeats, give the button a Value of ${{plan.id}} rather than a per-plan Action ID. A bound Action ID cannot be matched back to a button-level API override, so keep one Action ID for the whole list and read ${{component_data.value}} to know which plan was chosen.
Book a slot
Blocksoptions to an array of { value, text } objects, so have your endpoint return that shape rather than bare strings. On submit, Call an API on response creates the booking:
Offer a brochure download
A link button leaves the chat without ending the conversation.
Two link buttons side by side at 50% width, with a full-width action beneath them.
50 inside a horizontal Stack.
If the brochure differs per plan, return the full URL from your fetch and bind ${{api_res.brochure_url}}. A URL must be a plain literal or one whole binding, so build the complete link server-side rather than splicing an ID into a path.
Confirm an order and show its status
A read-only summary the user can scan, with the next action attached to it.
A facts block renders label and value pairs, with a badge for the provider.
GET in Fetch data before showing, keyed on a parameter the assistant fills:
${{custom_args.<name>}} resolves, so if the value comes from an agent variable rather than the conversation, use that root instead.
Disambiguate with quick replies
When the assistant is not sure what the user wants, three buttons beat a paragraph.
Quick replies are just buttons in a Stack, each sending its own Value.
Answer a question with a structured card
When the answer has caveats, a card carries them better than a paragraph. Lead with the verdict, keep the detail one tap away, and end with the next step.
A badge for the verdict, a callout for the detail, pills for the options, and an expander to keep the long part collapsed.
condition_name and verdict are dynamic parameters the assistant fills from the conversation, while the supporting detail comes from the fetch. Because the two buttons carry different Action IDs, the assistant can tell which way the user wants to go.
Finish the flow with a plain confirmation once the user commits:

A single callout block, tone success, is often the whole component.
Drive your own page from the chat
Sometimes the right outcome is not a message but something happening on the page: open the checkout drawer, scroll to a section, prefill a field. BlocksCollect a list, one entry at a time
Long repeating forms are miserable in chat. Collect one entry, confirm it, then offer to add another.
A table of what is already collected, with expanders to edit, remove or add another entry.
