🔓 Unlock all 10,000+ workflows & prompts free Join Newsletter →
✅ Full access unlocked — explore all 10,000 AI workflow and prompt templates Browse Templates →
Home n8n Workflow
January 22, 2026

YouTube to Google Sheets, content tracking stays clean

Lisa Granqvist Partner Workflow Automation Expert

Your YouTube content data is probably scattered. A little in YouTube Studio, a little in old spreadsheets, a little in someone’s “notes” doc. Then reporting week hits and you’re stuck copy-pasting titles, tags, dates, and thumbnails again (and finding three different versions of “the truth”).

This YouTube Sheets sync automation hits marketing managers first because they’re the ones asked for “quick numbers.” But creators building content systems and agency operators managing multiple channels feel it too. You end up spending about 2 hours just getting data into a usable format, before analysis even starts.

This workflow pulls your video metadata and captions straight from the YouTube API and keeps a Google Sheet updated automatically. You’ll learn what it does, what you need, and how to run it daily so your tracking stays clean.

How This Automation Works

Here’s the complete workflow you’ll be setting up:

n8n Workflow Template: YouTube to Google Sheets, content tracking stays clean

Why This Matters: Content Tracking That Doesn’t Drift

Manual tracking breaks in slow motion. You start with good intentions: a neat spreadsheet, a few columns, maybe a weekly update. Then uploads happen, titles get tweaked, thumbnails change, tags evolve, and captions are added after the fact. The sheet falls behind, and now every report becomes a one-off scramble. Worse, you make decisions on stale data because it “looks close enough.” Honestly, that’s how you miss patterns that could’ve improved your next month of content.

It adds up fast. Here’s where it breaks down.

  • Copy-pasting video details across 20–50 uploads turns into a recurring admin task you keep postponing.
  • Small differences creep in (a changed title, missing tag set, wrong publish date), which makes comparisons unreliable.
  • Captions usually get ignored because downloading SRT files manually is annoying, so you lose a goldmine for SEO and topic analysis.
  • When someone asks for “all videos from last quarter with tags,” you spend your time collecting data instead of interpreting it.

What You’ll Build: A Self-Updating YouTube Content Sheet

This workflow creates a living Google Sheet that mirrors what’s actually on your YouTube channel. You run it manually the first time (or schedule it), and it fetches your channel’s upload playlist, then walks through every page of results so nothing gets skipped. For each video, it writes the basics first (like the YouTube ID and title), then looks up whether a row already exists so it can update instead of duplicating. After that, it pulls richer metadata such as tags, privacy status, upload status, thumbnails, and descriptions. If captions exist, it also downloads the captions in SRT format and stores them right in the sheet.

The workflow starts from your own channel profile, which means you’re not guessing at upload playlist IDs. It then loops through uploads with pagination, updates rows in Google Sheets, and finally branches into captions retrieval only when captions are actually available.

What You’re Building

Expected Results

Say your channel has 40 videos and you publish 3 per week. Manually tracking each new upload takes maybe 10 minutes to collect title, tags, publish date, thumbnail URL, and a caption export, so you burn about 30 minutes a week just on new videos. Then once a month you “refresh” the sheet because older titles and tags changed, which can take another 2 hours. With this workflow: you schedule a daily run, it updates the sheet automatically, and your monthly refresh becomes basically zero.

Before You Start

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • YouTube (Google account) for access to your channel’s uploads.
  • Google Sheets to store and update the video database.
  • Google OAuth credentials (get it from Google Cloud Console APIs & Services).

Skill level: Intermediate. You’ll connect OAuth credentials and match your sheet columns to the workflow fields.

Want someone to build this for you? Talk to an automation expert (free 15-minute consultation).

Step by Step

A manual run or schedule kicks things off. The included Manual Trigger is perfect for your first test run. After that, you can swap it for a Cron trigger so the sheet stays current without anyone remembering to press a button.

Your channel profile is fetched first. Using an HTTP Request to the YouTube API, the workflow pulls your channel details and identifies the exact uploads playlist behind your channel. That’s important because it keeps the automation tied to your own uploads, not a hard-coded list that breaks later.

Uploads are retrieved, page by page. Code nodes track pagination and collect video IDs, while a Split Out step iterates through each upload item. At this stage the workflow writes “basic” details to Google Sheets so you get an early, structured list even before deeper enrichment runs.

