Blog · Connectors

How to connect Facebook Ads to Looker Studio — every route, and what each one costs

Published September 14, 2026 · Updated October 1, 2026 · 14 min read

There is no Google-built connector for Facebook Ads, and there never will be. If you opened the data source picker in Looker Studio (renamed Data Studio in April 2026), typed "Facebook", and got back a grid of third-party tiles with pricing pages attached, that wasn't a search failure — it's the actual state of the integration. This page lays out the four routes that genuinely exist, what each one costs in money and in maintenance, which of the "free" options are real, and the attribution problem that every route gets wrong by default.

Why there's no native Facebook Ads connector

Looker Studio's catalogue is three catalogues wearing one coat. Google connectors — Search Console, Analytics, Google Ads, Sheets, BigQuery — are first-party and free. Partner connectors are commercial products built and sold by other companies, typically billed per data source per month. Community connectors are things someone published and may or may not still maintain.

Meta Ads lives in the second and third groups, alongside TikTok, LinkedIn, Shopify and Stripe. Meta is a competitor of Google's in advertising; a free first-party pipe into a Google reporting product was never a plausible product decision. We wrote the long version of that argument in no Looker Studio connector for your source.

The practical consequence: the moment a source needs a partner connector, its cost stops scaling with how much data you have and starts scaling with how many sources you have. A five-channel report costs five times more to keep alive than a one-channel report, and the data hasn't grown at all.

The four routes that actually exist

1. A paid partner connector

Supermetrics, Windsor.ai, Catchr, Porter, Dataslayer and others all sell this. You authorize, pick the ad account, and Facebook data shows up in the picker as though it were native. This is the fastest route to a working chart, and for one awkward source that matters daily it's the right call.

What it costs beyond the subscription: a vendor relationship per source, an OAuth grant that expires and has to be re-approved, a status page to check when the chart goes blank, and pricing tiers that often key off the number of ad accounts — which is the exact dimension an agency grows along.

2. A community connector

Free, listed in the same gallery, and the reason many people think the problem is solved. The tradeoff is real: you're granting an unknown third party a token to your ad account, and there is no obligation on anyone to update it when Meta ships a breaking Marketing API version. The failure mode isn't an error message — it's a dashboard that keeps rendering yesterday's shape with today's date while returning nothing new.

3. Export from Ads Manager into Sheets

Also free, works today, and quietly the most common thing people actually do. Ads Manager exports a CSV, the CSV goes into a Google Sheet, and Looker Studio reads the Sheet through a first-party connector. It rots in three predictable ways: every refresh is a human remembering to re-export, every column change from Meta breaks a formula three tabs deep, and the dashboard gives no signal at all that the numbers behind it are eleven days old.

4. Land it in BigQuery first

The "do it properly" answer and genuinely correct at warehouse scale. But it moves the problem rather than removing it: something still has to write Facebook data into BigQuery, and that something is either an ELT vendor billed per connector — the connector tax, re-bought one layer down — or pipeline code you now own and debug. For a marketing dataset measured in millions of rows rather than billions, it's several sizes too big; we argued that case in the smallest marketing data warehouse that actually works.

What each route costs (prices checked October 1, 2026)

RouteMoneySetupHow it refreshesWhat breaks it
Supermetrics (partner connector)Starter €39 a month billed yearly or €49 monthly: 3 data sources, 3 accounts per source, 1 user; 14-day trial (pricing)MinutesOn report load, from SupermetricsEach extra source or account moves you up a tier
Windsor.ai (partner connector)Basic $19 a month billed yearly or $23 monthly: 3 data sources, 75 accounts, daily refresh. The free plan keeps 30 days of history (pricing)MinutesDaily on Basic; hourly from Standard ($99 / $118)The free plan's 30-day history
Community connectorFreeMinutesVaries by connectorAn unmaintained connector after a Meta API version change
Ads Manager export → Google SheetsFreeTen minutes, then every refreshOnly when someone re-exportsForgetting; a renamed column
BigQuery Data Transfer ServiceBigQuery's paid Facebook Ads connector plus storage and queriesA Cloud project, a Meta developer app, a tokenDaily, re-reading the last 30 daysA user token that expires after 60 days
TableBI (not a Looker Studio connector)Free for one source and one live dashboardMinutes for a CSV; the live Meta connector is in betaLive sync re-pulls the latest 28 days; a CSV is as fresh as its exportIt does not feed Looker Studio at all

