🔓 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 Drive to Google Sheets, openers filled in

Lisa Granqvist Partner Workflow Automation Expert

You start with a clean lead list. Then the “quick personalization” part hits, and suddenly you’re opening 40 tabs, scanning websites, and trying to write openers that don’t sound like a robot.

This lead enrichment automation hits SDRs hardest, but founders doing their own outreach and agency operators running campaigns feel it too. You want one simple outcome: a spreadsheet that comes back with usable website summaries and human-sounding cold email openers, without the research grind.

This workflow watches a Google Drive folder, enriches every row, updates Google Sheets, and pings you on Telegram when it’s done. Below is how it works, what you get, and what to watch out for.

How This Automation Works

The full n8n workflow, from trigger to final output:

n8n Workflow Template: Google Drive to Google Sheets, openers filled in

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

Personalized outreach is supposed to be your edge. Honestly, it often becomes the bottleneck. You grab a list, then spend your best hours doing the same routine: visit the site, figure out what the company does, confirm it’s not a dead domain, and try to write a first line that sounds like you actually looked. Some sites are clear. Others are vague, broken, or stuffed with buzzwords. And when you’re doing this row-by-row, quality drops right when you need consistency the most.

The friction compounds. Here’s where it breaks down.

  • Each “quick research + opener” can take about 5 minutes, so a 200-lead sheet quietly becomes a full day.
  • Bad or parked domains slip through, which means you waste touches on companies you can’t even describe.
  • Openers get repetitive fast, so replies drop and you blame the list instead of the process.
  • You can’t delegate it cleanly because there’s no single standard for what “good research” looks like.

The Solution: Drop a Sheet, Get Enriched Leads Back

This n8n workflow turns your lead spreadsheet into a ready-to-send personalization sheet, automatically. You drop a CSV or Google Sheet into a specific Google Drive folder, and the workflow immediately downloads it, parses every row, and starts enriching leads in batches. For each company domain, it pulls readable website content through Jina (using the r.jina.ai fetch pattern), creates a structured website summary, and then checks if what it fetched is actually a real business page. If the site looks valid, Anthropic generates a one-line opener based on the summary. If it doesn’t, the workflow still produces a strong fallback opener using the domain and common pain points, so you don’t end up with blanks.

The workflow starts with a Google Drive folder trigger. It processes leads in manageable batches, generates a websiteSummary plus a single-sentence personalization, then writes both fields back into Google Sheets. When the last batch finishes, Telegram sends you a confirmation message with the file name and link, so you know it’s ready.

What You Get: Automation vs. Results

Example: What This Looks Like

Say you have a 200-lead sheet and you normally spend about 5 minutes per lead to skim the site and write a first line. That’s roughly 16 hours of work, and it usually gets spread across days (which slows campaigns down). With this workflow, your “work” is dropping the file into Google Drive, then waiting for processing to finish in the background, often around an hour depending on website speed and API limits. You get back a sheet with websiteSummary and personalization filled in for every row, plus a Telegram ping when it’s ready.

What You’ll Need

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Google Drive to watch a folder for new sheets.
  • Google Sheets to update rows with summaries and openers.
  • Jina authentication (get it from your Jina account/header setup).
  • OpenAI API key (get it from the OpenAI dashboard).
  • Anthropic API key (get it from the Anthropic Console).
  • Telegram Bot token (get it from BotFather in Telegram).

Skill level: Intermediate. You’ll connect a few accounts, add API keys, and confirm your sheet columns match what the workflow expects.

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

How It Works

A new file shows up in Google Drive. The workflow watches a specific folder, so the moment you drop in a lead sheet, n8n kicks off the run automatically.

The sheet is parsed and processed in batches. n8n downloads the file, reads the rows (it expects fields like First Name, Last Name, Email, and domain), then loops through leads in chunks so you can scale without everything timing out.

Web research happens without your browser. A LangChain agent fetches website content through Jina’s markdown endpoint and turns it into a structured summary. Then OpenAI runs a quick validity check (hasWebsite true/false), so the workflow knows when the content is real versus useless.

Personalization is generated and written back. Anthropic creates a one-line opener based on the summary when the site is valid, or uses a fallback prompt when it isn’t. Finally, the workflow updates the matching row in Google Sheets and sends a Telegram message with the file link when all batches finish.

You can easily modify the opener tone to match your brand voice based on your needs. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Drive File Trigger

This workflow starts when a new spreadsheet file is created in a specific Google Drive folder.

  1. Add the Drive File Trigger node and set Event to fileCreated.
  2. Set Trigger On to specificFolder, then select the folder ID you want to watch.
  3. Credential Required: Connect your Google Drive credentials (this node requires credentials but none are configured).

Step 2: Connect Google Drive and Parse the Spreadsheet

After a new file appears, the workflow downloads it and parses the spreadsheet into rows.

  1. In Drive File Download, set Operation to download and File ID to ={{ $json.id }}.
  2. Credential Required: Connect your Google Drive credentials for Drive File Download (credentials are not configured).
  3. In Spreadsheet Parse, enable Header Row so column names are recognized from the first row.
  4. Connect Spreadsheet Parse to Iterate Records to process each row individually.

Step 3: Set Up AI Website Enrichment and Personalization

