Google Sheets + Perplexity AI: richer lead lists
Your lead list looks fine until you try to use it. Half the rows are just domains, the rest are “maybe” guesses copied from a quick Google scan, and nobody can tell which details are actually trustworthy.
This is where Perplexity Sheets enrichment pays off. A marketing manager planning ABM, a sales lead cleaning a CRM import, and a consultant building a prospect database all hit the same wall: inconsistent firmographics and slow research.
This workflow takes a simple domain column in Google Sheets and turns it into a structured prospect sheet (address, phone, employees, revenue, LinkedIn URL, and sources). You’ll see how it runs, what you need, and how to tailor it without getting technical.
How This Automation Works
Here’s the complete workflow you’ll be setting up:
n8n Workflow Template: Google Sheets + Perplexity AI: richer lead lists
flowchart LR
subgraph sg0["Manual Execution Start Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "Manual Execution Start", pos: "b", h: 48 }
n1@{ icon: "mdi:database", form: "rounded", label: "Retrieve Pending Domains", pos: "b", h: 48 }
n2@{ icon: "mdi:swap-vertical", form: "rounded", label: "Split Domain Batches", pos: "b", h: 48 }
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/httprequest.dark.svg' width='40' height='40' /></div><br/>External AI Inquiry"]
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/code.svg' width='40' height='40' /></div><br/>Extract AI Output"]
n5@{ icon: "mdi:database", form: "rounded", label: "Update Enriched Sheet", pos: "b", h: 48 }
n0 --> n1
n4 --> n5
n5 --> n2
n2 --> n3
n3 --> n4
n1 --> n2
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,n5 database
class n3 api
class n4 code
classDef customIcon fill:none,stroke:none
class n3,n4 customIcon
Why This Matters: messy lead data slows everything down
Manual enrichment looks harmless at first. You copy a company address from a footer, grab an employee count from a random directory, paste a LinkedIn link, and move on. Then you come back a week later and realize half of it can’t be verified, formats don’t match, and the “revenue” field is either blank or wildly inconsistent. The real cost is the follow-up work: fixing your sheet, re-checking sources, and arguing internally about what’s “good enough” to run a campaign.
It adds up fast. Here’s where it usually breaks down.
- Researching one company can easily take 10 minutes when you include verification and formatting.
- People paste data in different formats, so later segmentation becomes a cleanup project.
- Without source URLs, you end up re-researching the same companies when stakeholders ask, “Where did this come from?”
- Duplicates creep in because there’s no reliable “processed” status, just tribal knowledge and crossed fingers.
What You’ll Build: a domain-to-firmographics enrichment pipeline
This automation starts with a Google Sheet that contains company domains and a simple “processed” flag. When you run it, n8n pulls only the rows that haven’t been enriched yet. It then groups the domains into batches of 10, which keeps the workflow efficient and helps control Perplexity API usage. For each batch, Perplexity AI researches the company and returns the details you actually need for outreach and targeting. Finally, the workflow parses the AI response into clean JSON and writes structured fields back into your sheet, marking each domain as processed so it won’t get touched again.
In plain terms: Google Sheets supplies the work queue, Perplexity does the research, and n8n keeps everything consistent. The output is a usable prospect sheet with address, phone, industry, employee count, revenue, LinkedIn URL, plus a reliable source link for verification.
What You’re Building
| What Gets Automated | What You’ll Achieve |
|---|---|
|
|
Expected Results
Say you have 200 domains from a conference list. Manually, if research and formatting takes about 10 minutes per company, that’s roughly 33 hours of work (and it still won’t be consistent). With this workflow, you drop the domains into Google Sheets, run enrichment in batches of 10, and let it write back the structured fields automatically. You’ll spend maybe 20 minutes setting up and spot-checking, then review the finished sheet instead of building it row by row.
Before You Start
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Google Sheets for your domain list and output table.
- Perplexity AI API to research firmographics and sources.
- Perplexity API key (get it from your Perplexity account dashboard)
Skill level: Beginner. You’ll connect accounts, paste a document ID, and adjust a prompt if you want a different region.
Want someone to build this for you? Talk to an automation expert (free 15-minute consultation).
Step by Step
A manual run starts the job. In the base workflow, you click “Execute” in n8n to kick things off. If you prefer, you can swap this later for a schedule so it runs automatically.
Google Sheets becomes your queue. The workflow reads your sheet and pulls only domains that are still unprocessed. That single detail keeps the system clean, because you can keep adding new rows without worrying about duplicates.
Domains are processed in batches. n8n groups the work into chunks of 10, then sends each batch to Perplexity through an HTTP request. This is where the “research” happens: addresses, phone numbers, employee counts, revenue, industry, LinkedIn, and a source URL for validation.
Structured results go back into your sheet. A parsing step converts the AI response into clean fields, then Google Sheets is updated and the “processed” flag is set. Next run, those rows are skipped automatically.
You can easily modify the target region (it’s set up for German addresses) to match your market. 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 reads pending domains for enrichment.
- Add and open Manual Execution Start to confirm it is the trigger node (no fields required).
- Connect Manual Execution Start to Retrieve Pending Domains to match the execution flow.
Step 2: Connect Google Sheets
Configure the input and output Sheets so the workflow can read unprocessed domains and write enriched data.
- Open Retrieve Pending Domains and select your Google Sheet in Document and Sheet.
- Ensure the filter in Retrieve Pending Domains uses processed with lookupValue set to
=so only pending rows are returned. - Credential Required: Connect your googleSheetsOAuth2Api credentials to Retrieve Pending Domains.
- Open Update Enriched Sheet and select the same Google Sheet and tab to update.
- Credential Required: Connect your googleSheetsOAuth2Api credentials to Update Enriched Sheet.
[YOUR_ID]) with your actual Google Sheet IDs, or the nodes will return empty results.Step 3: Set Up Batching and AI Enrichment
Domains are processed in batches of 10, sent to the AI endpoint, and parsed into individual items.
- Open Split Domain Batches and set Batch Size to
10. - Confirm that Split Domain Batches receives data from Retrieve Pending Domains and outputs to External AI Inquiry.
- Configure External AI Inquiry with URL
https://api.perplexity.ai/chat/completionsand MethodPOST. - Set JSON Body in External AI Inquiry to the provided template and keep the domain injection expression
{{ $input.all().map(item => item.json.domain) }}inside the prompt. - Credential Required: Connect your perplexityApi credentials to External AI Inquiry.
- Open Extract AI Output and keep the provided JavaScript code that parses the AI response and splits it into individual company records.
companies array.Step 4: Configure Output Mapping to Google Sheets
The parsed company records are written back to the sheet and marked as processed.
- In Update Enriched Sheet, keep Operation set to
update. - Verify the Matching Columns include
domainso updates match rows correctly. - Confirm the column mappings use the existing expressions, such as city
{{ $json.city }}and phone{{ $json.phone.replace("+", "'+") }}. - Ensure processed is set to
trueso rows are not reprocessed in future runs.
Step 5: Test and Activate Your Workflow
Run a manual test to validate the full enrichment cycle before enabling the workflow for production use.
- Click Execute Workflow to trigger Manual Execution Start and run the full path.
- Confirm that Retrieve Pending Domains returns rows with an empty processed field.
- Verify External AI Inquiry returns a structured response and Extract AI Output outputs one item per company.
- Check the Google Sheet after execution—enriched columns should be filled and processed should be
true. - Save and activate the workflow once the test run completes successfully.
Troubleshooting Tips
- Google Sheets OAuth credentials can expire or need specific permissions. If things break, check the n8n Credentials screen and re-auth the Google Sheets connection first.
- If you’re using batch processing and the Perplexity request is slow, processing times vary. Bump up any waits/timeouts in the HTTP Request settings if downstream nodes fail on empty responses.
- Default prompts in AI nodes are generic. Add your brand rules and required fields early or you will be editing outputs forever.
Quick Answers
About 30 minutes if your accounts are ready.
No. You’ll mainly connect Google Sheets and add your Perplexity API key in the HTTP request.
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 Perplexity API usage costs, which depend on how many domains you enrich.
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 it’s mostly prompt and mapping changes. You can change the region by editing the prompt used in the Perplexity HTTP Request step so it looks for addresses in your target country (not just Germany). Common tweaks include adding “funding stage” or “key products,” changing the batch size from 10 to something smaller, and extending the Google Sheets columns so the workflow writes extra fields.
Most of the time it’s an invalid or expired API key in the HTTP Request node. Check the authorization header (or wherever you stored the key), then regenerate the key in Perplexity and update n8n. If the key is fine, look for rate limits or timeouts when you run bigger batches. One more gotcha: if the prompt asks for too much at once, the response can be inconsistent, which makes parsing fail.
Plenty for most small teams: hundreds to thousands of domains, as long as you’re comfortable with the API spend and runtime.
Sometimes, yes. n8n is usually more flexible for batch processing, parsing structured JSON, and looping through rows without paying extra for every little step. It also gives you a self-hosting option, which is handy when you run enrichments often. Zapier or Make can still be fine for lightweight two-step flows, but this use case tends to get complicated quickly once you add batching and data cleanup. Talk to an automation expert if you want help choosing the simplest route.
Once this is set up, you stop “researching leads” and start reviewing a finished sheet. The workflow handles the repetitive parts, and you keep control with source links and clean columns.
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.