Automatically Save Form Submissions to a Notion Database in Real Time
Capture any web form submission via a webhook and instantly create a new entry in your Notion database — no manual copy-pasting required. Perfect for teams collecting leads, feedback, or requests through online forms.
- 1
Set up the Webhook trigger node
Add a
Webhooknode as your trigger. Set theHTTP MethodtoPOST. Copy the generated webhook URL — you will paste this into your form tool (e.g. Typeform, Tally, or your custom HTML form) as the form's submission endpoint. In the nodeNotesfield, save your webhook URL for reference. - 2
Parse and map the incoming form data
Add a
Setnode connected to the Webhook. Use it to extract the specific fields you want from the incoming payload. For example, mapNameto{{ $json.body.name }},Emailto{{ $json.body.email }}, andMessageto{{ $json.body.message }}. Adjust the field names to match your actual form field names. This keeps the data clean before sending it to Notion. - 3
Connect your Notion account
Add a
Notionnode connected to the Set node. In theCredentialfield, clickCreate Newand follow the prompts to authenticate with your Notion account. In Notion, go to Settings > Integrations, create a new internal integration, copy the secret token, and paste it into n8n. Then share your target Notion database with that integration using theSharebutton in Notion. - 4
Configure the Notion node to create a database page
In the
Notionnode, setResourcetoDatabase PageandOperationtoCreate. Select your targetDatabase IDfrom the dropdown or paste it manually (found in your Notion database URL). Map each Notion property to the fields you defined in the Set node — for example, set theNametitle property to{{ $json.Name }}, theEmailproperty to{{ $json.Email }}, and theMessageproperty to{{ $json.Message }}. Match the property types in Notion (title, email, text) accordingly. - 5
Activate and test the workflow
Click
Saveand then toggle the workflow toActive. Submit a test entry through your form. Return to n8n and clickExecutionsto verify the workflow ran successfully. Check your Notion database to confirm the new page appeared with the correct data. If any field is missing, revisit the Set node mapping and adjust the expression to match your form's payload keys.
Frequently asked questions
Which form tools work with this webhook approach?
Any form tool that supports custom webhook or HTTP POST submissions will work, including Tally, Typeform, Jotform, Google Forms (via a script), or a custom HTML form. Each tool has a slightly different payload structure, so check your form's documentation to know the exact field names to use in the Set node expressions.
What if my Notion database has different property types like Select or Date?
The Notion node in n8n supports all major property types. When you configure the Notion node, choose the correct property type for each field. For a Select property, provide the option name as a string. For a Date property, provide a valid ISO 8601 date string such as 2024-01-15. Adjust your Set node to format values correctly before they reach the Notion node.
Is the webhook URL secure enough for collecting real form data?
n8n webhook URLs include a unique identifier, making them hard to guess. For additional security, you can enable webhook authentication in n8n by adding a Header Auth credential and configuring your form tool to send a matching secret header. Avoid sharing the webhook URL publicly and rotate it if you suspect it has been exposed.