🔓 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

LinkedIn + Gmail: outreach drafts ready to review

Lisa Granqvist Partner Workflow Automation Expert

You find a great LinkedIn job post, copy the details somewhere “for later,” then lose it. Or you remember it, but now you’re rewriting the same outreach message again, trying to sound personal without spending your whole afternoon on it.

This is what recruiters and agency owners complain about most. A lot of founders do too. This LinkedIn outreach automation pulls job posts into a sheet and creates Gmail drafts you can review in one place.

You’ll see exactly what the workflow automates, what you need to connect, and how to customize it so your outreach stays consistent without sounding robotic.

How This Automation Works

Here’s the complete workflow you’ll be setting up:

n8n Workflow Template: LinkedIn + Gmail: outreach drafts ready to review

Why This Matters: Outreach Falls Apart in the “In-Between”

Job sourcing and outreach usually die in the handoff between “I found something” and “I actually contacted someone.” LinkedIn job posts disappear down a rabbit hole of tabs. Decision-maker names get copied into notes with zero structure. Then you try to write a message, realize you’re missing the company detail you saw earlier, and go back to search again. It’s not hard work, just draining work. And when it’s draining, consistency slips. You send fewer messages, follow up late, or worse, you send a generic template because you’re out of time.

It adds up fast. Here’s where the friction usually shows up.

  • Saving job posts “somewhere” turns into scattered notes that you can’t sort or filter when you want to act.
  • Finding the right person at the company is repetitive research, and you end up doing it from scratch every time.
  • Personalized outreach takes long enough that you batch it, which means you reach out later than you should.
  • Manual drafting leads to inconsistent tone and missed details, so replies drop and confidence drops with it.

What You’ll Build: LinkedIn Jobs to Sheets, Then Gmail Drafts

This workflow runs on a schedule and quietly does the collecting for you. First, it pulls fresh LinkedIn job listings through Apify, splits the response into clean fields, and logs each role into Google Sheets (title, company, location, and poster details). Next, it looks up decision-maker profiles for those companies, filters them using criteria you control (city, company name, role keywords), and appends the best matches into a second sheet. Once you have structured job + contact data, an AI step generates a short referral-style message that fits a strict format (under 100 words, personalized, not overhyped). Finally, it looks up the email address via an email-finder API and creates a Gmail draft with a subject and body, ready for you to review and send.

The flow starts with daily job sourcing and ends with drafted emails sitting in Gmail. In the middle, Sheets becomes your control panel: it stores the inputs, stores the AI output, and keeps everything searchable so you can scale without losing track.

What You’re Building

Expected Results

Say you target 10 new roles a day. Manually, you might spend about 10 minutes capturing the job details, another 10 minutes finding a decision-maker, and 10 minutes writing a decent first message, which is roughly 5 hours a day when you’re doing it properly. With this workflow, the daily run collects and organizes the data automatically, then creates drafts for you to skim and send. If you spend about 30 minutes reviewing drafts and making quick edits, you’re getting back around 4 hours on a busy day.

Before You Start

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Google Sheets for storing jobs, contacts, and drafts.
  • Gmail to create drafts in your inbox.
  • Apify account to pull LinkedIn jobs and profiles.
  • Gemini API key (get it from Google AI Studio).
  • Anymailfinder API key (get it from your Anymailfinder dashboard).

Skill level: Intermediate. You’ll connect a few APIs, confirm sheet columns, and enable Gmail API access in Google Cloud.

Want someone to build this for you? Talk to an automation expert (free 15-minute consultation).

Step by Step

A daily schedule kicks things off. n8n runs this automation automatically, so your pipeline fills up while you’re doing other work.

Job listings are collected and normalized. An HTTP request pulls LinkedIn job data through an Apify actor, then the workflow splits out key fields and writes clean rows to your Jobs Google Sheet.

Decision-makers are discovered and filtered. A second pull gets profile data for relevant people at those companies. The workflow applies your criteria (like city or specific company matches) and appends the best contacts into a Contacts sheet so you’re not mixing “maybe” leads with real targets.

