π€ Complete client onboarding: Form to Monday.com, Google Drive & Email
β‘ 288 views Β· π€ CRM & Sales Operations
Description
Overview
Streamline your entire client onboarding process with a single workflow. When a new client submits the intake form, this automation creates a Monday.com item, generates a complete Google Drive folder structure from your template, updates the Monday item with the folder link, and sends a personalized welcome emailβall automatically.
What This Workflow Does
- Displays a professional intake form (client name, email, project type)
- Creates a new item in your Monday.com board with all details
- Generates a Google Drive folder for the client
- Duplicates your template folder structure using Apps Script
- Updates the Monday.com item with the Google Drive folder link
- Sends a welcome email to the client with folder access
Key Features
- End-to-end automation β From form submission to welcome email
- CRM integration β All client data captured in Monday.com
- Organized file storage β Consistent folder structure for every client
- Professional onboarding β Clients receive immediate welcome email with resources
- Fully customizable β Add more form fields, notifications, or integrations
Prerequisites
- Monday.com account with API credentials
- Google Drive account with OAuth2 credentials
- Gmail account with OAuth2 credentials
- Google Apps Script deployment (code below)
- Template folder in Google Drive with
{{NAME}}placeholders
Setup
Step 1: Get your Monday.com IDs
- Open your Monday.com board
- Board ID: Check the URL β
monday.com/boards/BOARD_ID - Group ID: Use Monday API Explorer or browser dev tools
- Column IDs: Found in column settings or via API
Step 2: Create your Drive template folder
π {{NAME}} - Client Files
βββ π 01. Contracts & Agreements
βββ π 02. {{NAME}} - Assets
βββ π 03. Deliverables
βββ π 04. Communications
βββ π {{NAME}} - Project Brief.gdoc
Step 3: Deploy Apps Script
- Go to script.google.com
- Create new project β Paste code below
- Deploy β New deployment β Web app
- Execute as:
Me| Access:Anyone - Copy the deployment URL
Step 4: Configure the workflow
Replace these placeholders:
YOUR_BOARD_IDβ Monday.com board IDYOUR_GROUP_IDβ Monday.com group IDDESTINATION_PARENT_FOLDER_IDβ Drive folder for new client foldersYOUR_APPS_SCRIPT_URLβ Apps Script deployment URLYOUR_TEMPLATE_FOLDER_IDβ Template folder to duplicate
Step 5: Connect credentials
- Monday.com API credentials
- Google Drive OAuth2
- Gmail OAuth2
Apps Script Code
function doPost(e) {
try {
var params = e.parameter;
var templateFolderId = params.templateFolderId;
var name = params.name;
var destinationFolderId = params.destinationFolderId;
if (!templateFolderId || !name) {
return jsonResponse({
success: false,
error: 'Missing required parameters: templateFolderId and name are required'
});
}
var templateFolder = DriveApp.getFolderById(templateFolderId);
if (destinationFolderId) {
var destinationFolder = DriveApp.getFolderById(destinationFolderId);
copyContentsRecursively(templateFolder, destinationFolder, name);
return jsonResponse({
success: true,
id: destinationFolder.getId(),
url: destinationFolder.getUrl(),
name: destinationFolder.getName(),
mode: 'copied_to_existing',
timestamp: new Date().toISOString()
});
} else {
var parentFolder = templateFolder.getParents().next();
var newFolderName = replacePlaceholders(templateFolder.getName(), name);
var newFolder = parentFolder.createFolder(newFolderName);
copyContentsRecursively(templateFolder, newFolder, name);
return jsonResponse({
success: true,
id: newFolder.getId(),
url: newFolder.getUrl(),
name: newFolder.getName(),
mode: 'created_new',
timestamp: new Date().toISOString()
});
}
} catch (error) {
return jsonResponse({
success: false,
error: error.toString()
});
}
}
function replacePlaceholders(text, name) {
var result = text;
result = result.replace(/\{\{NAME\}\}/g, name);
result = result.replace(/\{\{name\}\}/g, name.toLowerCase());
result = result.replace(/\{\{Name\}\}/g, name);
return result;
}
function copyContentsRecursively(sourceFolder, destinationFolder, name) {
var files = sourceFolder.getFiles();
while (files.hasNext()) {
try {
var file = files.next();
var newFileName = replacePlaceholders(file.getName(), name);
file.makeCopy(newFileName, destinationFolder);
Utilities.sleep(150);
} catch (error) {
Logger.log('Error copying file: ' + error.toString());
}
}
var subfolders = sourceFolder.getFolders();
while (subfolders.hasNext()) {
try {
var subfolder = subfolders.next();
var newSubfolderName = replacePlaceholders(subfolder.getName(), name);
var newSubfolder = destinationFolder.createFolder(newSubfolderName);
Utilities.sleep(200);
copyContentsRecursively(subfolder, newSubfolder, name);
} catch (error) {
Logger.log('Error copying subfolder: ' + error.toString());
}
}
}
function jsonResponse(data) {
return ContentService
.createTextOutput(JSON.stringify(data))
.setMimeType(ContentService.MimeType.JSON);
}
Use Cases
- Agencies β Automate client onboarding with CRM tracking
- Freelancers β Professional intake process for new projects
- Consulting firms β Standardized client setup workflow
- Creative studios β Organize assets and deliverables from day one
- Service businesses β Streamline customer setup and communication
Customization Ideas
- Add more form fields: phone, company size, budget, deadline
- Add Slack notification to alert your team
- Create tasks in Monday.com sub-items
- Add to Google Calendar for kickoff meeting
- Integrate with invoicing (Stripe, QuickBooks)
Notes
- Apps Script may take 30-60 seconds for large folder structures
- Monday.com column IDs must match your boardβs actual columns
- The welcome email can be customized with your branding
- Test with a single client before full deployment
π Nodes Used
HTTP Request, Google Drive, Monday.com, Gmail, n8n Form Trigger
π₯ Import
Download workflow.json and import into n8n:
Workflow menu β Import from File