This workflow corresponds to n8n.io template #7935 — we link there as the canonical source.
This workflow follows the HTTP Request → Notion recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"id": "v1my5NJmVfOaqEwH",
"name": "Content update",
"tags": [
{
"id": "SLdYBpENEdp6A9O4",
"name": "Nected",
"createdAt": "2025-08-20T07:50:32.426Z",
"updatedAt": "2025-08-20T07:50:32.426Z"
}
],
"nodes": [
{
"id": "e4107368-7526-47ba-83f7-88cca70896e6",
"name": "Get Notion Pages",
"type": "n8n-nodes-base.notion",
"position": [
-2288,
288
],
"parameters": {
"filters": {
"conditions": [
{
"key": "Status|status",
"condition": "equals",
"statusValue": "Ready for publish"
},
{
"key": "Project|relation",
"condition": "contains",
"relationValue": "83054fca8faf4590aa1d9046c8942086"
}
]
},
"options": {},
"resource": "databasePage",
"matchType": "allFilters",
"operation": "getAll",
"returnAll": true,
"databaseId": {
"__rl": true,
"mode": "list",
"value": "a2c1bd8f-63b4-4f46-a532-e7dca20a1a46",
"cachedResultUrl": "https://www.notion.so/a2c1bd8f63b44f46a532e7dca20a1a46",
"cachedResultName": "Tech Content Tasks"
},
"filterType": "manual"
},
"credentials": {
"notionApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.2
},
{
"id": "0050ac5f-30a3-4cdc-b9f1-da362fea9cb3",
"name": "Get Webflow Items",
"type": "n8n-nodes-base.httpRequest",
"position": [
-1168,
208
],
"parameters": {
"url": "https://api.webflow.com/v2/collections/67d134551b65a3fef700728c/items",
"options": {},
"jsonBody": "={\n \"fieldData\": {\n \"name\": \"{{ $json.name }}\"\n }\n}",
"sendBody": true,
"specifyBody": "json",
"authentication": "genericCredentialType",
"genericAuthType": "httpBearerAuth"
},
"credentials": {
"httpBearerAuth": {
"name": "<your credential>"
}
},
"executeOnce": true,
"typeVersion": 4.2,
"alwaysOutputData": true
},
{
"id": "cc49b638-57ba-4f8d-8d8a-9d6aba76c000",
"name": "Update Webflow Item (Draft)1",
"type": "n8n-nodes-base.httpRequest",
"onError": "continueErrorOutput",
"position": [
-720,
352
],
"parameters": {
"url": "=https://api.webflow.com/v2/collections/67d134551b65a3fef700728c/items/{{ $json.items.filter(item => item.fieldData.name == $('Merge Content').item.json.name).first().id }}",
"method": "PATCH",
"options": {},
"jsonBody": "={\n \"isArchived\": false,\n \"isDraft\": true,\n \"fieldData\": {\n \"name\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData.name) }},\n \"slug\": \"{{ $json.items.filter(item => item.fieldData.name == $('Merge Content').item.json.name).first().fieldData.slug }}\",\n\n \"category-h1-title\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['category-h1-title']) }},\n \"category-meta-title\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['category-meta-title']) }},\n \"use-case-category---excerpt\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['use-case-category---excerpt']) }},\n\n \"hero-heading-2\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['hero-heading-2']) }},\n \"unlimited-possibilities-heading-2\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['unlimited-possibilities-heading-2']) }},\n \"unlimited-possibilities-para-2\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['unlimited-possibilities-para-2']) }},\n \"hero-para-2\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['hero-para-2']) }},\n \"card-section-heading-2\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['card-section-heading-2']) }},\n\n \"hero-image-2\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['hero-image-2']) }},\n \"faq-section-2\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['faq-section-2']) }},\n \"unlimited-possibilities-img-2\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['unlimited-possibilities-img-2']) }},\n\n \"benefit-section-heading\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['benefit-section-heading']) }},\n \"benefit-section-pointer1-heading\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['benefit-section-pointer1-heading']) }},\n \"benefit-section-pointer1-para\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['benefit-section-pointer1-para']) }},\n \"benefit-section-pointer2-heading\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['benefit-section-pointer2-heading']) }},\n \"benefit-section-pointer2-para\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['benefit-section-pointer2-para']) }},\n \"benefit-section-pointer3-heading\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['benefit-section-pointer3-heading']) }},\n \"benefit-section-pointer3-para\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['benefit-section-pointer3-para']) }},\n \"benefit-section-pointer4-heading\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['benefit-section-pointer4-heading']) }},\n \"benefit-section-pointer4-para\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['benefit-section-pointer4-para']) }},\n\n \"problem-pointer-1-heading\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['problem-pointer-1-heading']) }},\n \"problem-pointer-1-para\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['problem-pointer-1-para']) }},\n \"problem-pointer-2-heading\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['problem-pointer-2-heading']) }},\n \"problem-pointer-2-para\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['problem-pointer-2-para']) }},\n \"problem-pointer-3-heading\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['problem-pointer-3-heading']) }},\n \"problem-pointer-3-para\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['problem-pointer-3-para']) }},\n \"problem-pointer-4-heading\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['problem-pointer-4-heading']) }},\n \"problem-pointer-4-para\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['problem-pointer-4-para']) }},\n \"problem-pointer-5-heading\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['problem-pointer-5-heading']) }},\n \"problem-pointer-5-para\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['problem-pointer-5-para']) }},\n \"problem-pointer-6-heading\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['problem-pointer-6-heading']) }},\n \"problem-pointer-6-para\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['problem-pointer-6-para']) }},\n\n \"problem-section-heading\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['problem-section-heading']) }},\n \"roi-heading\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['roi-heading']) }},\n \"roi-para\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['roi-para']) }}\n }\n}\n",
"sendBody": true,
"specifyBody": "json",
"authentication": "genericCredentialType",
"genericAuthType": "httpBearerAuth"
},
"credentials": {
"httpBearerAuth": {
"name": "<your credential>"
}
},
"typeVersion": 4.2
},
{
"id": "5cc91380-1453-417f-854e-3ad06ed41e00",
"name": "Log Submission1",
"type": "n8n-nodes-base.code",
"position": [
-272,
112
],
"parameters": {
"mode": "runOnceForEachItem",
"jsCode": "// Optional: Send notification or log the submission for review\n// You can add integration with Slack, email, or other notification systems here\n\nconst result = {\n summary: `Submitted for review: ${$json.status}`,\n details: {\n notionPageId: $json.notionPageId,\n webflowItemId: $json.webflowItemId,\n timestamp: $json.timestamp,\n action: $json.action\n }\n};\n\n// Log the submission\nconsole.log('Submission for review:', result);\n\nreturn result;"
},
"typeVersion": 2
},
{
"id": "4c12ba6a-7990-48c7-ac5a-a1ee873d08d9",
"name": "Create Webflow Item",
"type": "n8n-nodes-base.httpRequest",
"onError": "continueErrorOutput",
"position": [
-720,
64
],
"parameters": {
"url": "https://api.webflow.com/v2/collections/67d134551b65a3fef700728c/items",
"method": "POST",
"options": {},
"jsonBody": "={\n \"isArchived\": false,\n \"isDraft\": true,\n \"fieldData\": {\n \"name\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData.name) }},\n \"slug\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData.slug) }},\n\n \"category-h1-title\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['category-h1-title']) }},\n \"category-meta-title\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['category-meta-title']) }},\n \"use-case-category---excerpt\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['use-case-category---excerpt']) }},\n\n \"hero-heading-2\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['hero-heading-2']) }},\n \"unlimited-possibilities-heading-2\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['unlimited-possibilities-heading-2']) }},\n \"unlimited-possibilities-para-2\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['unlimited-possibilities-para-2']) }},\n \"hero-para-2\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['hero-para-2']) }},\n \"card-section-heading-2\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['card-section-heading-2']) }},\n\n \"hero-image-2\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['hero-image-2']) }},\n \"faq-section-2\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['faq-section-2']) }},\n \"unlimited-possibilities-img-2\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['unlimited-possibilities-img-2']) }},\n\n \"benefit-section-heading\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['benefit-section-heading']) }},\n \"benefit-section-pointer1-heading\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['benefit-section-pointer1-heading']) }},\n \"benefit-section-pointer1-para\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['benefit-section-pointer1-para']) }},\n \"benefit-section-pointer2-heading\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['benefit-section-pointer2-heading']) }},\n \"benefit-section-pointer2-para\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['benefit-section-pointer2-para']) }},\n \"benefit-section-pointer3-heading\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['benefit-section-pointer3-heading']) }},\n \"benefit-section-pointer3-para\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['benefit-section-pointer3-para']) }},\n \"benefit-section-pointer4-heading\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['benefit-section-pointer4-heading']) }},\n \"benefit-section-pointer4-para\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['benefit-section-pointer4-para']) }},\n\n \"problem-pointer-1-heading\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['problem-pointer-1-heading']) }},\n \"problem-pointer-1-para\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['problem-pointer-1-para']) }},\n \"problem-pointer-2-heading\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['problem-pointer-2-heading']) }},\n \"problem-pointer-2-para\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['problem-pointer-2-para']) }},\n \"problem-pointer-3-heading\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['problem-pointer-3-heading']) }},\n \"problem-pointer-3-para\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['problem-pointer-3-para']) }},\n \"problem-pointer-4-heading\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['problem-pointer-4-heading']) }},\n \"problem-pointer-4-para\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['problem-pointer-4-para']) }},\n \"problem-pointer-5-heading\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['problem-pointer-5-heading']) }},\n \"problem-pointer-5-para\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['problem-pointer-5-para']) }},\n \"problem-pointer-6-heading\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['problem-pointer-6-heading']) }},\n \"problem-pointer-6-para\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['problem-pointer-6-para']) }},\n\n \"problem-section-heading\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['problem-section-heading']) }},\n \"roi-heading\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['roi-heading']) }},\n \"roi-para\": {{ JSON.stringify($('Merge Content').first().json.mergedContent.fieldData['roi-para']) }}\n }\n}\n",
"sendBody": true,
"specifyBody": "json",
"authentication": "genericCredentialType",
"genericAuthType": "httpBearerAuth"
},
"credentials": {
"httpBearerAuth": {
"name": "<your credential>"
}
},
"typeVersion": 4.2
},
{
"id": "0ceff694-a4b8-478f-b257-5af2aaefa171",
"name": "Get Notion Block",
"type": "n8n-nodes-base.notion",
"position": [
-1616,
208
],
"parameters": {
"blockId": {
"__rl": true,
"mode": "id",
"value": "={{ $json.id }}"
},
"resource": "block",
"operation": "getAll",
"returnAll": true
},
"credentials": {
"notionApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.2,
"alwaysOutputData": false
},
{
"id": "2e01b520-dea7-40f3-aef6-ee6b2ed8ed6a",
"name": "Merge Content",
"type": "n8n-nodes-base.code",
"position": [
-1392,
208
],
"parameters": {
"jsCode": "const mergedString = $input.all()\n .map(item => item.json.content || '')\n .join(''); // no newlines for JSON\n\nconst mergedJson = JSON.parse(mergedString);\n\nreturn [{\n json: {\n name: $('Code').first().json.name,\n id: $('Code').first().json.id,\n url: $('Code').first().json.url,\n sector: $('Code').first().json.property_sector,\n mergedContent: mergedJson // this is now an object, not a string\n }\n}];\n"
},
"typeVersion": 2
},
{
"id": "ed2b55ea-dd44-42f7-8932-c9443169edd1",
"name": "Loop Over Items",
"type": "n8n-nodes-base.splitInBatches",
"position": [
-2064,
288
],
"parameters": {
"options": {
"reset": false
}
},
"executeOnce": false,
"typeVersion": 3,
"alwaysOutputData": false
},
{
"id": "36a70e4a-1984-4268-880f-037f8c19c400",
"name": "Wait",
"type": "n8n-nodes-base.wait",
"position": [
-48,
304
],
"parameters": {
"amount": 1
},
"typeVersion": 1.1
},
{
"id": "dc8e6390-8272-4701-8c36-e559edf10056",
"name": "Code",
"type": "n8n-nodes-base.code",
"position": [
-1840,
208
],
"parameters": {
"jsCode": "return $input.first().json;"
},
"typeVersion": 2
},
{
"id": "3c26d42e-64e9-43e4-b82b-3809fe40844f",
"name": "When clicking \u2018Execute workflow\u2019",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-2512,
288
],
"parameters": {},
"typeVersion": 1
},
{
"id": "e187dc65-cd5c-45db-8e3a-bee481a75dff",
"name": "Update or Create",
"type": "n8n-nodes-base.switch",
"position": [
-944,
208
],
"parameters": {
"rules": {
"values": [
{
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "7f1fae95-1d39-4680-bc98-de14b3033048",
"operator": {
"type": "array",
"operation": "notContains",
"rightType": "any"
},
"leftValue": "={{ $json.items.map(item => item.fieldData.name)}}",
"rightValue": "={{ $('Merge Content').item.json.name }}"
}
]
}
},
{
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "575b93bb-4c04-4bef-a303-ca4b33f3c098",
"operator": {
"type": "array",
"operation": "contains",
"rightType": "any"
},
"leftValue": "={{ $json.items.map(item => item.fieldData.name)}}",
"rightValue": "={{ $('Merge Content').item.json.name }}"
}
]
}
}
]
},
"options": {}
},
"typeVersion": 3.2
},
{
"id": "d0f79bc8-8a22-44b0-8c4a-ced6a93cae46",
"name": "hold",
"type": "n8n-nodes-base.notion",
"position": [
-496,
304
],
"parameters": {
"pageId": {
"__rl": true,
"mode": "id",
"value": "={{ $('Merge Content').item.json.id }}"
},
"options": {},
"resource": "databasePage",
"operation": "update",
"propertiesUi": {
"propertyValues": [
{
"key": "Status|status",
"statusValue": "On Hold"
}
]
}
},
"credentials": {
"notionApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.2
},
{
"id": "2243c9a7-6cbd-47fc-815a-a2b96bf1ae84",
"name": "Done",
"type": "n8n-nodes-base.notion",
"position": [
-496,
112
],
"parameters": {
"pageId": {
"__rl": true,
"mode": "id",
"value": "={{ $('Merge Content').item.json.id }}"
},
"options": {},
"resource": "databasePage",
"operation": "update",
"propertiesUi": {
"propertyValues": [
{
"key": "Status|status",
"statusValue": "5. Done"
}
]
}
},
"credentials": {
"notionApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.2
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "b8bee134-2b40-4927-afc0-be4a5bc684d1",
"connections": {
"Code": {
"main": [
[
{
"node": "Get Notion Block",
"type": "main",
"index": 0
}
]
]
},
"Done": {
"main": [
[
{
"node": "Log Submission1",
"type": "main",
"index": 0
}
]
]
},
"Wait": {
"main": [
[
{
"node": "Loop Over Items",
"type": "main",
"index": 0
}
]
]
},
"hold": {
"main": [
[
{
"node": "Wait",
"type": "main",
"index": 0
}
]
]
},
"Merge Content": {
"main": [
[
{
"node": "Get Webflow Items",
"type": "main",
"index": 0
}
]
]
},
"Log Submission1": {
"main": [
[
{
"node": "Wait",
"type": "main",
"index": 0
}
]
]
},
"Loop Over Items": {
"main": [
[],
[
{
"node": "Code",
"type": "main",
"index": 0
}
]
]
},
"Get Notion Block": {
"main": [
[
{
"node": "Merge Content",
"type": "main",
"index": 0
}
]
]
},
"Get Notion Pages": {
"main": [
[
{
"node": "Loop Over Items",
"type": "main",
"index": 0
}
]
]
},
"Update or Create": {
"main": [
[
{
"node": "Create Webflow Item",
"type": "main",
"index": 0
}
],
[
{
"node": "Update Webflow Item (Draft)1",
"type": "main",
"index": 0
}
]
]
},
"Get Webflow Items": {
"main": [
[
{
"node": "Update or Create",
"type": "main",
"index": 0
}
]
]
},
"Create Webflow Item": {
"main": [
[
{
"node": "Done",
"type": "main",
"index": 0
}
],
[
{
"node": "hold",
"type": "main",
"index": 0
}
]
]
},
"Update Webflow Item (Draft)1": {
"main": [
[
{
"node": "Done",
"type": "main",
"index": 0
}
],
[
{
"node": "hold",
"type": "main",
"index": 0
}
]
]
},
"When clicking \u2018Execute workflow\u2019": {
"main": [
[
{
"node": "Get Notion Pages",
"type": "main",
"index": 0
}
]
]
}
}
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
httpBearerAuthnotionApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This template takes approved Notion pages and syncs them to a Webflow CMS collection as draft items. It reads pages marked Status = Ready for publish in a specific Notion database/project, merges JSON content stored across page blocks into a single object, then either creates a…
Source: https://n8n.io/workflows/7935/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
Sync your Google Contacts with your Notion database.
This enables webhooks for nearly realtime updates (every 5 seconds) from Notion Databases.
Overview Seamlessly transfer your Notion contacts to Google Contacts with organized group labels, simplifying your CRM management.
This workflow is perfect for productivity-focused teams, remote workers, virtual assistants, and digital knowledge managers who receive documents, images, or notes through Telegram and want to automat
This workflow acts as a junior finance research analyst for a UK boutique M&A or corporate finance team. It listens for Slack messages, classifies the request, gathers company or market data, and prod