🔓 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, instant creative scorecards

Lisa Granqvist Partner Workflow Automation Expert

You already have the data. The annoying part is turning it into a decision. Pulling Meta Ads results, cleaning columns, calculating benchmarks, then writing “why this worked” notes is the kind of task that quietly steals your best hours.

If you run paid social as a media buyer, you feel this weekly. A store owner feels it when scaling gets messy. And an agency lead feels it when every client wants “a quick performance read” yesterday. This Meta Ads scorecards automation puts your numbers and analysis in one Google Sheet, consistently.

You’ll set up an n8n workflow that pulls the last 28 days of ad-level performance, computes account benchmarks, and asks Gemini to grade each creative with a practical “HELL YES / YES / MAYBE” verdict plus reasoning.

How This Automation Works

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

n8n Workflow Template: Meta Ads to Google Sheets, instant creative scorecards

Why This Matters: Creative Analysis Gets Skipped

Most Meta accounts don’t fail because “the data isn’t there.” They fail because analysis is inconsistent. One week you look at ROAS. Next week you chase CTR. Then someone asks for cost per purchase by creative, and suddenly you’re exporting CSVs, rebuilding pivot tables, and trying to remember which ads were actually prospecting versus retargeting. It’s not hard work. It’s draining work. And when it’s draining, it doesn’t get done on time, which means you keep spending behind yesterday’s assumptions.

The friction compounds. Here’s where it usually breaks down.

  • You export Meta Ads data, then spend about an hour cleaning naming, columns, and metrics before it’s usable.
  • Benchmarks live in someone’s head, so “good” and “bad” change depending on who’s talking.
  • Creative insights get written in Slack, Notion, or nowhere at all, so you can’t build on what you learned.
  • When you scale spend, manual reporting doesn’t scale with it, and you end up optimizing slower than the account changes.

What You’ll Build: An AI-Powered Meta Creative Scorecard in Sheets

This workflow turns your last 28 days of Meta ad performance into a living scorecard inside Google Sheets. It starts by securely retrieving your long-term Facebook access token (and refreshing it when needed), then pulls ad-level insights from your ad account via an HTTP request. Next, it cleans and standardizes the metrics you actually care about for e-commerce (think ROAS, cost per purchase), filters out irrelevant campaigns, and aggregates performance by creative so you can compare ads fairly. From there, it calculates an account-wide benchmark, then asks Gemini to act like a senior media buyer and grade each creative as “HELL YES,” “YES,” or “MAYBE,” with a short justification. Finally, it writes both the raw data and the AI notes back into your Google Sheet, so the story and the numbers stay together.

The workflow kicks off in n8n, pulls and reshapes Meta Ads insights, then merges each creative’s results with your account benchmark. Gemini generates structured notes per creative, and n8n updates the sheet so you can sort, filter, and make calls fast.

What You’re Building

Expected Results

Say you review creatives once a week across 40 ads. Manually, it’s common to spend about 3 minutes per ad to export, sanity-check metrics, compare to an “average,” and jot notes, which is roughly 2 hours. With this workflow, the pull + sheet update runs in the background and you spend about 10 minutes scanning “HELL YES / YES / MAYBE,” then drilling into the few ads worth action. That’s a real chunk of your week back.

Before You Start

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Google Sheets for storing raw data and scorecards.
  • Google AI Studio (Gemini) to generate structured creative notes.
  • Meta (Facebook for Developers) access token (generate it in Facebook for Developers, then store it in your token database).

Skill level: Intermediate. You’ll be comfortable pasting IDs, connecting credentials, and editing one HTTP request URL safely.

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

Step by Step

A manual run starts the pull. You trigger the workflow in n8n (great for weekly reviews), and it immediately checks your stored long-term token so the Meta API call doesn’t fail mid-run.

Token management happens automatically. The workflow reads your token record (using a database like NocoDB), checks expiry, and refreshes the token if needed. Then it sets the access token as a field n8n can reuse across the rest of the flow.

Meta insights are pulled and cleaned. An HTTP Request node fetches the last 28 days of ad-level results from your ad account. Code steps parse the response into a table, normalize e-commerce metrics, filter to sales-focused campaigns, and aggregate results by creative so you’re not comparing apples to oranges.

