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

# Test a form before partners see it

> Submit a form the way a partner will, confirm the CRM record and notifications it produces, walk every outcome, and clean up the test without leaving records behind.

> For anyone about to hand a form to partners who wants to see it work first.

A form is the only part of a partner program where a silent failure is invisible until a partner is already annoyed.
It renders fine, it accepts a submission, and the record writes nowhere because one field is not mapped or a CRM validation rule rejected the value.
The fix is five minutes of dry run, once, before anyone external sees it.
This guide is that dry run, including the cleanup, so the test does not leave a fake deal in your pipeline.

## What you'll achieve

One test submission taken all the way through: the form as a partner sees it, the submission in your inbox, the record in your CRM with the right owner and the right partner attributed, the notifications that fired, every outcome exercised, and both the test submission and its CRM record removed afterwards.

## Before you start

<Steps>
  <Step title="Finish the form and its automation">
    Test after the CRM automation is configured, not before.
    A form with no automation will pass this test and still be useless.
    See [Build and publish a form](./build-and-publish-a-form) and [Connect a form to your CRM](/features/forms/crm-automations/guides/connect-a-form-to-your-crm).
  </Step>

  <Step title="Pick a partner to test as">
    Use an internal partner record, or a real partner you have an actual relationship with, not your largest one.
    You are about to create and delete a record attributed to them.
    See [Create a partner manually](/features/partners/partner-management/guides/create-a-partner-manually).
  </Step>
</Steps>

## Steps

### Submit it the way a partner will

<Steps>
  <Step title="Take the partner link, not the general link">
    Go to [Forms](https://app.introw.io/forms), open the form and choose **Share form**.
    On the **Link** tab there are two links, and the difference matters for the test.

    * **General link** is anonymous. Nobody is attributed, and the submitter has to type their own details.
    * **Partner link** is scoped to one partner you select. The submission arrives already attributed to them, and the standard submitter fields resolve their contact and company on their own.

    Test with the **Partner link**, because that is what a real partner uses from their portal, and attribution is most of what you are testing.
    If you plan to share the form publicly, test the general link too: it exercises a genuinely different path.
  </Step>

  <Step title="Open it in a fresh browser session">
    Open the link in a private window or a different browser, so you see it as an outside visitor rather than as a signed-in admin.
    Check the obvious things while you are there: does the form explain itself, is the field count something a partner will actually finish, and does every required field deserve to be required.
    A field you cannot justify out loud is a field to cut, since every one of them costs you submissions.
  </Step>

  <Step title="Submit realistic values, then submit bad ones">
    Fill it as a partner would and submit.
    Then submit a second time on purpose badly: leave a conditionally required field blank, put a value in a picklist-backed field that is not one of your CRM's options, and use a date or amount format your CRM is fussy about.

    You are looking for two behaviours.
    A validation error the partner can act on is the good outcome.
    A submission that lands in **Error** means it reached Introw but your CRM refused to write it, which is almost always a required property or a validation rule on the object.
    Better to find that now than on a partner's first registration.
  </Step>
</Steps>

### Follow it all the way through

<Steps>
  <Step title="Confirm it landed with the status you expect">
    Go to [Submissions](https://app.introw.io/submissions) and find it.
    Check the status is the one your configuration implies: **Pending** if you set an approval gate, **Auto accepted** if you did not, or **Accepted** once you approve it.
    Check the partner column names your test partner rather than being empty, since an unattributed submission cannot be bulk accepted and will not credit anyone.
  </Step>

  <Step title="Open the record in your CRM">
    This is the step people skip and the one that catches real problems.
    Open the record the submission created and check it field by field:

    * Every field the partner filled arrived, in the right property, in a usable format.
    * The record is on the object and pipeline you intended, at the stage you intended.
    * The owner is the person who should be working it, not whoever the CRM defaults to.
    * The name follows your convention rather than reading as an ID.
    * The partner is attributed by whichever method you configured, so reporting and commissions will resolve.

    See [Configure partner deal owner and name](/features/deal-registration/registration/guides/configure-partner-deal-owner-and-name) and [Configure deal attribution](/features/co-selling/shared-pipelines/guides/configure-deal-attribution).
  </Step>

  <Step title="Check who got told">
    A form nobody is alerted about is a form that waits.
    Confirm the on-submit alert reached your team, including the partnership-manager fallback if no team member could be resolved, and that it arrived on the channel you expect rather than only by email.
    See [Configure the chat integration](/features/integrations/chat/guides/configure-the-chat-integration).
  </Step>
</Steps>

### Exercise every outcome

<Steps>
  <Step title="Return it and check the partner's side">
    Return the test submission with a specific comment, then reopen the form as the partner.
    Their previous answers should be prefilled and your comment shown with them, and their edit should update the same submission rather than creating a second one.
    This is the outcome worth rehearsing, because a returned submission with a vague comment is the one that never comes back.
  </Step>

  <Step title="Decline it, then reopen it">
    Decline it and confirm the partner receives your decline message rather than a bare status change.
    Then use **Reopen** at the top of the declined submission and confirm it returns to **Pending** and re-enters the approval gate from the first step.
  </Step>

  <Step title="Accept it last">
    Accept it only when you are done, because accepting is the one outcome you cannot undo.
    It runs the CRM automations and tells the partner yes.
    See [Choose how submissions get approved](/features/forms/submissions-approvals/guides/choose-an-approval-model).
  </Step>
</Steps>

### Clean up properly

<Steps>
  <Step title="Delete the test submission">
    Select it in the inbox and choose **Delete**.
    This permanently removes the submission and tells no partner anything, which is exactly what you want for a test.
    It is not a decline, and it cannot be undone.
  </Step>

  <Step title="Delete the CRM record separately">
    Deleting the submission does not delete the record it created in your CRM.
    That record is real, it is in someone's pipeline, and it will show up in a forecast if you leave it.
    Delete it in your CRM as a second, deliberate step.

    <Warning>
      This is the step that gets forgotten. A test deal registration that was accepted leaves a live deal attributed to a real partner, which can also flow into commission calculations. Delete it in the CRM before you move on.
    </Warning>
  </Step>
</Steps>

## Verify it worked

You have seen the form render as an outsider, one submission arrive attributed to the right partner, one clean record in your CRM with the right owner and name, an alert reach your team, and a return arrive back with the partner's prior answers intact.
Nothing is left in the inbox and nothing is left in the pipeline.

Do this again after any change to the form's fields or its CRM automation.
It is the cheapest test in the product and the only one that covers the whole path.

## Related

<CardGroup cols={2}>
  <Card title="Build and publish a form" icon="pen-ruler" href="./build-and-publish-a-form">
    The build this test verifies.
  </Card>

  <Card title="Connect a form to your CRM" icon="database" href="/features/forms/crm-automations/guides/connect-a-form-to-your-crm">
    The mapping most test failures come back to.
  </Card>

  <Card title="Choose how submissions get approved" icon="circle-check" href="/features/forms/submissions-approvals/guides/choose-an-approval-model">
    What each outcome does to the partner.
  </Card>

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