How do I make a contact form that saves to Notion?

Build a Notion contact form in three ways: Notion's own form view, a form builder, or the API. Set up the database, fields, alerts and spam checks.

Nookesh KarriOctober 30, 20266 min read
Light cover card with the title 'How do I make a contact form that saves to Notion?' in dark text and a blue accent bar

To make a Notion contact form, create a database with Name, Email and Message properties, then connect a form to it. You can use Notion’s own form view, a form builder that writes to Notion, or a small script on the Notion API. Each submission becomes a new row you can sort, assign and reply from.

What a Notion contact form needs in the database

A Notion contact form needs a database whose properties match the questions you ask. Notion’s help center says each form question is connected to a property in the database, so the database design is the form design.

A simple contact inbox needs five properties:

Property Notion type Why
Name Title Every database page needs a title
Email Email So you can reply
Message Text The actual question
Topic Select Sorting sales, support and press
Status Status or Select New, Replied, Closed

Keep Status off the public form. You set it later as you work through messages.

Option 1: Notion’s built-in form view

Notion’s built-in form view is the fastest way to get a contact form running, because the form and the database are created together. In a database, select + next to your views and choose Form, or type /form on a page. If you haven’t built one before, the step-by-step guide to creating a form in Notion covers the editor.

To turn it into a contact form:

  1. Add the questions and mark Email and Message as Required, so respondents must answer them to submit.
  2. Share the form with Anyone on the web with link.
  3. Turn on the option to receive an email copy of each submission.
  4. Paste the link on your site’s contact page or footer.

Respondents on a public link are automatically anonymous, so Notion won’t record who they are. Your own Name and Email questions do that job. Read how to share a Notion form publicly for the sharing options in detail.

Option 2: A form builder that writes to Notion

A form builder is the better route when the contact form lives on a public website and needs to look like your brand. Most builders connect to Notion through the official API, read your database properties, and create a page per submission.

Most tools use the same four steps:

  1. Connect your Notion workspace and pick the contact database.
  2. Map each question to its property: Email to Email, Message to Text.
  3. Embed the form on your contact page, or link to it.
  4. Turn on email alerts for new submissions.

The step people skip is sharing. Notion’s authorization docs say a page must be manually shared with the connection through Add connections. If it isn’t, any API requests made will respond with an error. You’ll see it as a builder saying it can’t find your database, even though you can see it.

Option 3: Build it yourself with the Notion API

Writing your own handler makes sense if you already have a backend and want full control. Your server receives the form post and calls Notion’s create a page endpoint with the database as the parent.

Three rules from Notion’s docs decide whether the write works:

  • Names must match. Property names or IDs must match the parent’s schema exactly. “E-mail” won’t fill a property called “Email”.
  • Formats are strict. According to the page property values reference, Email takes a string or null, Phone uses the key phone_number, and Text uses rich_text, which is an array of rich text objects.
  • Some fields are off-limits. Formula, rollup, ID, creation and last-edit values are set by Notion, so leave them out.

Keep your API token on the server. Notion’s docs call it a secret, and anyone with it can write to every page you’ve shared.

Notifications and spam on a Notion contact form

A contact form is only useful if you notice new messages. Notion’s form settings can email you a copy of each submission, and Automations can post to Slack or send status updates.

Spam is the harder part. Two cheap defences work for most small sites:

  • Mark Email as required and validate its format in the form, since Notion won’t. The API docs say Notion does not enforce a phone-number format either.
  • Put the form behind a builder or handler that can filter submissions before they reach your database.

My take: for a personal site or a small team, Notion’s own form view is enough. Don’t switch to a builder or your own code until spam or branding is an actual problem.

What goes wrong, and how to check it worked

Most broken contact forms fail quietly, so test with a real submission before you publish the link. Fill in the form from a private browser window and confirm a new row appears with every property filled.

Common failures:

  • Database not found. The connection wasn’t added through Add connections.
  • Empty Email column. The question was mapped to a Text property instead of Email, or the names don’t match.
  • Lost long messages. Notion limits rich text content to 2000 characters per text object, so very long messages need splitting or a limit in the form.
  • Dropped submissions in a rush. Notion’s API allows 180 requests per minute on most plans and returns an HTTP 429 above that. A tool that doesn’t retry can lose messages.

How nDBForms handles a contact form

nDBForms reads your Notion database properties and generates matching fields, including email and phone question types. Each submission creates a new page in the database, and a copy is kept so a failed Notion write can be retried.

The free plan covers a contact form with embeds and email notifications, and respondents don’t need a Notion account. The limitation: it allows 3 forms and 100 responses a month. That covers most contact pages, but it gets tight if you also run surveys. You can see how it works on the nDBForms homepage. If you’re weighing costs, this look at free Notion form builders compares what each free tier holds back.

FAQ

Can a Notion form work as a website contact form?

Yes, if you share it with anyone on the web with the link. People who don’t use Notion can fill it out, but their responses arrive as anonymous, so add your own name and email questions.

How do I get notified when someone submits a Notion contact form?

Notion’s form settings let you receive an email copy of each submission, and Automations can send Slack notifications. Third-party builders usually offer their own email alerts.

Why does my form tool say it can’t find my Notion database?

The database probably isn’t shared with the tool’s connection. Notion’s API docs say a page must be shared through Add connections, and requests to an unshared page return an error.

Does Notion check that a phone number is valid?

No. Notion’s API docs say the phone_number value is a string or null and the API does not enforce a phone-number format. Validate it in the form if it matters.

Sources