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

# Form mapping

A form mapping tells Distro which website form to listen to and how its submitted fields correspond to CRM properties. A **Form Router** uses that mapping to qualify prospects and assign meetings. The **installation snippet** connects the published website to the router. You need all three for website form routing.

### Map a website form

{% stepper %}
{% step %}

#### Identify the form

Open **Form routing → Forms → New Form**. Enter a recognizable **Form name** and the **Form selector**.

For a standard HTML form, use a stable CSS selector such as `#contact-form`. Provider identifiers can differ: HubSpot uses its form ID without a `#` prefix. Check your provider guide below before copying an identifier.
{% endstep %}

{% step %}

#### Map the fields used by your rules

Under **Field mapping**, choose **Add field**. Enter the website field's submitted name and select the corresponding CRM property. Prioritize email and every field used by qualification or ownership rules.

Match the field's internal `name`, not just its visible label. For example, “Work email” might submit as `email`. HubSpot V4 contact names such as `0-1/email` normalize to `email`.

Add only the fields your routing and CRM workflows need. Choose **Create form**, or **Save changes** when editing.
{% endstep %}

{% step %}

#### Connect it to your router

Open the Form Router's **Form Submission** card and select the mapping as the **Connected form**. Review the selector and mapped fields, then **Save**.

Configure the routing rules and event type, test the saved draft, and choose **Publish** when ready. See [Form routing](https://help.distro.so/routing/form-router).
{% endstep %}

{% step %}

#### Install and verify the website

Open the router's **three-dot menu → Install router**. Select the **Installation method** and **Form provider**, then copy your generated snippet and follow its placement instructions.

Test the published page with controlled qualified and unqualified submissions. Confirm the original form destination, scheduler behavior, and submitted values in **Routing Logs**. Creating or importing a mapping alone does not install the router.
{% endstep %}
{% endstepper %}

<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FQA3GQNrIYVrPQ90NBwRa%2Fuploads%2Ffdt7RAG5mLZkRiF5nBiW%2Fform-mapping-dark.png?alt=media&#x26;token=c6fed626-7ea8-4c75-8a8c-0b8898e7eed5" alt="Request a demo form editor in dark mode, showing the form name, selector, and field mappings in the Northstar Labs test workspace."><figcaption><p>Open a form from the Forms list to edit its selector and field mappings.</p></figcaption></figure>

### Find fields automatically

{% stepper %}
{% step %}

#### Scan the form page

Choose **Auto map**, enter the **Form page URL**, and click **Find fields**. The page must be publicly accessible.
{% endstep %}

{% step %}

#### Select the right form

Choose the detected form whose selector and fields match the form you want to route. If no forms are found, try a page where the form is visible without signing in, or add the fields manually.
{% endstep %}

{% step %}

#### Review before saving

Check the imported selector, field names, and CRM mappings, then save. Automatic discovery does not verify your routing rules or install a website snippet.
{% endstep %}
{% endstepper %}

### Choose your provider guide

Use the guide for your website's form provider. It explains the correct identifier, script placement, and submission behavior.

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th><th data-hidden data-card-cover data-type="files"></th></tr></thead><tbody><tr><td><strong>Custom HTML forms</strong></td><td>Connect standard HTML forms and compatible website builders.</td><td><a href="https://help.distro.so/routing-forms/custom-html-form">https://help.distro.so/routing-forms/custom-html-form</a></td><td><a href="https://2442454418-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FQA3GQNrIYVrPQ90NBwRa%2Fuploads%2FHDBhROCNS0HWaBf1nKc9%2Fform-guide-custom-html.png?alt=media">form-guide-custom-html.png</a></td></tr><tr><td><strong>HubSpot forms</strong></td><td>Install Distro with legacy forms or the updated V4 editor.</td><td><a href="https://help.distro.so/routing-forms/hubspot-form">https://help.distro.so/routing-forms/hubspot-form</a></td><td><a href="https://2442454418-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FQA3GQNrIYVrPQ90NBwRa%2Fuploads%2FqJ2zjjVPr27FbUrfeYl4%2Fform-guide-hubspot.png?alt=media">form-guide-hubspot.png</a></td></tr><tr><td><strong>Marketo forms</strong></td><td>Connect Adobe Marketo Engage forms to your router.</td><td><a href="https://help.distro.so/routing-forms/marketo">https://help.distro.so/routing-forms/marketo</a></td><td><a href="https://2442454418-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FQA3GQNrIYVrPQ90NBwRa%2Fuploads%2F4WSOoAtvhn38PsaO14Zt%2Fform-guide-marketo.png?alt=media">form-guide-marketo.png</a></td></tr><tr><td><strong>Pardot / Account Engagement</strong></td><td>Set up form and thank-you pages, including iframe installations.</td><td><a href="https://help.distro.so/routing-forms/pardot">https://help.distro.so/routing-forms/pardot</a></td><td><a href="https://2442454418-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FQA3GQNrIYVrPQ90NBwRa%2Fuploads%2F2wEska0A911KKZNZnjFb%2Fform-guide-pardot.png?alt=media">form-guide-pardot.png</a></td></tr><tr><td><strong>Jotform</strong></td><td>Connect accessible forms and same-origin iframes.</td><td><a href="https://help.distro.so/routing-forms/jotform">https://help.distro.so/routing-forms/jotform</a></td><td><a href="https://2442454418-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FQA3GQNrIYVrPQ90NBwRa%2Fuploads%2FK4t5kTZZRukJJy3MycJq%2Fform-guide-jotform.png?alt=media">form-guide-jotform.png</a></td></tr><tr><td><strong>Contact Form 7</strong></td><td>Connect WordPress forms using Contact Form 7.</td><td><a href="https://help.distro.so/routing-forms/contact-form-7">https://help.distro.so/routing-forms/contact-form-7</a></td><td><a href="https://2442454418-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FQA3GQNrIYVrPQ90NBwRa%2Fuploads%2FXuk4WrqZH4VjK2mmapBM%2Fform-guide-contact-form-7.png?alt=media">form-guide-contact-form-7.png</a></td></tr><tr><td><strong>Framer</strong></td><td>Install Distro and map the fields on your Framer website.</td><td><a href="https://help.distro.so/routing-forms/install-router-on-framer">https://help.distro.so/routing-forms/install-router-on-framer</a></td><td><a href="https://2442454418-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FQA3GQNrIYVrPQ90NBwRa%2Fuploads%2FIZRRbqEVDuXh6YiWY3B4%2Fform-guide-framer.png?alt=media">form-guide-framer.png</a></td></tr></tbody></table>

### Choose an installation method

| Method                      | Where the scheduler appears                       |
| --------------------------- | ------------------------------------------------- |
| **After a form → popup**    | In a popup after the form is submitted.           |
| **After a form → embedded** | In the page container from the generated snippet. |
| **Button / in-app**         | From your own button or application submission.   |
| **Direct URL**              | From a link with the required form answers.       |

The provider selector changes the installation example, not the saved mapping. Check that the form identifier in the snippet matches your website.

By default, the installation follows the active router version. Pinning an activated version is an optional advanced setting. See [Router versions](https://help.distro.so/routing/router-versions).

### Maintain and troubleshoot mappings

| Problem                                                   | Check                                                                                                                                |
| --------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| A submitted value is missing                              | Compare the website's submitted field name with **Form Field Name** and its CRM property.                                            |
| A rule no longer matches after a website change           | Update the mapping, review affected routers, test, and publish the intended router version.                                          |
| The wrong form is detected                                | Check the selector or provider-specific form ID.                                                                                     |
| The original form destination stops receiving submissions | Follow the provider guide. Custom HTML handling attempts a JSON POST to the original action; the endpoint must accept that behavior. |

The Forms list shows connected-router counts and supports **Usage**, **Selector**, and **Field mapping** filters. Check where a mapping is used before changing it, because multiple routers can share it.


---

# 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://help.distro.so/routing-forms/overview.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.