This section summarizes each company website and generates a personalized email opener based on whether a valid website was found.

  1. In Web Summary Agent, set Text to =Please analyze the website at {{ $json.domain }} and create a structured business summary according to the template. Use the "Jina Markdown Fetcher" tool to get the website content. {{ $json.chatInput }}.
  2. Anthropic Chat C is connected as the language model for Web Summary AgentCredential Required: Connect your anthropicApi credentials to Anthropic Chat C.
  3. Jina Markdown Fetcher is a tool sub-node for Web Summary AgentCredential Required: Connect your httpHeaderAuth credentials to Jina Markdown Fetcher, and note that tool credentials are managed at the parent node level.
  4. In OpenAI Website Check, enable JSON Output and keep the message template as provided; Credential Required: Connect your openAiApi credentials.
  5. Branch Validation checks ={{ $json.message.content.hasWebsite }} and routes to No-Web Personalizer when false; otherwise it routes to Web Personalizer.
  6. Anthropic Chat A powers No-Web Personalizer and Anthropic Chat B powers Web PersonalizerCredential Required: Connect your anthropicApi credentials to both nodes.
  7. In No-Web Personalizer, keep the prompt and expressions such as {{ $('Iterate Records').item.json['First Name'] }} and {{ $('Iterate Records').item.json['Last Name'] }} intact.
  8. In Web Personalizer, keep the summary reference {{ $('Web Summary Agent').item.json.output }} and the same name expressions from Iterate Records.

Execution Flow: Iterate Records outputs to both Finalize Batch and Web Summary Agent in parallel.

Step 4: Assign Personalization and Update the Sheet

Both personalization paths converge and the result is written back to the spreadsheet.

  1. In Assign Personalization, set personalization to ={{ $json.output }} to capture the generated sentence.
  2. In Update Sheet Rows, set Operation to update.
  3. Set Document ID to ={{ $('Drive File Trigger').item.json.id }} and Sheet Name to ={{ $('Drive File Trigger').item.json.name }}.
  4. Map columns to these expressions: domain={{ $('Spreadsheet Parse').item.json.domain }}, websiteSummary={{ $('Web Summary Agent').item.json.output }}, personalization={{ $json.personalization }}.
  5. Credential Required: Connect your Google Sheets credentials to Update Sheet Rows (credentials are not configured).

Step 5: Send Completion Alert

After all rows are processed, the workflow builds a summary and notifies you in Telegram.

  1. In Finalize Batch, review the JavaScript and replace the placeholders [YOUR_ID] and Lead Spreadsheet with your actual file ID and name.
  2. In Telegram Ready Alert, set Chat ID to your Telegram chat and keep Text as =Lead Enrichment is ready: FileName: {{ $json.fileName }} fileURL: {{ $json.fileUrl }}.
  3. Credential Required: Connect your telegramApi credentials to Telegram Ready Alert.

Step 6: Test and Activate Your Workflow

Run a manual test with a sample spreadsheet to confirm enrichment and messaging work end-to-end.

  1. Click Execute Workflow and upload a test spreadsheet into the watched folder to trigger Drive File Trigger.
  2. Confirm rows are parsed by Spreadsheet Parse and that Update Sheet Rows writes websiteSummary and personalization back to the sheet.
  3. Verify a Telegram message is sent by Telegram Ready Alert with a valid file URL.
  4. Once verified, toggle the workflow to Active to enable continuous processing for new files.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Common Gotchas

  • Google Drive and Google Sheets credentials can expire or need specific permissions. If things break, check the n8n Credentials screen and confirm the Google account still has access to the target folder and sheet.
  • If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
  • Default prompts in AI nodes are generic. Add your brand voice early or you’ll be editing outputs forever.

Frequently Asked Questions

How long does it take to set up this lead enrichment automation?

About 45 minutes if you already have your API keys.

Do I need coding skills to automate lead enrichment?

No coding required. You’ll mostly be connecting accounts, pasting API keys, and matching your sheet columns.

Is n8n free to use for this lead enrichment automation 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 OpenAI and Anthropic API usage, which is usually a few dollars per larger lead list.

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 lead enrichment automation workflow for a different opener style?

Yes, and you should. You can swap the Anthropic prompt in the “Web Personalizer” and “No-Web Personalizer” branches to match your voice (more formal, more direct, or more playful). Common tweaks include changing the opener length to two sentences, forcing a specific structure (observation + relevance), and adding do-not-say phrases so it avoids spammy wording.

Why is my Google Sheets connection failing in this workflow?

Usually it’s an expired Google credential or the connected account lost access to the target sheet. Reconnect Google Sheets in n8n, then confirm the file is in the right Drive and that you can manually edit it with that same Google user. Another common issue is row matching: if the workflow updates by domain and your domain column has extra spaces or missing values, updates will look like “failures” because there’s nothing reliable to match.

How many leads can this lead enrichment automation handle?

Hundreds per run is normal.

Is this lead enrichment automation better than using Zapier or Make?

Often, yes, if you care about quality and branching. This workflow has multiple AI steps, a validation branch, batching, and structured writing back to the same sheet, and that’s where Zapier and Make can get pricey or awkward. n8n also gives you more control over how you handle “bad domains” versus “good domains,” which matters for real-world lists. The tradeoff is setup: you’ll spend a bit more time on credentials and testing upfront. If you want someone to sanity-check it, Talk to an automation expert.

Set this up once, then let your spreadsheets come back smarter. You’ll spend less time “researching” and more time sending campaigns that actually sound like you meant them.

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