Guide · Contact Form 7 → Notion
Contact Form 7 to Notion without Zapier
Contact Form 7 has no first-party Notion button. WordPress teams usually bridge with a free CF7 Notion add-on, Uncanny Automator, Make, Pabbly, or custom webhooks — or they keep paying Zapier to move a row. If Notion is the only system of record and you do not need CF7-specific mail or spam plugins, a direct Notion form can skip CF7 entirely. Here are four routes. No fake metrics or testimonials.
Your four options
| Route | How it works | Cost | Catch |
|---|---|---|---|
| CF7 → “Add-On for Contact Form 7 to Notion” | Install the free wordpress.org add-on, paste a Notion internal integration token under Contact → Integration → Notion, share the target database with the integration, then map fields on each form’s Notion tab. | Free plugin. You still need a Notion workspace and an internal integration. | Check the plugin’s “tested up to” against your Contact Form 7 and WordPress versions. Supported field types are limited (title, text, number, URL, email, phone, select, multi-select, date). File uploads and complex CF7 logic may not map cleanly. |
| CF7 → Uncanny Automator / Make / Pabbly → Notion | Trigger on a new Contact Form 7 submission, then Notion “Create database item”. Map CF7 mail-tags / field names to Notion properties in the no-code builder. | Automator/Make/Pabbly plan (often cheaper at low volume than Zapier paid plans). CF7 itself stays free. | Two subscriptions for field mapping. Keep this stack when the same entry also fans out to Slack, CRM, or membership plugins. |
| CF7 webhooks / wpcf7_mail_sent → your endpoint → Notion API | Use a webhook plugin or a small mu-plugin on wpcf7_mail_sent to POST the submission to your HTTPS endpoint. Your server calls Notion’s create-page API with retries and typed property payloads. Optional shared-secret header for verification. | Developer time + hosting. No monthly Zapier fee if you already run a small server. | You own Notion-Version headers, property typing, rate limits, schema drift when columns rename, and monitoring. Overkill for a simple contact form. |
| Embed a form that writes to Notion directly | Build the form in FormToNotion and paste one iframe on your WordPress (or any) site when Notion — not CF7 mail pipelines, CAPTCHA plugins, or multi-step CF7 flows — is the only intake destination you need. | Free inbox; live Notion sync is a one-time Pro $20 or Business $49. | This does not replace Contact Form 7 mail templates, Flamingo, CAPTCHA/spam plugins, or payment add-ons. It does not import past CF7 entries. |
Sources: Add-On for Contact Form 7 to Notion, Zapier Contact Form 7 ↔ Notion, Contact Form 7 Docs. 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.
- On your WordPress (or any) site, add a Custom HTML / embed block 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> - Publish the page, submit once yourself, and check the new row in Notion.
Stay with Contact Form 7 when…
- You rely on CF7 mail templates, Flamingo, CAPTCHA, or spam plugins already wired in.
- The free CF7 Notion add-on (or a light Automator/Make hop) covers your field mapping.
- Respondents must stay on a native CF7 shortcode already embedded across the theme.
Use an embedded Notion form when…
- Notion is the only intake destination and you do not need CF7-specific mail/spam stacks.
- You want Notion rows without a monthly Zapier/Automator bill for a single contact form.
- The same form also needs a public link or iframe outside WordPress.
Honest limits
- FormToNotion does not read or import existing Contact Form 7 / Flamingo entries.
- No CF7 mail pipeline parity, CAPTCHA plugin parity, or payment add-ons.
- 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 22, 2026 · Questions? maskid@live.cn