Blog · Connectors

Facebook Ads (Meta Ads) to Tableau: every route, what each costs, and the refresh setting that keeps it right

Published · 13 min read

Tableau has no built-in Facebook Ads or Meta Ads connector as of September 2026: the connector list in Tableau's technical specifications has no Facebook or Meta entry. Four routes work instead. A partner connector is the quickest: CData sells a Facebook Ads connector that runs inside Tableau Desktop and Server, Coupler.io hands Tableau a link through its Web Data Connector, and Windsor.ai fills a Google Sheet or a database that Tableau reads. Google's BigQuery Data Transfer Service copies Meta's ad reports into BigQuery once a day, and Tableau queries BigQuery live. An Ads Manager export opens in Tableau as a CSV or Excel file. Meta's Marketing API can fill a database you run. Whichever route you pick, one setting decides whether the numbers stay right: Meta keeps revising the last 28 days, so a Tableau extract has to re-read at least that window on every refresh. TableBI is a fifth route of a different kind — not a Tableau connector, but a place where the recurring Meta questions get answered without Tableau. Each route is priced below, in money and in upkeep.

Why there is no Meta tile in Connect

Tableau publishes its connector list on its technical specifications page. On September 30, 2026 the Google entries were Google Analytics, Google BigQuery, Google Cloud SQL, Google Drive and Google Sheets, and the marketing entries included LinkedIn Sales Navigator, Marketo and Salesforce Marketing Cloud. Nothing named Facebook or Meta. Everything else reaches Tableau through a connector someone else builds, a file, or a database in between.

That matters more on Tableau Cloud than on Desktop. CData's own Facebook Ads connector page states that "Tableau Cloud does not support the deployment of custom connectors", so a connector that installs into Tableau Desktop cannot be published to Cloud and refreshed there. On Cloud, Meta data has to arrive through something Cloud already speaks: a database such as BigQuery, or a file in Google Drive.

Route 1 — a partner connector

Three vendors cover most searches for this, and each enters Tableau by a different door. The door decides what works on Tableau Cloud.

  • CData Facebook Ads Tableau connector. Installs into Tableau and connects live or as an extract from Tableau Desktop, Server, Bridge and Prep, per CData's product page, which points Tableau Cloud users to its separate CData Connect AI service instead. As of September 30, 2026 its order page listed a desktop licence at $499 a year for one desktop and one data source, with server licences by quote.
  • Coupler.io. You build the import in Coupler.io, copy its integration URL, and paste it into Tableau's Web Data Connector, according to Coupler.io's Facebook Ads to Tableau guide. Tableau deprecated Web Data Connector 2.0 in the 2023.1 release, and its connector documentation says Tableau Cloud can't refresh a web data connector extract by itself; Tableau Bridge can refresh some. As of September 30, 2026 Coupler.io's pricing page listed Starter at $24 a month billed annually or $32 month to month: 3 accounts, 1 destination, a daily refresh and 5,000 rows per run.
  • Windsor.ai. Its pricing page says Tableau "can be connected via Google Sheets or a database": Windsor.ai writes the Meta data there and Tableau reads it, a sheet through Tableau's Google Drive connector, which Tableau documents for Cloud, Desktop and Prep and which it says supports a limited number of cells, in the millions, per spreadsheet. As of September 30, 2026, Basic cost $19 a month billed annually or $23 month to month for 3 data sources and a daily sync.

What it costs: a subscription for as long as the dashboards exist. What it gets wrong: none of the three changes what Meta returns. They read the same Marketing API, inherit the same revisions and attribution rules described below, and each adds its own ceiling — a licence per desktop, a row cap per run, or a spreadsheet's cell limit.

Route 2 — BigQuery Data Transfer Service, then Tableau’s BigQuery connector

Google's BigQuery Data Transfer Service has a Facebook Ads connector that loads a fixed set of Meta tables — AdInsights, AdInsightsActions, Ads, Campaigns and AdSets among them — into BigQuery, per Google's introduction to Facebook Ads transfers. Tableau then reads BigQuery through its native Google BigQuery connector, and because that connector is Tableau's own, the same data source works on Tableau Cloud.

What Google's transfer guide says it does

  • Transfers run at most once every 24 hours, and a transfer that runs longer than six hours fails.
  • Custom reports are not supported: you get the fixed tables, in Meta's own structure.
  • Each run re-reads a refresh window of up to 30 days, which covers the period in which Meta still revises results.
  • The long-lived user access token expires after 60 days and is renewed by editing the transfer; a Meta system user token is the alternative, and it can be created without an expiry.
  • Since July 6, 2026, the AdInsightsMMM report is temporarily disabled.

