🔓 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 + LinkedIn, smarter prospect lists

Lisa Granqvist Partner Workflow Automation Expert

Your “prospect list” shouldn’t be a messy spreadsheet full of half-researched companies, missing emails, and notes you don’t trust. But that’s what happens when LinkedIn research, enrichment, scoring, and outreach drafting live in a dozen browser tabs.

This LinkedIn Sheets automation hits growth marketers and sales ops hardest. Agency owners doing outbound for clients feel it too. The goal is simple: build cleaner prospect lists automatically, so your follow-ups happen faster and your CRM stays usable.

This workflow pulls target companies from LinkedIn, scores fit with AI, enriches decision-makers, then drafts a personalized 3-email sequence and stores everything in Google Sheets. You’ll see what it does, why it works, and what you need to run it daily.

How This Automation Works

See how this solves the problem:

n8n Workflow Template: Google Sheets + LinkedIn, smarter prospect lists

The Challenge: Prospecting that never stays “done”

Manual prospecting isn’t just slow. It’s fragile. You start with a LinkedIn search, copy a company name into a sheet, open another tab for the website, then try to guess if they’re a fit. Next comes the harder part: finding the right decision-maker, pulling enough context to personalize, and then hunting for an email address that might bounce anyway. By the time you’re ready to send outreach, the list is already stale, and you’ve lost the thread on why you picked those accounts in the first place.

The friction compounds. Here’s where it breaks down in real life:

  • You end up spending about 5–10 minutes per company just to collect basics (site, size, summary), and that’s before you even qualify them.
  • Fit scoring becomes a gut call, which means you chase accounts that were never going to convert.
  • Decision-maker research is inconsistent because you’re relying on memory and manual notes across LinkedIn profiles.
  • Outreach drafts get written late (or not at all), so leads sit in Sheets with no next step.

The Fix: A daily LinkedIn-to-Sheets prospecting engine

This n8n workflow turns prospecting into a repeatable system that runs on a schedule. It starts by loading your targeting settings from Google Sheets (things like location, company size, and the filters you care about), then uses the Ghost Genius API to search LinkedIn for matching companies. For each company, it enriches the record with details like the website, description, and follower count, then asks OpenAI to score the fit from 0 to 10 based on your offer. Only companies that pass the threshold (score 7 or higher) get saved into your Google Sheets CRM. After that, it finds decision-makers through LinkedIn Sales Navigator, enriches their profile context, retrieves a verified email using a “waterfall” approach, and generates a personalized 3-email cold sequence with subjects included. Finally, it updates the lead status in the sheet so you can see exactly what was processed today.

The workflow begins on a daily schedule (or manual run if you prefer). It then moves through three phases: company discovery and scoring, decision-maker enrichment, and outreach drafting plus CRM updates. You end the day with a list that’s ready to contact, not a list that still needs research.

What Changes: Before vs. After

Real-World Impact

Say you want to add 20 new companies to your outbound list each day. Manually, you might spend about 10 minutes per company to capture details and decide if it’s a fit, plus another 10 minutes finding a decision-maker and drafting a first-pass message. That’s roughly 6–7 hours for 20 accounts. With this workflow, you spend maybe 15 minutes updating targeting settings in Google Sheets, then let it run on schedule; by the time you’re back, qualified companies, contacts, and a 3-email sequence are already in your CRM sheet.

Requirements

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Google Sheets for CRM storage and targeting settings.
  • Ghost Genius API to search LinkedIn (cookieless).
  • OpenAI API key (get it from the OpenAI API dashboard).

Skill level: Intermediate. You’ll connect accounts, add API keys, and map a few fields in Sheets.

Need help implementing this? Talk to an automation expert (free 15-minute consultation).

The Workflow Flow

Schedule-based run with guardrails. The workflow kicks off on a daily schedule (or via manual start for testing). It immediately loads your settings from Google Sheets and stops with a clear error if required API settings are missing.

Company discovery, then AI scoring. Using your settings, it generates search keywords and pulls matching companies from LinkedIn via HTTP requests. Each company is enriched with key details, scored by OpenAI from 0 to 10, then filtered so only strong fits (7+) move forward.

CRM write + “no duplicates” handling. Before saving a company, it checks if it already exists in your Google Sheets CRM. New companies get recorded, and the workflow processes them in batches to cap daily volume and keep runs stable.

Decision-makers, emails, and outreach drafts. For qualified companies, it retrieves decision-makers (Sales Navigator), expands profiles, fetches details, then attempts email discovery through a waterfall enrichment step. OpenAI uses the profile context to build a personalization brief, write a 3-email sequence, and generate subject lines, then everything is appended to your sheet and marked as enriched.

You can easily modify the scoring threshold (like 7/10) to fit your pipeline, or swap out which job titles count as “decision-maker” based on your ICP. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Schedule Trigger

