# Send a request from a Zap

Create a formbase request from any Zapier trigger, prefill and lock the answers you already know, and send the link by email or through your own channel.

## Send a request from a Zap

A request asks one named recipient to complete a form. This guide adds a Create Request step to a Zap, prefills the recipient's name so they cannot change it, and hands the link to the next step.

<p>
  You need a <a href="/guides/zapier/connect">formbase connection in Zapier</a> and a published form. What a request is, and every option it
  takes, is in <a href="/requests/creating-requests">Creating requests</a>; this guide shows where those options sit in Zapier.
</p>

<h2 id="add-the-step">1. Add the Create Request step</h2>

<p>
  Start with the trigger that should send the request: a deal marked won in your CRM, a new row in Google Sheets, a scheduled date. Add an
  action, choose <strong>formbase</strong>, and pick <strong>Create Request</strong>.
</p>

<h2 id="recipient-and-delivery">2. Pick the form, the recipient and the delivery</h2>

<ul>
  <li>
    <strong>Form</strong> is the form the recipient completes. It must be published.
  </li>
  <li>
    <strong>Recipient Email</strong> and <strong>Recipient Name</strong> usually come from the trigger. The email is needed for email
    delivery and for reminders.
  </li>
  <li>
    <strong>Language</strong> is one of the form's published languages, like <code>de</code>. Leave it empty for the form's default.
  </li>
  <li>
    <strong>Delivery</strong> decides who sends the link. <strong>Email</strong> lets formbase send the
    <a href="/requests/invitations-and-reminders">invitation and reminders</a>, and needs a Pro or Business plan. <strong>None</strong>, the
    default, sends no invitation: a later step of your Zap sends the <strong>Request URL</strong>, by Slack, SMS or your own email tool. If
    the form has <strong>Send reminders</strong> on and you fill in <strong>Recipient Email</strong>, formbase still emails the scheduled
    reminders. To send none at all, leave Recipient Email empty.
  </li>
</ul>

<h2 id="prefill-and-lock">3. Prefill and lock what you already know</h2>

<p>
  Once you pick the form, each question you can prefill appears below as a field, named after its
  <a href="/requests/field-keys">field key</a>. Signature, file upload, payment, appointment and calculated questions have none. Fill in any
  answer you already have; the recipient sees it filled in. Add a question to <strong>Read-only fields</strong> to lock it, so the recipient
  can see it but not change it. A locked question must also be prefilled.
</p>

<p>The recipient opens the link and finds their name filled in and locked:</p>

<p>
  Hidden fields of the form show up as <strong>(context)</strong> fields: the recipient cannot change them and sees them only where the form
  mentions them, and they come back both in the request's Context and among the answers. If the form has a Documents block, a{' '}
  <strong>Documents</strong> field takes files from earlier steps. See{' '}
  <a href="/requests/creating-requests#three-buckets">Prefill, locked fields, and context</a> for the difference.
</p>

<h2 id="external-id">4. Set an External ID</h2>

<p>
  Put your own id for this piece of work in <strong>External ID</strong>, like the deal number <code>deal-1042</code>. It does two jobs:
</p>

<ul>
  <li>
    A later Zap can look the request up with <a href="/guides/zapier/manage-requests">Find Request</a>, without storing formbase's request
    ID.
  </li>
  <li>
    It is the <a href="/requests/creating-requests#idempotency">idempotency key</a>. If Zapier replays the step with the same External ID
    and the same inputs, you get the same request back instead of a second one. <strong>Deduplicated</strong> is then <code>true</code>. The
    same External ID with any input changed, within 30 days, fails with <em>Idempotency key … was already used for a different request</em>.
    Use a new External ID for each request, like <code>deal-1042-onboarding</code>, and a fresh one when you change a test step's inputs,
    including <strong>Test Request</strong>.
  </li>
</ul>

<p>
  <strong>Reminders</strong>, <strong>Expires At</strong> and <strong>Metadata</strong> are optional. A request expires after 30 days unless
  you set another date, at most 365 days away.
</p>

<h2 id="test-the-step">5. Test the step</h2>

<p>
  Click <strong>Test step</strong>. formbase creates the request and returns it. <strong>Request URL</strong> is the link for the recipient;
  map it into the step that sends it.
</p>

> ⚠️ **Testing the step creates a real request**
> <p>
>     Unless <strong>Test Request</strong> is on, the test is a real request: with Email delivery, the recipient gets the invitation. Turn
>     Test Request on while you build the Zap. A test request sends no email and counts nowhere, and it does not start any Zap with a
>     <a href="/guides/zapier/request-outcome">request trigger</a>. Turn it off before you publish.
>   </p>

<h2 id="next">Next</h2>

<div class="not-prose grid gap-3 sm:grid-cols-2 mb-8">
  - [Act on a request's outcome](/guides/zapier/request-outcome) — Start a Zap when the recipient approves, declines or asks for changes.
  - [Look up, remind and cancel requests](/guides/zapier/manage-requests) — Find a request by External ID, nudge the recipient, or withdraw it.
</div>
