Airtop + Google Sheets: cleaner ICP lead scoring
Your lead list looks fine until someone asks, “Which of these companies are actually worth sales time?” Then it turns into tabs, gut-feel scoring, and a spreadsheet that gets messy fast.
This hurts growth marketers first, but sales ops and agency teams feel it too. With this ICP scoring automation, you can turn a raw LinkedIn company list into a prioritized sheet your team can trust, without spending your morning playing human enrichment tool.
Below you’ll see exactly what this n8n workflow does, what outcomes to expect, and what you need to run it reliably in the real world.
How This Automation Works
The full n8n workflow, from trigger to final output:
n8n Workflow Template: Airtop + Google Sheets: cleaner ICP lead scoring
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@{ icon: "mdi:database", form: "rounded", label: "Get companies", pos: "b", h: 48 }
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/airtop.svg' width='40' height='40' /></div><br/>Calculate ICP Scoring"]
n3["<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"]
n4@{ icon: "mdi:database", form: "rounded", label: "Update row", pos: "b", h: 48 }
n1 --> n2
n3 --> n4
n2 --> n3
n0 --> n1
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 n1,n4 database
class n3 code
classDef customIcon fill:none,stroke:none
class n2,n3 customIcon
The Problem: ICP scoring turns into spreadsheet chaos
Most teams don’t fail at lead gen because they lack leads. They fail because the “qualification” step is a fuzzy, manual grind that never stays consistent. One person scores based on employee count. Another cares about geography. Someone else skims LinkedIn and calls it a day. A week later, you’ve got duplicates, missing fields, and a pipeline review where nobody trusts the list. And the worst part is the opportunity cost: while you’re chasing weak-fit accounts, the best-fit ones sit untouched.
It adds up fast. Here’s where it breaks down.
- Someone has to open each LinkedIn company page, copy details, and paste them into the sheet, which burns about 5 minutes per company on a good day.
- Scoring is inconsistent because it depends on mood, context, and whoever is on “lead cleanup” duty that week.
- Static databases go stale quickly, so you end up qualifying based on outdated headcount, positioning, or hiring signals.
- Sales loses confidence in the list, so reps cherry-pick and the whole scoring effort quietly dies.
The Solution: Airtop enriches LinkedIn companies and scores them in Sheets
This workflow takes a Google Sheet full of company LinkedIn URLs and turns it into a clean, ranked, consistently scored lead list. You start by running the workflow manually in n8n (useful when you want control over batch size and timing). n8n pulls your company rows from Google Sheets, then Airtop extracts fresh company details directly from LinkedIn. Next, an AI scoring step evaluates fit using a points model (things like AI implementation level, technical sophistication, employee count, geography, and whether the company looks like an automation agency). Finally, n8n writes the enriched details and the ICP score back into the same sheet row, so your list stays usable for outreach, routing, or reporting.
The workflow starts with your existing Sheet as the source of truth. Airtop fetches the current LinkedIn company data, then OpenAI helps translate that information into a consistent score. The updated row in Google Sheets becomes your “single place” to sort, filter, and prioritize.
What You Get: Automation vs. Results
| What This Workflow Automates | Results You’ll Get |
|---|---|
|
|
Example: What This Looks Like
Say you have 80 target accounts from a webinar list and you want a quick “who’s worth it” ranking. Manually, if enrichment plus scoring takes about 5 minutes per company, that’s roughly 6 to 7 hours of work, plus a bunch of context switching. With this workflow, you paste LinkedIn company URLs into Google Sheets, run n8n once, and let Airtop + AI handle the heavy lifting. Most teams get the updated sheet back in about an hour, then sales can sort by ICP score and start outreach immediately.
What You’ll Need
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Google Sheets for your company list and output columns
- Airtop to extract LinkedIn company details
- Airtop API key (get it from the Airtop dashboard)
Skill level: Beginner. You will connect accounts, paste a sheet ID, and verify your columns match the workflow.
Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).
How It Works
You trigger the run manually in n8n. That’s ideal when you want to score a fresh batch after importing leads from a campaign, event, or list purchase.
Google Sheets provides the input rows. The workflow reads your company list, typically with a column like Linkedin_URL_Company, then moves through the rows in a controlled way.
Airtop pulls live LinkedIn company information. It extracts identity and classification details, company scale signals, and “how technical is this org” cues that are hard to capture consistently by hand. This is where the sheet stops being just a list and starts being something you can act on.
AI converts that context into a score you can sort by. The workflow applies your point model (AI implementation level, technical sophistication, employee count, agency status, geography), assembles the output, and writes it back to the same Google Sheet row.
You can easily modify the scoring criteria to match your market, then keep the same output format in Google Sheets based on your needs. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Manual Trigger
Start the workflow with a manual trigger so you can test the company scoring process on demand.
- Add the Manual Run Trigger node as the starting point of the workflow.
- Connect Manual Run Trigger to Retrieve Company List so the sheet data loads first.
Step 2: Connect Google Sheets
Configure the input and output Google Sheets nodes to read companies and write back ICP scores.
- Open Retrieve Company List and set Document to
[YOUR_ID]. - Set Sheet to
Companyin Retrieve Company List. - Credential Required: Connect your googleSheetsOAuth2Api credentials in Retrieve Company List.
- Open Modify Sheet Row and set Operation to
update. - Set Document to
[YOUR_ID]and Sheet toCompanyin Modify Sheet Row. - Confirm Mapping is
autoMapInputDataand Matching Columns containsrow_numberin Modify Sheet Row. - Credential Required: Connect your googleSheetsOAuth2Api credentials in Modify Sheet Row.
Step 3: Set Up Compute ICP Rating
Use Airtop to analyze each LinkedIn company page and return a structured ICP scoring result.
- Open Compute ICP Rating and set Resource to
extractionand Operation toquery. - Set URL to
={{ $json['Linkedin_URL_Company'] }}so each row’s LinkedIn URL is analyzed. - Set Session Mode to
newin Compute ICP Rating. - Paste the full analysis prompt into Prompt exactly as provided, including the JSON output schema and scoring table.
- Ensure the Output Schema field is filled with the JSON schema provided in the node’s Additional Fields.
Linkedin_URL_Company in your sheet. If the column name differs, the node will not resolve the URL.Step 4: Configure Assemble Output and Sheet Update
Transform the Airtop response into a simplified structure and update the original sheet row with the computed ICP score.
- Open Assemble Output and keep Mode set to
runOnceForEachItem. - Paste the exact JavaScript in JavaScript Code:
const row_number = $('Retrieve Company List').item.json.row_number
const Linkedin_URL_Company = $('Retrieve Company List').item.json.Linkedin_URL_Company
const icp_scoring = JSON.parse($input.item.json.data.modelResponse).icp_scoring
return { json: {
row_number,
Linkedin_URL_Company,
ICP_Score_Company: icp_scoring.total_score
}};
- Confirm the execution flow is Retrieve Company List → Compute ICP Rating → Assemble Output → Modify Sheet Row.
- Verify Modify Sheet Row updates the
ICP_Score_Companycolumn using the mapped output from Assemble Output.
Step 5: Test and Activate Your Workflow
Run a full test to ensure rows are read, scored, and updated correctly before activating for regular use.
- Click Execute Workflow and manually trigger Manual Run Trigger.
- Confirm Compute ICP Rating returns a JSON response and Assemble Output outputs
ICP_Score_Company. - Check the Google Sheet to verify the
ICP_Score_Companycolumn updates for the matchingrow_number. - When the test succeeds, toggle the workflow to Active for production use.
Common Gotchas
- Google Sheets credentials can expire or need specific permissions. If things break, check the n8n Credentials page and confirm the connected Google account still has edit access to the 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
About 30 minutes if your accounts and sheet are ready.
No. You’ll mostly connect Airtop and Google Sheets, then adjust a few fields if your columns are named differently.
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 Airtop and OpenAI usage costs since enrichment and scoring run through their APIs.
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, but do it intentionally. You can adjust the point values in the scoring logic (the criteria like AI implementation level, technical sophistication, employee count, geography, and agency status), and you can tweak the AI prompt used during the “Compute ICP Rating” step so it reflects your market. Common customizations include adding an industry rule, changing what “good fit” headcount looks like, and adding a “do not target” flag for competitors or agencies. Keep the output column names stable in Google Sheets so your sales filters don’t break.
Usually it’s an expired or incorrect Airtop API key. Regenerate the key in your Airtop dashboard, then update the credential in n8n. Also check that the LinkedIn company URLs in your sheet are valid and publicly reachable, because malformed URLs can look like “auth errors” upstream. If you’re processing a big batch, rate limits can show up too, so reducing batch size often fixes it.
Hundreds in a run is typical, but it depends on your n8n plan, your server (if self-hosted), and how fast Airtop and the AI scoring responses return.
Often, yes, because you can do richer logic without paying extra for every branch, and you can self-host if volume gets high. n8n also makes it easier to work with structured enrichment outputs and custom code when you need it. Zapier or Make can still be fine for a tiny list and a simple “score then write to sheet” path, but you’ll hit limits faster once you add batching, retries, and prompt tuning. Honestly, the best option depends on how many companies you score each week and how strict your rubric is. Talk to an automation expert if you want a quick recommendation based on your setup.
Once this is running, your sheet stops being a “maybe” list and becomes a real prioritization tool. Set it up once, then spend your time on outreach that actually has a shot.
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.