> ## 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.

# Forms

> No-code partner forms that capture structured input and run CRM automations on submit: map fields, attribute to partners, dedupe, enrich, and approve.

export const Headless = ({children, intro = true}) => {
  const [copied, setCopied] = useState(null);
  const copy = event => {
    const row = event.target.closest("li");
    if (!row) return;
    const text = row.textContent.trim();
    try {
      navigator.clipboard?.writeText(text);
    } catch {}
    setCopied(text);
    setTimeout(() => setCopied(null), 1600);
  };
  return <>
      {intro ? <p>
          Introw is <strong>headless</strong> by design: run everything here in plain language from Claude, ChatGPT,
          Slack, Teams, or your own CRM through Introw's <a href="/features/developer/mcp">MCP server</a>, with every
          action written straight back to your CRM source of truth. The portal is one surface, never the only one.
        </p> : null}

      {children ? <div className="not-prose" data-prompts="block">
          <div data-prompts="head">
            <span>{copied ? "Copied" : "Try it from your LLM"}</span>
          </div>
          <div data-prompts="rows" onClick={copy}>
            {children}
          </div>
          <a href="/headless/prompts" data-prompts="more">
            See all prompts
          </a>
        </div> : <Card title="See the headless motion" icon="wand-magic-sparkles" href="/headless">
          The agentic motion - lifecycle deep dives and a Claude Code skill library that run your partner program from
          Claude, ChatGPT, Slack, and your CRM.
        </Card>}
    </>;
};

export const Rail = ({children}) => <div className="not-prose" data-overview="rail">
    {children}
  </div>;

export const Impact = ({children}) => <div className="not-prose" data-overview="impact">
    {children}
  </div>;

export const Personas = ({children}) => <div className="not-prose" data-overview="personas">
    {children}
  </div>;

export const Pains = ({children}) => <div className="not-prose" data-overview="pains">
    {children}
  </div>;

> Forms are the engine behind much of Introw. A no-code form captures structured input from a partner, and on submit its CRM automation does the real work: it maps to your objects, attributes the record to the partner, matches what already exists so it enriches instead of duplicating, and routes through the approval you set. Deal registration, lead sharing, MDF, partner applications, purchase orders - they are all forms underneath, which is why partner input lands as clean, attributed CRM data instead of duplicates in a form silo.

## The problem it solves

<Pains>
  | Without Introw | With Introw |
  | - | - |
  | Partner input lands in a silo | It lands in your CRM |
  | Partner data brings duplicates | It matches and enriches instead |
  | Approvals stall for days | AI clears the routine ones |
  | A new field needs engineering | Partner ops adds it themselves |
</Pains>

## Impact

Every partner interaction that matters is a form: registering a deal, asking for funds, applying to the program. Making those quick and answerable is most of what a partner means by easy to work with.

<Impact>
  for your business

  * **In your CRM**
    Every submission maps to CRM objects and properties and is attributed to the partner, so nothing is re-keyed
  * **AI, not admin**
    AI reviews routine submissions against your instructions and clears the obvious ones, keeping humans on judgment calls
  * **Cost to run**
    Forms, mappings and approval flows are all no-code, so a new automation never waits on a release

  for your partners

  * **Self-serve**
    They submit from a link, the portal, email, Slack, Teams, an assistant, or a CSV of a thousand rows
  * **Enabled**
    The same form takes a deal registration, an MDF request or an application, so there is one thing to learn
  * **Efficient**
    Validation happens before they submit, so a request comes back approved rather than returned

  [A day in the life of a referral partner](/days-in-the-life/referral-partner)
</Impact>

<Personas>
  * **Partner Operations** - forms, mappings and approvals, no code
  * **Partner Marketing** - forms inside portals and journeys
  * **RevOps** - clean, attributed CRM data
  * **Partners** - submit from wherever they are
</Personas>

## How this area works

Forms are not a side feature: they are the intake layer the rest of Introw runs on. Deal registration, lead sharing, MDF requests and claims, onboarding steps, course enrollment, feedback and partner applications are all forms. That is why one set of field types, conditional logic, approval chains and CRM mappings covers every one of them. Build the mechanics once and every motion inherits them.