AI generates outreach, then Gmail drafts are created. The LLM chain produces a structured headline and message body, merges that with contact data, looks up an email address via Anymailfinder, and finally drafts the email in Gmail with subject and copy already filled in.

You can easily modify the filtering rules to target different locations or industries based on your needs. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Scheduled Trigger

This workflow starts on a recurring schedule and then fetches job listings.

  1. Add and open Scheduled Automation Trigger.
  2. Set your desired schedule interval in the trigger’s Rule settings (e.g., daily or hourly cadence).
  3. Confirm Scheduled Automation Trigger is connected to Fetch Job Listings.

Step 2: Connect Google Sheets

Three Google Sheets nodes store jobs, contacts, and draft messages.

  1. Open Update Jobs Sheet and select the spreadsheet Document LinkedIn Jobs Data and Sheet Sheet1.
  2. Confirm Operation is set to appendOrUpdate and the Columns map fields like ={{ $json.id }}, ={{ $json.title }}, and ={{ $json.description }}.
  3. Credential Required: Connect your googleSheetsOAuth2Api credentials in Update Jobs Sheet.
  4. Open Update Contacts Sheet, verify Operation is appendOrUpdate, and map fields like ={{ $json.name }} and ={{ $json.link }}.
  5. Credential Required: Connect your googleSheetsOAuth2Api credentials in Update Contacts Sheet.
  6. Open Store Draft Messages, verify fields map to ={{ $json.output.Body }}, ={{ $json.output.Headline }}, and ={{ $json['Profile Link'] }}.
  7. Credential Required: Connect your googleSheetsOAuth2Api credentials in Store Draft Messages.
Tip: Ensure the columns in your sheets match the schema names in each Google Sheets node to avoid mismatched updates.

Step 3: Set Up Job and Profile Data Collection

This stage pulls job listings and decision profiles, then filters contacts by criteria.

  1. In Fetch Job Listings, set URL to https://api.apify.com/v2/datasets/EfaMgoTc0ibyoM2Qc/items?clean=true&format=json&limit=1000.
  2. In Split Job Fields, set Field to Split Out to =applyUrl,companyId, companyName, companyUrl, contractType,description,descriptionHtml, jobUrl, location, postedTime, salary, sector, title, workType, posterFullName, posterProfileUrl, applicationsCount, contractType, id.
  3. In Fetch Decision Profiles, set URL to https://api.apify.com/v2/datasets/9u0RiQrljJXL5KBCk/items?clean=true&format=json.
  4. In Split Profile Fields, set Field to Split Out to link, name, company, designation, education, location, verified, thumbnail.
  5. In Apply Criteria Filter, configure conditions for ={{ $json.location }} equals Bengaluru OR ={{ $json.company }} equals Snapmint.
  6. Confirm the flow: Split Profile FieldsApply Criteria FilterUpdate Contacts Sheet.
⚠️ Common Pitfall: If the API response structure changes, update the split fields in Split Job Fields or Split Profile Fields to match the new keys.

Step 4: Set Up AI Message Generation and Merging

This stage generates personalized referral messages and merges them with contact data.

  1. Open Generate Referral Message and set Text to ={{ $('Update Jobs Sheet').item.json.title }},{{ $('Update Jobs Sheet').item.json.descriptionText }},{{ $('Update Jobs Sheet').item.json.link }},{{ $json.Designation }},{{ $json.Name }},.
  2. Ensure the prompt in Generate Referral Message matches your outreach style and stays under 100 words.
  3. Open Gemini Chat Engine and set Model to models/learnlm-2.0-flash-experimental.
  4. Credential Required: Connect your googlePalmApi credentials in Gemini Chat Engine.
  5. Verify Structured Result Parser has the schema with required fields Headline and Body. This parser is connected to Generate Referral Message as an AI output parser.
  6. Confirm parallel execution: Update Contacts Sheet outputs to both Generate Referral Message and Combine Data Streams in parallel.
  7. In Combine Data Streams, confirm Mode is combine and Combine By is combineByPosition.