Rows are updated with full metadata and captions. The workflow looks up existing rows in Google Sheets, checks if the video already exists, then fetches full metadata for what’s missing or needs refresh. It also requests a captions index and only downloads SRT text when captions are available, then saves that into the correct row.

You can easily modify the columns you store to include things like categoryId or max resolution thumbnails based on your needs. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Manual Trigger

This workflow starts manually so you can validate data pulls before scheduling or cloning for production use.

  1. Add the Manual Run Trigger node as the workflow trigger.
  2. Keep default settings (no parameters required) so you can click Execute Workflow to test.

Step 2: Connect YouTube API and Initialize Settings

These nodes fetch the channel uploads playlist and initialize pagination variables for looping through video items.

  1. Open Fetch Channel Profile and set URL to =https://www.googleapis.com/youtube/v3/channels.
  2. Under Query Parameters, set part to contentDetails and mine to true.
  3. Credential Required: Connect your googleOAuth2Api credentials in Fetch Channel Profile.
  4. Open Initialize Settings and set JSON Output to { "per_page": 50, "current_page": 0, "nextPageToken":"", "playlistId": "{{ $json.items[0].contentDetails.relatedPlaylists.uploads }}", "ids":"" }.
Tip: Make sure your YouTube account has access to the channel you want to sync; the mine=true query only works for authenticated accounts.

Step 3: Set Up Paging and Upload Retrieval

These nodes iterate pages of uploads and capture basic video IDs and publish dates.

  1. In Iterate Paging Vars, keep the provided JavaScript Code to increment current_page and carry forward nextPageToken and aggregated IDs.
  2. Configure Retrieve Upload Items with URL =https://www.googleapis.com/youtube/v3/playlistItems and set query params: part contentDetails, maxResults {{ $json.per_page }}, playlistId {{ $json.playlistId }}, pageToken {{ $json.nextPageToken }}.
  3. Credential Required: Connect your googleOAuth2Api credentials in Retrieve Upload Items.
  4. Set Expand Upload List to split Field To Split Out as items.

Step 4: Connect Google Sheets and Manage Paging Logic

This step writes basic upload data, aggregates IDs, and determines whether another page should be fetched.

  1. In Update Sheet Basics, set Operation to appendOrUpdate and map columns: published{{ $json.contentDetails.videoPublishedAt }}, youtube_id{{ $json.contentDetails.videoId }}.
  2. Credential Required: Connect your googleSheetsOAuth2Api credentials in Update Sheet Basics.
  3. In Aggregate Video IDs, keep the JavaScript to concatenate unique IDs into ids.
  4. Configure Paging Condition Check to compare leftValue {{ $json.current_page }} with rightValue {{ Math.ceil($('Retrieve Upload Items').last().json.pageInfo.totalResults / $('Retrieve Upload Items').last().json.pageInfo.resultsPerPage) }}.
  5. Open Lookup Sheet Rows and select your Document ID and Sheet Name; keep filtersUI lookup columns for captions, privacyStatus, and uploadStatus.
  6. Credential Required: Connect your googleSheetsOAuth2Api credentials in Lookup Sheet Rows.
  7. In Row Presence Check, keep the condition {{ $json }} notEmpty to proceed only when rows are found.
⚠️ Common Pitfall: Replace all [YOUR_ID] placeholders in Update Sheet Basics and Lookup Sheet Rows with your actual Google Sheets document and sheet IDs.

Step 5: Set Up Video Metadata Enrichment

This path fetches video metadata and updates the details in your Google Sheet.

  1. In Fetch Video Metadata, set URL to https://www.googleapis.com/youtube/v3/videos and query params: part snippet,status, id {{ $json.youtube_id }}.
  2. Credential Required: Connect your googleOAuth2Api credentials in Fetch Video Metadata.
  3. Configure Expand Video Items to split Field To Split Out as items.
  4. In Update Sheet Details, set Operation to appendOrUpdate and map columns: tags{{ $json.snippet.tags }}, title{{ $json.snippet.title }}, maxres{{ $json.snippet.thumbnails.maxres.url }}, categoryId{{ $json.snippet.categoryId }}, youtube_id{{ $json.id }}, description{{ $json.snippet.description }}, uploadStatus{{ $json.status.uploadStatus }}, privacyStatus{{ $json.status.privacyStatus }}.
  5. Credential Required: Connect your googleSheetsOAuth2Api credentials in Update Sheet Details.

