agent-image-lead-qualification-assistant
Sync Leads from Google Sheets to Instantly Email Campaigns with Data Tables πŸš€ Automated Lead Management: Google Sheets β†’ Instantly + n8n Data Tables
πŸš€ Automated Lead Management: Google Sheets β†’ Instantly + n8n Data Tables πŸ“‹ Overview This workflow automates lead management by syncing data from Google...
screenshot-daily-task-reminder-bot
Created by:
David Olusola
Last Updated:

June 15th 2025

Agent Details:
n8n
OpenAI
general
Google Sheets
Loop Over Items (Split in Batches)
Sticky Note
Description
πŸš€ Automated Lead Management: Google Sheets β†’ Instantly + n8n Data Tables πŸ“‹ Overview This workflow automates lead management by syncing data from Google Sheets to Instantly email campaigns while maintaining tracking through n8n Data Tables. It processes leads in batches to avoid rate limits and ensures no duplicates are sent. βš™οΈ Complete Setup Guide 1️⃣ Create Your Google Sheet Option A: Use Our Template (Recommended) Copy this template with test data: Google Sheets Template Click File β†’ Make a copy to create your own version Populate with your lead data Option B: Create Your Own Create a Google Sheet with these required columns : Firstname - Contact's first name Email - Contact's email address Website - Company website URL Company - Company name Title - Job title/position πŸ’‘ Pro Tip: Add as many leads as you want - the workflow handles batching automatically! 2️⃣ Set Up n8n Data Table The workflow uses one Data Table to track leads and their sync status. Create the "Leads" Data Table: In your n8n workflow editor, add a Data Table node Click "Create New Data Table" Name it: Leads Add the following columns: Column Name Type Purpose Firstname string Contact's first name Lastname string Contact's last name email string Contact's email (unique identifier) website string Company website company string Company name title string Job title campaign string Sync status (e.g., "start", "added to instantly") focusarea string Enriched data from Title field Click Save πŸ“Œ Important: The campaign field is crucial - it tracks which leads have been synced to prevent duplicates! 3️⃣ Connect Your Google Sheets Account In the "Get row(s) in sheet" node, click "Create New Credential" Select Google Sheets OAuth2 API Follow the OAuth flow: Sign in with your Google account Grant n8n permission to access your sheets Select your spreadsheet from the dropdown Choose the correct sheet name (e.g., "instantly leads") Test the connection to verify it works 4️⃣ Connect Your Instantly Account Go to Instantly.ai and log in Navigate to Settings β†’ API Copy your API Key Back in n8n, open the "Create a lead" node Click "Create New Credential" Select Instantly API Paste your API key Important: Update the campaign ID: Current ID: 100fa5a2-3ed0-4f12-967c-b2cc4a07c3e8 (example) Replace with your actual campaign ID from Instantly Find this in Instantly under Campaigns β†’ Your Campaign β†’ Settings 5️⃣ Configure the Data Table Nodes You'll need to update three Data Table nodes to point to your newly created "Leads" table: Node 1: "Get row(s)" Operation: Get Data Table: Select Leads Filter: campaign = "start" This fetches only new, unsynced leads Node 2: "Update row(s)1" (Top Flow) Operation: Update Data Table: Select Leads Filter: Match by email field Update: Set focusarea to Title value This enriches lead data Node 3: "Update row(s)" (Bottom Flow) Operation: Update Data Table: Select Leads Filter: Match by Email field Update: Set campaign = "added to instantly" This prevents duplicate sends 6️⃣ Configure the Schedule (Optional) The workflow includes a Schedule Trigger for automation: Default: Runs every hour To customize: Click the "Schedule Trigger" node Choose your interval: Every 30 minutes Every 2 hours Daily at specific time Custom cron expression πŸ’‘ For testing: Use the "When clicking 'Execute workflow'" manual trigger instead! πŸ”„ How It Works Flow 1: Data Transfer (Top Path) This flow moves leads from Google Sheets β†’ n8n Data Table Manual Trigger β†’ Get Google Sheets β†’ Batch Split (30) β†’ Update Data Table β†’ Loop Step-by-step: Manual Trigger - Click to start the workflow manually Get row(s) in sheet - Fetches ALL leads from your Google Sheet Loop Over Items - Splits into batches of 30 leads Update row(s)1 - For each lead: Searches Data Table by email Updates or creates the lead record Stores Title β†’ focusarea for enrichment Loop continues - Processes next batch until all leads transferred βš™οΈ Why 30 at a time? Prevents API timeouts Respects rate limits Allows monitoring of progress Can be adjusted in the node settings Flow 2: Instantly Sync (Bottom Path) This flow syncs qualified leads from Data Table β†’ Instantly Schedule Trigger β†’ Get Data Table (filtered) β†’ Individual Loop β†’ Create in Instantly β†’ Update Status Step-by-step: Schedule Trigger - Runs automatically (every hour by default) Get row(s) - Queries Data Table for leads where campaign = "start" Only fetches NEW, unsynced leads Ignores leads already processed Loop Over Items1 - Processes ONE lead at a time Create a lead - Sends lead to Instantly: Campaign: "Launchday 1" Maps: Email, Firstname, Company, Website Adds to email sequence Update row(s) - Updates Data Table: Sets campaign = "added to instantly" Prevents duplicate sends on next run Loop continues - Next lead until all processed πŸ” Why one at a time? Instantly API works best with individual requests Ensures accurate status tracking Prevents partial failures Better error handling per lead βœ… Key Features Explained Batch Processing Processes 30 Google Sheet leads at once Configurable in Loop Over Items node Prevents timeouts on large datasets Duplicate Prevention Uses campaign field as status tracker Only syncs leads where campaign = "start" Updates to "added to instantly" after sync Re-running workflow won't create duplicates Data Enrichment Stores job title in focusarea field Can be used for personalization later Extensible for additional enrichment Two-Trigger System Manual Trigger : For testing and one-time runs Schedule Trigger : For automated hourly syncs Both triggers use the same logic Error Tolerance Individual lead processing prevents cascade failures One failed lead won't stop the entire batch Easy to identify and fix problematic records πŸ§ͺ Testing Your Workflow Step 1: Test Data Transfer (Flow 1) Add 5 test leads to your Google Sheet Click the Manual Trigger node Click "Execute Node" Check your Leads Data Table - should see 5 new rows Verify focusarea field has data from Title column Step 2: Test Instantly Sync (Flow 2) In Data Table, ensure at least one lead has campaign = "start" Click the Schedule Trigger node Click "Execute Node" (bypasses schedule for testing) Check Instantly dashboard - should see new lead(s) Check Data Table - campaign should update to "added to instantly" Step 3: Test Duplicate Prevention Re-run the Schedule Trigger No new leads should be created in Instantly Data Table shows no changes (already marked as synced) 🚨 Troubleshooting Issue: Google Sheets not fetching data βœ… Check OAuth credentials are valid βœ… Verify spreadsheet ID in node settings βœ… Ensure sheet name matches exactly βœ… Check Google Sheet has data Issue: Data Table not updating βœ… Verify Data Table exists and is named "Leads" βœ… Check column names match exactly (case-sensitive) βœ… Ensure email field is populated (used for matching) Issue: Instantly not receiving leads βœ… Verify Instantly API key is correct βœ… Update campaign ID to your actual campaign βœ… Check campaign = "start" in Data Table βœ… Verify email format is valid Issue: Workflow runs but nothing happens βœ… Check if Data Table has leads with campaign = "start" βœ… Verify loop nodes aren't stuck (check execution logs) βœ… Ensure batch size isn't set to 0 πŸ’‘ Pro Tips & Best Practices For Beginners: Start small - Test with 5-10 leads first Use manual trigger - Don't enable schedule until tested Check each node - Execute nodes individually to debug Monitor Data Table - Use it as your source of truth Keep backups - Export Data Table regularly For Optimization: Adjust batch size - Increase to 50-100 for large datasets Add delays - Insert "Wait" nodes if hitting rate limits Filter in Google Sheets - Only fetch new rows (use formulas) Archive old leads - Move synced leads to separate table Add error notifications - Connect Slack/email for failures For Scaling: Use multiple campaigns - Add campaign selection logic Implement retry logic - Add "IF" nodes to retry failed syncs Add data validation - Check email format before syncing Log everything - Add "Set" nodes to track execution details Monitor API usage - Track Instantly API quota πŸ“Š Expected Results After Setup: βœ… Google Sheets connected and fetching data βœ… Data Table populated with lead information βœ… Instantly receiving leads automatically βœ… No duplicate sends occurring βœ… Campaign status updating correctly Performance Metrics: 100 leads - Processes in ~5-10 seconds 1000 leads - Processes in ~15-20 seconds Instantly API - 1 lead per second typical speed Schedule runs - Every hour by default πŸ“¬ Need Help? Customization Services: Advanced filtering and segmentation Multi-campaign management Custom field mapping and enrichment Webhook integrations for real-time sync Error handling and monitoring setup Scale to 10K+ leads per day Contact: πŸ“§ [emailΒ protected] πŸŽ₯ Watch Full Tutorial πŸŽ“ What You'll Learn By setting up this workflow, you'll master: βœ… n8n Data Tables - Creating, querying, and updating data βœ… Batch Processing - Handling large datasets efficiently βœ… API Integrations - Connecting Google Sheets and Instantly βœ… Workflow Logic - Building complex multi-path automations βœ… Error Prevention - Implementing duplicate checking βœ… Scheduling - Automating workflows with triggers Happy Flogramming! πŸŽ‰

Build Dynamic AI Agents

Join a community of growing Agentic AI Developers.