AutomationFlowsData & Sheets › Capture Website Form Submissions to Notion CRM Database

Capture Website Form Submissions to Notion CRM Database

ByDavid Olusola @dae221 on n8n.io

This workflow captures form submissions from your website, formats the data, and automatically creates a new entry in your Notion CRM database. It eliminates manual copy-pasting and keeps your leads or requests organised in one place. Webhook Node • Create a webhook in n8n. •…

Webhook trigger★★★★☆ complexity7 nodesNotion
Data & Sheets Trigger: Webhook Nodes: 7 Complexity: ★★★★☆ Added:

This workflow corresponds to n8n.io template #5505 — we link there as the canonical source.

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 →

Download .json
{
  "id": "mSRodggo80JpZWPj",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Form Submission to Notion CRM Setup",
  "tags": [],
  "nodes": [
    {
      "id": "ed25fd44-5ca1-424d-8dd5-115aa8d2812a",
      "name": "Form Submission Hook",
      "type": "n8n-nodes-base.webhook",
      "position": [
        140,
        220
      ],
      "parameters": {
        "path": "34e9fb3f-f6bd-4a44-bb58-6fe58ffe4a78",
        "options": {},
        "httpMethod": "POST"
      },
      "typeVersion": 2
    },
    {
      "id": "cbbb8ead-001c-4f1c-8445-5163f43ee1ad",
      "name": "Parse + Clean Lead Data",
      "type": "n8n-nodes-base.code",
      "position": [
        460,
        220
      ],
      "parameters": {
        "jsCode": "const items = $input.all();\n\nconst updatedItems = items.map((item) => {\n  const { name, email, businessName, message, timeline, budget } =\n    item.json.body;\n  return {\n    name,\n    email,\n    businessName,\n    \"project intent/need\": message,\n    timeline,\n    budget,\n  };\n});\n\nreturn updatedItems;\n"
      },
      "typeVersion": 2
    },
    {
      "id": "ff79100c-45d8-4661-88ac-beff4ddd4b3f",
      "name": "Notion",
      "type": "n8n-nodes-base.notion",
      "position": [
        860,
        220
      ],
      "parameters": {
        "pageId": {
          "__rl": true,
          "mode": "url",
          "value": ""
        },
        "blockUi": {
          "blockValues": [
            {},
            {},
            {}
          ]
        },
        "options": {}
      },
      "typeVersion": 2.2
    },
    {
      "id": "f9efaa89-1f30-4da5-aeee-077f1fb13d32",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -340,
        -20
      ],
      "parameters": {
        "color": 3,
        "width": 360,
        "height": 460,
        "content": "## Website Form Submission to Notion CRM Setup\n**Author David Olusola** \n\nThe great thing about this workflow is that all the fields can be fully customised to match your specific use case. Whether you\u2019re collecting project inquiries, job applications, client onboarding details, or internal requests, you can edit the input fields in your form and update the Code node accordingly.\n\nFor example, if your form collects extra data like \u201cpreferred contact time\u201d or \u201cproject type,\u201d you simply add those fields into your Code node output and map them to your Notion database properties. This way, your workflow remains flexible and tailored to exactly what your business needs to capture, store, and action efficiently."
      },
      "typeVersion": 1
    },
    {
      "id": "b01db7fa-a46a-4e0f-a1f4-b3a11770fe25",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        100,
        -40
      ],
      "parameters": {
        "color": 7,
        "height": 420,
        "content": "\n1.**Webhook Node**\n \u2022 Purpose: Receives form data.\n \u2022 How to set up:\n \u2022 Add a Webhook node in n8n.\n \u2022 Copy the webhook URL.\n \u2022 In your website form settings, set the form action or integration to POST data to this webhook URL.\n \u2022 Test submit the form to see the incoming fields in n8n."
      },
      "typeVersion": 1
    },
    {
      "id": "e5825406-7f14-4054-94d3-d67c66e3b317",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        340,
        -40
      ],
      "parameters": {
        "color": 6,
        "width": 280,
        "height": 420,
        "content": "**Parse Data**\n 1. Reads all input items from the webhook\n 2. Extracts these fields from each form submission:\n \u2022 name\n \u2022 email\n \u2022 businessName\n \u2022 message (renamed to project intent/need)\n \u2022 timeline\n \u2022 budget\n 3. Returns them as a new structured object."
      },
      "typeVersion": 1
    },
    {
      "id": "869bed10-0e6e-4d3a-b217-f0998c2be462",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        620,
        -40
      ],
      "parameters": {
        "width": 360,
        "height": 440,
        "content": "## Mapping to Notion\n\nWhen you connect this to your Notion \u201cCreate Page\u201d node:\n \u2022 Select each database property\n \u2022 Map it to the corresponding output field from this Code node:\n\nNotion Property\nValue Mapping\nName\n{{$json[\"name\"]}}\nEmail\n{{$json[\"email\"]}}\nBusiness Name\n{{$json[\"businessName\"]}}\nProject Intent/Need\n{{$json[\"project intent/need\"]}}\nTimeline\n{{$json[\"timeline\"]}}\nBudget\n{{$json[\"budget\"]}}"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "3fb4d00a-60b9-4907-8bd4-157ed67d33b1",
  "connections": {
    "Form Submission Hook": {
      "main": [
        [
          {
            "node": "Parse + Clean Lead Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Parse + Clean Lead Data": {
      "main": [
        [
          {
            "node": "Notion",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

This workflow captures form submissions from your website, formats the data, and automatically creates a new entry in your Notion CRM database. It eliminates manual copy-pasting and keeps your leads or requests organised in one place. Webhook Node • Create a webhook in n8n. •…

Source: https://n8n.io/workflows/5505/ — original creator credit. Request a take-down →

More Data & Sheets workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Data & Sheets

WorkFlow 06. Uses notion. Webhook trigger; 38 nodes.

Notion
Data & Sheets

This workflow automates the entire lifecycle of a service-based client, combining four distinct business flows into a single view: Intake Leads: Receives a webhook from your form builder, validates th

Airtable, Notion, Google Calendar +3
Data & Sheets

WorkFlow 12. Uses notion, httpRequest. Webhook trigger; 35 nodes.

Notion, HTTP Request
Data & Sheets

A warm, reliable onboarding system for small businesses and studios. Captures a form submission via webhook, creates a Client record in Notion, sends a concierge-style welcome email (with scheduler +

Notion, Email Send, Telegram +4
Data & Sheets

WorkFlow 07. Uses notion, httpRequest. Webhook trigger; 28 nodes.

Notion, HTTP Request