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

# Create a form

> Build a quote-request or intake form your website visitors can fill out — with the AI Receptionist replying automatically.

ServiceBooked forms are simple, no-code lead capture: drag fields, write the labels, hit publish. Each form gets a hosted public page (`servicebooked.ca/f/your-form`) and an embed snippet you can paste on your own site.

The real magic: every submission lands in your CRM as a contact, and (if you've enabled it) the AI Receptionist auto-replies to the lead within seconds.

## Build a form

<Steps>
  <Step title="Click 'New form'">
    From **Dashboard → Forms**, click the **New form** button.
  </Step>

  <Step title="Name and describe it">
    The form name is internal. Give it something obvious like "Quote request" or "Service area check." The description is shown to visitors above the form.
  </Step>

  <Step title="Add fields">
    Click **Add field** and pick from:

    * **Short text** — for names, single-line answers
    * **Long text** — for descriptions, "tell us about your job"
    * **Email** — validated automatically
    * **Phone** — formatted as the user types
    * **Single-select** — radio-button or dropdown
    * **Multi-select** — checkbox group
    * **Number** — for sizes, quantities

    Special "contact-shaped" field names (`first_name`, `last_name`, `email`, `phone`, `address`) automatically populate the contact in your CRM. Other fields are saved as part of the submission.
  </Step>

  <Step title="Mark required fields">
    Toggle the **Required** flag on any field that must be filled. Visitors get inline validation if they try to submit without it.
  </Step>

  <Step title="Customize the submit button">
    Set the button text ("Get a Quote" beats "Submit") and color. The button color defaults to your brand accent.
  </Step>

  <Step title="Set the success state">
    After a successful submission, visitors see either:

    * A **success message** you write (default), or
    * A **redirect** to a custom URL (a thank-you page on your site, for example)
  </Step>

  <Step title="Publish">
    Toggle the **Published** switch at the top. Until published, the form's public URL returns 404 — so you can iterate without exposing a half-done form.
  </Step>
</Steps>

## Embed on your site

Once published, three options to get the form in front of visitors:

### 1. Hosted public link

Every form has a public URL like `servicebooked.ca/f/abc123`. Share it directly — paste in an Instagram bio, link from a Google Ad, embed in an email. No installation needed.

### 2. iframe embed

For embedding on your website, copy the iframe snippet from the **Share** tab and paste it on any page. It includes a small `<script>` that auto-sizes the form to its content — see [Embed on your site](/forms/embed-on-your-site) for the full snippet and per-platform steps.

### 3. Native embed (advanced)

The form's public JSON is also available at `/api/public/forms/abc123` — for custom integrations where you'd render the fields yourself. Most owners don't need this.

## Auto-tagging and pipeline integration

When a form submission creates a new contact, you can:

* **Auto-apply tags** — e.g., every "Quote request" submission gets the `quote-request` tag
* **Set a starting pipeline stage** — e.g., new leads automatically land in your "Lead" stage
* **Auto-open a deal** — create a pipeline card for follow-up

Configure these in the form's **Pipeline integration** section. Existing contacts who fill out the form a second time DON'T get re-tagged or re-staged (we don't want a follow-up form to demote a customer back to "Lead").

## What happens to a submission

1. Validates against your form schema.
2. Creates / updates the contact in your CRM (deduped on email + phone).
3. Saves the full submission to **Form submissions** (visible from the form detail page).
4. Tags the contact, sets pipeline stage, opens deal — whatever you configured.
5. Fires the auto-reply (if enabled) — see [auto-reply](/forms/ai-auto-reply).
6. Sends notification emails to your team — see [Notifications](/forms/notifications).
7. Lands in **Inbox** as a new conversation.

## Honeypot and spam

Every form has a hidden honeypot field that catches most bot submissions automatically. Plus we rate-limit per (IP, form) so a flood of submissions from one source gets blocked.

You don't need to add a CAPTCHA — the layered defenses are usually enough.

## Next

<CardGroup cols={2}>
  <Card title="Embed on your site" icon="code" href="/forms/embed-on-your-site">
    Detailed embed options for various platforms.
  </Card>

  <Card title="auto-reply" icon="sparkles" href="/forms/ai-auto-reply">
    Have the AI Receptionist reply intelligently to every submission.
  </Card>
</CardGroup>
