🔓 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

Meta Ads to Google Sheets, creative insights logged

Lisa Granqvist Partner Workflow Automation Expert

You can stare at Meta Ads results all day and still not know why one creative wins and another dies. The worst part is the “analysis” usually turns into a messy mix of opinions, Slack debates, and rewatching videos you’ve already seen.

This is where performance marketers feel the pain first, but agency owners and in-house analysts run into it too. With Meta creative insights automation, you turn every image and video into a searchable dataset (labels, on-screen text, even transcripts) without manually tagging anything.

You’ll see exactly how this workflow pulls active ads, analyzes each asset with Google’s AI, and logs clean rows into Google Sheets so you can spot patterns faster.

How This Automation Works

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

n8n Workflow Template: Meta Ads to Google Sheets, creative insights logged

Why This Matters: Knowing Why Ads Win (Not Just That They Win)

Most creative “analysis” breaks the moment you try to scale it. One person watches five videos and writes “strong hook” in a doc. Someone else flags “UGC vibe” because it feels right. Meanwhile, your account is running dozens (or hundreds) of variations, and the actual reasons behind performance are hiding inside the creative itself: objects shown, logos detected, on-screen text, and spoken phrases. Pulling that out by hand is slow, honestly boring, and easy to get wrong when you’re rushing between launches.

The friction compounds. Here’s where it breaks down when you keep it manual.

  • People tag creatives inconsistently, so you can’t trust trends from one week to the next.
  • Watching and labeling even 20 ads takes about 2 hours, and that’s before anyone copies notes into a sheet.
  • You end up optimizing what you can measure easily (CTR, thumbstop), not what actually appears in the creative.
  • When an ad spikes, you can’t quickly answer “what changed,” which slows down iteration.

What You’ll Build: Automatic Creative Deconstruction Logged to Sheets

This workflow runs on a schedule (weekly is common, but daily works too) and pulls active ads from a Meta campaign you choose. Each creative is inspected and routed down the right path: videos go through Google’s Video Intelligence pipeline, and images go through Google Vision. The workflow downloads the asset, converts it into a format the APIs can analyze, and requests the parts marketers actually care about: labels/objects, text detection (what’s on screen), and speech transcription for videos. When the analysis completes, it parses the messy API response into clean, standardized rows and appends them to your Google Sheet. If something fails, it doesn’t silently drop data; it writes a clear error record to an “errors” tab so you can fix the root cause and rerun confidently.

The workflow starts with scheduled ingestion from Meta Ads. Then it splits by creative type (video vs. image) and runs the matching Google AI analysis. Finally, everything lands in Google Sheets as structured fields you can filter, pivot, and correlate with performance.

What You’re Building

Expected Results

Say your campaign has 40 active creatives and your team tries to do a weekly review. Manually, if you spend about 3 minutes per ad to watch/scan, tag labels, note on-screen text, and paste into Sheets, that’s roughly 2 hours, every week. With this workflow, you spend a few minutes confirming the campaign ID and letting the scheduled run process the batch in the background (with some waiting while Google finishes video jobs). The sheet is ready when you are, and the “errors” tab tells you what needs attention instead of forcing you to hunt.

Before You Start

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Meta Ads for fetching active ads and creative URLs.
  • Google Sheets to store insights and error logs.
  • Google Cloud API access (enable Vision API and Video Intelligence API in Google Cloud Console)

Skill level: Intermediate. You’ll connect credentials, enable Google APIs, and map a spreadsheet with the right headers.

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

Step by Step

A scheduled run pulls your campaign’s active ads. The workflow starts at the time you choose (for example, Monday morning). It uses your campaign ID to fetch active advertisements from Meta so the dataset stays current.

Each creative is classified as video or image. An IF check routes videos to the Video Intelligence path and images to the Vision path, so you get the right kind of analysis instead of one-size-fits-none output.

Google AI analyzes what’s actually inside the creative. Videos get label detection plus on-screen text detection and speech transcription, with a wait-and-check loop until the async job completes. Images get label, object, logo, and text detection in a single call, then the workflow formats the response into consistent fields.

Google Sheets becomes your creative intelligence database. Every annotation is appended as a row with IDs (campaign, ad, creative), the annotation type, the label/text, confidence, and timestamps for videos. Any failures (missing image links, API issues) are written to an errors sheet so you can fix problems without losing the full run.

