How to Use Windsor.ai to Keep Your Ad History in BigQuery
By Joris van Huët
Enterprise Interim CMO & Marketing Leader · 15+ years · 50+ orgs
Published
2026-10-26
The short answer: if you want two years of Google Ads and Meta Ads data in a warehouse you own, Windsor.ai's Basic plan at $19 a month billed annually sends it to BigQuery with a backfill and a daily sync (pricing page, checked on 26 October 2026), so start there. The steps: create the BigQuery dataset and grant the roles, connect both ad platforms in Windsor.ai, choose the fields, add a BigQuery destination task with a backfill and the default date partitioning, check a few days of the table against each ad manager, and only then let Claude query your data through Windsor's MCP from a login that cannot change campaigns.
Disclosure: I may earn a commission through some links on this site. It does not change what this page says.
Ad platforms are not archives. Meta Ads insights reach back 37 months and Search Console keeps 16, according to Windsor.ai's answers page, and a reporting tool's cache is not yours either: cancelling Windsor.ai deletes the history it holds. A table in your own BigQuery project is the copy that stays when tools, agencies and subscriptions change. Plans and limits are in the Windsor.ai glossary entry.
Before the first sync:
- Count the tasks. Basic allows 5 active scheduled syncs, and on Basic each backfill counts as one too (pricing FAQ). For example, a daily task for Google Ads and one for Meta Ads, each started with a backfill, uses 2 + 2 = 4 of the 5.
- Use the Google Cloud project you already have. The dataset must exist before the task runs, billing must be enabled on the project, and the connecting user needs the BigQuery Data Editor and BigQuery Job User roles (answers page). Windsor.ai creates the table itself.
- Three days you can verify. Note spend and clicks for three recent days from each ad manager. The table is ready when those six numbers match.
What you need
- A Windsor.ai account at onboard.windsor.ai; connecting the first data source creates it (free start guide).
- A paid plan for the backfill: the free plan reaches back 30 days and cannot backfill (pricing FAQ).
- Google Ads and Meta Ads logins. Read-only access is enough for reporting.
Step 1: Prepare BigQuery
In the Google Cloud console, pick or create the project, enable billing, and create a dataset named for its job, such as ads_history. Grant the user who will connect Windsor.ai the two roles above. The BigQuery guide also accepts a service account key instead of a Google login (BigQuery guide).
Step 2: Connect the ad accounts
In Windsor.ai, search for Google Ads under Data Sources, sign in on Google's own screen and select the accounts to pull. Every client account under a manager account counts as one account against your plan, so select only what the history needs (counting guide). Repeat for Facebook Ads, which also carries Instagram ads. For accounts under someone else's login, send an authorisation link instead, and the connection appears under your data sources when they approve it (answers page).
Step 3: Choose the fields
In the data preview, pick the fields the history should keep: date, account, campaign, spend, impressions, clicks, conversions and conversion value. Add filters if you want fewer rows. Each account's data arrives in its own currency, so if Meta bills in dollars and Google in euros, convert later in BigQuery with a calculated field rather than mixing them in one column (answers page).
Step 4: Add the BigQuery destination task
Scroll to Data Destinations, choose BigQuery and click Add Destination Task. Fill in the task name, the authentication type, the project ID, the dataset ID and a table name, then switch on the backfill for the history you want and set the schedule (BigQuery guide). Basic syncs daily; hourly starts on Standard. Under advanced options, partitioning by date is the default, and clustering by account and campaign makes the table cheaper to query later.
Step 5: Test, save and watch the first run
Click Test connection, then Save, which runs the task. A green upload button with status ok means it is running. If a task fails, Windsor.ai emails your team; the usual causes are expired credentials, missing permissions on the dataset or a source's rate limit, and a "Reauthentication is needed" error means the Google sign-in expired (answers page). For several years of data, the answers page warns that large backfills can time out on the platforms' APIs and points to Cache Data Store for long ranges.
Step 6: Check the table against the platforms
In BigQuery, sum spend and clicks per account for your three test days and compare them with the numbers you wrote down. If they differ, Windsor.ai's checklist is to compare the same level, date range, time zone and attribution setting, and to remember that reach and users cannot be added up across days (answers page). New fields added to the query later are added to the table schema on the next sync (BigQuery guide).
Step 7: Let Claude read, with the brakes on
In Claude, open Customize, Connectors, search for Windsor, click Add and sign in with your Windsor.ai account (Claude setup guide). The connector reads and writes: it can pause campaigns and move budgets. To make writing impossible, connect the ad accounts to Windsor.ai with a platform user that has read-only or reporting access, so the platform rejects any change; Windsor.ai's own assistant asks before every change in any case.
Then ask a question the warehouse can confirm: "Give me a breakdown of spend by channel over the past 90 days." The assistant drafts; a person checks the totals against the BigQuery table before they go in a deck.
What Windsor.ai warns about
- Long backfills. Many platform APIs time out after 30 to 120 seconds and often fail on a year or more of data; use shorter ranges per run (answers page).
- Missing accounts. Accounts added on the platform later only appear after you reconnect the source (answers page).
- Removing accounts. Unticking an account frees a slot but leaves a gap in every task that used it, so check the tasks first (answers page).
The free version first
The Forever Free plan keeps 1 data source, 1 account and 5 destination tasks, with 30 days of data and no backfill (pricing FAQ). That is enough to run the whole pipeline for your largest ad account and check it, before you pay to load the history.
One setting to leave alone. Windsor.ai's Claude setup guide offers Always allow for quicker connector use, and quick, frequent use is what the vendor builds for; with a connector that can change budgets, the permission prompt that Always allow removes is a review you want to keep. Leave it on, and keep the read-only login.
FAQ
Does BigQuery count as a destination I pay extra for?
No. Destinations are not counted on any Windsor.ai plan; only data sources and accounts are (counting guide).
How often does the BigQuery table update?
Daily on Free and Basic, hourly from Standard and every 15 minutes on Professional, per the answers page.
What happens to the table if I cancel Windsor.ai?
The table lives in your own BigQuery project, so it stays; it simply stops receiving new rows. What cancelling deletes is the history held inside Windsor.ai (answers page).
ABOUT THE AUTHOR
I am Joris van Huët, an enterprise interim CMO. 15+ years, 50+ organizations, including ING, P&G, Nestlé, BNP Paribas, WeTransfer and Vinted. I take on innovation projects (venture building, design sprints), agentic marketing (setting up and running AI agents) and hands-on multi-channel work. See the track record.
I wrote and published this with AI assistance, and I answer for it. Claims about my own experience are limited to the track record above, and a statistic links to its source or is labelled as an example. I sell interim and fractional CMO work, which is why this site exists. How this site is written.
A senior operator doing the work: campaigns, channels, CRM and AI agents, live from day one.