To sync WordPress to Notion automatically, you trigger a workflow when a form is submitted or a post is published and send the data to a Notion database. AI Workflow Automation, a free WordPress plugin, connects WordPress to Notion among 2,700+ apps, so entries and posts land in Notion instantly, with optional AI enrichment such as summaries or tags along the way.
I build and maintain this plugin, so the walkthrough below uses its real interface rather than a generic description. Everything in it runs on the free tier with a Notion connection you create in a couple of minutes.
What does syncing WordPress to Notion actually let you do?
Syncing WordPress to Notion moves data out of wp-admin and into a workspace your team already lives in. A Notion database row can hold a lead, an article idea, a support ticket, or a content-calendar entry, and everyone can comment on it without a WordPress login.
AI Workflow Automation is a free WordPress plugin with a visual drag-and-drop builder that runs AI workflows, agents, and chatbots inside your own site, using your own API keys, with no external subscription required.
The sync is one-directional by default: WordPress fires an event, the workflow reads the data, and a page is created in a Notion data source. Nothing is polled, and nothing waits in a queue on someone else’s server.
Three things make this different from a generic Zapier-style hop. The trigger is a native WordPress hook, so it fires the moment the form is submitted. The data never leaves your server except in the single outbound call to Notion. And you can run an AI step in between, which turns a raw 900-word enquiry into a two-line summary before it ever reaches your workspace.
Which WordPress-to-Notion flows are worth building?
Four flows cover most of what people actually want from a WordPress-to-Notion sync. Each one is a single workflow in AI Workflow Automation, usually three or four nodes long.
- Leads to a CRM database. A contact or quote form fires, and each submission becomes a Notion page with Name, Email, Message, Source, and Status properties. Status defaults to “New” so your team can move it along a board view.
- Published posts to a content calendar. When a post is published, a Notion row is created with the title, permalink, author, category, and publish date. This gives editors a calendar view without giving them wp-admin access.
- Support requests to a triage board. A support form fires, an AI step classifies the request into a category and urgency level, and the Notion page lands in the right column already tagged.
- Draft ideas to an editorial backlog. A scheduled workflow pulls your latest drafts and writes them into a Notion database, so the backlog is visible to people who never open WordPress.
All four use the same three-part shape: a WordPress trigger, an optional AI step, and a Notion write. Once you have built one, the rest are variations on field mapping.
How do you connect WordPress and Notion?
AI Workflow Automation connects to Notion through its Connect an App node, which covers 2,700+ third-party apps as workflow actions. The connection is handled by a hosted sign-in window, so you are not pasting long-lived secrets into a text field.
- In the WordPress admin sidebar, open AI Workflows and create a new workflow.
- Drag a Connect an App node onto the canvas.
- Click Add app and type “Notion” into the search box, which is labelled Search 2,700+ apps (Slack, Google Sheets, Notion…).
- Click Connect. A secure sign-in window opens. Approve the Notion workspace and the pages you want the connection to reach, then close the window and return to the node.
- Pick the action you want from the Select an action dropdown, for example creating a page in a database.
One detail catches people out on the Notion side rather than the WordPress side. A Notion integration can only see pages and databases that have been explicitly shared with it. If your database does not appear in the node’s picker, open the database in Notion, use the share or connections menu, and add the connection there. Notion documents this in its guide to creating integrations with the Notion API.
Account credentials for connected apps are stored with the connection provider, Composio, rather than in your WordPress database. Your AI provider keys are separate and stay in WordPress, encrypted at rest.
When should you use the API Call node instead?
If you want full control over the Notion request body, skip the app connection and use the API Call node against the Notion REST API directly. You set the method to POST, the URL to https://api.notion.com/v1/pages, and three headers: Authorization: Bearer YOUR_TOKEN, Content-Type: application/json, and Notion-Version: 2026-03-11. The version header is mandatory and Notion rejects requests without it.
The API Call node gives you the raw JSON response back as [[data] from apiCall-1], which is useful when you want to store the created Notion page ID somewhere in WordPress.
How do you build the form-to-Notion workflow?
Here is the full build for a Gravity Forms lead going into a Notion CRM database. The same steps work for WPForms, Contact Form 7, Ninja Forms, and Elementor Forms, since AI Workflow Automation exposes all of them the same way.
- Add the trigger. Drag a Trigger node onto the canvas and choose Gravity Forms from the Form submissions group. Select your form from the dropdown. The node loads the form’s fields underneath the selector so you can see exactly what is available downstream. The Gravity Forms trigger documentation covers the field-loading behaviour in detail.
- Add the app action. Drag a Connect an App node and connect the trigger’s output handle to it. Select your Notion connection and the create-page action, then choose the target database.
- Map the fields. Each Notion property appears as its own input on the node. Click into a property and use the “/” picker to insert a variable from the trigger. Field references look like
[[Email] from trigger-1]and[[Message] from trigger-1], and the builder shows them as readable pills rather than raw syntax. - Save and run once. Save the workflow, submit a real test entry through the form, and watch the live execution panel slide in from the right. It shows each node as it runs with its inputs and outputs, which is where you will spot a mismatched property name immediately.
- Check Notion. Confirm the row appeared with every property populated. Then activate the workflow so it runs on every submission.
Total build time on a form you already have is about ten minutes, most of it spent on step three.
How do you map WordPress fields to Notion database properties?
Mapping is where most WordPress-to-Notion syncs break, because Notion property types are strict. A Select property will not accept arbitrary text unless that option already exists, and a Date property needs an ISO 8601 value, not “August 31, 2026”.
| WordPress source | Variable tag | Notion property type |
|---|---|---|
| Form field labelled Name | [[Name] from trigger-1] |
Title |
| Form field labelled Email | [[Email] from trigger-1] |
|
| Long message body | [[Message] from trigger-1] |
Rich text |
| AI-generated category | [[category] from ai-1] |
Select (option must exist) |
| Post permalink | [[permalink] from trigger-1] |
URL |
| Whole submission blob | [Input from trigger-1] |
Rich text |
The rule to remember: [Input from node-1] gives you the entire output of an earlier step, and [[fieldName] from node-1] gives you one named field from it. The data flow and variable handling guide explains when each form is appropriate.
For Select and Multi-select properties, create the options in Notion first, then constrain the AI step to output only those exact strings. Notion’s working with databases documentation notes that the keys of the properties object must match the parent data source’s schema, so a typo silently costs you the row.
How do you enrich the data with AI before it reaches Notion?
The reason to run this inside WordPress rather than through a plain webhook is the step you can insert in the middle. Drop an AI Model node between the trigger and the Notion action, and the row that lands in Notion is already processed.
Turn on Structured output in the AI node and define the fields you want back. Each field gets a name, a type, and an optional description, and each becomes individually addressable downstream.
summary(string): a two-sentence precis of a long enquiry, so nobody has to expand the row to triage it.category(string): “Sales”, “Support”, or “Partnership”, constrained by the field description to match your Notion Select options.urgency(string): “Low”, “Medium”, or “High”, derived from the tone and content of the message.tags(array): three topic tags for a Multi-select property.
Those become [[summary] from ai-1], [[category] from ai-1], and so on, which you drop straight into the Notion node’s property inputs. Structured output is the difference between a Notion database you can filter and a wall of raw form text.
A word of caution from running this on my own site: classification accuracy drops when your category list is vague. “Sales” versus “Partnership” is fine. Twelve overlapping categories is not. Keep the list under six options and put a one-line definition in each field description.
Should the sync be one-way or two-way?
Keep it one-way unless you have a concrete reason not to. WordPress writes to Notion, Notion never writes back. That is what the workflow above builds, and it avoids the two problems that make bidirectional syncs painful: loop risk, where a Notion edit triggers a WordPress update that triggers another Notion write, and conflict resolution, which you only need when two systems both claim authority over a field.
Two-way is possible but it is not a click. AI Workflow Automation cannot start a workflow from a Notion event, which is the honest limitation here: the plugin’s triggers are WordPress-side, so nothing fires when a Notion page changes. Pulling Notion changes back means a scheduled workflow that queries the Notion data source endpoint, compares against WordPress, and updates what differs. That is a real build, and for most teams the value does not justify it. If you need genuine app-event triggers across many SaaS tools, an external orchestrator is the right choice, as I say on the Zapier comparison page.
Frequently asked questions
Can I send WordPress form entries to Notion for free?
Yes. AI Workflow Automation is free, the Notion API is free on all Notion plans, and a form-to-Notion workflow with no AI step costs nothing to run. You only pay if you add an AI enrichment step, and then only for the tokens your own OpenAI or OpenRouter key consumes, which is a fraction of a cent per submission.
Which WordPress form plugins work with a Notion sync?
AI Workflow Automation ships triggers for Gravity Forms, WPForms, Contact Form 7, Ninja Forms, and Elementor Forms. Each one exposes its submitted fields by label, so the mapping step is identical regardless of which form plugin you use. Forms from other plugins can be captured with a webhook trigger instead.
Do I need a Notion paid plan to use the API?
No. The Notion API is available on the free personal plan, and internal integrations cost nothing to create. What you do need is workspace owner access to create the connection, because the “Develop your own connections” option in Settings is restricted to owners.
Why is my Notion page created but the properties are empty?
Almost always a property-name or property-type mismatch. Notion requires the keys you send to match the data source schema exactly, including capitalisation, and it rejects a text value sent to a Date or Select property. Open the live execution panel, read the response body from the Notion step, and Notion will name the offending property in its error.
Getting started
Install AI Workflow Automation from the WordPress plugin directory, open the builder, and start with a two-node workflow: a form trigger and a Connect an App node pointed at Notion. Add the AI enrichment step once the plain sync is working. If you want the wider picture of what else the plugin automates, the WordPress automation plugin overview and the quick start guide are the two pages worth reading next.