Data Analysis and Reporting in Marketing

How to Connect Meta Ads to Google Sheets: 3 Methods Compared (2026)

Adela
April 22, 2026
Connect Meta Ads to Google Sheets: Stop CSV Exports (2026)

Most Meta advertisers still export weekly reports by hand: open Ads Manager, pick the date range, select columns, download CSV, paste into the weekly dashboard, clean headers. Twenty minutes per account on a good day. Agencies running five or more clients can burn half a morning before anyone analyzes the numbers.


This guide walks through the three methods to connect Meta Ads to Google Sheets in 2026: the free manual CSV route, the Google Apps Script + Meta Marketing API route for developers, and Dataslayer for scheduled no-code reporting. Compare setup time, refresh options, and scheduling, and pick the one that matches your workload.

Which method should you choose?

Before we dive into each method, here is the decision matrix. Pick the row that matches your constraints.

Criterion Manual CSV export Apps Script + API Dataslayer
Setup time 0 (just export) 1–2 hours 2 minutes
Cost Free Free Free plan + paid tiers
Refresh frequency Manual each time Scheduled via triggers Hourly, daily, weekly, or every X hours (plan-based)
Multi-account in one sheet No (one export per account) Yes (with code) Yes (native)
Skill level needed Basic JavaScript + Graph API None
Custom metrics / breakdowns Limited to Ads Manager columns Full Marketing API access Full UI picker
Best for Solo advertisers, one-off reports Analysts, custom pipelines Agencies, teams, recurring reports

Rule of thumb: if you have one or two ad accounts and refresh weekly, the manual CSV route is fine. If you manage multiple clients, need daily refresh, or combine Meta with other channels in a single view, a scheduled connector removes the recurring manual work.

Method 1: Manual CSV export from Meta Ads Manager

This is the free option that comes with Meta Ads Manager itself. No setup, no code, no third-party tools.

Setup

  1. Open Meta Ads Manager at business.facebook.com.
  2. Pick the ad account, date range, and level (Account, Campaign, Ad Set, or Ad).
  3. Customize columns: click the Columns menu and pick the metrics and breakdowns you need.
  4. Click Export → Export table data → CSV (.csv).
  5. Open Google Sheets, go to File → Import → Upload, select the downloaded CSV.
  6. Choose "Replace current sheet" or "Insert new sheet", depending on whether this is a fresh report or an update.

What it does well

  • Zero cost.
  • No account linking or authentication tokens to manage.
  • Perfect for ad hoc pulls.

Where it breaks

  • No scheduling. Every weekly report repeats all 6 steps.
  • One account at a time. Comparing 4 clients means 4 exports and 4 imports.
  • Column drift. If you or a teammate changes the Columns customization between exports, your Sheets template breaks silently.
  • Breakdowns force separate exports. Age + Gender breakdown and Country breakdown can't coexist in one export.
  • Size limits. Very large date ranges combined with granular breakdowns hit Meta's export size cap and cut off rows.


If any of those constraints hurt, the next two methods solve them differently. The first requires JavaScript. The second is an add-on built for recurring multi-account reporting, covered in Method 3.

Skip the Monday CSV routine

Manual CSV export works for one account and patience. But if you track multiple Meta Ads accounts, or want to combine Meta with Google Ads, LinkedIn, and GA4 in the same sheet, Dataslayer pulls all of them on a schedule. No exports, no broken formulas.

Install Free Add-on

Method 2: Google Apps Script + Meta Marketing API

If you are comfortable with JavaScript and API authentication, Apps Script gives you full control. You call the Meta Marketing API Ads Insights endpoint directly, decide exactly which fields to pull, apply your own transformations, and schedule the script to run automatically.

Setup outline

  1. Create a Meta App at developers.facebook.com with the Marketing API product enabled.
  2. In your Meta Business Manager, create a system user and generate a long-lived access token with the ads_read permission.
  3. In Google Sheets, open Extensions → Apps Script.
  4. Write a function that calls UrlFetchApp.fetch() against the Insights endpoint with your ad account ID, fields, date range, and access token.
  5. Parse the JSON response and write rows to the sheet.
  6. Add an installable time-driven trigger to run it daily or weekly.

Minimal example

