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

# Connect a form to your CRM

> Map fields to CRM properties, control how submissions create or update records, attribute them to the partner, and prefill from known data.

> For partner ops or a CRM admin turning partner submissions into clean, attributed CRM records.

A form only pays off when its data lands in the CRM correctly, with no re-keying and no duplicates. This guide wires a form to your CRM end to end: map each field to a property, decide whether a submission creates or updates records and how it fills each property, tie every record back to the submitting partner, and prefill known data so partners confirm instead of retype. It works with HubSpot and Salesforce, with the CRM-specific differences called out where they matter.

## What you'll achieve

A form whose submissions write straight into your CRM the way you intend - creating or updating the right objects, filling properties without clobbering good data, attributed to the correct partner, and prefilled from a known record when the form is opened in context. Partner-attached pipeline and reporting stay accurate without manual cleanup.

## Before you start

<Steps>
  <Step title="Connect your CRM">
    A CRM integration (HubSpot or Salesforce) must be connected and synced. Without it, the mapping controls do not appear.
  </Step>

  <Step title="Have a form with fields">
    The form should already have its fields (see [Build and publish a form](/features/forms/form-builder/guides/build-and-publish-a-form)).
  </Step>

  <Step title="Know your target objects">
    Decide which CRM objects each submission should affect and which properties matter, so you map deliberately.
  </Step>
</Steps>

## Steps

### Map fields to CRM properties

<Steps>
  <Step title="Map each field to an object and property">
    Go to [Forms](https://app.introw.io/forms), open the form on the **Form builder** tab, and select a field. In its **CRM Mapping** section, choose the CRM object the field belongs to and the property its value should write to. A mapped field carries the property's name and type, so the submitted value goes to exactly the right place. Map every field whose answer belongs in the CRM; leave purely informational fields unmapped.
  </Step>
</Steps>

### Configure what each submission writes

<Steps>
  <Step title="Add a CRM object automation">
    Open the **Automation** tab, choose **Add automation**, and add the **{object} automation** for each CRM object a submission should create or update (for example a deal, company, or contact). Each automation is where you decide how that object is written.
  </Step>

  <Step title="Set how each property is filled">
    Inside the automation, configure values in two places:

    * **Form fields** - map a CRM property to a **Form Field** so the submitted value fills it. This is the type-FORM mapping: the value is whatever the partner entered.
    * **Default values** - set a fixed **Value** for a CRM property regardless of what the partner submits. Use this for constants like a source or record type.

    For each row, set the **Write Mode**:

    * **Fill in if not known** - only writes when the property is empty, so you add missing data without touching existing values. This is the safe default for updates.
    * **Overwrite** - always replaces the current value. Use it only when the form is the authoritative source for that property.
  </Step>

  <Step title="Decide create versus update">
    Control whether a submission makes new records or only updates existing ones using the automation's flags:

    * **Create a new {object} when one is selected** - when a partner picks an existing record in a CRM object field, still create a fresh record instead of updating the selected one.
    * **Disable net new {object} creation** (under **Advanced**) - never create this object; only update matches. Use this to prevent duplicate companies or contacts.
    * **Always update the submitting partner's company** and **Always update the submitting contact** - keep the partner's own company and contact records current from every submission.
  </Step>

  <Step title="Prevent duplicates with deduplication fields">
    Use **Deduplication fields** to tell Introw which form fields identify an existing record, so a submission matches and updates the right one instead of creating a duplicate. When you set none, Introw falls back to standard matching (name plus domain or website for companies, email for contacts). Setting explicit fields is what keeps a busy form from littering the CRM with near-duplicates and is also how channel-conflict detection compares records.
  </Step>
</Steps>

### Attribute submissions to the partner

<Steps>
  <Step title="Turn on partner attribution">
    In the CRM object automation, enable **Auto-link your partners** so the created or updated record is tied to the submitting partner. This is what keeps partner-attached pipeline attributed in the CRM rather than landing as orphaned records.
  </Step>

  <Step title="Map the attribution and confirm partner identity">
    Set the attribution mapping (for example the **Submitting Partner**) so Introw knows which CRM relationship to write. Then make sure the form can identify the partner: share it with a **Partner link** so submissions are automatically related to that partner, or capture the partner with a partner picker field. Without a known partner, attribution has nothing to write.
  </Step>
</Steps>

### Prefill from a known CRM record

<Steps>
  <Step title="Open the form in record context">
    When a form is opened with a CRM record's context - for example from a CRM embed on that record - its mapped fields prefill with the record's current values. Partners then confirm or correct known data instead of retyping it, which speeds up submission and keeps values consistent. Prefill relies entirely on the field mapping from the first phase, so any field you want pre-populated must be mapped to a property.
  </Step>
</Steps>

### Create a partner from a submission (optional)

<Steps>
  <Step title="Add the Partner automation">
    For forms that onboard brand-new partners (a partner application, for example), choose **Add automation** and add **Partner automation** to create a partner directly from a submission. In its panel you map the **Partner name** and **Partner domain** from form fields, optionally set the new partner's **Tier**, **Phase**, and **Partner manager**, choose the portal **Experience** and **Partner portal access** (**Restricted to invited users** or **Restricted to partner domain**), and optionally turn on **Auto-invite submitter** with a **Welcome message** so the submitter is invited automatically. Note that adding this automation turns off channel-conflict analysis on the form, since the submission is creating a partner rather than registering against an existing one.
  </Step>
</Steps>

### CRM-specific differences

<Steps>
  <Step title="HubSpot: set association labels">
    On HubSpot, a CRM object automation can set **Custom association labels for {object} relations** so created records are linked with the right labeled association (for example which company a contact belongs to). Leave **Use default association label** on unless your HubSpot setup uses specific labeled associations.
  </Step>

  <Step title="Salesforce: map to the matching object and fields">
    On Salesforce, pick the Salesforce object each automation targets and map fields to the matching Salesforce fields. The create/update, write-mode, attribution, and deduplication behavior is the same; only the object and field names differ by CRM.
  </Step>
</Steps>

## Verify it worked

Submit a test through a partner link. In your CRM, the expected records are created or updated with the right values, existing data is preserved where you chose fill-if-empty, no duplicate is created for a matching record, and each record is attributed to the submitting partner. Opening the form from a record's context shows its fields prefilled.

## Related

<CardGroup cols={2}>
  <Card title="Build and publish a form" icon="pen-ruler" href="/features/forms/form-builder/guides/build-and-publish-a-form">
    Create the form and fields you map here.
  </Card>

  <Card title="Run a submission approval workflow" icon="clipboard-check" href="/features/forms/submissions-approvals/guides/run-a-submission-approval-workflow">
    Review and approve submissions before they act.
  </Card>

  <Card title="Implementation reference" icon="screwdriver-wrench" href="../technical">
    Full configuration options.
  </Card>
</CardGroup>
