> ## Documentation Index
> Fetch the complete documentation index at: https://docs.neoagent.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Intent Forms

> Turn an intent's intake into a form the employee fills in — dropdowns, dates and yes/no answers collected in one go instead of a back-and-forth

Some intake is a list of specific answers rather than a conversation — a device from a list, a start date, a yes/no. Add a **form** to an [intent](/chat-agents/intents) and the employee gets all the questions at once instead of a back-and-forth: one card with a dropdown, a date picker and a toggle beats four rounds of questions, and the answers come back in the shape you asked for.

<Frame>
  <img src="https://mintcdn.com/neoagent/UQ8T3MfcLVDlldmJ/images/chat-agents/intent-form-teams.webp?fit=max&auto=format&n=UQ8T3MfcLVDlldmJ&q=85&s=7d19ee64b9d6884420da4438192cef71" alt="A branded end-user bot in Microsoft Teams. The employee wrote 'i need to onboard a new user' and the bot replied that it's opening the New/Existing User Deployment Request intake, followed by a form card with labelled fields — full name, job title, direct manager, contact number, work location, address, start date, device assignment — each marked required." width="1600" height="928" data-path="images/chat-agents/intent-form-teams.webp" />
</Frame>

## What the employee sees

The bot recognises the request from the intents offered to their company, then posts the form and waits. It doesn't ask those questions itself and doesn't repeat them back — the form is the intake.

* **Required questions are enforced in the card.** A missing answer is flagged where the employee is typing, before anything is sent.
* **Each form is submitted once.** Scrolling back and re-tapping an old card doesn't inject stale answers into a live conversation — the bot shows what was already sent instead.
* **After Submit the card becomes a read-only summary** of the answers that went through. Because the answers reach the agent as a submission rather than a typed message, that summary is the employee's record of what they sent.
* **In a group chat, the form belongs to whoever asked.** Everyone can see the card, but only the person whose request produced it can submit it.

Then the agent carries on exactly as it would after a conversation: it files the ticket to its configured Create Ticket destination with every answer in the body.

Forms also render in the dashboard chat, so you can fill one in yourself to check the wording before rolling it out to a client.

## Building a form

Forms are built on the intent itself, under **Form**, below **Questions to ask**.

<Frame>
  <img src="https://mintcdn.com/neoagent/UQ8T3MfcLVDlldmJ/images/chat-agents/intent-form-builder.webp?fit=max&auto=format&n=UQ8T3MfcLVDlldmJ&q=85&s=8de538bb523611207c3309f6a6756af3" alt="The Neo dashboard intent editor for New/Existing User Deployment Request, showing Name and Description at the top, a Questions to ask text area, and a Form section listing question rows — each with a Question field, a Type dropdown set to Short text, and a Required toggle." width="1600" height="843" data-path="images/chat-agents/intent-form-builder.webp" />
</Frame>

<Steps>
  <Step title="Open the intent">
    Go to [**Intents**](https://dashboard.neoagent.io/intents) under **Data** in the left navigation and open the intent (or create one).
  </Step>

  <Step title="Add your questions">
    Under **Form**, select **Add question**. Each question has the text the employee sees, a **Type**, and a **Required** toggle. Reorder with the arrows — the form asks them in the order you list them.
  </Step>

  <Step title="Add options where the type needs them">
    **Dropdown** and **Multi-select** questions take an **Options** list; the other types don't.
  </Step>

  <Step title="Save">
    The form is live on the next message — you don't need to restart a conversation that's already open.
  </Step>
</Steps>

### Question types

| Type             | What the employee gets                           |
| ---------------- | ------------------------------------------------ |
| **Short text**   | A single-line answer — a name, a phone number.   |
| **Long text**    | A multi-line answer — an address, a description. |
| **Dropdown**     | One choice from your options list.               |
| **Multi-select** | Any number of choices from your options list.    |
| **Number**       | A numeric answer.                                |
| **Date**         | A date picker.                                   |
| **Time**         | A time picker.                                   |
| **Yes / No**     | A toggle.                                        |

**Dropdown** and **Multi-select** need at least one option; the other types don't take options at all.

### Limits

An intent's form can hold up to **15 questions**, with up to **40 options** on any one question and **150 options** across the whole form. The option limits aren't taste — every option travels twice in a Teams card, and a longer list would exceed what a card can carry. The editor shows your counts as you build and blocks a save that goes over.

## Forms and "Questions to ask" together

The two can coexist, and which one is used depends on where the request arrives:

|                      | Form only                                | Both filled in         | Questions only                       |
| -------------------- | ---------------------------------------- | ---------------------- | ------------------------------------ |
| **End-user chat**    | The form                                 | The form               | The questions, asked in conversation |
| **Triggered agents** | The form's questions, as a numbered list | Your written questions | The questions, in the agent's reply  |

A ticket has nowhere to draw a form, so on a [triggered agent](/core/triggers-and-schedules/triggered-workflows) the same questions become a numbered list in the agent's client-facing reply, options spelled out. Nothing is lost; it just arrives as an email.

That's the reason to fill in both: write prose specifically for the email round-trip while chat users get the form. Leave **Questions to ask** empty and the form's questions stand in on both surfaces.

<Tip>
  Use form questions for answers you need in a fixed shape (which office, which laptop model, what date) and **Questions to ask** for anything conditional or judgement-based (*"if they need RDS access, ask which existing user to mirror"*). A form can't branch — a question can.
</Tip>

## Related

<CardGroup cols={2}>
  <Card title="Intents" icon="clipboard-list" href="/chat-agents/intents">
    What an intent is, how it's matched, and how to scope one to agents and companies.
  </Card>

  <Card title="How end-user bots work" icon="sitemap" href="/chat-agents/how-end-user-bots-work">
    The trust boundary and the bot-ticket-agent split behind every end-user conversation.
  </Card>

  <Card title="Triggered workflows" icon="bolt" href="/core/triggers-and-schedules/triggered-workflows">
    How ticket events trigger an agent — and how a customer reply re-triggers it to continue intake.
  </Card>

  <Card title="Teaching Neo" icon="graduation-cap" href="/core/teaching-neo">
    Where intents fit next to instructions, skills, and memory — and how the four compose.
  </Card>
</CardGroup>
