LinkedIn to Gmail, prospect research delivered ready
You start with a name and a company. Then it’s five tabs, three searches, and a lot of “is this the right person?” before you even write a first line of outreach.
This LinkedIn Gmail automation hits SDRs and lead gen folks hardest. Agency owners running outbound for clients feel it too. Founders doing their own pipeline? Same mess, just less time to deal with it.
This workflow takes basic prospect info, finds the most likely LinkedIn match, pulls company context, and emails you a ready-to-use follow-up plan. You’ll see what it does, why it matters, and how to roll it out without turning your day into a setup project.
How This Automation Works
Here’s the complete workflow you’ll be setting up:
n8n Workflow Template: LinkedIn to Gmail, prospect research delivered ready
flowchart LR
subgraph sg0["Form Submission Flow"]
direction LR
n0["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/html.dark.svg' width='40' height='40' /></div><br/>Scrape Page Content"]
n1["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/form.svg' width='40' height='40' /></div><br/>Form Submission Trigger"]
n2@{ icon: "mdi:cog", form: "rounded", label: "Fetch LinkedIn Search", pos: "b", h: 48 }
n3@{ icon: "mdi:robot", form: "rounded", label: "Interpret Search Results", pos: "b", h: 48 }
n4["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/form.svg' width='40' height='40' /></div><br/>No Match Response"]
n5@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Filter Matching Profiles", pos: "b", h: 48 }
n6@{ icon: "mdi:cog", form: "rounded", label: "Limit Profile Output", pos: "b", h: 48 }
n7@{ icon: "mdi:swap-vertical", form: "rounded", label: "Expand Parsed Results", pos: "b", h: 48 }
n8@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Profile Exists Check", pos: "b", h: 48 }
n9@{ icon: "mdi:swap-vertical", form: "rounded", label: "Build LinkedIn Query", pos: "b", h: 48 }
n10@{ icon: "mdi:swap-vertical", form: "rounded", label: "Build Company Query", pos: "b", h: 48 }
n11["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/html.dark.svg' width='40' height='40' /></div><br/>Scrape Company Page"]
n12@{ icon: "mdi:cog", form: "rounded", label: "Fetch Company Search", pos: "b", h: 48 }
n13@{ icon: "mdi:robot", form: "rounded", label: "Interpret Company Results", pos: "b", h: 48 }
n14@{ icon: "mdi:swap-vertical", form: "rounded", label: "Split Company Result", pos: "b", h: 48 }
n15@{ icon: "mdi:robot", form: "rounded", label: "Generate Followup Content", pos: "b", h: 48 }
n16["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/merge.svg' width='40' height='40' /></div><br/>Combine Data Streams"]
n17@{ icon: "mdi:message-outline", form: "rounded", label: "Dispatch Email", pos: "b", h: 48 }
n18["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/form.svg' width='40' height='40' /></div><br/>Completion Confirmation"]
n16 --> n15
n14 --> n16
n17 --> n18
n9 --> n2
n6 --> n8
n10 --> n12
n3 --> n7
n12 --> n11
n7 --> n5
n1 --> n9
n1 --> n10
n5 --> n6
n8 --> n16
n8 --> n4
n2 --> n0
n13 --> n14
n0 --> n3
n11 --> n13
n15 --> n17
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n1 trigger
class n3,n13,n15 ai
class n5,n8 decision
classDef customIcon fill:none,stroke:none
class n0,n1,n4,n11,n16,n18 customIcon
Why This Matters: Prospect research slows outreach to a crawl
Manual prospect research feels “quick” until you do it 20 times in a row. You Google a name, open a few results, compare titles, sanity-check the company, then try to write something that doesn’t sound like a template. Meanwhile you’re second-guessing basics: wrong profile, outdated role, or a company page that’s all fluff. The real cost isn’t just time. It’s momentum. When research is annoying, outreach gets postponed, follow-ups slip, and the pipeline quietly dries up.
It adds up fast. Here’s where it breaks down in real life.
- Finding the right LinkedIn profile often takes 10 minutes per person when names are common.
- Once you’re unsure about the match, you lose confidence and rewrite emails more than you need to.
- Company context is scattered, so personalization becomes “good enough” instead of useful.
- Copy-pasting notes between tools creates small errors that turn into embarrassing outreach.
What You’ll Build: LinkedIn profile matching + follow-up guidance to Gmail
This workflow starts when someone submits a simple form with a full name and company (optionally a role). From that input, it automatically builds two Google searches: one aimed at finding the person’s LinkedIn profile, and another aimed at finding clean company information. It uses Bright Data to scrape the search results, then GPT-4o-mini to interpret the messy HTML and pull out the most likely matches. If the workflow can confidently identify a LinkedIn profile, it merges person and company signals, generates a buyer persona and follow-up strategy, and sends you an HTML-styled email. If it can’t find a match, it returns a clear “no match” response so you’re not left guessing.
The workflow kicks off from the form trigger, then runs two parallel research tracks (person and company). After a quick match check, everything is combined into one brief, actionable outreach plan and delivered to Gmail via an email send step.
What You’re Building
| What Gets Automated | What You’ll Achieve |
|---|---|
|
|
Expected Results
Say you research 15 prospects a day. Manually, it’s usually about 10 minutes to find a confident LinkedIn match and another 5 minutes to grab company context and sketch a follow-up, so roughly 4 hours daily. With this workflow, you submit the form in about a minute per prospect, then wait for the email to land in Gmail. That’s closer to 15 minutes of active work for the whole list, plus processing time in the background.
Before You Start
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Bright Data for scraping Google search results.
- OpenAI (GPT-4o-mini) to parse results and write follow-ups.
- SMTP email account (get it from your email provider’s SMTP settings page)
Skill level: Intermediate. You’ll connect credentials, test a few sample submissions, and tweak prompts for your voice.
Want someone to build this for you? Talk to an automation expert (free 15-minute consultation).
Step by Step
A prospect submits a simple form. The trigger captures the person’s name and company, which keeps your inputs clean and repeatable. No more “where did I put that note?” moments.
Two searches run in parallel. One query is formatted to find likely LinkedIn profiles, and another query looks for company pages and public info. Bright Data fetches the Google results pages so you don’t have to scrape anything manually.
AI interprets the messy parts. GPT-4o-mini reads the scraped HTML and extracts structured results (profile candidates, titles, URLs, and company snippets). Then n8n filters, limits, and checks if a usable LinkedIn profile was found.
You get a Gmail-ready deliverable. The workflow merges the person and company context, generates a persona and follow-up strategy, and sends it via your SMTP email node. If there’s no match, the form responder tells you right away so you can fix the input.
You can easily modify the prompts and match rules to fit your market (for example, stricter title matching for enterprise outreach). See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Form Trigger
Set up the form intake that collects prospect details and kicks off the workflow.
- Add and configure Form Submission Trigger with Form Title set to
Sales prospectingand Response Mode set tolastNode. - In Form Submission Trigger, add fields for Person Fullname and Person's company, both required, and set the submit button label to
Get References. - Confirm the workflow starts when the form is submitted and that Form Submission Trigger outputs to both Build LinkedIn Query and Build Company Query in parallel.
Person Position and Category in AI prompts, but these fields are not present in Form Submission Trigger. Add those fields to the form or remove the expressions in Interpret Search Results and Interpret Company Results to avoid runtime errors.Step 2: Build the Search Queries (Parallel Branches)
Construct Google search URLs for LinkedIn profiles and company pages.
- In Build LinkedIn Query, set google_search to
=https://www.google.com/search?q=site%3Alinkedin.com%2Fin+{{ encodeURIComponent($json["Person Fullname"].trim() + " " + $json["Person's company"].trim()) }}. - In Build Company Query, set google_search to
=https://www.google.com/search?q={{ encodeURIComponent($json["Person's company"].trim()) }}. - Verify the parallel flow: Form Submission Trigger outputs to both Build LinkedIn Query and Build Company Query in parallel.
Step 3: Fetch and Parse LinkedIn Search Results
Scrape Google results for LinkedIn profiles and extract matching prospects.
- Configure Fetch LinkedIn Search with URL set to
={{ $json.google_search }}and Format set tojson. Credential Required: Connect your brightdataApi credentials. - In Scrape Page Content, set Operation to
extractHtmlContent, Data Property Name tobody, and ensure extraction values includetitleandbody. - In Interpret Search Results, keep JSON Output enabled and validate the prompt expressions that reference form data. Credential Required: Connect your openAiApi credentials.
- Use Expand Parsed Results with Field to Split Out set to
message.content.results, then filter in Filter Matching Profiles where={{ $json.match }}equalstrue. - Limit output to the best result in Limit Profile Output, then pass to Profile Exists Check to branch for matches vs. no matches.
Step 4: Fetch and Parse Company Results
Scrape company search results and extract the best company record.
- Configure Fetch Company Search with URL set to
={{ $json.google_search }}and Format set tojson. Credential Required: Connect your brightdataApi credentials. - In Scrape Company Page, set Operation to
extractHtmlContentand Data Property Name tobody, with extraction values fortitleandbody. - Use Interpret Company Results with JSON Output enabled to return the best company match. Credential Required: Connect your openAiApi credentials.
- Split the AI output using Split Company Result with Field to Split Out set to
message.content.
Step 5: Merge Data and Generate Follow-Up Content
Combine person and company data to create a personalized follow-up message.
- Ensure Profile Exists Check routes matches to Combine Data Streams and non-matches to No Match Response.
- Configure Combine Data Streams with Mode set to
combineand Combine By set tocombineByPosition. - In Generate Followup Content, keep JSON Output enabled and verify the prompt uses
{{ JSON.stringify($json)}}to build the HTML report. Credential Required: Connect your openAiApi credentials.
Step 6: Configure Responses and Email Delivery
Send the generated follow-up email and return confirmation to the form user.
- In Dispatch Email, set HTML to
={{ $json.message.content.content }}, Subject toNext followup, and replace[YOUR_EMAIL]in To Email and From Email. Credential Required: Connect your smtp credentials. - Configure Completion Confirmation with Completion Title set to
Thank you!and Completion Message set toWe have sent you an email. - Verify No Match Response returns a message using the response text expression
=We didn't found a person for "{{ $('Form Submission Trigger').item.json["Person Fullname"] }} {{ $('Form Submission Trigger').item.json["Person Fullname"] }} {{ $('Form Submission Trigger').item.json["Person's company"] }}".
Step 7: Test and Activate Your Workflow
Validate the end-to-end flow and enable the automation for production.
- Click Execute Workflow and submit the form in Form Submission Trigger with a real prospect name and company.
- Confirm successful execution: matched profiles pass Profile Exists Check, data merges in Combine Data Streams, and a formatted email is sent via Dispatch Email.
- For no matches, verify the form response shows the No Match Response text.
- Toggle the workflow to Active to enable live form submissions.
Troubleshooting Tips
- Bright Data credentials can expire or need specific permissions. If things break, check your Bright Data zone/access settings in your Bright Data dashboard 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.
- Default prompts in AI nodes are generic. Add your brand voice early or you’ll be editing outputs forever.
Quick Answers
About 30 minutes if your credentials are ready.
No. You’ll mostly connect accounts and adjust a couple of prompts and fields.
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 Bright Data usage and OpenAI API costs (usually a few cents per run, depending on prompt size).
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.
Yes, and you probably should. You can change the match strictness by adjusting the “Filter Matching Profiles” step and the “Profile Exists Check” logic. The fastest win is editing the “Generate Followup Content” prompt to match your offer, your ICP, and your tone. You can also swap the form trigger for Telegram intake if you want reps to submit prospects from their phone.
Usually it’s an invalid token, a disabled zone, or a permission mismatch on the Bright Data side. Regenerate the credentials, then reselect them in the Bright Data nodes inside n8n. If it fails only on some queries, you may be hitting anti-bot blocks or returning a consent page, which means the scraped HTML won’t contain real results. In that case, adjust the Bright Data configuration or add a fallback query format.
On a typical n8n Cloud plan, most teams comfortably run hundreds to thousands of these per month, depending on your execution limit. If you self-host, there’s no platform execution cap, but your server and your Bright Data/OpenAI usage become the practical limits. Each prospect is usually one execution, and the heavy part is the scraping + AI parsing, not n8n itself.
Often, yes, because this workflow needs branching, filtering, and a bit of “glue logic” to decide which profile is the right one. n8n also gives you a self-host option, which is nice when volumes climb and you don’t want per-task pricing surprises. Zapier or Make can still work if you simplify the process and accept less control. Honestly, the deciding factor is how picky you need matching to be. Talk to an automation expert if you want help choosing.
Once this is running, prospect research stops being a daily speed bump and starts behaving like infrastructure. The workflow handles the repetitive parts so you can focus on conversations and pipeline.
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.