Catchr, Porter Metrics, Dataslayer and Power My Analytics sell the same kind of connector; their pricing pages are worth reading for the same three numbers: data sources, accounts per source, and refresh frequency. The BigQuery row comes from Google's Facebook Ads transfer guide; the full costing of that route is in our Meta Ads to Power BI guide, where it works the same way.

Step by step: the free route through Google Sheets

  1. Build the report in Ads Reporting. In Ads Manager open the Reports menu and choose Create custom report, or go to Business tools → Analyze and report → Reports. You need administrator, advertiser or analyst access to the ad account, per Meta's export help page.
  2. Add a daily breakdown. Break the report down by day so every row carries a date; add the Platform breakdown too if you want Instagram on its own line (see the Instagram section below).
  3. Choose the columns once. Pick the metrics in the Metrics tab — amount spent, impressions, link clicks, results — and save the report, so next week's export has the same columns in the same order.
  4. Export. Tick the report and click Export, or open it and click Export. Meta offers .xlsx or .csv; the maximum reporting window is 37 months from the date of the request.
  5. Put it in a Google Sheet. Import the file into a sheet that keeps one tab for this report and nothing else, so Looker Studio's field list doesn't change under you.
  6. Connect the sheet. In Looker Studio (now Data Studio), add data, pick the Google Sheets connector, then the spreadsheet and the tab. Google's data freshness guide says the Sheets connector refreshes every 15 minutes by default — which only matters after someone pastes a new export.
  7. Mark the stale days. Add a text box that says when the export was taken. The numbers for the latest 28 days will still move after it (the attribution section below says why).

Step by step: a partner or community connector

  1. Pick it in the connector gallery. In Looker Studio, add data and search for Facebook Ads. Every tile you see is built by a third party: Google's connector authorization page says community connectors are developed by third parties, not by Google.
  2. Authorize twice. First you allow Looker Studio to use the connector on your behalf; then the connector asks you to sign in to Facebook so it can read your ad account. If a connector asks for a username and password, Google's warning applies: it is not your Google password, and you should be sure you trust the connector's developer.
  3. Choose the ad account and the fields. Add a Date dimension and keep the date range at 28 days or longer for anything you report on.
  4. Know how to revoke it. In Looker Studio's data sources list, open the connector's menu and choose Revoke Access; on the Facebook side, remove the vendor's app from your business integrations.

Instagram Ads: the same four routes, one extra step

Instagram ads are Meta ads, so there is no separate Instagram Ads connector to find. They are bought in the same Ads Manager, billed to the same ad account and reported through the same Marketing API. Every route above that pulls Facebook Ads already pulls your Instagram ads, added into the same campaign totals.

