Integrating ‘Fillout’ forms into your Retool apps

In this tutorial, we connect the Fillout API to Retool to display form responses directly from a Retool app.
Retool logo.

Collecting form responses efficiently and integrating them into your Retool applications can save time and streamline workflows. Fillout is a great alternative to Typeform that offers a seamless and affordable solution to handle form submissions and synchronize them directly with Retool.

This guide will walk you through:

  • Setting up a Fillout account.
  • Creating and sharing forms with Fillout.
  • Integrating Fillout responses directly into Retool and creating a table to display responses.

Let’s get started.

Step 1: Set up an account with Fillout

Begin your journey by visiting Fillout. Once you're there, creating an account is quick and intuitive. Whether you prefer to sign up with Google or use your email, Fillout's interface is designed for simplicity.

Fillout.com homepage

Luckily, Fillout offers a generous free plan that includes basic form functionality, so you can get started without needing to pay a thing. For those who need more advanced features like question types, custom confirmations, white-labeled forms, and custom share links, Fillout offers several pricing plan options that won’t break the bank either. 

We particularly like that Fillout charges based on functionality and doesn’t charge for extra users, which is a frustrating feature of competitors like Typeform. Now, upon signing in, you'll find yourself in a clean and user-friendly dashboard, ready to design your first form. 

Fillout dashboard.

Crafting your form is where Fillout really shines. With drag-and-drop tools, conditional logic, and dynamic fields, it’s straightforward to create highly optimized forms for even complex use cases. 

To get started, you can select one from hundreds of Fillout’s existing templates. 

Some of Fillout's most popular templates.

Or create a blank form tailored to your specific needs.

Options for getting started on Fillout by using a blank form, a template or connecting to a 3rd party app.

Since we’re pulling this data into Retool, let’s keep it simple for this tutorial. For this example, let’s create a form with fields for "Name" and "Email" and a text area for more details.Follow the following steps to create your simple form

Choose your form theme:

The page in Fillout for choosing a theme.

Then, name your form.

Naming a form in Fillout.

Now we can use the handy drag-and-drop interface to pull in some components. In this case let’s pull in an email input, a text input and longer text input.

0:00
/2:37


Once your masterpiece is ready, click Publish (top-right corner) of your screen to generate a shareable link or embed code. Copy the shareable link—you’ll need this later to test your form.

Where to copy your shareable link after publishing a Fillout form.

The next step is to Generate an API Key, this is what we’ll use in Retool to connect to your Fillout account.

Navigate to Settings in the dashboard (click your avatar in the bottom-left corner—it’s like finding hidden treasure).

A Fillout dashboard highlighting where to find the settings.

Go to the Developer tab and click Enable API.

How to enable APIs in a Fillout dashboard under the Developer tab.

Once you enable the API, copy your API key for the Retool integration. 

How to copy your API key in Fillout.

Step 2: Set up your Retool integration

Now let’s head to Retool and log in to our account.  Click Sign Up if you don’t already have one. 

Once you’re on the homepage, click the blue Create button to start building a new Retool app. Time to channel your inner app designer!

How to create a new app in Retool.

Click the </> icon on the left-hand side of the screen to access your app code and create a new resource.

Empty Retool workspace. The </> icon in the left sidebar menu is circled.

Click the + icon as shown in the diagram below to add a Resource Query

How to add a Resource query to a Retool app.


Select REST API as your resource type.

Adding a REST API query in Retool.

Fill in the following details in the modal. This is where you’ll need the API key you copied earlier:

  • Name: Choose a name for your resource. Make it snappy!
  • Base URL: https://api.fillout.com
  • Headers:
    • Key: Authorization
    • Value: Bearer <your Fillout API key>

After filling out these details, Click Create Resource in the top-right corner.

Settings for configuring a REST API resource in Retool.

Now that the resource is created let’s head back to our Retool app and use the Get all submissions endpoint to pull in all our form responses. We’re just going to use the basic endpoint, but the Fillout docs contain more URL parameters that you can use too.

  • Use this endpoint in the resource query you created in your app: GET /v1/api/forms/{formId}/submissions (see image below)
  • Replace {formId} with the ID of your form. If your form URL is https://form.fillout.com/t/gHretr3UKYus, the form ID is gHretr3UKYus

Click Save and Run to test your query.

Settings for a query in Retool. The GET value and the Save and Run button are highlighted.

To explore more of Fillout endpoints and create more complex examples, you can visit their docs to find out more. 

Now, let's talk about visualizing the data. Retool's components make visualizing data as fun as playing with Lego bricks. For this example, we’ll use a Table to showcase form responses.

Left: Retool Components tree. Middle: query settings. Right: Empty space for building app.

Since you’re already saved and run your query, the table should display the form responses automatically. If it doesn’t, you can connect to the data source by referencing the query in the ‘Data source’ value in the table, using curly brackets like this: 

{{yourquery.data.responses}}

In the right-hand sidebar, you can:

Hide or remove unused columns by clicking the three dots. Out with the clutter!

How to hide columns in a Retool table.

Now let’s add some custom columns for better data visibility by clicking the + icon.

How to add a custom column to a Retool table.

Now let’s add a column for us to display the questions too. and set it up with these values:

  • Source: questions
  • Label: Questions
  • Mapped Value: {{ item.map(item => item.name) }}

To map the values, we are using curly brackets and the .map function. The curly brackets tell Retool that we are going to use JavaScript.

Mapping values to a column in a Retool table.

Add a column for Answers and set it up with these values:

  • Source: answers
  • Label: Answers
  • Mapped Value: {{ item.map(item => item.value) }}
Mapping values to a column in a Retool table.

For better visibility, let’s add a modal component so that we can click a row and see individual responses. 

How to add a modal frame component in Retool.

After dragging the modal component to your editor, you should see a Modal just like in the image below

A Retool app with an open, empty modal.


Go ahead and add a Table component to your Modal. 

  • Source: {{ query1.data.responses[table1.selectedDataIndex].questions }}
  • Remove previously mapped columns and click “Generate columns from data source”
A Retool modal containing a table component which will generate columns from it's data source.

This should auto-populate your table with the individual questions and responses.

A Retool modal containing a table populated with data.

To set up a button to open this modal, add an extra column to your source table. Configure the settings as below: 

  • Format: Button
  • Prefix icon: Interface Edit View
  • Pin Column to the left
Settings for a Retool table column which has Button format.

Next, add an Event handler so onClick the button will open the modal with the selected row’s response.

A click cell handler in Retool which causes a modal to open when the view button is clicked.

With this app, you can now easily integrate your Fillout form responses into Retool. This is a great use case for building website submissions, onboarding clients and user feedback into your Retool workflows so that more users can access the data from within their apps.

About the author
Tools Team

Tools Team

The tools.dev team comprises internal tools specialists with deep expertise in the platforms used to develop and optimize these solutions.

Your hub for internal tools.

Powered by Bold Tech, internal tool experts.

Find your tool
tools.dev

Great! You’ve successfully signed up.

Welcome back! You've successfully signed in.

You've successfully subscribed to tools.dev.

Success! Check your email for magic link to sign-in.

Success! Your billing info has been updated.

Your billing was not updated.