You can easily modify the schedule frequency to match your testing pace based on your needs. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Schedule Trigger

This workflow begins on a daily schedule using the trigger node and then tags the campaign context for downstream requests.

  1. Open Scheduled Morning Trigger and set the schedule to run at 9 (the node is configured to trigger at 9 AM).
  2. Open Assign Campaign Identifier and confirm the assignment for campaign_id is set to campaign_id.
  3. Ensure the connection from Scheduled Morning Trigger to Assign Campaign Identifier is in place.

Tip: If you want a different schedule, adjust the hour in Scheduled Morning Trigger to match your timezone and expected reporting window.

Step 2: Connect Facebook Graph API

These nodes pull ad creatives and video source data from Meta. Make sure your Facebook credentials are connected.

  1. Open Fetch Active Advertisements and set Node to {{ $json.campaign_id }} with Edge set to ads and Graph API Version set to v22.0.
  2. Credential Required: Connect your facebookGraphApi credentials in Fetch Active Advertisements.
  3. Open Retrieve Video Source Link and set Node to {{ $json.data.creative.object_story_spec.video_data.video_id }} with Graph API Version set to v23.0.
  4. Credential Required: Connect your facebookGraphApi credentials in Retrieve Video Source Link.

⚠️ Common Pitfall: Missing permissions for ads or video fields will cause empty data and break downstream logic. Ensure your Meta app has ads_read and read_insights scopes.

Step 3: Set Up Creative Expansion and Routing

This segment expands the ad list and routes creatives into video and image paths.

  1. In Expand Items, set Field To Split Out to data and Include to allOtherFields.
  2. In Detect Video Creative, confirm the IF condition checks for {{ $json.data.creative.object_story_spec.video_data.video_id }} existing.
  3. In Validate Image Link, ensure the IF condition checks for {{ $json.data.creative.image_url }} existing before fetching images.
  4. Confirm the execution path: Fetch Active AdvertisementsExpand ItemsDetect Video Creative and the image branch to Validate Image Link.

Step 4: Set Up Video Analysis Loop

This loop fetches video files, encodes them, submits them for analysis, and waits for results.

  1. Open Fetch Video File and set URL to {{ $json.source }}.
  2. In Encode Video to Base64, set Operation to binaryToPropery.
  3. In Initiate Video Analysis, set URL to https://videointelligence.googleapis.com/v1/videos:annotate and keep the JSON body with {{ $json.data }}.
  4. Credential Required: Connect your googleApi credentials in Initiate Video Analysis.
  5. In Pause 30 Seconds, set Unit to seconds and Amount to 30 before Check Analysis Status.
  6. In Check Analysis Status, set URL to =https://videointelligence.googleapis.com/v1/{{ $('Initiate Video Analysis').item.json.name }}.
  7. Credential Required: Connect your googleApi credentials in Check Analysis Status.
  8. Note the parallel execution: Ready Status Check outputs to both Pause 3 Seconds and Map Video Metadata in parallel.

Tip: If analysis takes longer than expected, increase the Pause 30 Seconds value or adjust the loop handling in Batch Video Loop.

Step 5: Set Up Image Analysis

This path processes image creatives and submits them to Google Vision for enrichment.

  1. In Fetch Image File, set URL to {{ $json.data.creative.image_url }}.
  2. In Encode Image to Base64, set Operation to binaryToPropery.
  3. In Initiate Image Analysis, set URL to https://vision.googleapis.com/v1/images:annotate and keep the JSON body with {{ $json.data }}.
  4. Credential Required: Connect your googleApi credentials in Initiate Image Analysis.
  5. In Map Image Metadata, ensure the fields reference: {{ $('Assign Campaign Identifier').item.json.campaign_id }}, {{ $('Detect Video Creative').item.json.data.id }}, {{ $('Detect Video Creative').item.json.data.creative.id }}, {{ $('Detect Video Creative').item.json.data.name }}, and {{ $('Fetch Image File').item.json.data.creative.image_url }}.

Step 6: Set Up Insight Processing and Output