The extra step is the split. Meta reports where an ad ran as a breakdown, not as a separate account: in Ads Manager it is Breakdown → By delivery → Platform, and in the Marketing API it is the publisher_platform breakdown, which Meta documents as the platform the ad was shown on — Facebook, Instagram or Audience Network (Meta's breakdowns reference). A pull at campaign level without that breakdown gives you Facebook and Instagram added together, and Looker Studio has no way to separate them afterwards.

  • Partner connector: add the platform (publisher platform) dimension to the chart. A connector that doesn't expose it cannot split Instagram out.
  • Sheets export: set the Platform breakdown in Ads Manager before exporting, so the CSV carries one row per platform.
  • TableBI: the live Meta Ads connector (beta) syncs at campaign level, so Instagram spend and results sit inside the campaign totals without a platform split. An Ads Manager export with the Platform breakdown keeps that column: TableBI stores every CSV column it has no shared definition for in meta_ads_raw, where you can group by it.

Facebook Page Insights and public page data are a different pipe

Organic Facebook data — a Page's reach, followers, posts and engagement — does not come through any Facebook Ads connector. It belongs to the Page rather than the ad account, it sits behind a different permission, and connector vendors sell it as a separate source. Supermetrics, for example, lists Facebook Insights for Pages you manage and Facebook Public Data for public posts from Pages you don't, as two connectors distinct from Facebook Ads.

"Facebook public data" is the narrower of the two. It exists for benchmarking other Pages from what they publish, and Supermetrics' own documentation says data is available for approximately 600 ranked, published posts per year, with top-level comments only (Supermetrics docs).

The free route mirrors the ads one: in Meta Business Suite, the Export button in Insights downloads the insights you are viewing as a file (Facebook Help Center), and a Google Sheet holding that file reads into Looker Studio like any other Sheet. TableBI does not connect Page Insights: its Meta connector covers ads only.

"Connect Facebook Ads to Looker Studio free" — honestly

A lot of people arrive at this problem with the word free attached, so it deserves a straight answer rather than a funnel. Two of the four routes above cost nothing in cash: the community connector and the Sheets export. Both are legitimate, and both pay for themselves in a currency other than money.

The community connector charges you in trust and fragility — an unknown party holds a token to your ad account, and nobody owes you a fix when the API version rolls. The Sheets route charges you in attention — roughly ten minutes a week forever, plus the risk that someone makes a budget call on a stale tab. If your reporting is one account and one monthly deck, the Sheets route is genuinely fine and you should stop reading here. If it's several accounts, weekly, for people who act on the numbers, the free routes are the expensive ones.

The thing every route gets wrong by default

This is the failure that survives all four options, so it's worth more attention than the connector choice itself. Meta's numbers for a given day keep changing for up to 28 days. Meta credits a conversion to an ad that was clicked or seen before it, inside the ad set's attribution setting — 1 or 7 days after a click, or 1 day after a view, per Meta's attribution settings page — and its Insights API best practices say insights refresh every 15 minutes and do not change after 28 days of being reported. Since June 10, 2025 the API reports actions on Meta at impression time and actions off Meta at conversion time (action_report_time=mixed), and since January 12, 2026 it no longer returns 7-day and 28-day view-through windows, per Meta's announcement. A tutorial that tells you to pick a 28-day view window is out of date.

Any pipeline that pulls "yesterday only" and appends is therefore permanently wrong in the recent past — and it understates, because the revisions are usually upward. The dashboard shows a soft week that quietly firmed up after nobody looked again. The fix is to re-pull at least the last 28 days on every sync rather than append once, and to make the report say which days are still settling. Ask your connector vendor which window it re-reads; nothing in the Looker Studio canvas will tell you.

The fifth route: skip the canvas

The option that isn't in the picker, because it isn't a picker entry: don't build the report in Looker Studio at all. Hand the same data to a backend that normalizes it into shared cross-channel definitions, and publish the dashboard from there. You give up drag-and-drop. You get back the per-source pricing model, the refresh ritual and the attribution drift in one move.

That's what TableBI does — and to be precise about it: TableBI is not a Looker Studio connector and never puts data into Looker Studio. It keeps the data in its own store, your AI agent queries it, and the dashboard is a TableBI URL. If the report has to live in Looker Studio, use one of the four routes above. The route into TableBI that works for everyone today is the export — the same CSV you'd have pasted into a Sheet, labelled on ingest so it lands in the same tables as your other channels:

terminal
# install once
npm i -g @tablebi/cli
tablebi login
tablebi install

# the Ads Manager export, normalized into shared definitions
tablebi connect csv --file meta-ads-august.csv --platform meta_ads

# check what landed and how it was interpreted
tablebi context --sample

The --platform label isn't cosmetic metadata. It's what lets those rows sit in the same facts table as Google Ads and Search Console, so spend is spend and clicks are clicks regardless of which platform's dialect they arrived in. That's the thing a per-source connector structurally cannot give you: connectors deliver each platform in its own vocabulary and leave the reconciliation to you and a blend configuration that lies.

There's also a live OAuth connector:

terminal
tablebi connect meta_ads
# one ad account: it syncs straight away
# several: it lists them, then rerun with --account <id>

Meta Ads is in beta. Our Meta app hasn't cleared App Review yet, so today only people added to it as test users can authorize their ad accounts. If that's not you, the CSV route above is the one that works — and it lands in exactly the same tables. Search Console, GA4 and Google Ads connect live with no such caveat. If you switch to the live connector after uploading exports, give any further Ads Manager CSVs their own label such as meta_ads_csv: the CLI refuses a CSV that reuses the label of a platform it already syncs live, because the rows would be counted twice.

What you can ask once it's in

The point of getting Facebook out of its own dashboard is the question that needed two dashboards before:

claude code → tablebi
# ROAS across Meta and Google Ads, one query, one definition of ROAS
tablebi ask "SELECT platform, SUM(cost) AS spend,
             roas(SUM(conversion_value), SUM(cost)) AS roas,
             cpa(SUM(cost), SUM(conversions)) AS cpa
             FROM facts WHERE date >= (SELECT MAX(date) FROM facts) - 28
             GROUP BY platform ORDER BY spend DESC"

Two things there are load-bearing. roas() and cpa() are definition macros, so the arithmetic is computed once in the backend rather than re-derived — which is how you avoid the averaging bug that corrupts most hand-built ratio charts (the long version). And the date filter anchors on MAX(date) rather than the calendar, because of the attribution window above: "today" is not a settled row.

Forensic questions drop to the raw altitude instead, where Meta's own fields survive untouched:

claude code → tablebi
tablebi ask "SELECT campaign, SUM(clicks) AS clicks, SUM(impressions) AS imp
             FROM meta_ads_raw
             GROUP BY campaign ORDER BY clicks DESC LIMIT 20"

Every answer carries a trust block — freshness per source plus the caveats that apply, including the trailing re-attribution window. For the reporting workflow rather than the connection, see Meta ads reporting without the spreadsheet grind; for the blended number this all exists to produce, blended ROAS.

Pin it to a live URL

When a view is worth keeping, pin it. What's stored is the query, not a snapshot, so the URL refreshes itself as data syncs:

claude code → tablebi
tablebi pin --title "Paid overview — Meta + Google Ads" \
  --widget "Daily spend::line=SELECT date, SUM(cost) AS spend FROM facts …" \
  --widget "ROAS by platform=SELECT platform, roas(SUM(conversion_value), SUM(cost)) AS roas FROM facts …"
✓ published → https://dk.tablebi.com/d/dsh_…  (public, read-only, self-refreshing)

Here is a live dashboard on real data you can open now: Search Console totals across the TableBI founder's own sites. It is a different dashboard from the one described above, published the same way, and it re-runs its queries as the sources sync (what the demo shows, and what it doesn't):

