Store, update, and retrieve contacts in a Notion database by sending a JSON payload to an n8n workflow. Email is used as the unique identifier — no Notion page IDs required.
The workflow has three actions, controlled by a single action field in the payload:
| Column | Notion type |
|---|---|
| Name | Title |
| Phone | Phone number |
| Status | Select — suggested options: Lead, Contacted, Qualified, Customer, Closed |
| Notes | Text |
... top right → Connections → select your integration.Use these in the Manual Trigger to test each action:
Create a contact:
{
"action": "create",
"name": "Jane Doe",
"email": "[email protected]",
"phone": "+49 123 456 789",
"status": "Lead",
"notes": "Met at Berlin conference"
}
Update a contact:
{
"action": "update",
"email": "[email protected]",
"name": "Jane Doe",
"phone": "+49 123 456 789",
"status": "Customer",
"notes": "Signed contract on March 24"
}
Fetch a contact:
{
"action": "get",
"email": "[email protected]"
}
This workflow works as a backend API. Any frontend can send POST requests to the Webhook URL and display the response — no direct Notion API connection needed in the frontend.
What n8n handles so your frontend does not have to:
To wire up a frontend: replace the Manual Trigger with a Webhook node, point your form or dashboard at the Webhook URL, and read the JSON response to show feedback to the user. Works with React, Vue, plain HTML, or no-code tools like Webflow or Bubble.
status values are case-sensitive — send Lead not lead.