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

# Pre-fetch dynamic data for your form

> Fetch information from Airtable, Notion, SmartSuite or a webhook before your form loads. Display the data in your form or use it in your form logic.

export const SupportBanner = () => {
  const titleId = React.useId();
  return <div className="support-banner" role="region" aria-labelledby={titleId}>
      <span className="support-banner__ring support-banner__ring--outer" aria-hidden="true" />
      <span className="support-banner__ring support-banner__ring--middle" aria-hidden="true" />
      <span className="support-banner__ring support-banner__ring--inner" aria-hidden="true" />
      <span className="support-banner__ring support-banner__ring--center" aria-hidden="true" />

      <div className="support-banner__content">
        <div className="support-banner__title" id={titleId} role="heading" aria-level="2">Still have questions?</div>

        <div className="support-banner__copy">
          <span className="support-banner__line">Our team is happy to help. Start a live chat using the</span>
          <span className="support-banner__line">
            chat bubble <span className="support-banner__chat-icon" aria-hidden="true" /> in the bottom right, or email us at
          </span>
          <span className="support-banner__line">
            <a href="mailto:support@fillout.com">support{'@'}fillout.com</a>
          </span>
        </div>

        <a className="support-banner__cta" href="mailto:support@fillout.com">Contact us</a>
      </div>
    </div>;
};

## How it works

You can fetch information from a database or service and add it to your form. This is possible even if your form is connected to one table but needs to fetch data from another table.

This can be done using **pre-fetch**, which lets you:

* Pull in related record data
* Display external table values
* Use fetched data in logic or personalization

Even when a form is set to create new records, this can still be done as long as pre-fetch is set up.

