🎯 Goal:
Every 60 minutes:
Fetch only “New” leads from a Google Sheet
Send them a personalized email
Update their status to “Contacted” in the same sheet
🧩 Step-by-Step Explanation:
1️⃣ 🕒 Trigger: Run Every Day
Node Name: Schedule Trigger
What it does:
Automatically starts the workflow every 60 minutes (or whatever interval you choose).
Why it's needed:
You don’t need to run the workflow manually — it runs on a timer, like a robot doing your follow-up.
2️⃣ 📄 Fetch Leads from Google Sheet
Node Name: Fetch Leads from Google Sheet
What it does:
Connects to your Google Sheet and pulls all the rows of leads.
Expected columns in your sheet:
Name
Status (should be "New" if not yet emailed)
3️⃣ 🔍 Filter Only New Leads
Node Name: Filter Only New Leads
What it does:
Filters only those rows where Status is equal to New.
Why it's needed:
So that you don’t email the same lead twice. Old leads are ignored.
4️⃣ 🔁 Batch Process Leads
Node Name: Batch Process Leads
What it does:
Splits the filtered leads into individual batches (usually one-by-one).
Why it's useful:
Helps avoid API rate limits or email spam blocks by sending one email at a time.
5️⃣ ✉️ Send Email to Lead
Node Name: Send Email to Lead
What it does:
Sends a personalized email to the current lead using their name and email address.
How personalization works:
You can use variables like {{ $json["Name"] }} in the email subject and body.
6️⃣ ✅ Mark Lead as Contacted
Node Name: Mark Lead as Contacted
What it does:
Updates the same row in Google Sheet and changes the Status from New to Contacted.
Why it's important:
Ensures the same lead will not be processed again in the next workflow run.
🔁 Loop Back:
After updating the lead status, it loops back to the Batch node to process the next lead.
✨ Bonus Touch:
The flow is clean, efficient, and scalable.
You can later:
Add AI to write emails dynamically
Send follow-up reminders
Track stats in another sheet