> For the complete documentation index, see [llms.txt](https://docs.roadmap.so/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.roadmap.so/forms/building-with-forms.md).

# Building with forms

Create a form, configure its fields and settings, then place it in your theme.

Use Forms when you need to collect structured data from shoppers.

Common uses are contact forms, trade applications, quote requests, and onboarding flows.

### What you manage in Forms

The main **Forms** screen shows:

* each form name
* submission counts
* **Settings**
* **Mail Templates**
* **View Submissions**

Use this screen to manage the whole lifecycle of a form.

### Build your first form

{% stepper %}
{% step %}

#### Open Forms and create a new form

Click **Create Form** from the main Forms screen.
{% endstep %}

{% step %}

#### Add the form name

Use a clear internal name that your team will recognise later.
{% endstep %}

{% step %}

#### Review the handle

The handle is used when you place the form in the theme.

Keep it stable after launch.
{% endstep %}

{% step %}

#### Turn on only the advanced settings you need

Review the optional features before you build the field list.
{% endstep %}

{% step %}

#### Build the form fields

Add the inputs, choose widths, and mark required fields.
{% endstep %}

{% step %}

#### Configure email recipients and templates

Set up both customer and admin emails if the form should notify people automatically.
{% endstep %}

{% step %}

#### Add the form to your theme

Place the form block in the theme editor and enter the form handle.
{% endstep %}

{% step %}

#### Submit a real test

Check the storefront form, the emails, and the saved submission.
{% endstep %}
{% endstepper %}

### Advanced settings explained

Inside **Advance Settings**, you can enable:

* **Save details into a customer profile**
* **Save submissions to customer metafield**
* **Enable reCAPTCHA spam protection**
* **Link form to product purchase**
* **Enable Google Sheets Integration**
* **Trigger Klaviyo event on form submission**

Turn on only the features your workflow needs.

### Build the field list well

Each form field lets you control:

* field type
* field width
* label or heading
* field name
* whether the field is required
* whether the response should be saved as a customer tag

You can also drag fields to reorder them.

### Setup rules that prevent rework

* Use a stable handle after the form is live.
* Use clear field names such as `email`, `phone`, or `companyName`.
* Make the email field required if customer emails depend on it.
* Use half-width only when two fields naturally belong together.
* Test every enabled automation with a fresh submission.

### Test before launch

Run these checks:

1. the form loads in the right theme location
2. required fields block incomplete submissions
3. emails send to the right people
4. advanced settings save the data where expected
5. mobile spacing and field height feel correct

### Related guides

* [Add a form to your theme](/forms/add-a-form-to-your-theme.md)
* [Enable reCAPTCHA spam protection](/forms/enable-recaptcha-spam-protection.md)
* [Customise form design](/forms/customise-form-design.md)
* [Email notifications and templates](/forms/email-notifications-and-templates.md)
* [View form submissions](/forms/view-form-submissions.md)
* [Save into a customer profile](/forms/save-into-a-customer-profile.md)
* [Push to customer metafields](/forms/push-to-customer-metafields.md)
* [Trigger Klaviyo on submit](/forms/trigger-klaviyo-on-submit.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.roadmap.so/forms/building-with-forms.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