Errors you will run into

What you seeWhyWhat to do
Last week's conversions are lower than Ads Manager shows todayThe copy was taken before Meta finished attributing; numbers settle after 28 daysRe-pull at least 28 days each refresh; compare with the same attribution setting
Totals differ from Ads Manager for the same datesDifferent attribution setting or reporting time; or a different time zoneMatch the ad set attribution setting; each ad account reports in its own time zone and currency
The chart went blank after a few weeksThe Facebook authorization behind the connector expired or was removedReconnect in the vendor's app; Meta's long-lived user tokens generally last about 60 days
A connector asks for a username and passwordA community connector with its own loginGoogle says this is not your Google password; only continue if you trust the developer
Facebook and Google Ads won't combine cleanlyA blend joins up to five data sources on equal field values onlyBlend on Date (and a campaign key you control), or normalize the two before charting
The Sheets chart doesn't show the new exportCached dataAn editor can use More options → Refresh data; the default freshness is 15 minutes

Blending limits are from Google's how blends work page; the token lifetime from Meta's long-lived token guide; time zones and currencies are per ad account, as Meta's time zone help page explains.

Picking between them

  • One ad account, monthly deck, Looker Studio is where your team lives → export to Sheets. Free, and the maintenance is small enough to absorb.
  • One awkward source, daily decisions, budget exists → buy the partner connector. It's the fastest path to a chart someone trusts.
  • Several accounts, several channels, weekly → the per-source pricing model is now the dominant cost and the reconciliation is now the dominant work. That's the point where moving off the canvas pays for itself — see one live dashboard across Google Ads and Meta.

