Automated Lead-to-Client Pipeline with Google Sheets Email Notifications & Time Tracking
Go to WorkflowDescription
Google Sheets CRM Automations: Lead Stages → Emails, Client Tracking & Delivery Duration
Turn a simple Google Sheet into a lightweight CRM powered by n8n.
Overview
This template monitors edits in your Leads and Clients tabs and reacts automatically:
Qualified?** → sends a Cal.com booking email
Stage → Awaiting Proposal** → sends a “proposal coming soon” email
Stage → Won* → appends the client to *Clients* with a *Start Date & Time**
Clients: Project Status → Delivered* → stamps *End Date & Time* and computes *Time to Deliver** (e.g., 2d 5h 30m)
What This Template Does
Lead Qualification → Email: When you mark **Qualified? in Leads, a booking email is sent automatically.
Awaiting Proposal → Email**: Sends a heads-up email that a proposal is coming soon.
Won → Client Append: Adds the client to **Clients and records the start timestamp.
Delivered → Completion Metrics**: Looks up the client, stamps the end timestamp, and calculates the delivery duration.
How It Works
Google Apps Script → Webhooks (onEdit)
A small Apps Script (provided in the workflow’s Sticky Note) watches the sheet and posts JSON to these n8n webhooks:
/webhook/lead-stage-changed
/webhook/lead-qualified
/webhook/client-status-changed
n8n Flow & Branching
lead-stage-changed
If Awaiting Proposal → send proposal heads-up email
If Won → format timestamp → append to Clients
lead-qualified
If qualified = true → send Cal.com booking email
client-status-changed
If Delivered → lookup client row → stamp End Date & Time → compute Time to Deliver → update row
Prerequisites
Google Sheet with two tabs: Leads and Clients
Gmail account (or use your preferred email/notification node)
n8n instance with:
Google Sheets OAuth2 credentials
Gmail OAuth2 credentials (if using the Gmail node)
Suggested columns
Leads**: Name (A), Client Email (C), Lead Source (D), Stage (E), Qualified? (H)
Clients**: Name (A), Client Email (C), Project Status (D), Start Date & Time (F), End Date & Time (G), Time to Deliver (H)
Setup Steps
Copy/prepare the Google Sheet
Ensure both Leads and Clients tabs exist with the columns above.
Install the Apps Script
In Google Sheets: Extensions → Apps Script → paste the script from the workflow’s Sticky Note.
Replace webhook URLs with your n8n endpoints:
https://{{YOUR_N8N_DOMAIN}}/webhook/lead-stage-changed
https://{{YOUR_N8N_DOMAIN}}/webhook/lead-qualified
https://{{YOUR_N8N_DOMAIN}}/webhook/client-status-changed
Run createInstallableTrigger() once to enable onEdit.
Open the workflow in n8n & replace placeholders
{{GOOGLE_SHEETS_DOC_ID}}
{{LEADS_GID}}
{{CLIENTS_GID}}
{{CAL_COM_BOOKING_URL}}
{{SENDER_NAME}}
{{GMAIL_CREDENTIAL_ID}}, {{GMAIL_CREDENTIAL_NAME}}
{{GSHEETS_CREDENTIAL_ID}}, {{GSHEETS_CREDENTIAL_NAME}}
Connect credentials
Authorize Google Sheets OAuth2 and Gmail OAuth2 (or switch to SMTP/another email node).
Activate & test
Toggle Qualified? on a test row or change Stage to Awaiting Proposal/Won.
Verify the email, client append, and duration updates flow end-to-end.
Customization Ideas
Swap Gmail with SMTP, Outlook, or Slack messages.
Add a Stage = Lost branch to trigger a re-engagement sequence.
Add guards to prevent duplicate appends to Clients.
Localize email copy and date formats.
Troubleshooting
Nothing triggers**: Confirm Apps Script URLs and that createInstallableTrigger() was run.
Wrong tab/GID**: Open each tab and copy its gid from the URL; update placeholders.
Credential errors**: Re-authorize Google Sheets/Gmail OAuth2 in n8n.
Wrong first name: Ensure Name in **Leads follows First Last; the workflow splits the first token.
Video Walkthrough Demo
Screen Studio Template Demo Video