This workflow can run on a schedule or be started manually for testing. Configure both triggers so you can test and then automate on a schedule.

  1. Open Scheduled Automation Trigger and set the schedule rule you want for automation (the workflow currently has a blank interval object to be filled).
  2. Keep Manual Execution Start enabled for on-demand runs and testing.
  3. Confirm the flow: Manual Execution StartLoad Settings Sheet and Scheduled Automation TriggerLoad Settings Sheet B.

Use Manual Execution Start while building and validating settings; switch to Scheduled Automation Trigger once the workflow is stable.

Step 2: Connect Google Sheets

Multiple nodes read and write to Google Sheets for settings, company CRM, and lead output.

  1. In Load Settings Sheet and Load Settings Sheet B, select the Settings sheet from the document 1tRjZTbM10koP6kpXzfIf9LzuuvnDcPAtv7fTTC36SnE.
  2. Credential Required: Connect your googleSheetsOAuth2Api credentials in Load Settings Sheet and Load Settings Sheet B.
  3. Connect the same credentials in all Google Sheets nodes used for CRM and lead updates: Restore Company List, Lookup Company Existence, Record Company to CRM, Append Leads to Sheet, Mark Leads Enriched, and Update No Decision Maker.
  4. Verify that Append Leads to Sheet writes to the Leads sheet and Mark Leads Enriched updates the Companies sheet using LinkedIn as the matching column.

⚠️ Common Pitfall: If the Settings or Companies sheets are renamed, the cached sheet IDs in the Google Sheets nodes can break. Re-select the sheet in each node after renaming.

Step 3: Set Up Settings Aggregation and Validation

Settings are loaded, aggregated, and validated before API calls are made. The workflow stops early if required values are missing.

  1. In Combine Settings Data A and Combine Settings Data, keep Aggregate set to aggregateAllItemData and Destination Field Name set to settings.
  2. In Validate Settings A and Validate Settings B, confirm the required fields are checked with expressions like {{ $json.settings[6]['Value (edit with your use case)'] }} and {{ $json.settings[2]['Value (edit with your use case)'] }}.
  3. Verify the error routes are connected: Validate Settings AStop: Missing API Settings and Validate Settings BStop: Missing API Settings B.

⚠️ Common Pitfall: Missing API values in the Settings sheet will halt the workflow with Stop: Missing API Settings or Stop: Missing API Settings B. Make sure the API Key and Account ID rows are filled.

Step 4: Set Up AI Keyword Generation and Company Discovery

This path generates search keywords, retrieves companies, validates them, and writes qualified companies to the CRM sheet.

  1. In Generate Search Keywords, keep JSON Output enabled and confirm the prompt uses {{ $json.settings[1]['Value (edit with your use case)'] }}.
  2. Credential Required: Connect your openAiApi credentials in Generate Search Keywords.
  3. In Search Target Companies, verify pagination and query parameters, including keywords set to {{ $json.message.content.keywords }} and headers with Authorization: Bearer {{ $('Combine Settings Data A').item.json.settings[6]['Value (edit with your use case)'] }}.
  4. Confirm the flow: Search Target CompaniesSplit Company ResultsProcess Company BatchFetch Company DetailsValidate Company CriteriaLookup Company ExistenceCheck New CompanyAI Company RatingRecord Company to CRM.
  5. In Validate Company Criteria, keep checks for {{ $json.website }} and {{ $json.followers_count }} (must be > 200).
  6. Credential Required: Connect your openAiApi credentials in AI Company Rating, and googleSheetsOAuth2Api in Record Company to CRM.

The HTTP Request nodes (Search Target Companies and Fetch Company Details) authenticate via the Authorization header pulled from the Settings sheet, so keep the API key current there.

Step 5: Restore and Filter Existing Companies for Enrichment

The scheduled path restores the CRM company list, filters qualified entries, caps daily processing, and iterates for enrichment.

  1. In Restore Company List, confirm the document is 1tRjZTbM10koP6kpXzfIf9LzuuvnDcPAtv7fTTC36SnE and sheet Companies.
  2. Credential Required: Connect your googleSheetsOAuth2Api credentials in Restore Company List.
  3. In Filter Score & Status, keep conditions: Score {{ $json.Score }}7 and State {{ $json.State }} equals Qualified.
  4. In Cap Daily Companies, set Max Items to 100 to throttle daily processing.
  5. Confirm the flow: Restore Company ListFilter Score & StatusCap Daily CompaniesIterate Company Records.

If you need a different daily cap, change Cap Daily CompaniesMax Items to your desired limit.

Step 6: Configure Decision-Maker Enrichment and Personalization