Reporting in Power BI instead? It has no Meta connector either, and the same routes, costed for that tool, are in Facebook Ads to Power BI.

FAQ

Is there a free Facebook Ads connector for Looker Studio?

There's no free Google-built one, and there won't be — Meta isn't a Google product. The free options are a community connector from the gallery, which means trusting an unknown maintainer with a token to your ad account, or exporting from Ads Manager into a Google Sheet and reading the Sheet. Everything marketed as a Facebook Ads connector with a support team behind it is a paid partner product.

How do I connect Facebook Ads to Looker Studio without paying?

Export the report from Ads Manager as CSV, put it in a Google Sheet, and connect the Sheet with Looker Studio's first-party Sheets connector. It works immediately and costs nothing in cash. The cost is that every refresh is manual and the dashboard gives no indication when the underlying numbers have gone stale.

Why do my Facebook Ads numbers change after I've already reported them?

Meta credits conversions to earlier clicks and views inside each ad set's attribution setting, and says its insights do not change after 28 days of being reported, so the latest 28 days keep moving. Any pipeline that pulls yesterday once and appends is permanently wrong in the recent past. The fix is re-pulling at least the last 28 days on every refresh and labelling which days are still settling.

Can I put Facebook Ads and Google Ads in the same report?

In Looker Studio you'd blend them, which caps at five data sources and gives you join semantics rather than SQL — and the two platforms don't agree on what a conversion or a click is, so the blend reconciles fields that were never comparable. Normalizing both into shared definitions first, then querying once, avoids the whole class of problem.

How do I connect Instagram Ads to Looker Studio?

Use any Facebook Ads route: Instagram ads run through the same Meta ad account, so the same connector or Ads Manager export already contains them. To see Instagram on its own, add the platform breakdown (publisher_platform in the Marketing API, Breakdown → By delivery → Platform in Ads Manager); without it, Facebook and Instagram arrive added together.

Can I connect Facebook Page Insights or public page data to Looker Studio?

Yes, but not through a Facebook Ads connector. Organic Page data needs a separate Page Insights source, which connector vendors sell apart from their ads connector, or a free file export from Meta Business Suite (the Export button in Insights) read through a Google Sheet. Public data from Pages you don't manage is a third, narrower source meant for benchmarking their published posts.

Is Looker Studio now called Data Studio?

Yes. Google rebranded Looker Studio as Data Studio on April 16, 2026, and the paid edition is now Data Studio Pro (Data Studio release notes). Google's release notes describe the change as a rebrand plus a redesigned home page.

Can I skip Looker Studio entirely?

Yes. TableBI takes the Ads Manager export directly with tablebi connect csv --file export.csv --platform meta_ads, normalizes it into the same tables as Search Console, GA4 and Google Ads, and publishes a live read-only dashboard URL with one tablebi pin command. There's no picker to be absent from, because a CSV is a first-class source rather than a fallback.

Sources

Each source was read on October 1, 2026.

Try it

Put Meta next to Google Ads without paying per connector.

terminal
npm i -g @tablebi/cli && tablebi install