Credential Reminder: Structured Result Parser does not take credentials directly. Add AI credentials to the parent node Gemini Chat Engine, which powers Generate Referral Message.

Step 5: Configure Output Actions

Draft messages are stored, enriched with emails, and sent to Gmail drafts.

  1. Confirm Combine Data StreamsStore Draft Messages with the mapped fields ={{ $json.output.Body }} and ={{ $json.output.Headline }}.
  2. In Lookup Email Addresses, set URL to https://api.anymailfinder.com/v5.0/search/linkedin-url.json, Method to POST, and send body parameter profile link with ={{ $json['Profile Link'] }}.
  3. In Lookup Email Addresses, set the authorization header to Bearer [CONFIGURE_YOUR_TOKEN].
  4. Open Draft Gmail Notification, set Resource to draft, Subject to ={{ $json.output.Headline }}, and Message to ={{ $json.output.Body }}.
  5. Credential Required: Connect your gmailOAuth2 credentials in Draft Gmail Notification.
⚠️ Common Pitfall: The AnyMailFinder API will fail without a valid token—replace [CONFIGURE_YOUR_TOKEN] before testing.

Step 6: Test and Activate Your Workflow

Run a manual test to confirm data flow from job listings to Gmail drafts.

  1. Click Execute Workflow to run Scheduled Automation Trigger manually.
  2. Verify new rows appear in the Jobs and Contacts sheets from Update Jobs Sheet and Update Contacts Sheet.
  3. Confirm Store Draft Messages writes a Headline and Body for each filtered profile.
  4. Check Draft Gmail Notification for a new draft with the generated message.
  5. Once satisfied, toggle the workflow to Active to enable scheduled runs.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Troubleshooting Tips

  • Google Sheets and Gmail credentials can expire or need specific permissions. If things break, check your connected accounts in n8n Credentials and confirm the Gmail API is enabled in your Google Cloud project first.
  • If you’re pulling a lot of jobs or profiles, Apify runs and HTTP requests can take longer than expected. When downstream steps fail, it’s often because the workflow continued before the dataset was ready, so add a longer wait or re-check the actor run status before splitting fields.
  • Default AI prompts are generic. Add your voice rules (tone, length, “do/don’t” phrases, and a couple real examples) early, or you’ll spend your saved time editing every draft anyway.

Quick Answers

What’s the setup time for this LinkedIn outreach automation?

About 45 minutes if your APIs are already enabled.

Is coding required for this outreach draft automation?

No. You’ll connect accounts, paste a few API keys, and map some Google Sheets columns.

Is n8n free to use for this LinkedIn outreach 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 Apify usage, your Gemini API usage, and your email-finder API costs.

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 modify this LinkedIn outreach automation workflow for different use cases?

Yes, and you should. Most people start by adjusting the “Apply Criteria Filter” logic to focus on certain cities, titles, or target company lists. You can also swap the “Lookup Email Addresses” HTTP request to use Hunter.io (or another provider) without changing the rest of the workflow. If you prefer OpenAI, replace the Gemini chat model in the message generation section and keep the structured output parser so the headline/body stays clean.

Why is my Gmail connection failing in this workflow?

Usually it’s Gmail API access not being enabled in the correct Google Cloud project, or the OAuth consent screen/scopes weren’t set up to allow draft creation. Reconnect the Gmail credential in n8n after enabling the API, then rerun a single test execution. If it works once and then fails later, check for expired OAuth permissions.

What volume can this LinkedIn outreach automation workflow process?

If you self-host, volume is mostly limited by your server and your API rate limits, not n8n itself.

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

Often, yes. This workflow mixes multi-step data shaping (splitting fields, merging streams, filtering) with AI output that needs to be structured, and n8n is simply more comfortable doing that without turning into a fragile chain of mini-zaps. It’s also easier to self-host, which matters if you’re running daily sourcing at higher volume. Zapier or Make can still work if you simplify the flow and don’t need the decision-maker pull or structured parsing. If you’re unsure, Talk to an automation expert and get a straight recommendation.

Once this is running, outreach stops being a “big task” you dread. You just open Gmail, review the drafts, and hit send when they look right.

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