A submission is not just stored - it runs an automation that lands attributed, deduplicated CRM data.

**Where this sits in a setup.** Forms are core, not optional: they are how a partner sends you anything. The [referral](/tracks/referral), [reseller](/tracks/reseller) and [co-sell](/tracks/co-sell) tracks each build theirs before the portal is published.

<Rail>
  * ![The form builder: the live form in the middle, and the selected field's CRM mapping, type, label, required flag and visibility conditions on the right.](https://assets.introw.io/docs/features/forms/form-builder/shots/builder.png)

    [**Form Builder**](./form-builder)

    Fields, layout and branding, with no code.

    [How to · 4 guides](./form-builder/technical)

  * ![The Share form dialog, offering a general link, a per-partner link that attributes every submission, and Embed and API tabs beside them.](https://assets.introw.io/docs/features/forms/sharing-submitting/shots/share.png)

    [**Sharing & Submitting**](./sharing-submitting)

    Link, embed, portal, chat, assistant, CSV, or API.

    [How to · 3 guides](./sharing-submitting/technical)

  * ![A submission open for review, with what the partner submitted on the activity thread, the record it wrote to, and the comment box that replies to them.](https://assets.introw.io/docs/features/forms/submissions-approvals/shots/submission.png)

    [**Submissions & Approvals**](./submissions-approvals)

    One inbox, with approval gates and AI review.

    [How to · 2 guides](./submissions-approvals/technical)

  * ![A form's Automation tab, with its automations listed on the left and the deal automation open on the right, mapping each form field to a CRM property and a write mode.](https://assets.introw.io/docs/features/forms/crm-automations/shots/automation.png)

    [**CRM Automations**](./crm-automations)

    Map, attribute, match and enrich on accept.

    [How to · 1 guide](./crm-automations/technical)
</Rail>

Whenever you need structured input from a partner, a form captures it - and a form is four things working together:

* **A no-code builder** - assemble fields (text, uploads, partner and CRM-object pickers, quote selectors, checkboxes, CSV batch upload) and brand it. Partners fill it in with no CRM seat.
* **Every way to submit** - deliver the form by share link, embed, or portal section. Partners can also submit from email, Slack, Teams, or an AI assistant, and whole lists go through a bulk CSV upload. Your own systems or an agent can submit it over the API. Every channel feeds the same form.
* **A submissions inbox with approval** - every submission lands in one place to accept, decline, or return, behind optional **multi-step human approval** and an **AI review** that clears routine cases automatically.
* **A CRM automation** - on accept, the submission becomes CRM records. Fields map to properties and the record is attributed to the partner by your defined method. Existing records are matched and enriched rather than duplicated, and channel conflict is flagged.

Because that automation is the real payload, forms are not a side tool - they are the mechanism a large part of Introw runs on. The same platform captures a deal registration, a shared lead, an MDF project and its claims, a partner application, or a purchase order. Each one lands as a clean, attributed record in your CRM.

<CardGroup cols={2}>
  <Card title="Deal registration" icon="file-signature" href="/features/deal-registration">
    Register partner deals with attribution and channel-conflict screening.
  </Card>

  <Card title="Lead sharing" icon="share-nodes" href="/features/referrals/lead-sharing">
    Partners share referrals that land attributed in your CRM.
  </Card>

  <Card title="MDF projects & claims" icon="sack-dollar" href="/features/mdf">
    Every step of the MDF lifecycle is a form with its own approval.
  </Card>

  <Card title="Partner applications" icon="user-plus" href="/features/forms/form-builder/guides/set-up-a-partner-application-form">
    A self-serve application that creates the partner and invites them.
  </Card>

  <Card title="Purchase orders & quotes" icon="file-invoice" href="/features/cpq/quotes">
    Capture PO and quote details tied to the deal.
  </Card>

  <Card title="Affiliate conversions" icon="link" href="/features/affiliate/conversion-tracking">
    Reconcile conversions that feed affiliate commission.
  </Card>
</CardGroup>

## Run it from your AI assistant

<Headless>
  * Submit a co-marketing request form for Acme.
  * Show all pending form submissions across every form.
  * Approve Globex's submission and notify them.
</Headless>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.