Benchmarks and AI notes land in Google Sheets. The workflow computes account benchmarks (like average cost per purchase), merges those benchmarks into each creative record, then Gemini returns a structured verdict and reasoning. n8n appends the raw rows and updates the same sheet with the AI insights.

You can easily modify the “last 28 days” window to 7 days, or change the grading labels to match your team. 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 branches into token management, data fetching, analysis, and AI output.

  1. Add and open Manual Run Trigger.
  2. Leave all fields at their defaults so you can run the workflow on demand.

Step 2: Connect NocoDB for Token Storage

These nodes store and refresh your Facebook long-lived token in NocoDB.

  1. Open Fetch Long-Term Token and set Project ID to [YOUR_ID] and Table to [YOUR_ID].
  2. Credential Required: Connect your nocoDbApiToken credentials in Fetch Long-Term Token.
  3. Open Update Token Record and set Project ID to [YOUR_ID] and Table to [YOUR_ID].
  4. Verify the update mappings in Update Token Record use the expressions {{ $('Fetch Long-Term Token').item.json.Id }}, {{ $json.access_token }}, {{ $json.end_date }}, and {{ $json.current_time }}.
  5. Credential Required: Connect your nocoDbApiToken credentials in Update Token Record.

Token Refresh Decision checks {{ $json.needs_refresh }} from Check Token Expiry to decide whether to call Request Long-Lived Token or use the existing token via Prepare Token Field.

Step 3: Configure Facebook Ads API Requests

This section handles token refresh and pulls 28-day ad insights from Facebook.

  1. In Request Long-Lived Token, keep URL as https://graph.facebook.com/v22.0/oauth/access_token and Method as POST.
  2. Confirm query parameters in Request Long-Lived Token: grant_type fb_exchange_token, plus client_id, client_secret, and fb_exchange_token.
  3. In Fetch 28-Day Ad Insights, set URL to =https://graph.facebook.com/v22.0/act_[YOUR_ID]/insights.
  4. Set Query Parameters in Fetch 28-Day Ad Insights to level=ad, fields=campaign_name,adset_name,ad_name,ad_id,objective,spend,impressions,clicks,actions,action_values,date_start,date_stop, date_preset={{last_28d}}, and limit=500.
  5. Set the Authorization header in Fetch 28-Day Ad Insights to =Bearer {{ $json.accessToken }}.

Set Access Token receives {{ $json.longAccessToken }} from either Prepare Token Field or Extract Long-Term Token before making the API call.

⚠️ Common Pitfall: If Fetch Long-Term Token returns no token or end_date is missing, Check Token Expiry will fail. Ensure your NocoDB record has longTermAccessToken and end_date populated.

Step 4: Set Up Data Parsing, Filtering, and Aggregation

The workflow parses Facebook responses, filters for sales objectives, and aggregates results for analysis.

  1. Keep Parse Insights Table as a Run Once code node to normalize the Facebook response into ad-level records.
  2. In Filter Sales Campaigns, verify the condition objective equals OUTCOME_SALES using {{ $json.objective }}.
  3. Filter Sales Campaigns outputs to both Aggregate by Creative and Compute Account Benchmarks in parallel.
  4. In Order by Spend, sort by total_spend descending to rank top creatives.

Tip: There are multiple code nodes performing transformations and serialization. Keep them as Run Once for All Items to avoid fragmented outputs for the AI step.

Step 5: Configure Sheets Output for Raw and AI Data

Raw and AI-enriched results are written back into Google Sheets.

  1. Open Append Raw Data to Sheets and set Document ID to [YOUR_ID].
  2. Credential Required: Connect your googleSheetsOAuth2Api credentials in Append Raw Data to Sheets.
  3. Order by Spend outputs to both Append Raw Data to Sheets and Serialize All Records in parallel.
  4. Open Update Sheet with AI Insights and set Document ID to [YOUR_ID] and Sheet Name to gid=0.
  5. Confirm the column mappings in Update Sheet with AI Insights use {{ $json.ad_id }}, {{ $json.justification }}, {{ $json.recommendation }}, and {{ $json.performance_category }}.
  6. Credential Required: Connect your googleSheetsOAuth2Api credentials in Update Sheet with AI Insights.

