🔓 Unlock all 10,000+ workflows & prompts free Join Newsletter →
✅ Full access unlocked — explore all 10,000 AI workflow and prompt templates Browse Templates →
Home n8n Workflow
January 22, 2026

Google Sheets to Instantly, personalized cold emails

Lisa Granqvist Partner Workflow Automation Expert

You’ve got leads sitting in Google Sheets, “ready” for outreach, and somehow it still turns into a messy loop of research tabs, half-finished drafts, and “I’ll send it later.” Then later never happens.

This is the kind of work that quietly drains marketing managers running campaigns, sales reps trying to hit daily activity, and founders doing outbound between meetings. With Sheets Instantly emails automation, you turn a spreadsheet row into a researched, personalized cold email draft that’s ready to queue.

Below, you’ll see how the workflow runs, what it produces, and what you need to set it up without turning your week into an “automation project.”

How This Automation Works

The full n8n workflow, from trigger to final output:

n8n Workflow Template: Google Sheets to Instantly, personalized cold emails

The Problem: Personalization Doesn’t Scale When It’s Manual

Cold email “personalization” is usually a good intention that dies in the details. You open a lead in a sheet, Google the company, skim a homepage, maybe hunt for recent news, then try to compress it into one sentence that doesn’t sound forced. Do that 20 times and your brain is mush. And if you’re switching between research, drafting, and campaign tools, mistakes creep in: wrong company names, outdated info, missing fields, or drafts that never make it into your sending platform.

It adds up fast. Here’s where it breaks down in real life:

  • Research turns into tab chaos, and you still end up writing generic openers.
  • Your Google Sheet becomes a “lead graveyard” because drafting takes too long to keep up.
  • Copy-paste errors happen when you move drafts into Instantly, especially under time pressure.
  • Tracking gets fuzzy, so you can’t tell what’s ready, drafted, sent, or stuck.

The Solution: Google Sheets → Company Research → Instantly-Ready Drafts

This n8n workflow pulls companies from Google Sheets that you’ve marked as ready for outreach, then processes them one by one so nothing gets mixed up. For each lead, it runs automated company research using a LangChain agent connected to the Tavily search tool, which gathers useful context like what the company does and what they’ve been up to recently. That research is fed into an LLM chain (via OpenRouter chat models) that writes a concise, professional cold email draft in English using your business context (YOUR_COMPANY_NAME) so the message is aligned with what you actually sell. Finally, the workflow writes the generated email back into Google Sheets for clean tracking, and can also push the lead into your Instantly campaign via HTTP request so it’s ready for sending.

The workflow starts with a manual run trigger, which is handy when you want control (for example, “generate drafts for today’s 30 leads”). From there, it fetches rows from Google Sheets, loops through them in batches, researches each company, drafts the email, logs results back to the sheet, then registers the lead in Instantly if you’ve enabled that step.

What You Get: Automation vs. Results

Example: What This Looks Like

Say you generate drafts for 30 leads every morning. Manually, you might spend about 5 minutes researching each company and another 3 minutes drafting, plus a minute to paste it into Instantly. That’s roughly 9 minutes per lead, or about 4.5 hours. With this workflow, you mark 30 rows as “ready,” run it once, and let it process in the background. You’ll spend maybe 10 minutes reviewing the outputs, and the rest is handled automatically.

What You’ll Need

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Google Sheets for your lead list and status tracking
  • Instantly.ai to add leads into a campaign (optional)
  • Tavily API key (get it from your Tavily dashboard)
  • OpenRouter API key (get it from your OpenRouter dashboard)

Skill level: Intermediate. You’ll connect accounts, add API keys, and tweak a prompt to match your offer.

Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).

How It Works

You trigger a run when you’re ready. In the provided workflow, it starts with a manual run, then pulls records from Google Sheets so you control when drafts get generated.

Leads are processed one at a time. n8n loops through the sheet rows in batches, which helps keep outputs clean and makes it easier to avoid API rate limit issues.