This section retrieves decision makers, enriches profile details, and generates personalization content and email sequences.

  1. In Retrieve Decision Makers, keep the URL https://api.ghostgenius.fr/v2/private/sales-navigator and set query values with expressions like {{ $('Iterate Company Records').item.json.ID }} and {{ $('Combine Settings Data').item.json.settings[2]['Value (edit with your use case)'] }}.
  2. In Validate Profiles Found, ensure the condition checks {{ $json.total }} is ≥ 1 and routes to Expand Profiles List or Update No Decision Maker.
  3. Keep the flow: Expand Profiles ListFetch Profile DetailsFetch Contact EmailExtract Key Profile Data.
  4. In Extract Key Profile Data, retain the JavaScript that reads experiences[0] fields and outputs a simplified object.
  5. Credential Required: Connect your openAiApi credentials in Build Personalization Brief, Draft Email Sequence, and Create Email Subjects.

⚠️ Common Pitfall: The code in Extract Key Profile Data assumes experiences[0] exists. If the API returns empty experiences, consider adding null checks or a fallback in the Code node.

Step 7: Configure Output to Leads and Company Status Updates

After emails and subjects are generated, the workflow writes leads to the Leads sheet and updates company status in the Companies sheet.

  1. In Create Email Subjects, keep the sequence input expressions like {{ $json.message.content.initial_email }} and output JSON fields subject_1, subject_2, subject_3.
  2. In Append Leads to Sheet, confirm Operation is append and map columns using expressions such as {{ $('Fetch Contact Email').item.json.email }} and {{ $('Draft Email Sequence').item.json.message.content.initial_email }}.
  3. In Mark Leads Enriched, keep Operation set to appendOrUpdate with State set to Enriched and LinkedIn set to {{ $('Iterate Company Records').item.json.LinkedIn }}.
  4. In Update No Decision Maker, confirm it updates State to No decision maker found for the same LinkedIn key.

The workflow loops back after Mark Leads Enriched and Update No Decision Maker to Iterate Company Records to continue processing the batch.

Step 8: Add Error Handling

This workflow uses stop-and-error nodes and continue-on-error settings to prevent bad data from flowing downstream.

  1. Keep Stop: Missing API Settings and Stop: Missing API Settings B connected from Validate Settings A and Validate Settings B to block runs without required API values.
  2. Note that Process Company Batch and Fetch Company Details have On Error set to continueRegularOutput to avoid failing the entire workflow.

⚠️ Common Pitfall: If you remove the Stop nodes, missing API settings will cause silent failures in downstream HTTP Request nodes.

Step 9: Test and Activate Your Workflow

Run a manual test to verify settings, API calls, AI outputs, and sheet updates before scheduling automation.

  1. Click Execute Workflow from Manual Execution Start to test the end-to-end flow.
  2. Successful execution should append a new company row in Record Company to CRM, create new lead rows in Append Leads to Sheet, and update the company status in Mark Leads Enriched or Update No Decision Maker.
  3. Once verified, activate the workflow and confirm Scheduled Automation Trigger is set to your desired interval.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Watch Out For

  • Ghost Genius API credentials can expire or require specific plan access. If the LinkedIn search suddenly returns nothing, check your Ghost Genius dashboard and the n8n credential used in the HTTP Request nodes.
  • 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.

Common Questions

How quickly can I implement this LinkedIn Sheets automation?

About 45 minutes if your APIs and Sheets are ready.

Can non-technical teams implement this prospect list automation?

Yes. You won’t write code, but you will need to connect accounts and map a few Google Sheets columns carefully.

Is n8n free to use for this LinkedIn Sheets 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 API costs (usually a few cents per company, depending on prompt size) and any Ghost Genius API usage.

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.

How do I adapt this LinkedIn Sheets automation solution to my specific challenges?

You can change the targeting without touching the workflow by editing the Google Sheets “settings” rows it loads at the start. If you want stricter qualification, raise the score threshold in the filtering step that keeps scores at 7 or higher. For different outreach, update the prompts in the “Build Personalization Brief,” “Draft Email Sequence,” and “Create Email Subjects” OpenAI nodes. You can also swap the decision-maker criteria by adjusting what the “Retrieve Decision Makers” request pulls from Sales Navigator.

Why is my Google Sheets connection failing in this workflow?

Most of the time it’s expired Google authorization or the sheet was moved to a different Drive location. Reconnect Google Sheets in n8n, then confirm the workflow is pointing at the right spreadsheet ID and tab names. Also check sharing permissions if the sheet belongs to a shared workspace account.

What’s the capacity of this LinkedIn Sheets automation solution?

It depends on your cap settings and API limits, but processing 20–50 companies per day is a common starting point.

Is this LinkedIn Sheets automation better than using Zapier or Make?

Often, yes, because this kind of workflow needs batching, branching, and multiple enrichment calls per lead, which can get expensive and awkward in Zapier. n8n is also easier to control when you want “stop if settings are missing” behavior and a daily cap on companies. Another practical point: keeping all the logic in one place makes troubleshooting less maddening. That said, if you only want a simple “new row in Sheets → send email” automation, Zapier or Make can be quicker. Talk to an automation expert if you want a recommendation based on your volume and stack.

Prospecting doesn’t have to be a daily grind of tabs, copying, and guesswork. Set this up once, let it run each morning, and use the time you get back to actually book meetings.

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