Sign In

Leads & Forms

Two ways to collect structured information inside a conversation, instead of sending someone to a separate page they won't come back from.

Lead collection

Add structured forms to the conversation

Find Collect leads under Convert

Lead capture is a capability of the selected Concierge and sits with the other conversion tools.

Enable and configure lead collection

Open Collect leads, turn it on, and choose which visitor details the form should require.

Collect leadsCustom forms
FieldsFixed: name, email, phoneAnything you define
PurposeIdentity captureStructured intake
PlanFree and upStarter and up
CountOne per agentMany per agent

Both render as a real form inside the widget — not a chat message asking the visitor to type their email and hope they format it correctly.

Collect leads

Enable the Collect leads module on an agent. It's included on every plan, Free included.

Configure it in the module's settings card:

SettingNotes
When to useFree text telling the agent when to offer the form.
FieldsEach of name / email / phone is independently enabled and required.
Title, Submit labelWidget copy.
Success messageShown after submission.
Dismiss messageShown if the visitor closes the form without submitting.

The agent decides when to offer it, guided by your When to use text. Good triggers are specific: "Offer the form when someone asks about wholesale pricing, requests a callback, or asks a question we cannot answer without knowing their account."

Every submission with an email resolves to a Contact, so the lead joins up with any tickets that person later raises.

Custom forms

Custom forms are for structured intake where the fields are yours: a warranty claim, a booking request, a bug report, a quote request. Available from Starter.

Define as many as you need per agent. Each form has:

PropertyNotes
NameThe action key the model calls, e.g. warranty_claim. Lowercase, underscores.
TitleHeading shown in the widget.
When to useWhen the agent should offer this form rather than another.
EnabledOff keeps it defined but unofferable.
FieldsSee below.
Submit label, Success message, Dismiss messageWidget copy.

Field types

text · email · phone · textarea · number · select

Each field has a stable name (the key stored on every submission), a label, a required flag, an optional placeholder, and — for select — a list of value/label options.

The field name is what downstream automations map against, so pick it once and leave it alone. Renaming a field splits your submission history across two keys.

What a submission carries

Submissions record the form name, the values, the conversation they came from, and the agent. Through the Integration API and Zapier, values are returned both nested under values and flattened onto the top level — so email is a mappable field in a Zap rather than something buried inside one opaque blob.

Automating on submissions

Both surfaces emit events you can subscribe to with webhooks or Zapier:

EventFires when
lead.createdA visitor submits the Collect leads form.
form.submittedA visitor submits any custom form.

Typical wiring: lead.created → create a CRM record and notify sales in Slack. form.submitted filtered to warranty_claim → open a row in a tracking sheet and email the ops team.

You can also push leads in from elsewhere with POST /api/v1/leads. That path runs the same field rules, contact resolution, and event emission as the widget, so an imported lead behaves identically to one collected in chat.

Best practices

  • Require the fewest fields you can act on. Every required field costs you completions. Email alone is usually enough to follow up.
  • Ask for email in at least one form. It's the only field that creates a contact.
  • Give each custom form a distinct "when to use". If two forms sound alike, the agent will pick between them badly — and so would a person.
  • Prefer select over text for anything you'll filter on later. Free text is unqueryable in every downstream tool.
  • Don't rebuild the lead form as a custom form. Collect leads is on Free, resolves contacts, and has its own event.

Troubleshooting

SymptomWhat to check
The form is never offeredModule enabled? Form enabled? Is "when to use" specific enough for the agent to recognise the moment?
Submissions have no contactThe submission had no email — contacts are keyed on email.
A Zap can't see a fieldConfirm the field's stable name; flattened keys use it verbatim.
Custom forms unavailableStarter and up. Collect leads is on Free.

Next steps

  • Contacts — where every emailed submission lands.
  • Webhooks — subscribe to lead.created and form.submitted.
  • Zapier — the same two events with no code.
  • Integration API — read submissions, create leads.