Tutorial: lead capture

This walks through building a flow that asks a contact a short chain of questions and saves each answer, repeats the answers back in a confirmation message, then hands the conversation to sales. It's the same shape as the built-in Lead capture template.

What you'll build

  • A trigger that starts the flow (this tutorial uses First inbound message — see the callout below for why).
  • A Send message greeting.
  • Three Collect input nodes in a chain: name, email, company.
  • A Send message confirmation that repeats all three answers, so they appear in the conversation where agents will see them.
  • One Handoff to agent node that moves the conversation to the shared inbox.
  1. Create the flow. From the Flows list, click New flow, then Or start blank to build every node yourself (or clone the Lead capture template to get this shape in one click).

  2. Set the trigger. Switch to List view. In the trigger panel, choose Customer's first ever inbound message (or A message contains a keyword if you're following the testing tip above).

  3. Add the greeting. From Canvas, click Add node → Send message (Messaging group). Set its text to something like "Welcome! I'll ask a few quick questions so we can get you to the right person." Point Start at this node.

  4. Add the first question. Add a Collect input node (Logic & data group). Set the prompt text to "What's your name?" and the variable key to name. Point the greeting's next node at this one.

    The Collect input node editor, showing the prompt text and variable key fields, with no validation or format control visibleThe Collect input node editor, showing the prompt text and variable key fields, with no validation or format control visible
    Collect input saves whatever the contact sends next — there's no format check, so the prompt itself has to ask clearly for what you want.
  5. Chain two more questions. Add two more Collect input nodes: prompt "Thanks {{vars.name}}! What's your work email?" with variable key email, and prompt "Almost done — what's your company name?" with variable key company. Connect each node's next node to the following one, so the chain runs name → email → company in order. Note the {{vars.name}} reference in the second prompt — once a variable is captured, any later node's text can reuse it.

  6. Add a confirmation message. Add a Send message node after the third question, with text like Thanks {{vars.name}}! We'll email you at {{vars.email}} about {{vars.company}}. Send message fills in every {{vars.key}} with that run's captured value. Because it's a real message in the conversation, the answers show up in the inbox thread, where whoever picks up the conversation will read them.

  7. Add the handoff. Add a Handoff to agent node (Flow control group) and set the confirmation message's next node to it. You can give it an internal note such as New lead from the lead capture flow.

    The Handoff to agent node editor from the built-in Lead capture template, showing its Internal note fieldThe Handoff to agent node editor from the built-in Lead capture template, showing its Internal note field
    The Handoff to agent editor. The note is saved with the run's handoff event, not shown in the inbox, so don't rely on it to pass answers on.
  8. Check the validation panel and activate. With the chain fully connected, the panel should read "No issues. Ready to activate." Click Activate when you're ready.

Testing it from your own phone

As with any flow, this can't be captured as a screenshot — send a message from WhatsApp itself. If you set a keyword trigger for testing, type the keyword as ordinary text; a tapped quick-reply or suggested reply never starts a flow. If you kept the First inbound message trigger, message the number from a phone number that's never messaged it before — an existing contact won't retrigger it. Answer each question as it comes. After the third answer you should get the confirmation message with your answers filled in, and the conversation should move to the shared inbox as pending.

If a captured variable shows up blank in the confirmation message, double-check the variable key is spelled exactly the same in the prompt ({{vars.email}}) as it is in the Collect input node that captured it (email) — see the node reference for the variable-key rules.