Skip to content

How to send form submissions to a Notion database

A hosted form that adds each submission as a page in a Notion database you already have, with your own fields. Then post to Slack or send an email. No code.

Updated

Notion databases are a good home for leads, requests and sign-ups: each one becomes a page you can sort, assign and comment on. Notion has forms of its own, and if they do what you need, use them. This guide is for when the form should also do something else, like post to Slack or send a confirmation, or the database already exists and its fields don't match a Notion form. It uses a hosted Foliot form and the Add page to Notion step, with no code.

  1. Trigger

    When a form is submitted

    Fields: Name, Email, Company, Budget.
  2. Step 1

    Add page to Notion

    Name Trigger → Name, Email Trigger → Email, Status New, Received Trigger → Submitted at
The workflow you'll build: each submission becomes a page in your database.

Before you start

  • A Foliot account. The free plan is enough to build and test this.
  • A Notion workspace where you can create an integration.
  • A Notion database with the fields you want filled in, for example Name (the title), Email (email), Company (text), Budget (number), Status (status, with a New option added: Foliot only picks options that already exist) and Received (date).

Create a Notion integration and share the database

Foliot writes to Notion with an internal integration's secret that you paste in. There's no “Add to Notion” button, and the integration only sees the databases you share with it.

  1. Go to notion.so/profile/integrations and create a new internal integration for your workspace. Leave it able to read, insert and update content.
  2. Copy its Internal integration secret. It starts with ntn_ and works like a password.
  3. Open your database in Notion, click ⋯ → Connections and add your integration. Do this for every database the workflow should write to. Skipping it is the most common reason a database won't load.

Set it up in Foliot

1. Create the workflow and build the form

Create a new workflow and choose When a form is submitted as its trigger. A new form starts with a Name and an Email field. Use Add field for the rest: short text, email, number, long text, a dropdown or a checkbox.

2. Submit the form once

Open the Form link. While the workflow is off, the form shows a “Test mode” banner and saves answers as sample data instead of running anything. Fill it in once so the next step can preview real values.

3. Add the Notion step

Click + after the trigger and choose Add page to Notion. Then:

  1. Under Notion connection, choose + Add a Notion connection… and paste the secret. Foliot checks it with Notion before saving and stores it encrypted.
  2. Paste the database's link (or its ID) and click Load database. If the database has several data sources, pick one.
  3. Fill each field from the data picker, like Trigger → Email, or type a fixed value, like New for the status. Leave a field empty to skip it.

4. Test the step, then turn the workflow on

Test this step creates a real page with the sample answers, and its result has the page's url. When it looks right, switch the workflow on and share the form link, or open the trigger and choose Put this form on your website to embed it.

Which Notion fields work

  • Filled in: title, text, number, select, status, multi-select (names separated by commas), date, checkbox (Yes or No, or from data), URL, email and phone.
  • Status only takes options that already exist in Notion. Dates and times are read as written; a time without an offset is taken in the workflow's timezone.
  • Not supported yet: people, relation, files and a few others. The step lists them by name so you know what it skips.
  • Formulas, rollups and created or edited times are Notion's own, so they fill in by themselves.
  • The step sets database fields only. It doesn't write the page's content (text blocks below the fields), so put long answers in a text field.

Useful variations

  • No duplicates: start with Find page in Notion where Email is Trigger → Email. Then a Branch on its found: Yes path, Update page in Notion with the page's ID; No path, Add page to Notion. Notion's text match is exact and case-sensitive.
  • Tell the team: add Post to Slack with a link to the new page (the Notion step's URL). See form submissions to Slack.
  • Confirm by email: add Send email to Trigger → Email. See a form that emails you and the sender.
  • Data from another app: use When a webhook is received instead of the form, and fill the fields from the webhook's data.

Good to know

  • Pages written by the step live in your Notion workspace. Foliot itself stores its data in the EU, but what it writes to Notion is kept wherever Notion keeps your workspace.
  • Spam protection is a hidden honeypot field plus a limit of 10 submissions a minute from one visitor. There's no CAPTCHA, and the form has no file uploads.
  • Each submission is one run, however many steps: 500 runs a month on the free plan, 10,000 on Pro ($12 a month).
  • Foliot has no Notion triggers: it writes to Notion and looks pages up, but can't start when a page changes.

Other ways to do it

  • Notion's own forms. Built into Notion, each answer becomes a page in a database. The simplest choice when the answers only need to land in Notion.
  • A form builder with a Notion integration. Better when you need file uploads, conditional questions or a form that matches your site exactly.
  • Your own code. A small endpoint that calls Notion's API. Flexible, but you host it and handle Notion's errors and limits yourself.

Questions

Why can't Foliot see my Notion database?

Notion integrations only see what's shared with them. Open the database in Notion, click ⋯ → Connections and add your integration, then click Load database again.

Which Notion fields can a form fill in?

Title, text, number, select, status (existing options only), multi-select, date, checkbox, URL, email and phone. People, relation and files aren't supported yet.

Can it write the page's content, not only its fields?

No. The Notion steps set database fields only. Put long answers in a text field.

Is it free?

The free plan includes 500 runs a month and 5 active workflows. Each submission is one run. Pro is $12 a month for 10,000 runs.