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
This workflow was created by Ziad Adel and shared publicly on the n8n community template library. n8nFind indexes it for discovery — the workflow remains the property of its original creator.