YouTube to Google Sheets, lead research stays current
Your YouTube lead list gets outdated the moment you make it. Subscribers jump, views spike, channels pivot, and the spreadsheet you trusted turns into a stale guess.
Marketing managers feel it when influencer outreach stalls. Agency owners feel it when client prospecting needs proof. And a solo founder doing partnerships feels it because there’s no time to re-check every channel. This YouTube Sheets automation keeps your research current without living in tabs.
You’ll see what the workflow pulls, how it calculates recent performance, and how it updates Google Sheets so your outreach list stays reliable.
How This Automation Works
See how this solves the problem:
n8n Workflow Template: YouTube to Google Sheets, lead research stays current
flowchart LR
subgraph sg0["New Channel Added Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "New Channel Added", 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/httprequest.dark.svg' width='40' height='40' /></div><br/>Get info about channel"]
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/httprequest.dark.svg' width='40' height='40' /></div><br/>Get Channel Stats"]
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/>Get Recent Video Views"]
n4@{ icon: "mdi:swap-vertical", form: "rounded", label: "Prepare views to sum", pos: "b", h: 48 }
n5["<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/>Sum Video Views"]
n6["<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/>Get Channel Email (SerpAPI)"]
n7@{ icon: "mdi:swap-vertical", form: "rounded", label: "Prepare Sheet Data", pos: "b", h: 48 }
n8@{ icon: "mdi:database", form: "rounded", label: "Update Channel Insights", pos: "b", h: 48 }
n5 --> n6
n2 --> n3
n0 --> n1
n7 --> n8
n4 --> n5
n3 --> n4
n1 --> n2
n6 --> n7
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 n8 database
class n1,n2,n3,n6 api
class n5 code
classDef customIcon fill:none,stroke:none
class n1,n2,n3,n5,n6 customIcon
The Challenge: YouTube leads go stale fast
Channel research usually starts with good intentions: you find a creator, copy a few stats, paste a link, and promise yourself you’ll “circle back” later. Then later becomes never. Meanwhile, your list quietly rots. A channel that looked perfect two weeks ago might have tanked in recent views, or it might have blown up and now ignores cold outreach. The worst part is the mental load. You’re never sure your data is current, so you double-check everything right before you send a message.
It adds up fast. Here’s where it breaks down.
- You end up copying subscriber counts and total views by hand, which is slow and easy to mistype.
- “Recent performance” turns into vibes because you’re not consistently checking the last few uploads.
- Contact hunting becomes a messy mix of guessing, Googling, and half-finished notes in the sheet.
- Once the list grows past a few dozen channels, updating it becomes a recurring chore you keep postponing.
The Fix: A live YouTube intelligence sheet
This n8n workflow turns a simple “channel added to a spreadsheet” moment into a full refresh of useful, outreach-ready data. When you enter a new YouTube channel in Google Sheets, the automation calls the YouTube Data API to pull the channel profile and core statistics. Next, it fetches the five most recent uploads, then looks up view stats for those videos so you get a quick snapshot of what’s happening right now (not last year). After that, it attempts to find public contact hints by querying an external search API (SerpAPI) so your outreach has somewhere to start. Finally, it formats everything neatly and updates the same row in Google Sheets, creating a living dashboard you can trust.
The workflow starts with a Google Sheets trigger that detects a new channel entry. It then gathers channel metrics, recent upload performance, and contact signals through HTTP requests and a small calculation step. At the end, it writes the cleaned, compiled results back into your sheet, ready for sorting and outreach.
What Changes: Before vs. After
| What This Eliminates | Impact You’ll See |
|---|---|
|
|
Real-World Impact
Say you’re building an outreach list of 40 YouTube channels for a partnership push. Manually, you might spend about 10 minutes per channel collecting profile stats, then another 10 minutes checking the five latest videos and doing a quick contact search. That’s roughly 20 minutes each, or about 13 hours total. With this workflow, adding a channel row takes maybe a minute, then you wait while the APIs fetch stats and the sheet updates automatically. Even if the processing takes a few minutes per channel in the background, you’re not doing the work.
Requirements
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Google Sheets for the tracking spreadsheet and trigger.
- YouTube Data API to fetch channel and video statistics.
- SerpAPI key (get it from your SerpAPI dashboard) to search for public contact hints.
Skill level: Intermediate. You’ll connect accounts, add API keys, and map a few columns in your sheet.
Need help implementing this? Talk to an automation expert (free 15-minute consultation).
The Workflow Flow
A new channel gets added in Google Sheets. The workflow watches your spreadsheet, so a fresh row (or a flagged row) kicks everything off without you touching n8n.
Channel profile stats are pulled via the YouTube API. It collects the basics you normally copy by hand, like subscriber count, total views, and the channel overview data you need for qualification.
Recent uploads get analyzed for momentum. The automation retrieves the five latest videos, fetches view stats for each, then uses a small code step to aggregate totals so you can compare channels consistently.
Contact hints are looked up and written back to your sheet. A search request (via SerpAPI) attempts to find public email signals, then the workflow assembles a clean payload and updates the original row in Google Sheets.
You can easily modify the “five latest uploads” logic to analyze 10 videos instead, or switch the contact lookup to a different data source based on your needs. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Google Sheets Trigger
This workflow starts when a new row is added to your Google Sheet.
- Add the Channel Entry Trigger node as the trigger.
- Set Event to
rowAdded. - Select your spreadsheet in Document ID (e.g.,
Youtube Channel Intelligence Collector). - Choose the correct tab in Sheet Name (e.g.,
Sheet1). - Credential Required: Connect your googleSheetsTriggerOAuth2Api credentials.
{{ $('Channel Entry Trigger').item.json['Channel ID'] }}.Step 2: Connect Google Sheets
This workflow writes results back into your spreadsheet after data enrichment.
- Add the Update Sheet Records node to update the same spreadsheet.
- Set Operation to
update. - Choose the same Document ID and Sheet Name used by Channel Entry Trigger.
- In Columns, map values exactly:
- Email →
{{ $json.Email }} - Channel ID →
{{ $('Channel Entry Trigger').item.json['Channel ID'] }} - Recent Views →
{{ $json['Recent Views'] }} - Total Subscribers →
{{ $json['Total Subscribers'] }}
- Email →
- Set Matching Columns to
Channel IDto update existing rows. - Credential Required: Connect your googleSheetsOAuth2Api credentials.
Step 3: Set Up Processing Nodes
These nodes fetch channel data, recent uploads, and view statistics, then calculate totals.
- Configure Fetch Channel Profile with URL set to
https://www.googleapis.com/youtube/v3/channels?part=statistics,snippet&id=[YOUR_ID]&key=[CONFIGURE_YOUR_API_KEY]. - In Retrieve Recent Uploads, set URL to
https://www.googleapis.com/youtube/v3/searchand enable Send Query. - Set the Query Parameters in Retrieve Recent Uploads:
- channelId →
{{ $json.items[0].id }} - part →
snippet - order →
date - maxResults →
5 - key →
[CONFIGURE_YOUR_API_KEY]
- channelId →
- In Fetch Video View Stats, set URL to
=https://www.googleapis.com/youtube/v3/videos?part=statistics&id={{ $json.items[0].id.videoId }},{{ $json.items[1].id.videoId }},{{ $json.items[2].id.videoId }},{{ $json.items[3].id.videoId }},{{ $json.items[4].id.videoId }},[YOUR_ID],[YOUR_ID]&key=[CONFIGURE_YOUR_API_KEY]. - In Map Views Fields, map view counts to fields using:
- Video 1 views →
{{ $json.items[0].statistics.viewCount }} - Video 2 views →
{{ $json.items[1].statistics.viewCount }} - Video 3 views →
{{ $json.items[2].statistics.viewCount }} - Video 4 views →
{{ $json.items[3].statistics.viewCount }} - Video 5 views →
{{ $json.items[4].statistics.viewCount }}
- Video 1 views →
- In Aggregate View Totals, keep the provided JavaScript Code to sum all fields that include
views.
[YOUR_ID] and [CONFIGURE_YOUR_API_KEY] in all YouTube and SerpAPI URLs before testing.Step 4: Configure Output and Enrichment Nodes
These nodes pull channel email data and build the payload sent back to Google Sheets.
- Configure Lookup Channel Email with URL set to
=https://serpapi.com/search.json?engine=youtube_channel_about&channel_url=https://www.youtube.com/channel/{{ $('Channel Entry Trigger').item.json['Channel ID'] }}&api_key=[CONFIGURE_YOUR_API_KEY]. - In Assemble Sheet Payload, map fields:
- Recent Views →
{{ $('Aggregate View Totals').item.json.totalViews }} - Total Subscribers →
{{ $('Fetch Channel Profile').item.json.items[0].statistics.subscriberCount }} - Email →
{{ $json.channel_about_page.email }}
- Recent Views →
- Confirm execution order follows the flow: Channel Entry Trigger → Fetch Channel Profile → Retrieve Recent Uploads → Fetch Video View Stats → Map Views Fields → Aggregate View Totals → Lookup Channel Email → Assemble Sheet Payload → Update Sheet Records.
Step 5: Test and Activate Your Workflow
Validate the full run and then enable the workflow for production use.
- Click Execute Workflow and add a new row in your sheet to trigger Channel Entry Trigger.
- Verify that Fetch Channel Profile and Retrieve Recent Uploads return data without errors.
- Check that Aggregate View Totals outputs a
totalViewsfield. - Confirm Update Sheet Records updates the matching row with Email, Recent Views, and Total Subscribers.
- Toggle the workflow to Active once the test run completes successfully.
Watch Out For
- YouTube Data API credentials can expire or be blocked by project settings. If things break, check your Google Cloud Console API key restrictions and quota page 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.
- SerpAPI can return inconsistent “email-like” text depending on the query and region. Review the sheet output for false positives and adjust the search query in the HTTP Request node if needed.
Common Questions
About 30 minutes if your APIs are already set up.
Yes, but someone should be comfortable pasting API keys and matching spreadsheet columns. You won’t write code unless you want to tweak the view aggregation logic.
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 YouTube Data API usage (usually pennies at small scale) and SerpAPI costs based on your query volume.
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.
You can change the “Retrieve Recent Uploads” request to pull 10 videos instead of five, then keep the same “Aggregate View Totals” code step. If you don’t want email discovery, disable “Lookup Channel Email” and still write the rest of the metrics back through “Update Sheet Records”. Common customizations include adding a channel score column, filtering out channels below a subscriber threshold, and writing notes to a second sheet for outreach status.
Usually it’s an expired Google authorization or the spreadsheet permissions changed. Reconnect the Google Sheets credential in n8n, confirm the sheet is still shared with the right Google account, then re-check that the sheet tab name and column mapping still match what the workflow expects.
On most setups, you can comfortably process a few hundred channels a month, and more if you batch carefully and stay within API quotas. The limiting factor is usually YouTube API quota and how many SerpAPI searches you run, not n8n itself. If you self-host, executions aren’t capped by plan, but your server and API limits still matter. If you need high volume, add batching (Split in Batches) and slow down requests to avoid rate limits.
For this workflow, n8n has a few advantages: more flexible logic for chaining multiple API calls, easier data shaping with code when you need it, and a self-hosting option when usage grows. Zapier or Make can work, but complex multi-request flows tend to get pricey and harder to debug. Also, pulling recent uploads, then fetching per-video stats, then aggregating totals is where “simple zaps” start to creak. If you’re unsure, Talk to an automation expert and get a quick recommendation.
Once this is running, your spreadsheet stops being “research you did” and starts being “research you have.” Honestly, that’s the difference between dabbling in outreach and running a repeatable lead engine.
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.