Step 6: Configure Captions Download and Storage

These nodes check for captions, download them as SRT text, and store the content back in the sheet.

  1. In Fetch Captions Index, set URL to https://www.googleapis.com/youtube/v3/captions with query param videoId{{ $json.youtube_id }}.
  2. Credential Required: Connect your googleOAuth2Api credentials in Fetch Captions Index.
  3. In Captions Available Check, keep the condition {{ $json.items[0].id }} notEmpty.
  4. Open Download Captions Text and set URL to =https://www.googleapis.com/youtube/v3/captions/{{ $json.items[0].id }}, with query params tfmt srt and alt media; add header Accepttext/plain; charset=UTF-8.
  5. Credential Required: Connect your googleOAuth2Api credentials in Download Captions Text.
  6. In Update Sheet Captions, set Operation to appendOrUpdate and map captions{{ $json.data }} and youtube_id{{ $('Update Sheet Details').item.json.youtube_id }}.
  7. Credential Required: Connect your googleSheetsOAuth2Api credentials in Update Sheet Captions.

Step 7: Test and Activate Your Workflow

Run a manual test to verify YouTube data sync and confirm sheet updates before enabling the workflow for production use.

  1. Click Execute Workflow on Manual Run Trigger to run a full test.
  2. Confirm that Update Sheet Basics appends or updates youtube_id and published values.
  3. Verify Update Sheet Details writes metadata fields like title, privacyStatus, and uploadStatus.
  4. If captions exist, ensure Update Sheet Captions writes captions text to the matching youtube_id.
  5. Once validated, toggle the workflow to Active to use it in production or duplicate it to add a schedule trigger.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Troubleshooting Tips

  • Google (YouTube + Sheets) OAuth credentials can expire or need specific permissions. If things break, check the credential status inside n8n’s Credentials tab first, then confirm scopes in Google Cloud Console.
  • If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
  • Caption downloads can fail for private videos or videos without caption tracks. Turn on “Continue on Fail” for the captions branch if you’d rather keep syncing metadata than have one edge case stop the whole run.

Quick Answers

What’s the setup time for this YouTube Sheets sync automation?

About 30 minutes if your Google OAuth is ready.

Is coding required for this YouTube Sheets sync?

No. You’ll authenticate Google, pick your Sheet, and confirm the “Videos” tab columns match what the workflow writes.

Is n8n free to use for this YouTube Sheets sync workflow?

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 costs if you enable AI features, but this workflow’s core sync can run without OpenAI.

Where can I host n8n to run this automation?

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.

Can I modify this YouTube Sheets sync workflow for different use cases?

Yes, and you should. You can add columns by editing the Set/Edit Fields step and the Google Sheets “appendOrUpdate” mappings, then extend the HTTP Request that fetches video details to include fields like categoryId or statistics. Some teams also disable the captions branch to speed things up, then run a separate weekly captions pull for only new videos.

Why is my YouTube connection failing in this workflow?

Most of the time it’s OAuth. Reconnect your Google credential in n8n, confirm the YouTube Data API v3 is enabled in Google Cloud, and make sure the consent screen and scopes match what the node requests. If it fails only on captions, that’s often a permissions issue (private videos) or simply that no caption track exists for that upload.

What volume can this YouTube Sheets sync workflow process?

It can handle hundreds of videos, but the first full sync will take longer because it paginates through your entire uploads playlist.

Is this YouTube Sheets sync automation better than using Zapier or Make?

For a full-channel backfill plus ongoing updates, usually yes. Zapier and Make are great for “new video posted → do one thing,” but they get clunky when you need pagination, row lookups, and conditional branches for captions. n8n handles that logic cleanly, and self-hosting avoids per-task pricing when you run daily. If you only need a simple two-step alert, those tools can be quicker to click together. Talk to an automation expert if you want a recommendation for your setup.

Once this is running, your spreadsheet stops being a “project” and becomes infrastructure. The workflow keeps the data straight so you can focus on decisions, not data wrangling.

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.

Lisa Granqvist

Workflow Automation Expert

Expert in workflow automation and no-code tools.

×

Use template

Get instant access to this n8n workflow Json file

💬
Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Launch login modal Launch register modal