LinkedIn to Google Sheets, ranked leads you can trust
Most lead lists look fine until you try to qualify them. Then it’s tab-hopping, half-complete profiles, and gut-feel decisions that waste a sales day fast.
Sales Ops feels this when reps complain about “bad leads.” A growth marketer sees it when campaigns bring volume but not fit. And founders get stuck doing the sorting themselves. This LinkedIn lead scoring automation turns profile links into ranked, usable priorities inside Google Sheets.
You’ll set up a workflow that pulls real LinkedIn profile data, scores each person against your ICP, and updates your sheet so outreach starts with the best matches.
How This Automation Works
Here’s the complete workflow you’ll be setting up:
n8n Workflow Template: LinkedIn to Google Sheets, ranked leads you can trust
flowchart LR
subgraph sg0["When clicking ‘Test workflow’ Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "When clicking ‘Test workflow’", pos: "b", h: 48 }
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/airtop.svg' width='40' height='40' /></div><br/>Calculate ICP PersonScoring"]
n2["<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/code.svg' width='40' height='40' /></div><br/>Format response"]
n3@{ icon: "mdi:database", form: "rounded", label: "Update row", pos: "b", h: 48 }
n4@{ icon: "mdi:database", form: "rounded", label: "Get person", pos: "b", h: 48 }
n4 --> n1
n2 --> n3
n1 --> n2
n0 --> n4
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 n0 trigger
class n3,n4 database
class n2 code
classDef customIcon fill:none,stroke:none
class n1,n2 customIcon
Why This Matters: Lead qualification that doesn’t collapse under volume
Manual qualification is the quiet killer of outbound. Someone exports a list, someone else skims profiles, and suddenly your “simple” prospecting task turns into an afternoon of LinkedIn tabs and subjective notes. Worse, the criteria changes depending on who’s doing the checking, so two people can look at the same profile and reach totally different conclusions. Meanwhile, hot prospects sit untouched because your team is stuck scoring the wrong ones first. Honestly, the biggest cost is focus: the constant context switching between a spreadsheet and profiles drains energy you should spend writing good outreach.
It adds up fast. Here’s where it breaks down in the real world.
- Reps spend about 5–10 minutes per profile just to decide if someone is “maybe.”
- Lists go stale because static databases don’t match what’s currently on LinkedIn.
- “ICP fit” lives in people’s heads, which means scoring is inconsistent from one week to the next.
- Low-fit leads still get outreach, so your best sequences get blamed for poor targeting.
What You’ll Build: LinkedIn profile scoring that updates your sheet automatically
This workflow takes a LinkedIn profile URL from your Google Sheet, pulls fresh profile details via Airtop, and uses AI to evaluate how well that person matches your Ideal Customer Profile. It starts with a manual run in n8n, grabs the next (or chosen) row from your sheet, then extracts the relevant LinkedIn profile information in a structured way. From there, an AI model evaluates the person across the criteria you care about (things like AI interest, technical depth, and seniority) and returns a clear score. Finally, the workflow formats everything neatly and writes the enriched fields and ICP score back into the same Google Sheet row. Your list stays current, and your outreach order is no longer guesswork.
The workflow begins in n8n and reads a lead row from Google Sheets. Airtop then enriches the LinkedIn profile data, and OpenAI helps judge fit against your ICP rules. The final step updates Google Sheets so the score is ready for sorting, filtering, and outreach.
What You’re Building
| What Gets Automated | What You’ll Achieve |
|---|---|
|
|
Expected Results
Say you need to qualify 50 LinkedIn profiles from a webinar list. Manually, if you spend about 8 minutes per profile between scanning LinkedIn and updating your sheet, that’s roughly 6–7 hours of distracting work. With this workflow, you kick off the run, let Airtop extract the profile, and the AI scores it while you do something else. You still review the top results, but the heavy lifting is done, and most teams get those 50 leads ranked in about an hour of total attention.
Before You Start
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Google Sheets for storing LinkedIn URLs and scores
- Airtop to extract live LinkedIn profile data
- Airtop API key (get it from the Airtop dashboard)
Skill level: Beginner. You’ll connect accounts, map a few fields, and run a test row end-to-end.
Want someone to build this for you? Talk to an automation expert (free 15-minute consultation).
Step by Step
A manual run starts the process. You click “Execute” in n8n when you’re ready to score new rows, which is perfect if you want control while you’re testing your ICP model.
Your Google Sheet provides the input. The workflow retrieves a person row and reads the LinkedIn URL from a dedicated column (the template expects something like Linkedin_URL_Person).
Airtop pulls fresh LinkedIn profile details. Instead of relying on stale enrichment data, it extracts what’s on the profile right now, then passes that information into your scoring logic.
The workflow calculates and writes back the score. A code step formats the payload cleanly, and Google Sheets is updated with enriched fields plus an ICP score (for example, ICP_Score_Person), ready to sort and route.
You can easily modify the scoring criteria to match your market, then keep the same “read row → enrich → score → update sheet” pattern. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Manual Trigger
This workflow starts manually and then pulls a row from Google Sheets to score a LinkedIn profile.
- Add the Manual Execution Start node as the trigger.
- Keep the default settings, since this node has no parameters.
- Optionally keep the Flowpast Branding sticky note for documentation (no configuration needed).
Step 2: Connect Google Sheets
These nodes read the LinkedIn URL and update the score in the same sheet.
- Open Retrieve Person Row and set Document to
[YOUR_ID]and Sheet toPerson. - Open Modify Sheet Row and set Operation to
update. - In Modify Sheet Row, confirm Document is
[YOUR_ID]and Sheet isPerson. - Keep Columns mapping in Modify Sheet Row set to
autoMapInputDataand match onrow_number. - Credential Required: Connect your Google Sheets credentials in both Retrieve Person Row and Modify Sheet Row.
⚠️ Common Pitfall: If the sheet does not contain row_number or Linkedin_URL_Person, the update in Modify Sheet Row will fail.
Step 3: Set Up the LinkedIn ICP Scoring Node
This step uses Airtop to extract profile data and calculate the ICP score from the LinkedIn URL.
- Add the Score ICP via Profile node after Retrieve Person Row.
- Set Resource to
extractionand Operation toquery. - Set Session Mode to
new. - Set URL to the expression
={{ $json['Linkedin_URL_Person'] }}. - Paste the full extraction prompt into Prompt exactly as provided in the node parameters.
- Keep the Output Schema defined in Additional Fields to enforce consistent response structure.
- Credential Required: Connect your Airtop credentials in Score ICP via Profile.
Step 4: Configure Output Formatting and Sheet Update
This step parses the Airtop response and writes the ICP score back to Google Sheets.
- In Format Output Payload, set Mode to
runOnceForEachItem. - Paste the following into JavaScript Code to map the row number, LinkedIn URL, and ICP score:
const row_number = $('Retrieve Person Row').item.json.row_number const Linkedin_URL_Person = $('Retrieve Person Row').item.json.Linkedin_URL_Person const ICP_Score_Person = JSON.parse($input.item.json.data.modelResponse).icp_score return { json: { row_number, Linkedin_URL_Person, ICP_Score_Person }}; - Connect Score ICP via Profile → Format Output Payload → Modify Sheet Row to match the execution flow.
Step 5: Test and Activate Your Workflow
Run a manual test to verify data pulls, scoring, and sheet updates before enabling production use.
- Click Execute Workflow from Manual Execution Start.
- Verify Retrieve Person Row outputs a row with
Linkedin_URL_Personandrow_number. - Confirm Score ICP via Profile returns a valid JSON response with
icp_scoreindata.modelResponse. - Check Modify Sheet Row updates the correct row with
ICP_Score_Person. - Once validated, toggle the workflow to Active for production use.
Troubleshooting Tips
- Airtop credentials can expire or need specific permissions. If things break, check your Airtop dashboard API key and workspace access 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 Google Sheet and Airtop key are ready.
No. You’ll mostly connect Airtop and Google Sheets, then adjust the scoring rules and field mapping.
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 usage and Airtop usage depending on how many profiles you score.
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 adjust the scoring rubric in the AI scoring step and the code formatting step so your sheet gets exactly the fields you care about. Common tweaks include changing point values for seniority, adding industry keywords as a bonus, and creating a “Tier” column (Hot/Warm/Cold) based on score thresholds. If you want notifications, add a Slack or email node after the sheet update when a lead crosses your “high fit” score.
Usually it’s an expired or incorrect Airtop API key, so regenerate it in the Airtop dashboard and update the credential in n8n.
If you self-host n8n, there’s no platform execution limit, but profile extraction and AI calls become the bottleneck. In practice, many teams run this in batches of 25–100 rows and let it work through them, because LinkedIn extraction can take a bit per profile. On n8n Cloud, your monthly execution cap depends on plan, so the clean approach is to score in batches and only re-score leads when you actually plan outreach. If you need thousands per day, you’ll want queueing and more aggressive batching.
Often, yes. n8n handles multi-step logic, formatting, and conditional scoring without turning every branch into extra cost, and self-hosting gives you more control when volume ramps up. Zapier or Make can work if you only want a simple “URL in, row updated” flow, but this use case usually grows into scoring tiers, exceptions, and retries. Airtop-style extraction plus AI scoring is also easier to shape when you can add code and custom logic in the same workflow. If you’re unsure, Talk to an automation expert and you’ll get a straight recommendation based on your volume and team.
Once this is running, your sheet becomes a real priority list, not a dumping ground. The workflow does the sorting so your team can spend their attention where it actually pays off.
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.