Those points are from Google's Facebook Ads transfer guide, last updated September 25, 2026.

What it costs

Facebook Ads is one of BigQuery's paid transfer connectors. BigQuery's pricing page bills its transfer orchestration by slot-hours consumed — $0.06 per slot-hour at the default rate in us-central1 on September 30, 2026 — and suggests planning for at most 20 slot-hours per hour of transfer run time, about $1.20 per run hour. Loading into standard BigQuery tables is free; merge jobs, storage and Tableau's queries are billed at BigQuery's normal rates. Google Ads and GA4 transfers, by contrast, are listed as free.

What it gets wrong: it is a lot of cloud for one ad account — a Google Cloud project with billing, a Meta developer app of the Business type, a token on a 60-day clock — and the tables still need joining in SQL before a Tableau sheet makes sense of them. It suits a team that already runs BigQuery and wants Meta beside its other data.

Route 3 — an Ads Manager export

Every Ads Manager report can be exported as an .xlsx or .csv file, with a maximum reporting window of 37 months, per Meta's help page on exporting reports from Ads Reporting. Break the report down by day first (Breakdown, then By time, in Meta's breakdown guide) so every row carries a date. Tableau opens the file with its text or Excel connector, and a folder of monthly exports can be stacked with a wildcard union — a Tableau Desktop feature that matches file names against a pattern.

Meta can email a recurring report, but only for single-account reports, and only people with permissions on the ad account can open it. Nothing on Meta's side drops the file where Tableau can refresh it.

What it costs: time, every reporting cycle. What it gets wrong: each file freezes the last 28 days at whatever they said on export day, and a union over files exported at different times mixes settled and unsettled days without saying which is which.

Route 4 — the Marketing API, into a database you run

The API route is a script or a pipeline that calls Meta's insights endpoint and writes to a database Tableau already reads — Postgres, Snowflake, BigQuery. The work is the same as anywhere else: a Meta app, a long-lived or system user token (Meta's authorization guide), pagination, rate limits and an API version that retires on a schedule. It is the only route with no vendor in the middle and the most expensive in engineering time; the Meta → Power BI guide walks through the same API in detail.

The refresh setting that keeps Meta data right in Tableau

Meta credits a conversion to an ad that was clicked or seen within the attribution windows set per ad set — 1 or 7 days after a click, 1 day after a view, per Meta's attribution settings page — and it can report that conversion on the day of the ad impression rather than the day of the purchase (the API's action_report_time parameter decides). A purchase made today can therefore change the numbers of a day last week. Meta's insights best practices give the end of it: insights do not change after 28 days of being reported.

The Tableau consequence: an incremental extract refresh only adds rows newer than the last one it saw, so days that Meta revises afterwards stay frozen at their first value. Tableau's extract refresh documentation offers a minimum date range to refresh, which re-extracts previously extracted data to "capture any changes that may have occurred". For any Meta source, set it to at least 28 days — or use a full refresh, or a live connection to a table that is itself re-pulled, as the BigQuery transfer's 30-day window is.

