Publish to Webflow from Notion with n8n
Ready to automate?
Browse 5,000+ copy-paste n8n workflow templates.
Most content teams already write in Notion. It is flexible, easy to share with collaborators, and works well for editorial review. Webflow is where the published site lives. Between them sits a manual step: copying text, reformatting it, adding it to Webflow's CMS Editor, and hitting publish.
That step gets skipped. Drafts sit in Notion at "Ready to Publish" status while the site falls behind. Content managers end up double-checking whether something was published. Writers are never sure if their copy went live.
An n8n workflow can close this gap. Once configured, it watches your Notion database for approved content, formats it for Webflow's CMS API, creates the collection item, and marks the Notion page as published — all without opening a browser.
What You Will Build
This workflow polls your Notion content database on a schedule. When it finds a page with the status "Ready to Publish," it fetches the full content, prepares it for Webflow, creates or updates the CMS collection item, and updates the Notion record to "Published." That status change prevents the same item from triggering again on the next run.
The result: content moves from Notion to Webflow automatically as soon as a writer or editor updates one field.
Prerequisites
Before building this workflow, you need:
- A Notion database with at least these properties: Title (title type), Status (select with options: Draft, Ready to Publish, Published), Slug (text), and Excerpt (text)
- A Webflow site with a CMS Collection set up. The collection should have matching fields: Name, Slug, Body (rich text), and Excerpt
- An n8n instance — cloud or self-hosted
- A Notion integration token with read and write access to your content database
- A Webflow API token from your site's Settings → Integrations panel
Example n8n Workflow
Step 1: Schedule Trigger Node
Start with a Schedule Trigger node set to run every 15 minutes. This creates a polling loop without requiring Notion webhooks, which Notion's API does not natively support for database changes.
Adjust the interval to fit your team's publishing cadence. Once per hour is a reasonable default for most content teams.
Step 2: Notion Node — Query the Database
Add a Notion node in "Get Many" database mode. Set the database ID to your content database and add a filter:
- Property: Status
- Filter type: equals
- Value: Ready to Publish
This returns only pages approved and waiting to publish. If nothing matches, downstream nodes receive an empty list and the workflow ends cleanly on the next step.
Step 3: IF Node — Check for Results
Add an IF node that checks whether the query returned any records. Use the condition {{ $json.results.length > 0 }} or check if the Notion node output contains items.
- If true: proceed to publishing
- If false: end the run — nothing to process
Step 4: Split In Batches Node
When multiple pages are ready at once, a Split In Batches node with batch size 1 processes them one at a time. This prevents rate limit errors from sending too many requests to Webflow simultaneously and makes it easier to track which item failed if an error occurs.
Step 5: Notion Node — Fetch Page Blocks
Add a second Notion node in Get Page Blocks mode. Use the page ID from the current batch item. This call returns the full body content as Notion's block format — paragraph blocks, heading blocks, bulleted list items, and so on.
Notion's block API returns structured JSON rather than HTML. You need to transform this before sending it to Webflow.
Step 6: Code Node — Convert Blocks to Text
A Code node handles the transformation. Write a short JavaScript function that loops over the blocks array and extracts text from each block's rich_text array. For paragraph blocks, join the text values. For heading blocks, prefix the appropriate HTML tag (<h2>, <h3>). For bulleted list items, wrap each in <li> tags grouped inside a <ul>.
This is the only step in the workflow that requires writing code, and it typically runs to 25–35 lines. The output is a clean HTML string that Webflow's rich text field accepts without modification.
Step 7: Webflow Node — Create Collection Item
Add a Webflow node in Create Collection Item mode. Select your site and collection from the dropdowns. Map the fields from previous steps:
- Name: the Notion page title from Step 2
- Slug: the slug property from the Notion database item
- Body: the HTML string from Step 6
- Excerpt: the excerpt property from the Notion database item
Set the item's _draft flag to true if you want it to appear in Webflow's CMS editor for a final review before going live, or false to publish immediately. For most teams, leaving it in draft gives an editor a last look without any copy-paste work.
To push the item live without a manual step, add a second Webflow node after this one in "Publish Collection Items" mode and pass the collection item ID from the Create response.
Step 8: Notion Node — Mark as Published
The final step prevents the same page from re-processing. Add a Notion node in Update Page mode. Set the Status property to "Published" using the page ID from Step 4.
On the next Schedule Trigger run, this page will no longer appear in the database query results.
Workflow Variations
Add a human approval checkpoint. Replace the immediate Webflow create with a Wait node in webhook mode. Send a message to your team with an approval link. When an editor clicks it, the workflow resumes and creates the Webflow item. This keeps a human in the loop for final copy review without doing the formatting work manually.
Handle featured images. Notion pages often contain image blocks. Add a step between Steps 5 and 6 that extracts image block URLs and uploads each image to Webflow's Asset API using an HTTP Request node. Store the returned asset URLs and reference them in the Webflow CMS item.
Sync updates, not just new posts. The workflow as described creates new Webflow items. To handle edits to already-published content, add a Notion property for the Webflow Item ID, check for its existence before Step 7, and route existing items to a Webflow node in Update Collection Item mode instead.
Benefits for Content Teams
For agencies and in-house marketing teams managing Webflow sites, this workflow removes the most repetitive part of the publishing process. Writers stay in Notion. Editors control the approval gate by updating a single status field. The site stays current without anyone logging into Webflow until the content is already formatted and waiting.
The workflow scales cleanly — a team publishing one post per week and a team publishing ten all use the same workflow. Only the polling interval needs adjusting.
Browse Notion and Webflow workflow templates at n8nresources.dev/templates. If you are new to building n8n automations, /what-is-n8n covers the core concepts before you start connecting nodes.
Enjoyed this article?
Share it with others who might find it useful