Guide · Netlify Forms → Notion
Netlify Forms to Notion without Zapier
Netlify Forms has no Notion destination: its submission notifications go to email, outgoing webhooks, or Slack, and anything else runs through a function, n8n, or Zapier. The real options are a formSubmitted event function that calls the Notion API, a webhook receiver, n8n, Zapier, or skipping Netlify Forms and embedding a form that writes to Notion directly. No fake metrics or testimonials.
Your five options
| Route | How it works | Cost | Catch |
|---|---|---|---|
| Netlify formSubmitted event function → Notion API | Add a function that exports a formSubmitted handler (or use the legacy file name submission-created). Netlify runs it on every verified form submission; event.data holds the fields keyed by name, which you map to Notion's typed properties and send with POST /v1/pages using parent.database_id. | Developer time; small volumes usually fit inside Netlify's function allowance. Notion API has no per-row fee for typical volumes. | You own field mapping, error handling, and keeping the Notion secret in environment variables. It fires for every form on the site, so filter to the form you want. |
| Forms → Submission notifications → Outgoing webhook → your receiver | In the Netlify UI open Forms > Submission notifications, add an outgoing webhook for one form or all forms, and point it at a Worker or endpoint that writes to Notion. | Hosting for the receiver (often a free tier). | Same mapping work as the function route plus a second deploy target to keep alive. Verify the JWS signature if you set a secret. |
| Netlify Trigger node in n8n → Notion | n8n's Netlify Trigger node listens for form submissions; add a Notion Create Database Page node and map fields. | Free if self-hosted; n8n Cloud is a paid subscription. | One more system to run and monitor. The Notion database must be shared with the integration (••• → Add connections). |
| Netlify on Zapier → Notion | Zapier's Netlify app triggers on a new verified form submission; add Notion Create Database Item and map each field. | Every submission is a Zapier task; multi-step Zaps need a paid plan. | This is the per-task bill most people want to avoid. |
| Embed a form that writes to Notion directly | Build the form in FormToNotion and paste one iframe into your Netlify-hosted page when Notion is the only intake destination you need. | Free inbox; live Notion sync is a one-time Pro $20 or Business $49 — no monthly fee or per-task billing. | Submissions bypass Netlify Forms, so they do not count against or appear in Netlify's Forms tab, its spam filtering, or its email notifications. It does not import past Netlify submissions. |
Sources: Netlify form notifications, Netlify event-triggered functions, Notion create page API. Plans and API access change — verify on each vendor before buying.
Setting up the embed route
- In Notion, create a database with the columns you want, for example
Name,Email,Message. - Sign up and build the form, naming each field exactly like its Notion property.
- In Dashboard → Connect Notion, paste your Notion internal integration secret and database id, then share the database with the integration (••• → Add connections). Live sync to your own Notion is a Pro or Business feature.
- In the page you deploy to Netlify, remove the data-netlify form and paste:
<iframe src="https://www.vgt.cc/f/your-slug" title="Contact form" style="width:100%;min-height:640px;border:0" loading="lazy"></iframe> - Deploy the site, submit once yourself, and check the new row in Notion.
Keep Netlify Forms when…
- You want Netlify's built-in spam filtering and Forms tab.
- You rely on Netlify's email or Slack notifications.
- Notion is one of several destinations (use a webhook into Make or n8n).
Use an embedded Notion form when…
- Notion is the only destination and you do not want a monthly or per-task bill.
- You do not want to write or host a webhook receiver.
- The same form also needs a public link outside your site.
Honest limits
- FormToNotion does not read or import existing Netlify Forms submissions.
- The iframe is not styled by your site's CSS.
- No conditional logic beyond basic field types.
- Field labels must match Notion property names for a row to map correctly.
- The free plan stores submissions in the FormToNotion inbox but does not sync to Notion.
See it work first
The demo form writes to our own Notion database, so you can check the round trip before paying. 14-day refund window on paid plans.
Last updated: October 31, 2026 · Questions? maskid@live.cn