Notion Integration
Automatically save incoming emails to a Notion database. Perfect for creating an email inbox, tracking support tickets, or archiving important messages.
Overview
The Notion integration creates a new page in your database for each incoming email, capturing the subject, sender, body, and attachments.
Database Storage
Emails stored as pages in your Notion database
Real-time Sync
Emails appear in Notion within seconds
Full Content
Subject, body, attachments, and metadata
Connect Your Workspace
First, connect your Notion workspace to Mailhooks via OAuth.
Go to Integrations
- 1. Navigate to Dashboard → Integrations
- 2. Find the Notion card
- 3. Click Connect Workspace
Authorize Access
- 1. A Notion authorization window will open
- 2. Select the pages or databases you want Mailhooks to access
- 3. Click Allow access
Verify Connection
Once connected, you'll see your workspace listed in the Notion integration card with a "Connected" badge.
Create a Notion Hook
After connecting your workspace, create a hook to route emails to a Notion database.
Create a Database
In Notion, create a new database (full page or inline) to store your emails. Mailhooks will automatically add the required properties.
Add the Hook
- 1. Go to Dashboard → Hooks
- 2. Click Add Hook
- 3. Select Notion Database
- 4. Choose your connected workspace
- 5. Select the target database
- 6. (Optional) Set a domain filter to only capture specific emails
- 7. Click Create
Test It
Send a test email to your Mailhooks address. Within seconds, a new page should appear in your Notion database with the email content.
Database Schema
Mailhooks automatically creates these properties in your database (if they don't exist):
| Property | Type | Description |
|---|---|---|
| Subject | Title | Email subject line (page title) |
| From | Email | Sender email address |
| To | Email | Recipient email address |
| Date | Date | When the email was received |
| Status | Status | Processing status (defaults to "Not started") |
| Message ID | Rich Text | Unique email Message-ID header |
The email body is rendered as the page content using native Notion blocks, not as a property. See Page Content below for details.
Page Content
When an email arrives, Mailhooks converts the HTML body into native Notion blocks so you can read the full message directly inside Notion. The conversion preserves the structure and formatting of the original email.
Rich Text
Headings, paragraphs, bold, italic, lists, and blockquotes are converted to their native Notion equivalents.
Images
Hero banners, product photos, and content images are embedded as Notion image blocks. Small icons (like social media logos) are converted to compact text links instead.
Links
Inline links, CTA buttons, and clickable images are preserved with their original URLs so you can click through from Notion.
Smart Cleanup
Tracking pixels, hidden preheader text, and email layout markup are automatically removed for a clean reading experience.
How it works
Emails are often built with complex HTML — nested tables for layout, inline styles, tracking pixels, and hidden preview text. Mailhooks processes this in three stages to produce clean Notion pages:
- 1. Cleanup — HTML comments, <style> / <script> tags, hidden preheader text (used by email clients for preview snippets), and invisible layout markup are stripped out.
- 2. Convert to Markdown — The cleaned HTML is converted to Markdown, which normalises the email's layout tables, nested <div>s, and inline formatting into a clean document structure.
- 3. Generate Notion blocks — The Markdown is transformed into native Notion blocks (headings, paragraphs, images, links, lists, code blocks, and tables) and sent to the Notion API.
Image handling
| Image type | What Mailhooks does |
|---|---|
| Hero banners & product photos | Rendered as a full-width Notion image block |
| Clickable images (wrapped in a link) | Image block followed by a clickable link to the original destination |
| Small icons (social media, app store badges) | Converted to a compact text link instead of an oversized image |
| Tracking pixels (1×1) | Automatically removed |
| Proxy/CDN images | Unwrapped to the original image URL for best compatibility |
Field Mapping
If your database already has properties with different names, Mailhooks will try to match them by type. You can also rename properties after creation.
Example Database Setup
Here's a recommended database view for managing emails:
- Table view — See all emails at a glance
- Board view — Kanban by Status (New → In Progress → Done)
- Calendar view — See emails by received date
- Filter by From — Group emails by sender
Troubleshooting
Database not appearing in dropdown
- Make sure the database is shared with Mailhooks in Notion's connection settings
- Try disconnecting and reconnecting your workspace
- Refresh the page after connecting
Emails not appearing in Notion
- Check the Logs for delivery errors
- Verify the hook is Active in the dashboard
- Ensure domain filtering isn't blocking the email
- Check that your Notion workspace connection is still valid
Missing properties in database
- Mailhooks creates properties on the first email delivery
- You can manually create properties with the expected types
- Check that the integration has edit access to the database
Connection expired
Notion OAuth tokens can expire. If you see authentication errors:
- Go to Integrations
- Click the refresh button on your Notion connection
- Re-authorize access in the popup