AI research and drafting happen in sequence. Tavily gathers company info, a structured parser keeps that info usable, then the LLM chain writes a tailored email using your company context and a consistent format.

Everything is logged and optionally pushed to Instantly. The workflow writes the generated email back to Google Sheets, then sends the lead data to Instantly through an HTTP request so the campaign queue stays current.

You can easily modify the “ready” criteria to a different status column based on your needs. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Manual Run Trigger

Start the workflow manually so you can validate the lead processing and outreach output before automating further.

  1. Add and select Manual Run Trigger as the start node.
  2. Connect Manual Run Trigger to Retrieve Card Records to match the execution flow.

You can keep Manual Run Trigger during testing and later swap it for a scheduled trigger when you are ready for production.

Step 2: Connect Google Sheets

Pull ready leads from Google Sheets and prepare a smaller test set before iterating through each lead.

  1. Open Retrieve Card Records and select your spreadsheet in Document using the ID [YOUR_ID].
  2. Set Sheet Name to the target sheet with gid=[YOUR_ID].
  3. Confirm the filter is set to status equals ready in filtersUI so only ready leads are pulled.
  4. Credential Required: Connect your googleSheetsOAuth2Api credentials in Retrieve Card Records.
  5. Open Limit Sample Records and set Max Items to 10 to limit test volume.
  6. Connect Limit Sample Records to Iterate Through Leads so batches are processed sequentially.

⚠️ Common Pitfall: If your sheet doesn’t include a status column with ready, Retrieve Card Records will return no rows.

Step 3: Set Up Research and Email Composition (AI)

Use AI to research each company and draft a personalized outreach message.

  1. In Research Company Profile, set Text to =company: {{ $json.company_name }} company website: {{ $json.website_url }} .
  2. Ensure Research Company Profile has hasOutputParser enabled and is connected to Structured JSON Parser as the output parser.
  3. Connect OpenRouter Chat Model A as the language model for Research Company Profile. Credential Required: Connect your openRouterApi credentials in OpenRouter Chat Model A.
  4. Connect Tavily Search Tool as the tool for Research Company Profile. Credential Required: Connect your tavilyApi credentials in Tavily Search Tool.
  5. In Compose Outreach Email, set Text to =name: {{ $('Iterate Through Leads').item.json.full_name }} company name: {{ $('Iterate Through Leads').item.json.company_name }} company background: {{ $json.output.comprehensiveSummary }}.
  6. Connect OpenRouter Chat Model B as the language model for Compose Outreach Email. Credential Required: Connect your openRouterApi credentials in OpenRouter Chat Model B.

The Structured JSON Parser and Tavily Search Tool are AI sub-nodes—credentials should be added to their parent or associated tool nodes, not to the parser itself.

Step 4: Configure Logging and Instantly Registration

Write the research and email output back to Google Sheets and then register the lead in Instantly.

  1. Open Log Company Details Sheet and set Operation to appendOrUpdate.
  2. Map fields in Log Company Details Sheet as defined in the node: company_name to ={{ $('Limit Sample Records').item.json.company_name }}, Key Offerings to ={{ $('Research Company Profile').item.json.output.keyOfferings }}, Company Summary to ={{ $('Research Company Profile').item.json.output.comprehensiveSummary }}, Outreach Message to ={{ $json.text }}, Company Background to ={{ $('Research Company Profile').item.json.output.companyOverview }}, and Recent Company News to ={{ $('Research Company Profile').item.json.output.recentWebsiteNews }}.
  3. Credential Required: Connect your googleSheetsOAuth2Api credentials in Log Company Details Sheet.
  4. In Register Lead in Instantly, set URL to https://api.instantly.ai/api/v2/leads and Method to POST.
  5. Set JSON Body to ={ "campaign": "[YOUR_ID]", "email": "{{ $('Iterate Through Leads').item.json.email }}", "full_name": "{{ $('Iterate Through Leads').item.json.full_name }}", "company_name": "{{ $('Iterate Through Leads').item.json.company_name }}", "custom_variables": { "custom_body": "{{ $('Compose Outreach Email').item.json.text }}" } }.
  6. Configure headers in Register Lead in Instantly with Authorization set to Bearer [CONFIGURE_YOUR_TOKEN] and Content-Type set to application/json.

