{
  "name": "Client Intake \u2192 CRM, Booking & Onboarding (template)",
  "tags": [],
  "nodes": [
    {
      "id": "530bfb4f-28e6-43f3-a3bf-f1ada52c805d",
      "name": "New Client Inquiry",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        288,
        400
      ],
      "parameters": {
        "options": {
          "path": "new-client-inquiry",
          "ignoreBots": true,
          "buttonLabel": "Send inquiry",
          "appendAttribution": false,
          "respondWithOptions": {
            "values": {
              "formSubmittedText": "Thanks, we have got your inquiry. Check your email for a link to book a discovery call."
            }
          },
          "useWorkflowTimezone": true
        },
        "formTitle": "Work with us",
        "formFields": {
          "values": [
            {
              "fieldName": "full_name",
              "fieldLabel": "Your name",
              "placeholder": "Jane Doe",
              "requiredField": true
            },
            {
              "fieldName": "email",
              "fieldType": "email",
              "fieldLabel": "Email",
              "placeholder": "user@example.com",
              "requiredField": true
            },
            {
              "fieldName": "company",
              "fieldLabel": "Company",
              "placeholder": "Company name"
            },
            {
              "fieldName": "need",
              "fieldType": "textarea",
              "fieldLabel": "What do you need help with?",
              "placeholder": "A couple of sentences is plenty",
              "requiredField": true
            },
            {
              "fieldName": "budget",
              "fieldType": "dropdown",
              "fieldLabel": "Rough budget",
              "fieldOptions": {
                "values": [
                  {
                    "option": "Under $2,000"
                  },
                  {
                    "option": "$2,000 to $5,000"
                  },
                  {
                    "option": "$5,000 to $10,000"
                  },
                  {
                    "option": "Over $10,000"
                  },
                  {
                    "option": "Not sure yet"
                  }
                ]
              }
            },
            {
              "fieldName": "source",
              "fieldLabel": "How did you hear about us?"
            }
          ]
        },
        "formDescription": "Tell us a bit about your project and we will get you booked in for a discovery call."
      },
      "typeVersion": 2.6
    },
    {
      "id": "5d401d49-16ae-49be-ab0e-09778630810c",
      "name": "Save Raw Inquiry",
      "type": "n8n-nodes-base.dataTable",
      "position": [
        496,
        400
      ],
      "parameters": {
        "columns": {
          "value": {
            "need": "={{ $json.need }}",
            "email": "={{ $json.email }}",
            "budget": "={{ $json.budget }}",
            "source": "={{ $json.source }}",
            "company": "={{ $json.company }}",
            "full_name": "={{ $json.full_name }}",
            "submitted_at": "={{ $json.submittedAt }}"
          },
          "schema": [
            {
              "id": "full_name",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "full_name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "email",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "company",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "company",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "need",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "need",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "budget",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "budget",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "source",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "source",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "submitted_at",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "submitted_at",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow"
        },
        "options": {},
        "dataTableId": {
          "__rl": true,
          "mode": "id",
          "value": ""
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "9a92c44b-8f42-4ab9-8919-939a3ba0ac2d",
      "name": "Normalize Lead",
      "type": "n8n-nodes-base.set",
      "position": [
        720,
        400
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "a1",
              "name": "full_name",
              "type": "string",
              "value": "={{ $(\"New Client Inquiry\").item.json.full_name.trim() }}"
            },
            {
              "id": "a2",
              "name": "first_name",
              "type": "string",
              "value": "={{ $(\"New Client Inquiry\").item.json.full_name.trim().split(\" \")[0] }}"
            },
            {
              "id": "a3",
              "name": "email",
              "type": "string",
              "value": "={{ $(\"New Client Inquiry\").item.json.email.trim().toLowerCase() }}"
            },
            {
              "id": "a4",
              "name": "company",
              "type": "string",
              "value": "={{ $(\"New Client Inquiry\").item.json.company || \"Not given\" }}"
            },
            {
              "id": "a5",
              "name": "need",
              "type": "string",
              "value": "={{ $(\"New Client Inquiry\").item.json.need.trim() }}"
            },
            {
              "id": "a6",
              "name": "budget",
              "type": "string",
              "value": "={{ $(\"New Client Inquiry\").item.json.budget || \"Not given\" }}"
            },
            {
              "id": "a7",
              "name": "source",
              "type": "string",
              "value": "={{ $(\"New Client Inquiry\").item.json.source || \"Not given\" }}"
            },
            {
              "id": "a8",
              "name": "submitted_at",
              "type": "string",
              "value": "={{ $now.toISO() }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "2d5115f3-6fb6-4ed3-84ae-bfdf5b00b951",
      "name": "Find Existing Person",
      "type": "n8n-nodes-base.pipedrive",
      "onError": "continueRegularOutput",
      "position": [
        944,
        400
      ],
      "parameters": {
        "term": "={{ $json.email }}",
        "limit": 1,
        "resource": "person",
        "operation": "search",
        "exactMatch": true,
        "additionalFields": {
          "fields": [
            "email"
          ]
        }
      },
      "credentials": {
        "pipedriveApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2,
      "alwaysOutputData": true
    },
    {
      "id": "161d3fee-a49c-4c24-8ec4-01dde81e3ec4",
      "name": "Person Exists?",
      "type": "n8n-nodes-base.if",
      "position": [
        1168,
        400
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "loose"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "c1",
              "operator": {
                "type": "number",
                "operation": "exists",
                "singleValue": true
              },
              "leftValue": "={{ $json.id }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "afb9885e-07cd-45ed-8ded-9cd9b067828a",
      "name": "Create Deal",
      "type": "n8n-nodes-base.pipedrive",
      "position": [
        1600,
        400
      ],
      "parameters": {
        "title": "={{ $(\"Normalize Lead\").item.json.company }} - {{ $(\"Normalize Lead\").item.json.full_name }}",
        "person_id": "={{ $json.id }}",
        "associateWith": "person",
        "additionalFields": {
          "visible_to": "3"
        }
      },
      "credentials": {
        "pipedriveApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "adc77ea1-f855-4c88-a600-596cedb1e4a5",
      "name": "Create Person",
      "type": "n8n-nodes-base.pipedrive",
      "position": [
        1376,
        528
      ],
      "parameters": {
        "name": "={{ $(\"Normalize Lead\").item.json.full_name }}",
        "resource": "person",
        "additionalFields": {
          "emails": {
            "emailProperties": [
              {
                "value": "={{ $(\"Normalize Lead\").item.json.email }}"
              }
            ]
          },
          "visible_to": "3"
        }
      },
      "credentials": {
        "pipedriveApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "84b5533e-da78-43d4-a1bd-2cd6a7574aec",
      "name": "Notify New Lead",
      "type": "n8n-nodes-base.slack",
      "onError": "continueRegularOutput",
      "position": [
        1840,
        400
      ],
      "parameters": {
        "text": "=*New inquiry from {{ $(\"Normalize Lead\").item.json.full_name }}*\n*Company:* {{ $(\"Normalize Lead\").item.json.company }}\n*Email:* {{ $(\"Normalize Lead\").item.json.email }}\n*Budget:* {{ $(\"Normalize Lead\").item.json.budget }}",
        "select": "channel",
        "blocksUi": "={\n  \"blocks\": [\n    { \"type\": \"header\", \"text\": { \"type\": \"plain_text\", \"text\": {{ JSON.stringify(\"New inquiry: \" + $('Normalize Lead').item.json.full_name) }}, \"emoji\": true } },\n    { \"type\": \"section\", \"fields\": [\n      { \"type\": \"mrkdwn\", \"text\": {{ JSON.stringify(\"*Company*\\n\" + $('Normalize Lead').item.json.company) }} },\n      { \"type\": \"mrkdwn\", \"text\": {{ JSON.stringify(\"*Budget*\\n\" + $('Normalize Lead').item.json.budget) }} },\n      { \"type\": \"mrkdwn\", \"text\": {{ JSON.stringify(\"*Email*\\n\" + $('Normalize Lead').item.json.email) }} },\n      { \"type\": \"mrkdwn\", \"text\": {{ JSON.stringify(\"*Heard about us via*\\n\" + $('Normalize Lead').item.json.source) }} }\n    ] },\n    { \"type\": \"section\", \"text\": { \"type\": \"mrkdwn\", \"text\": {{ JSON.stringify(\"*What they need*\\n\" + $('Normalize Lead').item.json.need.slice(0, 2500)) }} } },\n    { \"type\": \"actions\", \"elements\": [\n      { \"type\": \"button\", \"style\": \"primary\", \"text\": { \"type\": \"plain_text\", \"text\": \"Open deal in Pipedrive\", \"emoji\": true }, \"url\": \"https://YOUR-COMPANY.pipedrive.com/deal/{{ $('Create Deal').item.json.id }}\" },\n      { \"type\": \"button\", \"text\": { \"type\": \"plain_text\", \"text\": \"Reply by email\", \"emoji\": true }, \"url\": \"mailto:{{ $('Normalize Lead').item.json.email }}\" }\n    ] },\n    { \"type\": \"context\", \"elements\": [ { \"type\": \"mrkdwn\", \"text\": \"Deal created in Pipedrive  \u00b7  booking email sent\" } ] }\n  ]\n}",
        "channelId": {
          "__rl": true,
          "mode": "name",
          "value": "new-leads"
        },
        "messageType": "block",
        "otherOptions": {
          "mrkdwn": true,
          "includeLinkToWorkflow": false
        }
      },
      "credentials": {
        "slackApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.5
    },
    {
      "id": "00076798-0d13-4fc1-819f-861badaeefe3",
      "name": "Booking Email",
      "type": "n8n-nodes-base.gmail",
      "onError": "continueRegularOutput",
      "position": [
        2080,
        400
      ],
      "parameters": {
        "sendTo": "={{ $(\"Normalize Lead\").item.json.email }}",
        "message": "=<p>Hi {{ $(\"Normalize Lead\").item.json.first_name }},</p><p>Thanks for reaching out. I read what you sent over about {{ $(\"Normalize Lead\").item.json.company }} and I would like to hear more.</p><p>Grab whichever time suits you here and we will talk it through:</p><p><a href=\"https://cal.com/your-handle/discovery-call\">Book a discovery call</a></p><p>If none of those times work, just reply to this email and we will find something.</p><p>Speak soon,<br>Your Name</p>",
        "options": {
          "senderName": "Your Name",
          "appendAttribution": false,
          "replyToSenderOnly": false
        },
        "subject": "=Thanks for getting in touch, {{ $(\"Normalize Lead\").item.json.first_name }}"
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "4b7cbee2-8dcb-415f-8a92-3d87e972473d",
      "name": "Cal.com Booking Created",
      "type": "n8n-nodes-base.webhook",
      "position": [
        288,
        960
      ],
      "parameters": {
        "path": "calcom-booking-created",
        "options": {
          "ignoreBots": false
        },
        "httpMethod": "POST"
      },
      "typeVersion": 2.1
    },
    {
      "id": "fa26ded3-11a0-46d2-9e83-e386e803bc12",
      "name": "Normalize Booking",
      "type": "n8n-nodes-base.set",
      "position": [
        496,
        960
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "b1",
              "name": "attendee_name",
              "type": "string",
              "value": "={{ $json.body?.payload?.attendees?.[0]?.name ?? $json.payload?.attendees?.[0]?.name ?? \"Unknown\" }}"
            },
            {
              "id": "b2",
              "name": "attendee_email",
              "type": "string",
              "value": "={{ ($json.body?.payload?.attendees?.[0]?.email ?? $json.payload?.attendees?.[0]?.email ?? \"\").toLowerCase() }}"
            },
            {
              "id": "b3",
              "name": "call_title",
              "type": "string",
              "value": "={{ $json.body?.payload?.title ?? $json.payload?.title ?? \"Discovery call\" }}"
            },
            {
              "id": "b4",
              "name": "starts_at",
              "type": "string",
              "value": "={{ $json.body?.payload?.startTime ?? $json.payload?.startTime ?? \"\" }}"
            },
            {
              "id": "b5",
              "name": "timezone",
              "type": "string",
              "value": "={{ $json.body?.payload?.attendees?.[0]?.timeZone ?? \"UTC\" }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "0d14e8ee-cde5-419f-9ccb-f45d75192712",
      "name": "Find Lead In Pipedrive",
      "type": "n8n-nodes-base.pipedrive",
      "onError": "continueRegularOutput",
      "position": [
        720,
        960
      ],
      "parameters": {
        "term": "={{ $json.attendee_email }}",
        "limit": 1,
        "resource": "person",
        "operation": "search",
        "exactMatch": true,
        "additionalFields": {
          "fields": [
            "email"
          ]
        }
      },
      "credentials": {
        "pipedriveApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "4c3487fa-ae1e-4566-8431-a375f23c2138",
      "name": "Create Onboarding Project",
      "type": "n8n-nodes-base.clickUp",
      "position": [
        944,
        960
      ],
      "parameters": {
        "name": "=Onboarding: {{ $(\"Normalize Booking\").item.json.attendee_name }}",
        "folderless": true,
        "authentication": "oAuth2",
        "additionalFields": {
          "content": "=**Discovery call booked**\n\n- Name: {{ $(\"Normalize Booking\").item.json.attendee_name }}\n- Email: {{ $(\"Normalize Booking\").item.json.attendee_email }}\n- Call: {{ $(\"Normalize Booking\").item.json.call_title }}\n- Starts: {{ $(\"Normalize Booking\").item.json.starts_at }} ({{ $(\"Normalize Booking\").item.json.timezone }})\n- Pipedrive person ID: {{ $json.id || \"no match found\" }}\n",
          "priority": 3,
          "markdownContent": true
        }
      },
      "credentials": {
        "clickUpOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "c9191d70-86a3-4186-9af9-f8451b2d07fe",
      "name": "Notify Call Booked",
      "type": "n8n-nodes-base.slack",
      "onError": "continueRegularOutput",
      "position": [
        1168,
        960
      ],
      "parameters": {
        "text": "=*Discovery call booked with {{ $(\"Normalize Booking\").item.json.attendee_name }}*\n*When:* {{ $(\"Normalize Booking\").item.json.starts_at }} ({{ $(\"Normalize Booking\").item.json.timezone }})\n*Onboarding project:* {{ $json.url }}",
        "select": "channel",
        "channelId": {
          "__rl": true,
          "mode": "name",
          "value": "new-leads"
        },
        "otherOptions": {
          "mrkdwn": true,
          "includeLinkToWorkflow": false
        }
      },
      "credentials": {
        "slackApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.5
    },
    {
      "id": "0c8aaa0e-8ade-4836-bccd-9d27f95b14bf",
      "name": "Main Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -304,
        208
      ],
      "parameters": {
        "width": 456,
        "height": 1000,
        "content": "# Client Intake \u2192 CRM, Booking & Onboarding\n\nTurns a website inquiry into a Pipedrive deal, a Slack alert, and a booking email. When the lead books a call, it creates a ClickUp onboarding task and confirms in Slack.\n\n## How it works\n1. A visitor submits the intake form.\n2. The raw submission is saved to a Data Table.\n3. Pipedrive is searched by email; person is created if missing.\n4. A deal is created and linked to the person.\n5. Slack alerts the team, and the lead gets a booking email with your Cal.com link.\n6. Cal.com starts the second trigger when the lead books.\n7. The attendee is matched in Pipedrive and a ClickUp onboarding task is created.\n8. Slack confirms the booked call.\n\n## Setup\n1. Connect Pipedrive, Slack, Gmail and ClickUp credentials.\n2. Create a Data Table (full_name, email, company, need, budget, source, submitted_at) and select it in \"Save Raw Inquiry\".\n3. Set the Slack channel in both notify nodes and your Pipedrive domain in the deal button.\n4. Add your Cal.com link and sender name in \"Booking Email\".\n5. Register the webhook URL in Cal.com (Booking Created event).\n6. Pick Team, Space and List in \"Create Onboarding Project\".\n\n## Customize\n- Swap the form for your own form or webhook.\n- Edit the form fields and budget options.\n- Replace ClickUp with your project management tool."
      },
      "typeVersion": 1
    },
    {
      "id": "05dd5112-3e5c-4938-a720-2651f90554b4",
      "name": "Section Capture",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        224,
        256
      ],
      "parameters": {
        "color": 7,
        "width": 640,
        "height": 432,
        "content": "### 1. Capture the inquiry\nForm submission is stored raw, then cleaned and normalized."
      },
      "typeVersion": 1
    },
    {
      "id": "87267de6-a76f-4c13-af77-490e9e588c13",
      "name": "Section Pipedrive",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        880,
        256
      ],
      "parameters": {
        "color": 7,
        "width": 896,
        "height": 432,
        "content": "### 2. Find or create in Pipedrive\nSearch by email, create the person only if missing, then create the deal."
      },
      "typeVersion": 1
    },
    {
      "id": "49a75029-e6c1-412d-bcda-290f0051a977",
      "name": "Section Notify",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1792,
        256
      ],
      "parameters": {
        "color": 7,
        "width": 480,
        "height": 432,
        "content": "### 3. Alert and invite\nSlack alert to the team, booking email to the lead."
      },
      "typeVersion": 1
    },
    {
      "id": "7abe0d5e-f3fc-4ff0-9f43-84b1c67a7114",
      "name": "Section Onboarding",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        240,
        816
      ],
      "parameters": {
        "color": 7,
        "width": 1120,
        "height": 320,
        "content": "### 4. Booked call to onboarding\nCal.com webhook matches the attendee in Pipedrive, opens a ClickUp onboarding task, confirms in Slack."
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "binaryMode": "separate",
    "availableInMCP": true,
    "executionOrder": "v1"
  },
  "nodeGroups": [],
  "connections": {
    "Create Deal": {
      "main": [
        [
          {
            "node": "Notify New Lead",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create Person": {
      "main": [
        [
          {
            "node": "Create Deal",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Normalize Lead": {
      "main": [
        [
          {
            "node": "Find Existing Person",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Person Exists?": {
      "main": [
        [
          {
            "node": "Create Deal",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Create Person",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Notify New Lead": {
      "main": [
        [
          {
            "node": "Booking Email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Save Raw Inquiry": {
      "main": [
        [
          {
            "node": "Normalize Lead",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Normalize Booking": {
      "main": [
        [
          {
            "node": "Find Lead In Pipedrive",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "New Client Inquiry": {
      "main": [
        [
          {
            "node": "Save Raw Inquiry",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Find Existing Person": {
      "main": [
        [
          {
            "node": "Person Exists?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Find Lead In Pipedrive": {
      "main": [
        [
          {
            "node": "Create Onboarding Project",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Cal.com Booking Created": {
      "main": [
        [
          {
            "node": "Normalize Booking",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create Onboarding Project": {
      "main": [
        [
          {
            "node": "Notify Call Booked",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}