{
  "id": "jhr1cb7dv1ELzRgx",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Client Onboarding Automation",
  "tags": [],
  "nodes": [
    {
      "id": "04984419-8ea7-4979-af83-db86555b54d5",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        928,
        -848
      ],
      "parameters": {
        "width": 480,
        "height": 896,
        "content": "## Client Onboarding Automation\n### How it works\n\n1. The workflow triggers when a new client intake form is submitted.\n2. It queries Google Sheets to verify that the client does not already exist, preventing duplicate records.\n3. If the client is new, their information is immediately saved to the database.\n4. It sets up a dedicated Google Drive folder and shares it directly with the client.\n5. It creates a personalized Notion page to act as the client's new project workspace.\n6. Finally, it sends a welcome email containing all the necessary links and updates the original spreadsheet record with these URLs.\n\n### Setup steps\n\n- [ ] Connect your form provider or webhook to capture new client submissions.\n- [ ] Authenticate Google Sheets and select your primary client tracking spreadsheet.\n- [ ] Set up Google Drive credentials to allow automated folder creation and permission sharing.\n- [ ] Configure Notion credentials and specify the parent database or page where new client workspaces should reside.\n- [ ] Authenticate the Gmail node with the account you wish to send the onboarding emails from.\n\n### Customization\n\nYou can easily customize the layout of the Notion workspace by modifying the template in the Notion node, and tailor the welcome email's messaging within the Gmail node."
      },
      "typeVersion": 1
    },
    {
      "id": "4ab3198b-8417-4c37-a224-9486e4919a85",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1488,
        -848
      ],
      "parameters": {
        "color": 7,
        "width": 864,
        "height": 400,
        "content": "## Verify new client intake\n\nReceives form submissions, checks the database for existing records, and stops execution if the client is already registered."
      },
      "typeVersion": 1
    },
    {
      "id": "decdbdd5-c21e-4697-91b5-782bcb44070c",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2384,
        -704
      ],
      "parameters": {
        "color": 7,
        "height": 336,
        "content": "## Save to client database\n\nAdds the verified new client details as a new row in the Google Sheets database."
      },
      "typeVersion": 1
    },
    {
      "id": "9b822f31-1931-4c89-b9c0-54f368a02c81",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2656,
        -656
      ],
      "parameters": {
        "color": 7,
        "width": 640,
        "height": 304,
        "content": "## Provision Google Drive folder\n\nFormats the necessary variables, creates a dedicated Google Drive folder for the client, and sets sharing permissions."
      },
      "typeVersion": 1
    },
    {
      "id": "a98a0da6-05ba-49ca-89e6-86bac4a43a78",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3328,
        -720
      ],
      "parameters": {
        "color": 7,
        "height": 384,
        "content": "## Create Notion workspace\n\nGenerates a personalized Notion page to serve as the client's workspace."
      },
      "typeVersion": 1
    },
    {
      "id": "cba20b78-18b3-4e8d-b6ca-552532cce1c1",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3600,
        -656
      ],
      "parameters": {
        "color": 7,
        "width": 416,
        "height": 304,
        "content": "## Send welcome email\n\nCompiles the workspace links and sends a welcome onboarding email to the client using Gmail."
      },
      "typeVersion": 1
    },
    {
      "id": "e3b3ccec-58d5-4b85-9f5c-ab6298d532d7",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        4048,
        -704
      ],
      "parameters": {
        "color": 7,
        "height": 336,
        "content": "## Update client record\n\nUpdates the client's record in Google Sheets with the newly generated Drive and Notion links."
      },
      "typeVersion": 1
    },
    {
      "id": "6de148ac-eb31-4a8e-9dd9-43e752fc8dab",
      "name": "When Form Submitted",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        1536,
        -624
      ],
      "parameters": {
        "options": {},
        "formTitle": "New Client Onboarding",
        "formFields": {
          "values": [
            {
              "fieldLabel": "Client Name",
              "requiredField": true
            },
            {
              "fieldLabel": "Company Name",
              "requiredField": true
            },
            {
              "fieldLabel": "Email",
              "requiredField": true
            },
            {
              "fieldLabel": "Phone Number"
            },
            {
              "fieldType": "textarea",
              "fieldLabel": "Project Details"
            }
          ]
        },
        "formDescription": "Tell us a bit about you and we'll get you set up."
      },
      "typeVersion": 2.2
    },
    {
      "id": "ba7f880f-5897-4b0b-96c9-a670f1db8c76",
      "name": "Read Client Sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1760,
        -624
      ],
      "parameters": {
        "options": {},
        "filtersUI": {
          "values": [
            {
              "lookupValue": "={{ $json.Email }}",
              "lookupColumn": "Email"
            }
          ]
        },
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 564224666,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1D3yDAxc5KbtsPAnO-hZ9TrOPQcmNQm9etXVDmRegKiY/edit#gid=564224666",
          "cachedResultName": "Client Information Form"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1D3yDAxc5KbtsPAnO-hZ9TrOPQcmNQm9etXVDmRegKiY",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1D3yDAxc5KbtsPAnO-hZ9TrOPQcmNQm9etXVDmRegKiY/edit?usp=drivesdk",
          "cachedResultName": "Client Information Form"
        },
        "authentication": "serviceAccount"
      },
      "credentials": {
        "googleApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.5,
      "alwaysOutputData": true
    },
    {
      "id": "9f4aba5a-f159-499a-a41a-215a1fa142d3",
      "name": "If Client Exists",
      "type": "n8n-nodes-base.if",
      "position": [
        1984,
        -624
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 1,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "b1+1234567890-+1234567890",
              "operator": {
                "type": "string",
                "operation": "notEmpty"
              },
              "leftValue": "={{ $json['Email'] }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "b19c8f04-8c0a-40b6-abf2-bbd7d971689f",
      "name": "Stop Workflow if Exists",
      "type": "n8n-nodes-base.noOp",
      "position": [
        2208,
        -720
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "67958f19-fa1a-41e9-8302-1ea8a0a45c80",
      "name": "Append Client to Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        2432,
        -528
      ],
      "parameters": {
        "columns": {
          "value": {
            "Email": "={{ $('When Form Submitted').item.json.Email }}",
            "Client Name": "={{ $('When Form Submitted').item.json['Client Name'] }}",
            "Company Name": "={{ $('When Form Submitted').item.json['Company Name'] }}",
            "Phone Number": "={{ $('When Form Submitted').item.json['Phone Number'] }}",
            "Project Details": "={{ $('When Form Submitted').item.json['Project Details'] }}"
          },
          "schema": [
            {
              "id": "Client Name",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Client Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Company Name",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Company Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Email",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Phone Number",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Phone Number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Project Details",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Project Details",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "Email"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 564224666,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1D3yDAxc5KbtsPAnO-hZ9TrOPQcmNQm9etXVDmRegKiY/edit#gid=564224666",
          "cachedResultName": "Client Information Form"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1D3yDAxc5KbtsPAnO-hZ9TrOPQcmNQm9etXVDmRegKiY",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1D3yDAxc5KbtsPAnO-hZ9TrOPQcmNQm9etXVDmRegKiY/edit?usp=drivesdk",
          "cachedResultName": "Client Information Form"
        },
        "authentication": "serviceAccount"
      },
      "credentials": {
        "googleApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "d9c13ebd-0e38-41c8-8cf3-537cb0869f9d",
      "name": "Prepare Drive Variables",
      "type": "n8n-nodes-base.set",
      "position": [
        2704,
        -528
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "c1+1234567890-+1234567890",
              "name": "clientName",
              "type": "string",
              "value": "={{ $('When Form Submitted').item.json['Client Name'] }}"
            },
            {
              "id": "c1+1234567890-+1234567890",
              "name": "clientEmail",
              "type": "string",
              "value": "={{ $('When Form Submitted').item.json['Email'] }}"
            },
            {
              "id": "c1+1234567890-+1234567890",
              "name": "companyName",
              "type": "string",
              "value": "={{ $('When Form Submitted').item.json['Company Name'] }}"
            },
            {
              "id": "c1+1234567890-+1234567890",
              "name": "folderName",
              "type": "string",
              "value": "={{ $('When Form Submitted').item.json['Company Name'] }} - {{ $('When Form Submitted').item.json['Client Name'] }} Deliverables"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "9c70067f-eab4-490d-9fe5-9a663eae1902",
      "name": "Create Client Folder in Drive",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        2928,
        -528
      ],
      "parameters": {
        "name": "={{ $json.folderName }}",
        "driveId": {
          "__rl": true,
          "mode": "list",
          "value": "My Drive"
        },
        "options": {},
        "folderId": {
          "__rl": true,
          "mode": "list",
          "value": "1PktrQTVDLsQDYFexuFuuwK2omQc43-mm",
          "cachedResultUrl": "https://drive.google.com/drive/folders/1PktrQTVDLsQDYFexuFuuwK2omQc43-mm",
          "cachedResultName": "Clients"
        },
        "resource": "folder"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "fabb4170-84c0-45bf-82f8-9130b81d4685",
      "name": "Share Folder with Client",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        3152,
        -528
      ],
      "parameters": {
        "fileId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $json.id }}"
        },
        "options": {},
        "operation": "share",
        "permissionsUi": {
          "permissionsValues": {
            "role": "writer",
            "type": "user",
            "emailAddress": "={{ $('Prepare Drive Variables').item.json.clientEmail }}"
          }
        }
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "2d98bba2-e850-4a2b-978b-b0165abb6cfa",
      "name": "Create Client Notion Page",
      "type": "n8n-nodes-base.notion",
      "position": [
        3376,
        -528
      ],
      "parameters": {
        "title": "={{ $('Prepare Drive Variables').item.json.companyName }} - {{ $('Prepare Drive Variables').item.json.clientName }}",
        "options": {},
        "resource": "databasePage",
        "databaseId": {
          "__rl": true,
          "mode": "list",
          "value": "99543f06-9283-4b5c-a9c3-256b82f5e75a",
          "cachedResultUrl": "https://app.notion.com/p/99543f0692834b5ca9c3256b82f5e75a",
          "cachedResultName": "BlankArray Client"
        },
        "propertiesUi": {
          "propertyValues": [
            {
              "key": "Email|email",
              "emailValue": "={{ $('Prepare Drive Variables').item.json.clientEmail }}"
            },
            {
              "key": "Drive Folder|url",
              "urlValue": "=https://drive.google.com/drive/folders/{{ $('Create Client Folder in Drive').item.json.id }}"
            },
            {
              "key": "Status|select",
              "selectValue": "Onboarding"
            }
          ]
        },
        "authentication": "oAuth2"
      },
      "credentials": {
        "notionOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "ebeee704-a54b-4c19-a0d6-299734591b01",
      "name": "Prepare Welcome Email Variables",
      "type": "n8n-nodes-base.set",
      "position": [
        3648,
        -528
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "d1+1234567890-+1234567890",
              "name": "toEmail",
              "type": "string",
              "value": "={{ $('Prepare Drive Variables').item.json.clientEmail }}"
            },
            {
              "id": "d1+1234567890-+1234567890",
              "name": "emailSubject",
              "type": "string",
              "value": "=Welcome to blankarray, {{ $('Prepare Drive Variables').item.json.clientName }}!"
            },
            {
              "id": "d1+1234567890-+1234567890",
              "name": "driveFolderLink",
              "type": "string",
              "value": "=https://drive.google.com/drive/folders/{{ $('Create Client Folder in Drive').item.json.id }}"
            },
            {
              "id": "d1+1234567890-+1234567890",
              "name": "notionPageLink",
              "type": "string",
              "value": "={{ $('Create Client Notion Page').item.json.url }}"
            },
            {
              "id": "d1+1234567890-+1234567890",
              "name": "calendlyLink",
              "type": "string",
              "value": "https://cal.com/abhi.vaar/n8n"
            },
            {
              "id": "d1+1234567890-+1234567890",
              "name": "emailBody",
              "type": "string",
              "value": "=<p>Hi {{ $('Prepare Drive Variables').item.json.clientName }},</p><p>Welcome aboard! Here's everything you need to get started:</p><ul><li>Your shared folder: <a href=\"https://drive.google.com/drive/folders/{{ $('Create Client Folder in Drive').item.json.id }}}\">Open Drive Folder</a></li><li>Your project workspace: <a href=\"{{ $('Create Client Notion Page').item.json.url }}\">Open Notion Page</a></li></ul><p>Let's lock in a kickoff call \u2014 grab a time here: <a href=\"https://calendly.com/blankarray/onboarding-call\">Book a Call</a></p><p>Looking forward to working with you,<br>blankarray</p>"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "a9b72052-5583-4135-b760-8b4aecb7eff6",
      "name": "Send Welcome Email",
      "type": "n8n-nodes-base.gmail",
      "position": [
        3872,
        -528
      ],
      "parameters": {
        "sendTo": "={{ $json.toEmail }}",
        "message": "={{ $json.emailBody }}",
        "options": {
          "appendAttribution": false
        },
        "subject": "={{ $json.emailSubject }}"
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "40c23cd9-4ddc-429c-a472-4354a71c057e",
      "name": "Update Sheet with Status",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        4096,
        -528
      ],
      "parameters": {
        "columns": {
          "value": {
            "Email": "={{ $('When Form Submitted').item.json.Email }}",
            "Onboarded?": "true"
          },
          "schema": [
            {
              "id": "Client Name",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Client Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Company Name",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Company Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Email",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Phone Number",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Phone Number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Project Details",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Project Details",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Onboarded?",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Onboarded?",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "Email"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 564224666,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1D3yDAxc5KbtsPAnO-hZ9TrOPQcmNQm9etXVDmRegKiY/edit#gid=564224666",
          "cachedResultName": "Client Information Form"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1D3yDAxc5KbtsPAnO-hZ9TrOPQcmNQm9etXVDmRegKiY",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1D3yDAxc5KbtsPAnO-hZ9TrOPQcmNQm9etXVDmRegKiY/edit?usp=drivesdk",
          "cachedResultName": "Client Information Form"
        },
        "authentication": "serviceAccount"
      },
      "credentials": {
        "googleApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.5
    }
  ],
  "active": false,
  "settings": {
    "binaryMode": "separate",
    "availableInMCP": false,
    "executionOrder": "v1"
  },
  "versionId": "4a8c72b6-d1f9-4750-97f5-72a3d29f6638",
  "nodeGroups": [],
  "connections": {
    "If Client Exists": {
      "main": [
        [
          {
            "node": "Stop Workflow if Exists",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Append Client to Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Read Client Sheet": {
      "main": [
        [
          {
            "node": "If Client Exists",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send Welcome Email": {
      "main": [
        [
          {
            "node": "Update Sheet with Status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When Form Submitted": {
      "main": [
        [
          {
            "node": "Read Client Sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Append Client to Sheets": {
      "main": [
        [
          {
            "node": "Prepare Drive Variables",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Prepare Drive Variables": {
      "main": [
        [
          {
            "node": "Create Client Folder in Drive",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Share Folder with Client": {
      "main": [
        [
          {
            "node": "Create Client Notion Page",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create Client Notion Page": {
      "main": [
        [
          {
            "node": "Prepare Welcome Email Variables",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create Client Folder in Drive": {
      "main": [
        [
          {
            "node": "Share Folder with Client",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Prepare Welcome Email Variables": {
      "main": [
        [
          {
            "node": "Send Welcome Email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}