⚠️ Common Pitfall: Replace [YOUR_ID] and [CONFIGURE_YOUR_TOKEN] in Register Lead in Instantly before testing, or the API call will fail.

Step 5: Test and Activate Your Workflow

Run a manual test to confirm data flows through AI research, email composition, sheet logging, and Instantly registration.

  1. Click Execute Workflow on Manual Run Trigger to start the test.
  2. Verify that Retrieve Card Records returns rows with status set to ready, then that Limit Sample Records outputs no more than 10 items.
  3. Check that Research Company Profile produces structured JSON output and that Compose Outreach Email returns a 100–150 word email body.
  4. Confirm Log Company Details Sheet appends/updates rows and Register Lead in Instantly returns a successful HTTP response.
  5. When successful, toggle the workflow to Active to enable production use.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Common Gotchas

  • Google Sheets credentials can expire or lack edit access. If drafts aren’t written back, check the connected Google account permissions and the sheet name/document ID first.
  • If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
  • Tavily and OpenRouter can throttle you on bigger batches. If runs stall or come back empty, reduce the batch size in the Limit/Split-in-batches area and retry.

Frequently Asked Questions

How long does it take to set up this Sheets Instantly emails automation?

About an hour if your API keys and sheet are ready.

Do I need coding skills to automate Sheets Instantly emails?

No. You’ll mostly paste in API keys and adjust a few fields in n8n.

Is n8n free to use for this Sheets Instantly emails workflow?

Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in Tavily and OpenRouter usage, which is usually a few cents per lead depending on how much research you pull.

Where can I host n8n to run this automation?

Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.

Can I customize this Sheets Instantly emails workflow for a different niche or offer?

Yes, and you should. The main change is in the “Compose Outreach Email” LLM chain where the prompt references YOUR_COMPANY_NAME and the style rules. Many teams also adjust what the “Research Company Profile” agent looks for (for example, hiring signals, tech stack, or recent funding) and add extra Google Sheets columns so the draft includes a specific CTA or pain point.

Why is my Google Sheets connection failing in this workflow?

Most of the time it’s permissions or a mismatched document ID/sheet name. Reconnect the Google Sheets credential in n8n and confirm the account can edit the file, not just view it. Also check that you didn’t rename the tab after setting up the node, because that breaks lookups. If it still fails, run one test execution and inspect the execution log to see which node returns the error text.

How many leads can this Sheets Instantly emails automation handle?

It can handle hundreds of leads per run as long as you keep batch sizes reasonable and respect Tavily/OpenRouter rate limits.

Is this Sheets Instantly emails automation better than using Zapier or Make?

Often, yes, because this flow relies on multi-step AI research plus structured parsing, which gets awkward (and pricey) in simpler automation tools. n8n also makes it easier to loop through many sheet rows without creating separate “tasks” for every micro-step. Another practical advantage is debuggability: you can open the execution log and see exactly where a lead failed, then rerun just that batch. The tradeoff is setup: Zapier is faster for a two-action zap, while this workflow is a small system. If you’re torn, Talk to an automation expert and get a straight answer for your volume and stack.

Once this is running, your spreadsheet stops being a to-do list and starts acting like a real outreach pipeline. Honestly, getting drafts created and logged automatically is the difference between “we should do outbound” and actually doing it.

Need Help Setting This Up?

Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.

Lisa Granqvist

Workflow Automation Expert

Expert in workflow automation and no-code tools.

×

Use template

Get instant access to this n8n workflow Json file

💬
Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Launch login modal Launch register modal