Two more details belong in the data source, not in someone's memory. Since January 12, 2026, Meta's API no longer returns the 7-day and 28-day view-through windows (Meta's announcement), so a workbook built on older exports can show conversions the API will not reproduce. And every ad account has its own currency and time zone (currency, time zone), so spend summed across accounts in different currencies needs a conversion rule before the SUM.

The routes side by side

RouteMoneyTableau CloudUpkeepWhat bites
CData connector$499 a year per desktop; server by quoteNo — custom connectors aren't supported on CloudLicence renewals; installing on every machine and serverDesktop, Server, Bridge and Prep only
Coupler.io via Web Data ConnectorFrom $24 a month billed annuallyCloud can't refresh a WDC extract by itselfPlan limitsA connector type Tableau deprecated; 5,000 rows per run on Starter
Windsor.ai via Sheets or a databaseFrom $19 a month billed annuallyYes, through Google Drive or the databaseA sheet or database in the middleSpreadsheet cell limits on the Sheets path
BigQuery Data Transfer ServiceSlot-hours per transfer run, plus BigQuery storage and queriesYes, through the BigQuery connectorA 60-day token or a system user; SQL modellingFixed tables only; one run a day; six-hour limit
Ads Manager exportFreeOnly as an uploaded fileA person, every cycleFrozen snapshots of unsettled days
Marketing API into your databaseEngineering timeYes, through the databaseTokens, versions, rate limitsYou own every failure
TableBI — not a Tableau connectorFree for one source and one live dashboard; Operator $29 a month, by requestNot applicable: answers live outside TableauNothing to scheduleCampaign level only; Meta is in beta

Vendor prices were read on their own pricing pages on September 30, 2026. Tableau's own licences come on top of every row but the last; the GA4 → Tableau guide prices them by role.

The fifth route: TableBI, which is not a Tableau connector

TableBI creates no Tableau data source and sends nothing to Tableau. It replaces the Tableau step for the Meta questions that come back every week: it syncs Meta Ads into its own store, an AI agent such as Claude Code queries that store in read-only SQL from the terminal, and an answer worth keeping becomes a live dashboard URL. If the destination has to be a Tableau workbook, routes 1 to 4 are the options.

Meta Ads is in beta. TableBI's Meta app has not passed Meta's App Review, so today only people added to the app as test users can authorize it. The live connector syncs one row per campaign per day — spend, impressions, clicks, conversions and conversion value — and re-pulls the latest 28 days on every refresh, the settling window above. It has no ad set, ad or placement split.

terminal
# install the CLI, then plant the skill your agent reads
npm i -g @tablebi/cli
tablebi login
tablebi install

# Meta sign-in opens in the browser; one ad account syncs straight away,
# several are listed — rerun with --account act_…
tablebi connect meta_ads
claude code → tablebi
# campaign spend and ROAS over the latest 28 days of Meta data
tablebi ask "SELECT campaign, SUM(cost) AS spend,
             roas(SUM(conversion_value), SUM(cost)) AS roas
             FROM facts
             WHERE platform = 'meta_ads'
               AND date > (SELECT MAX(date) FROM facts WHERE platform = 'meta_ads') - 28
             GROUP BY campaign ORDER BY spend DESC LIMIT 25"

Ad set and placement cuts come from an Ads Manager export uploaded under a label of its own, such as tablebi connect csv --file export.csv --platform meta_ads_adsets; every column of the file stays queryable in meta_ads_adsets_raw, and the separate label keeps the export's rows apart from the live connector's. Spend stays in each ad account's own currency, so compare accounts side by side rather than summed. tablebi pin turns any answer into a public, read-only URL that refreshes itself — viewers need no Tableau licence, and anyone holding the link can see it.

TableBI connects Google Search Console, GA4 and Google Ads live, Meta Ads in beta, and CSV upload. It has no white-label reports, no scheduled PDF or email delivery and no alerts.

Which route should you pick

  • On Tableau Cloud: BigQuery if you already run it, otherwise Windsor.ai through Google Sheets. A custom connector will not publish there.
  • On Tableau Desktop or Server, one or two accounts: the CData connector is the most direct; set the refresh to re-read 28 days.
  • A one-off analysis: an Ads Manager export broken down by day.
  • The same five Meta questions every Monday: the question may not need Tableau at all — that is the case TableBI is built for.

FAQ

Does Tableau have a Facebook Ads connector?

No. As of September 2026 the connector list in Tableau's technical specifications has no Facebook or Meta entry. Facebook Ads data reaches Tableau through a partner connector such as CData, Coupler.io or Windsor.ai, through BigQuery, or as an Ads Manager export.

How do I get Facebook Ads data into Tableau for free?

Export the report from Ads Manager as a CSV or Excel file, broken down by day, and open it in Tableau. It is free but manual: each file is a snapshot, and the last 28 days in it will still change after you export.

Can Tableau Cloud refresh Facebook Ads data?

Only through something Tableau Cloud connects to natively, such as BigQuery or a Google Sheet in Google Drive. Tableau Cloud does not support custom connectors, and it cannot refresh a Web Data Connector extract by itself.

How should a Facebook Ads extract refresh in Tableau?

Re-read at least the last 28 days on every refresh, because Meta keeps revising results until then. In Tableau's incremental refresh settings that means a minimum date range of 28 days; otherwise use a full refresh.

Can I put Facebook Ads and Google Ads in the same Tableau dashboard?

Yes, if both land in the same place — for example two BigQuery transfers — and you map both into one set of columns. Each platform still attributes conversions its own way, so a combined ROAS is a steering signal, not a reconciled number.

Sources

Try it

Search Console, GA4 and Google Ads live, Meta Ads in beta, CSV by upload: in your agent today, with no BigQuery project and no licence per viewer.

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