<Info>
  This feature is available to **Business** and **Enterprise** users. For more details on pricing, click [**here**](https://www.fillout.com/pricing). However, you can still make update forms that pre-fetch information on the **Free** plan, with [this approach](/help/update-forms).
</Info>

## How to pull external information into your form

Fillout lets you get data from Airtable, Notion, SmartSuite and webhooks to use in your form.

<Note>
  Using Zite Database? See [Pre-fetch records for use in your form](/help/pre-fetch-records) for the steps.
</Note>

<Steps>
  <Step title="Select your integration">
    Navigate to the `Integrate` page from the top menu and choose Airtable, Notion or SmartSuite. To fetch data from any other service, [use a webhook](#pre-fetch-data-with-a-webhook) instead.
  </Step>

  <Step title="Add a pre-fetch record">
    Then, click `+ Add new` under **Pre-fetch pages**.

    <img src="https://mintcdn.com/fillout-005a867b/Dd1ZrEbxY35hkT5t/images/Screenshot2025-12-16at6.05.44PM.png?fit=max&auto=format&n=Dd1ZrEbxY35hkT5t&q=85&s=73d54383b312225415caad5bec2185be" alt="Screenshot 2025-12-16 at 6.05.44 PM.png" title="Screenshot 2025-12-16 at 6.05.44 PM.png" style={{ width:"78%" }} width="1312" height="290" data-path="images/Screenshot2025-12-16at6.05.44PM.png" />

    Enter a **name** for your record, then select a **base** and a **table**. Under **Filter by**, choose an Airtable field to match with a [URL parameter](/help/url-parameters), static text, or login fields (from the login page). In this example, we'll select email.

    <img src="https://mintcdn.com/fillout-005a867b/R7rMGlxIdHBwDsJR/images/Screenshot2025-02-14at11.40.20AM.png?fit=max&auto=format&n=R7rMGlxIdHBwDsJR&q=85&s=3ae7c119b48548f44d2d54c04fbf1f75" alt="Screenshot of the Fillout form creation page" width="1560" height="1408" data-path="images/Screenshot2025-02-14at11.40.20AM.png" />
  </Step>
</Steps>

## Pre-fetch data with a webhook

To fetch data from a service other than Airtable, Notion or SmartSuite, use a webhook. Fillout calls your endpoint every time the form loads.

<Steps>
  <Step title="Add a Webhook integration">
    Click `Integrate` on top followed by `Webhook`. If you only want to pre-fetch data, you can leave the **Webhook URL** empty.
  </Step>

  <Step title="Add a pre-fetch">
    Switch from `Simple` to `Advanced` at the top, then scroll down to **Pre-fetch** and click `+ Add new`.

    <img src="https://mintcdn.com/fillout-005a867b/H25XKkKj113R0XfC/images/webhook-pre-fetch-section.png?fit=max&auto=format&n=H25XKkKj113R0XfC&q=85&s=d626dca3642f06427a0c604f1c5be2da" alt="The Pre-fetch section at the bottom of the Webhook integration" width="1500" height="290" data-path="images/webhook-pre-fetch-section.png" />

    In the popup, **name your webhook response**. This is just a label to help you find the fetched values in your form. Click `Continue`.

    <img src="https://mintcdn.com/fillout-005a867b/H25XKkKj113R0XfC/images/webhook-pre-fetch-name.png?fit=max&auto=format&n=H25XKkKj113R0XfC&q=85&s=5a07029106770f932b24690e7064b925" alt="The Setup pre-fetch hook popup asking for a webhook response name" style={{ width:"70%" }} width="1093" height="385" data-path="images/webhook-pre-fetch-name.png" />
  </Step>

  <Step title="Set up the request">
    Enter the **URL** of the endpoint to fetch from and choose the **HTTP method**. If your endpoint needs them, add a **Body**, **URL Parameters**, **Headers** or **Cookies**.

    <img src="https://mintcdn.com/fillout-005a867b/H25XKkKj113R0XfC/images/webhook-pre-fetch-request.png?fit=max&auto=format&n=H25XKkKj113R0XfC&q=85&s=1f1ea0d643a66e89b2cd83b972e8bd41" alt="The Setup pre-fetch hook popup with the request options and the Test fetch button" style={{ width:"55%" }} width="1120" height="1810" data-path="images/webhook-pre-fetch-request.png" />
  </Step>

  <Step title="Test the fetch">
    Click `Test fetch` to pull a sample from your endpoint. This is how the form learns the structure of the response, so you can reference the fetched values. Then click `Done`.
  </Step>

  <Step title="Use the fetched values">
    Reference the fetched values in your form's fields, for example as a [default value](/help/prefill-fields). Fetched values can't be used to load the options of a [dynamic dropdown](/help/dynamic-form-dropdowns) yet.
  </Step>
</Steps>

### When pre-fetch runs

Pre-fetch only runs when the form loads, so the form needs to know what to fetch before it opens.

* **Fetching based on a respondent's answers.** Use two forms. The first form collects the input and [redirects to the second form](/help/combine-and-repeat-forms), which fetches from your endpoint.
* **Integration logic.** [Conditional integration logic](/help/conditional-integration) doesn't apply to a webhook pre-fetch. Since it runs on form load, conditions in the form can't restrict it.

## Use pre-fetched records in your form

Check out [this article](/help/answer-piping) to see how you can display pre-fetched records, use the data to show or hide questions, branch to different pages, and more.

<Check>
  You can fetch records from the same database you’re working in, or even an entirely separate one on your account!
</Check>

## **Related articles**

<CardGroup cols={3}>
  <Card title="URL Parameters" color="#FFC738" icon="brackets-curly" iconType="regular" href="/help/url-parameters">
    Pass information to a form to support pre-filling.
  </Card>

  <Card title="Answer piping" color="#FFC738" icon="wand-magic-sparkles" iconType="regular" href="/help/answer-piping">
    Insert previous answers into upcoming questions or fields.
  </Card>

  <Card title="Use dynamic data" color="#FFC738" icon="arrow-down-right" iconType="regular" href="/help/fetch-dynamic-data">
    Display content to hide, validate and pre-fill fields.
  </Card>
</CardGroup>

<SupportBanner />


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