Skip to main content
Each recipe gives the blocks and the wiring for one common job. The block outlines are shorthand, not a file format. Bindings and request settings are explained in Data.

Before you start

The component builder

Paste each idea into its Chat panel, then fix details in Blocks.

A 2.0 widget version

Components render only from a 2.0.0-beta build.

Capture a lead and push it to your CRM

The agent qualifies the visitor in conversation, then shows a short form instead of asking for each field in turn.
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 sends that form’s inputs. Point Call an API on response at your CRM:
Ask only for fields you need now; the agent can collect the rest in conversation.

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, keep one Action ID for the whole list and give the button a Value of ${{plan.id}}. Read ${{component_data.value}} to know which plan was chosen.

Book a slot

Start from the Calendar slots template. It shows a pill choice for the day and a time button per free slot. The slots don’t come from your API: the component’s Availability settings generate them each time it is sent. Wiring: Each time button’s Value carries the slot’s date and time, so Call an API on response can create the booking with ${{component_data.value}}.

Offer a brochure download

A link button opens the file 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: Set both widths to 50 inside a horizontal Stack (Sizing). If the brochure differs per plan, return the full URL from your fetch and bind ${{api_res.brochure_url}}.

Confirm an order and show its status

A read-only summary the visitor 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 agent fills: Add it to the fetch as a query param row: order_id = ${{order_id}}.

Disambiguate with quick replies

When the agent isn’t sure what the visitor wants, offer the likely answers as buttons.
A vertical stack of tappable quick reply pills

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

Blocks:
Wiring: No API needed: each tap sends its Value to the agent. The Quick actions template is a starting point; it uses a separate Action ID per button instead of values.

Answer a question with a structured card

When the answer has caveats, 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 agent fills from the conversation, while the supporting detail comes from the fetch. Give the two buttons different Action IDs so the agent knows which way the visitor went. Finish the flow with a plain confirmation once the visitor 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 outcome is something happening on the page: open the checkout drawer, scroll to a section, prefill a field. Blocks:
On your page, listen for ringg:open_pricing as in Fire an event on your page. If the visitor never needs to tap anything, an agent action lets the agent dispatch the event itself.

Collect a list, one entry at a time

Long repeating forms are hard to fill in a chat. Collect one entry, confirm it, then offer 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 agent sends a fresh form for each member, which keeps validation per entry and gives the visitor a natural place to stop.

Next steps

Style the widget

Restyle any block or widget element with data-ringg attributes.

Prepare for launch

Domains, , version pinning and browser QA.