Step 6: Configure AI Analysis and Structured Output

Aggregated ad data and benchmarks are merged, bundled, analyzed by Gemini, and parsed into a structured schema.

  1. Ensure Serialize All Records and Serialize Benchmark Data both feed into Merge Ad and Benchmark Data.
  2. Keep Bundle Data for LLM set to aggregateAllItemData to pass both datasets together.
  3. Open Gemini Chat Engine and confirm Model Name is models/gemini-2.5-pro-preview-06-05.
  4. Credential Required: Connect your googlePalmApi credentials in Gemini Chat Engine.
  5. Open AI Media Buyer Analyst and keep the prompt text as defined, including the input placeholders {{ $json.data[0].all_ads_data_string }} and {{ $json.data[1].benchmarkData }}.
  6. Structured Response Parser is attached as an AI output parser for AI Media Buyer Analyst. Add credentials to Gemini Chat Engine (parent node), not the parser.

⚠️ Common Pitfall: If Bundle Data for LLM is not configured to aggregate all item data, AI Media Buyer Analyst may only receive partial inputs and return incomplete results.

Step 7: Test and Activate Your Workflow

Validate the full run end-to-end before turning it on for production use.

  1. Click Execute Workflow from Manual Run Trigger to run a full test.
  2. Verify that Fetch 28-Day Ad Insights returns a JSON response and Parse Insights Table outputs ad-level records.
  3. Confirm that Update Sheet with AI Insights updates rows matching ad_id with Justification, Recommendation, and Best Performing Ad.
  4. Once results look correct, toggle the workflow to Active so it’s ready for production runs.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Troubleshooting Tips

  • Meta (Facebook for Developers) credentials can expire or lose permissions after account changes. If things break, check the token record in your database and confirm the ad account still has access.
  • If you’re using Wait nodes or any external processing around the AI step, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
  • Gemini prompts that stay “generic” will give you generic advice. Bake in your definition of a winning ad early (offer type, CPA guardrails, angle rules), or you’ll be editing outputs forever.

Quick Answers

What’s the setup time for this Meta Ads scorecards automation?

About 45 minutes if your Meta and Google accounts are ready.

Is coding required for this creative scorecards outcome?

No. You’ll mostly connect accounts, paste IDs, and edit one API request URL.

Is n8n free to use for this Meta Ads scorecards 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 Gemini usage costs, which are usually small for weekly analysis runs.

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 Ads scorecards workflow for different use cases?

Yes, and you should. The easiest swaps are the date range inside the “Fetch 28-Day Ad Insights” HTTP Request node, the campaign filter logic in the “Filter Sales Campaigns” step, and the rubric inside the Gemini prompt used by the AI Media Buyer Analyst chain. Common customizations include grading on MER instead of ROAS, adding separate benchmarks for prospecting vs retargeting, or writing the insights to a new tab per week.

Why is my Google Sheets connection failing in this workflow?

Usually it’s the wrong Google account connected, or the Sheet isn’t shared with the account behind your n8n credentials. Double-check the Google Sheets credential in n8n, then confirm the Document ID matches the target sheet. If it used to work and suddenly doesn’t, re-authenticate the Google connection and try again.

What volume can this Meta Ads scorecards workflow process?

Practically, most accounts can run it weekly without thinking about limits. On n8n Cloud Starter you get a monthly execution cap, and this workflow generally uses a single execution per run (it’s the number of runs that adds up). If you self-host, there’s no execution limit, but very large ad accounts may need a stronger server and careful handling of API pagination.

Is this Meta Ads scorecards automation better than using Zapier or Make?

Often, yes. This workflow needs multi-step data shaping, benchmark calculations, and structured AI output, and n8n handles that kind of branching and “glue work” without turning into an expensive pile of premium tasks. Zapier or Make can still work if you simplify the goal to “export data to Sheets,” but the benchmarking + consistent analysis layer is where they get clunky. Another thing: n8n can be self-hosted, which is nice when you want predictable costs. If you’re on the fence, Talk to an automation expert and we’ll tell you bluntly which route is best.

Once this is running, creative reporting stops being a weekly project and turns into a quick review. The workflow keeps the receipts in Sheets, so your next decision is easier than the last.

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