Transform the API responses into rows and append them to Google Sheets.

  1. Review Transform Video Insights and Transform Image Insights to ensure the code outputs standardized fields like annotation_type, label_or_text, and processed_at_utc.
  2. Open Append Insight Rows and confirm it is set to Operation append.
  3. Credential Required: Connect your googleSheetsOAuth2Api credentials in Append Insight Rows.
  4. Set Document ID and Sheet Name in Append Insight Rows (replace [YOUR_ID] placeholders).

⚠️ Common Pitfall: Leaving [YOUR_ID] placeholders in Append Insight Rows or Append Error Records will cause append failures.

Step 7: Add Error Logging

When video analysis fails or an image URL is missing, the workflow records error details in Google Sheets.

  1. In Prepare Video Error Log, confirm error_type is set to VIDEO_ANNOTATION_FAILED and error_message to {{ $json.error.message }}.
  2. In Prepare Image Error Log, confirm error_type is set to NO_IMAGE_URL and error_message to Image URL or video_id not found .
  3. Open Append Error Records and set Operation to append.
  4. Credential Required: Connect your googleSheetsOAuth2Api credentials in Append Error Records.
  5. Set Document ID and Sheet Name in Append Error Records (replace [YOUR_ID] placeholders).

Step 8: Test and Activate Your Workflow

Run a manual execution to confirm end-to-end processing before turning on the daily schedule.

  1. Click Execute Workflow and verify Fetch Active Advertisements returns ad data.
  2. Confirm the video branch loops through Batch Video Loop, triggers Initiate Video Analysis, and exits when Ready Status Check is true.
  3. Confirm the image branch proceeds through Fetch Image FileEncode Image to Base64Initiate Image Analysis.
  4. Verify rows are appended in Append Insight Rows and error cases are appended in Append Error Records.
  5. Once verified, toggle the workflow to Active to enable the scheduled run.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Troubleshooting Tips

  • Meta Ads credentials can expire or require extra permissions. If things break, check your n8n credential connection and Meta Business permissions 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.
  • Google Cloud Vision/Video Intelligence will fail if the APIs aren’t enabled in the right GCP project or billing isn’t set up. Confirm API enablement and quota in Google Cloud Console before tweaking the workflow.

Quick Answers

What’s the setup time for this Meta creative insights automation?

About 30 minutes if your accounts and sheet are ready.

Is coding required for this creative insights logging?

No. You’ll mainly connect credentials and paste in your campaign ID. The workflow’s parsing logic is already packaged in the template.

Is n8n free to use for this Meta creative insights 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 Google Cloud Vision/Video Intelligence API usage, which varies based on how many assets you analyze.

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 Meta creative insights workflow for different use cases?

Yes, and you should. Most people start by swapping the campaign ID in the “Assign Campaign Identifier” / “Set Campaign ID” step, then adjust which Google features are requested in the “Initiate Video Analysis” and “Initiate Image Analysis” HTTP requests. Common tweaks include analyzing only new ads (not all active), logging into a different spreadsheet structure, or adding a Slack/Email summary after the run.

Why is my Google Sheets connection failing in this workflow?

Usually it’s an expired Google credential or the connected Google account doesn’t have access to the target spreadsheet. Double-check the selected spreadsheet and sheet tab inside the “Append Insight Rows” and “Append Error Records” nodes. Also confirm your headers match what the workflow expects, because mismatched columns can look like a “connection” issue when it’s really a write error.

What volume can this Meta creative insights workflow process?

It depends mostly on how many creatives you pull and how long the video analysis jobs take, but most teams run batches of dozens to a few hundred ads per scheduled run without issues.

Is this Meta creative insights automation better than using Zapier or Make?

Often, yes, because this workflow needs branching (video vs. image), looping with waits for async video jobs, and error logging that doesn’t fall apart when one item fails. Zapier and Make can handle parts of it, but multi-step API polling and structured parsing tends to get expensive and fiddly as you scale. n8n also gives you the option to self-host, which matters when you’re processing lots of creatives regularly. If you want to go one step further, you can add a second workflow that merges these annotations with spend, clicks, and conversions for true creative-to-performance correlation. Talk to an automation expert if you want help scoping that.

Once this is running, you stop “reviewing creatives” and start querying them. The workflow handles the tedious tagging so you can focus on making better ads.

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