function pullMetaAds() {
 const ACCOUNT_ID = 'YOUR_AD_ACCOUNT_ID'; // format: act_XXXXXXXXXX
 const ACCESS_TOKEN = 'YOUR_LONG_LIVED_TOKEN';
 const VERSION = 'v22.0'; // check developers.facebook.com for the current version

 const url = `https://graph.facebook.com/${VERSION}/${ACCOUNT_ID}/insights` +
   `?fields=campaign_name,spend,impressions,clicks,ctr,actions` +
   `&date_preset=last_30d` +
   `&level=campaign` +
   `&access_token=${ACCESS_TOKEN}`;

 const response = UrlFetchApp.fetch(url);
 const data = JSON.parse(response.getContentText()).data;

 const sheet = SpreadsheetApp.getActiveSheet();
 sheet.clear();
 sheet.appendRow(['Campaign', 'Spend', 'Impressions', 'Clicks', 'CTR', 'Purchases']);

 data.forEach(row => {
   const purchases = (row.actions || [])
     .find(a => a.action_type === 'purchase')?.value || 0;
   sheet.appendRow([
     row.campaign_name,
     row.spend,
     row.impressions,
     row.clicks,
     row.ctr,
     purchases
   ]);
 });
}

When this makes sense

  • You need a transformation no add-on supports, like joining Meta spend with an internal CRM lead table.
  • You are building an internal tool and code ownership matters.
  • You want zero recurring cost.

The tradeoff

You own the code, which means you also own the breakage. Meta versions its API roughly every quarter and deprecates versions ~2 years later. Access tokens expire. Rate limits kick in on large date ranges or high call frequency. Most marketing teams do not have time to maintain this long-term.

Method 3: Dataslayer for Google Sheets

Dataslayer is a Google Sheets add-on built for marketers and agencies who pull from many sources, not just Meta. The point is scheduled, multi-account, multi-source reporting without writing code.


We built Dataslayer partly to solve this for ourselves: we track our own Meta Ads accounts through the add-on, alongside Google Ads, LinkedIn, and GA4, in one workbook. The setup below is the same one we document for users.

Setup

  1. In Google Sheets, open Extensions → Add-ons → Get add-ons.
  2. Search for Dataslayer and install it.
  3. Open Extensions → Dataslayer → Launch sidebar.
  4. Connect your Meta Ads account (one-time OAuth flow through Facebook Business).
  5. Pick the ad account, metrics, dimensions, breakdowns, and date range in the sidebar.
  6. Click Run query. Data lands in the sheet.
  7. (Optional) Set a refresh schedule for the document from the sidebar: hourly, daily, weekly, or every X hours, depending on your plan. The schedule applies at document level, so all queries in the sheet refresh together. You can skip this step and re-run manually whenever you need fresh data.

What changes vs the two previous methods

  • Multi-account in one sheet. Pull several Meta Ads accounts into the same workbook, one query each (5, 10, or more, depending on your plan's query limit). All of them refresh together on the document schedule.
  • Cross-source joining. In the same sheet, combine Meta spend with Google Ads cost, LinkedIn conversions, and GA4 sessions. Build a blended ROAS view without leaving Sheets.
  • Backfill. Fetch historical Meta Ads data up to the API's current retention limit in a single run (check Meta's documentation for the latest window, since retention rules changed alongside the January 2026 attribution updates).
  • Error visibility. When the Marketing API returns a rate limit error, the sidebar tells you instead of leaving blank cells.
  • Google Sheets is where it starts. The same queries work in Excel and Looker Studio if your workflow moves there.

When Dataslayer isn't the right fit

  • You run ads on one account and refresh once a week. Manual CSV export does that job with no add-on cost.
  • You have zero tolerance for paid tools, even at the free tier. Use manual export or Apps Script.

Common Meta Ads reports you can build in Google Sheets

Once the connection works, the next question is what to pull. Five reports cover most of what advertising teams need week over week.


Weekly campaign performance.
Fields: campaign_name, spend, impressions, clicks, ctr, cpc, actions (purchases or leads). Level: campaign. Date range: last 7 days. The first tab of every client deck.


Ad-level performance.
Fields: ad_name, adset_name, campaign_name, spend, impressions, ctr, cpc, actions. Level: ad. Filter to active ads only. This is where creative signals live.


Creative performance breakdown.
Fields: ad_name, creative_name, spend, impressions, ctr, conversions, purchase_roas. Level: ad. Compare creative themes to see which are scaling.


Audience breakdown.
Fields: spend, impressions, clicks, actions. Breakdowns: age, gender, country, or device_platform. Use one breakdown at a time (Meta limits breakdown combinations).


Blended ROAS view.
Fields: campaign_name, spend, purchase_roas, action_values. Combine with Google Ads cost and GA4-attributed revenue in a second tab to get a true blended-attribution view.


If you would rather not build these from scratch, copy one of the free Meta Ads + Google Sheets templates we publish and plug in your own ad account.

Automate your Meta Ads reporting in Google Sheets

Dataslayer connects Meta Ads plus 50+ marketing and ad platforms to Google Sheets, Looker Studio, Excel, and BigQuery. Schedule refreshes, combine sources in one sheet, and stop exporting CSVs. Free 15-day trial, no credit card required.

