Skip to main content
Each recipe below lists what the user sees, the blocks that make it, and the wiring. They all assume you have read Components and Data. The fastest way to build any of them is to paste the description into the builder’s Chat panel, then fix up the details in the Blocks panel.

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 health declaration form with a dropdown, pill choices and a submit button

A form component: dropdown, pill choices, conditional fields and one Send to agent button.

Blocks
Wiring. The Send to agent button sits inside the 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:
Keep the form to the fields you genuinely need. Every extra required field is another reason to abandon it, and the assistant can always ask follow-ups in conversation afterwards.

Compare plans on live pricing

Prices, stock and eligibility change, so render them from your API rather than typing them into the component.
A plan comparison with a table, expandable rows and a recommendation callout

A table of plans, one expander per plan, a callout for the recommendation, and pills to choose.

Blocks
Wiring. Turn on Fetch data before showing with a 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.
If the fetch fails, the component is still sent, just without api_res, and every block bound to it is pruned. Test the failure path so the user does not get an empty card.

Book a slot

Blocks
Wiring. Fetch available days and slots before showing, so the user can only pick something real. Bind each select’s options 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:
The Calendar slots template gives you this shape already. Start from it rather than building from blank.

Offer a brochure download

A link button leaves the chat without ending the conversation.
A card with buttons to view a network, check premium and send on WhatsApp

Two link buttons side by side at 50% width, with a full-width action beneath them.

Blocks
Wiring. Buttons with no width fill their parent, so two side by side need explicit widths. Set both to 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.
Opening a link tells the assistant nothing. The second button is what lets the assistant know the user is interested and follow up. Pair them whenever the download matters to the conversation.

Confirm an order and show its status

A read-only summary the user can scan, with the next action attached to it.
A plan details card showing label and value pairs with two buttons

A facts block renders label and value pairs, with a badge for the provider.

Blocks
Wiring. One GET in Fetch data before showing, keyed on a parameter the assistant fills: Reference it in the fetch URL as a query row. Remember that inside the fetch request only ${{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.
A vertical stack of tappable quick reply pills

Quick replies are just buttons in a Stack, each sending its own Value.

Blocks
Wiring. No API needed. Each tap sends its Value to the assistant as one conversation turn, and the component locks once answered. Start from the Quick actions template.

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 card with a status badge, an explanatory callout, provider pills and an expandable section

A badge for the verdict, a callout for the detail, pills for the options, and an expander to keep the long part collapsed.

Blocks
Wiring. 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 green confirmation callout telling the user a payment link has been sent

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. Blocks
On your page
If the user never needs to tap anything, skip the component entirely and use an agent action, which lets the assistant dispatch the event itself.

Collect 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 member list table with edit, delete and add expanders

A table of what is already collected, with expanders to edit, remove or add another entry.

Blocks
Wiring. Let the prompt drive the loop rather than the component:
The component locks after each response, so the assistant sends a fresh one for the next member. This keeps validation simple and gives the user a natural place to stop.

Next

Components

Build and edit components, and the full block reference.

Data

Bindings, API calls, parameters and page events in detail.