Three ways to ask for something
A workflow can ask a visitor for information in three different ways, and they behave differently enough that picking the wrong one is frustrating:
- Collect data — one specific thing, checked as it is typed. Best for an email address, an order number, or a choice from a short list.
- Ask a Question — one open question, answered in the visitor's own words. Nothing is checked and nothing is stored against them.
- Start Form — a whole intake form from one of your boards, filled in inside the chat. Best when you need several pieces of information at once.
The Collect data step
Add it from Add new action on any card, then choose what you are collecting.
Customer email asks for an email address and writes it to the visitor's profile. If Yaplet already has this person's email, the step is skipped automatically — no visitor is ever asked twice.
Custom data asks for anything else. You then choose the Input type:
- Text — free typing, nothing checked.
- Number — digits only.
- Dropdown — a list of choices you type in yourself, one per line.
You also give it an Attribute name. That is the label the answer is stored and shown under — the visitor sees it too, so write "Order number" rather than "order_num_v2". Finally, write the Question the visitor is actually asked.
There is no "required" switch. The script waits at this step until the visitor answers.
The Ask a Question step
Sends your question and waits for a written reply. Nothing is validated, and the answer is not stored against the visitor — the script simply moves on once they have written something. Use it for "tell us a bit more about what went wrong" just before a handoff, so the person who picks the conversation up has context.
The Start Form step
Opens one of the intake forms that belong to your boards. You pick it from a list that reads "Board name — Form name". The fields themselves are built on that board's own Forms tab, under Communications → Tickets in the sidebar, and the submissions land on that board — which is exactly why bug reports and feature requests are usually collected this way.
One limitation to design around: a form cannot be displayed inside Facebook or Instagram messages. If the script reaches this step there, the visitor is told the form is unavailable, a human agent is requested, and the workflow stops. A Start Form step also rules the whole workflow out of phone calls.
Where the answers end up
This is the part people usually get wrong, so it is worth being precise:
- Every answer appears in the conversation itself. Whatever the visitor typed or picked is posted into the thread, so anyone on your team reading the conversation in the inbox sees the whole exchange.
- Only an email address is written to the visitor's profile. A collected email updates the visitor record and links the conversation to that person from then on.
- Custom data stays with the workflow run. It is kept for the rest of that script — most usefully to fill in a Custom API action — rather than being added to the visitor's profile as a field of its own.
- Form answers go to the board the form belongs to, as a ticket, with everything the visitor filled in.
Sending what you collected to your own system
Put a Custom API action after your collection steps. Yaplet sends a JSON request to the address you give it, containing the workflow session id and every value collected so far, each under the Attribute name you chose. The settings panel lists those names for you while you are configuring it, so you can see exactly what your endpoint will receive.
If your system answers with JSON containing a message string, that text is spoken back to the visitor as the bot's next line — which is how you turn a lookup into a real answer ("Your order shipped on Tuesday"). If it answers with anything else, or does not answer at all, Yaplet requests a human agent so the visitor is never left hanging.
Next step
Once you have what you need, hand the conversation over properly: Hand off from a workflow to a human agent. For what every other step does, see Workflow nodes explained.