Facebook Ads (Meta Ads) to Tableau: every route, what each costs, and the refresh setting that keeps it right
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
| Route | Money | Tableau Cloud | Upkeep | What bites |
|---|---|---|---|---|
| CData connector | $499 a year per desktop; server by quote | No — custom connectors aren't supported on Cloud | Licence renewals; installing on every machine and server | Desktop, Server, Bridge and Prep only |
| Coupler.io via Web Data Connector | From $24 a month billed annually | Cloud can't refresh a WDC extract by itself | Plan limits | A connector type Tableau deprecated; 5,000 rows per run on Starter |
| Windsor.ai via Sheets or a database | From $19 a month billed annually | Yes, through Google Drive or the database | A sheet or database in the middle | Spreadsheet cell limits on the Sheets path |
| BigQuery Data Transfer Service | Slot-hours per transfer run, plus BigQuery storage and queries | Yes, through the BigQuery connector | A 60-day token or a system user; SQL modelling | Fixed tables only; one run a day; six-hour limit |
| Ads Manager export | Free | Only as an uploaded file | A person, every cycle | Frozen snapshots of unsettled days |
| Marketing API into your database | Engineering time | Yes, through the database | Tokens, versions, rate limits | You own every failure |
| TableBI — not a Tableau connector | Free for one source and one live dashboard; Operator $29 a month, by request | Not applicable: answers live outside Tableau | Nothing to schedule | Campaign 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.
# 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
# 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.
Related guides
- Google Ads to Tableau: every route that still works
- GA4 to Tableau: every route and what each costs
- Google Search Console to Tableau
- Meta Ads to Power BI: every route
- How to connect Facebook Ads to Looker Studio
- Connect Meta Ads to Claude
- Tableau pricing in 2026
Sources
- Tableau — Technical specifications (connector list)
- Tableau — Refresh extracts (incremental refresh and minimum date range)
- Tableau — Web Data Connector
- Tableau — Google Drive connector
- Tableau — Google BigQuery connector
- Tableau — Union your data (wildcard search)
- Google Cloud — Load Facebook Ads data into BigQuery
- Google Cloud — Introduction to Facebook Ads transfers
- Google Cloud — BigQuery pricing (Data Transfer Service)
- CData — Facebook Ads Tableau connector
- Coupler.io — Facebook Ads to Tableau
- Windsor.ai — Pricing
- Meta Business Help Center — Export and share reports in Meta Ads Reporting
- Meta Business Help Center — About attribution models and attribution settings
- Meta for Developers — Insights API best practices
- Meta for Developers — Ads Insights API metric availability updates
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.
npm i -g @tablebi/cli && tablebi install