Why Connect Notion to Inbound Email
Notion empowers builders to create applications without writing code. Email is a natural input channel for many no-code apps — contact forms, appointment requests, and customer feedback all arrive via email. JsonHook makes it trivial to receive those emails as structured JSON data that Notion can read, display, and act upon.
Connecting your inbound email to Notion through JsonHook unlocks a range of high-value automation scenarios:
- Populate a data table with records parsed from incoming emails
- Trigger page logic or workflows when a specific email address receives a message
- Display inbound email data in a custom dashboard built on Notion
- Connect contact form submissions delivered by email to your app's user table
- Build an email-driven approval flow without writing a single line of code
Notion supports Notion API (via automation middleware such as Zapier or Make), which makes it a natural target for JsonHook's outbound POST requests. Every email that hits your JsonHook address is parsed within milliseconds and delivered to Notion as a clean JSON object — no polling, no manual export, no middleware server to maintain.
Setting Up Notion with JsonHook
The following steps walk you through connecting JsonHook to Notion. The entire setup typically takes under ten minutes.
- Step 1: Create a Notion database to store incoming email records. Add fields such as Subject (Title), From (Text), Body (Text), and Received At (Date).
- Step 2: In Zapier or Make, create a workflow triggered by a "Webhooks — Catch Hook" step. Copy the webhook URL.
- Step 3: In JsonHook, create an inbound address and set the destination to the Zapier or Make webhook URL. Send a test email to verify the payload is received.
- Step 4: In the automation tool, add a Notion action step to create a new database entry. Map
subjectto the Title field,from.addressto From,textto Body, anddateto Received At. Activate the workflow.
Once the connection is active, every email sent to your JsonHook address will be automatically parsed and forwarded to Notion. You can test the integration by sending a plain-text email to your JsonHook address and verifying that the payload appears in Notion within a few seconds.
JsonHook supports Notion API (via automation middleware such as Zapier or Make) on the Notion side, so no additional configuration is needed in Notion beyond the steps above. If Notion requires header-based authentication for incoming webhooks, add the required headers in the JsonHook endpoint configuration under Advanced Settings.
Example Workflow: When a client sends a brief by email, create a new Notion page in the Projects database
This walkthrough demonstrates one concrete way to use JsonHook with Notion. The scenario: When a client sends a brief by email, create a new Notion page in the Projects database.
When an email matching this scenario arrives, JsonHook parses the raw SMTP message and constructs the following JSON payload before POSTing it to your Notion endpoint:
{
"messageId": "",
"from": {
"name": "Jane Smith",
"address": "[email protected]"
},
"to": [
{ "address": "[email protected]" }
],
"subject": "When a client sends a brief by email, create a new Notion page in the Projects database",
"text": "Hi, I need help with my account. Please contact me at your earliest convenience.",
"html": "Hi, I need help with my account...
",
"date": "2026-03-15T10:32:00.000Z",
"attachments": [],
"headers": {
"x-priority": "1"
}
}
Notion's API uses a structured property schema for database pages. Map JsonHook's subject to a Title property, from.address to a Rich Text or Email property, text to a Rich Text body block, and date to a Date property. The automation middleware handles the API authentication and field formatting.
Once Notion receives this payload, it can execute any downstream action — whether that is posting a notification, creating a record, updating a field, or triggering an entire multi-step workflow. The key advantage is that the data arrives as structured JSON, so Notion never needs to parse raw email text or deal with MIME encoding.
Payload Mapping for Notion
JsonHook delivers a consistent JSON schema for every parsed email. The table below shows which JsonHook fields map to the equivalent fields in Notion. Use this as a reference when configuring your Notion Notion API (via automation middleware such as Zapier or Make).
| JsonHook Field | Description | Notion Field |
|---|---|---|
from.address | Sender email address | Sender / Contact email |
from.name | Sender display name | Sender / Contact name |
subject | Email subject line | Title / Subject / Name |
text | Plain-text email body | Description / Body / Message |
html | HTML email body | Rich text field / Notes |
date | Timestamp of receipt (ISO 8601) | Created date / Received at |
attachments[n].filename | Attachment filename | File name / Attachment label |
attachments[n].content | Attachment content (base64) | File content / Binary field |
headers.* | Raw email headers | Metadata / Custom properties |
messageId | Unique message identifier | External ID / Deduplication key |
Not every field will be present in every email. Always check for null or missing values before mapping to required fields in Notion. For text-only emails, html will be empty; for HTML-only emails, text may be empty or auto-generated from the HTML. The attachments array will be an empty array when no files are attached.
Best Practices for Notion Email Integration
Following these best practices will make your Notion email integration more reliable, easier to debug, and simpler to scale as your email volume grows.
- Use dedicated addresses per workflow. Create a separate JsonHook inbound address for each distinct Notion workflow you want to trigger. This makes routing explicit and avoids a single endpoint becoming a bottleneck for all email types.
- Validate the payload before acting. In Notion, add a conditional check at the start of your workflow to confirm that required fields like
from.addressandsubjectare present and non-empty before executing downstream actions. - Test with real emails first. Use JsonHook's delivery log to inspect the raw JSON payload before wiring up Notion. Confirm that all the fields you plan to map are actually populated by your email source.
- Handle errors gracefully. Configure Notion to catch webhook delivery failures and send an alert. JsonHook will retry failed deliveries, but your Notion endpoint should return a 2xx status promptly to acknowledge receipt.
- Keep secrets out of email content. Avoid routing emails that contain passwords, API keys, or PII through workflows unless you have appropriate data-handling controls configured in Notion. Use JsonHook's HTTPS delivery to protect data in transit.