Try Dataslayer Free

Troubleshooting: the four errors you will hit

Rate limits. The Meta Marketing API enforces call limits per app and per ad account. If you pull large reports hourly across many accounts, you will hit the cap and see HTTP 613 errors. Fix: reduce query frequency, narrow the fields requested, or use Business Manager tier limits (which are higher than Developer tier).


Attribution window changes.
On January 12, 2026, Meta removed the 7-day view-through (7d_view) and 28-day view-through (28d_view) attribution windows from the Ads Insights API. If your query or dashboard still references these, it will silently return empty or default to the remaining windows. Fix: replace with 7d_click, 1d_view, or the default model. Full breakdown in our Meta Ads attribution window removal guide.


Breakdown combination limits.
Meta does not allow every breakdown to combine with every other. Age + Country works. Age + Gender + Device Platform does not. Fix: split the query by breakdown, or use the Dataslayer sidebar which validates combinations before running.


Token expiration.
System user tokens are long-lived but not eternal. Business Manager may revoke them if security settings change or the user who created them loses access. Fix: set a reminder to regenerate tokens every 6-12 months, or use Dataslayer (OAuth refresh is handled automatically).

Meta Ads in Sheets vs Looker Studio: when to use each

Both tools pull from the same Meta Marketing API. Pick based on the end use, not the data source.

Use case Google Sheets Looker Studio
Weekly client deck Better (export to PDF) Good
Live client dashboard Limited Better
Ad-level analysis with pivots Better Clunky
Creative testing calculations Better (formulas) Limited
Sharing with non-technical stakeholders Neutral Better (visual)
Joining with CRM or warehouse data Better (formulas + IMPORTRANGE) Possible, complex


The honest answer: most agencies need both. Sheets for analysis and client decks, Looker Studio for live dashboards. Dataslayer supports both without rewriting queries.


If you want the dashboard version of what we just built, see our guide to the 10 free Looker Studio templates and the Google Sheets automation guide for formulas that turn raw Meta exports into clean reports.

FAQ

Is it free to connect Meta Ads to Google Sheets?

Yes, two routes are free. Manual CSV export from Ads Manager is free forever. Google Apps Script is free as long as you stay within daily execution quotas and Meta API rate limits. Dataslayer has a free tier that covers small teams and paid tiers for higher volume and more sources.


How often does the data refresh?

Manual CSV export refreshes only when you re-export. Apps Script refreshes on whatever schedule you code. Dataslayer supports hourly, daily, weekly, or every X hours at document level, depending on your plan. The schedule is optional; you can also re-run queries manually whenever you need fresh data.


Can I connect multiple Meta Ads accounts to one sheet?

Not with manual CSV export (one account per export). Apps Script can iterate over account IDs if you write the loop. Dataslayer supports multiple Meta Ads accounts in the same workbook out of the box, which is why agencies use it for client reporting.


Does it work with ad accounts in different currencies?

Yes. Meta reports spend in each account's native currency. Dataslayer includes both native-currency and converted-currency (EUR, USD, GBP, etc.) metrics so you can build blended views without manual conversion.


Why did the 7-day view-through attribution disappear from my report?

Meta removed the 7d_view and 28d_view attribution windows from the Ads Insights API on January 12, 2026. If your old query referenced those windows, switch to 7d_click, 1d_view, or the default attribution model. Your historical data before January 12, 2026 is also affected by the retention limits that landed with the same change.


Can I use this for client reporting?

Yes, and it is one of the most common use cases. Agencies build a master template in Sheets, connect each client's Meta Ads account, and duplicate the sheet per client. Dataslayer speeds this up because the same query definition can point at different ad accounts.

Conclusion

Three methods, three use cases. Manual CSV export covers solo advertisers with one account and patience to export weekly. Apps Script is for analysts who want full control and can write JavaScript plus navigate Meta API versioning. Dataslayer fits agencies, teams, and anyone who needs Meta Ads data in Google Sheets on a schedule, alongside Google Ads, LinkedIn, and the rest of the stack.


What matters is which method matches your recurring workload. If you pull Meta Ads data more than once a week, the time you spend on manual exports has a cost that is easy to underestimate.


Track Meta Ads, Google Ads, and the rest of your stack in one Google Sheet, on a schedule. Try Dataslayer free for 15 days. No credit card required.

CONTACT FORM

RELATED POST

How to Connect Meta Ads to Google Sheets: 3 Methods Compared (2026)

Analyze Google Ads, Meta, and LinkedIn with Claude in One Conversation (2026)

How to Connect GA4 to Google Sheets: 3 Methods Compared (2026)

Our Partners