Facebook Ads to BigQuery with Windsor.ai — Full Setup Guide

Facebook Ads to BigQuery with Windsor.ai — Full Setup Guide

If you want to store raw Facebook Ads data to BigQuery, and run SQL analyses, or build scalable reports that combine ads with GA4 or Shopify, BigQuery is the right place to centralize your marketing data. Windsor.ai removes the need for custom scripts and manual exports by pushing Facebook Ads data directly into BigQuery. Below I walk you through a simple, low-code setup you can finish in a few steps.

Watch the full step-by-step demonstration here: 

Step 1: Create a BigQuery dataset for Windsor.ai

Start in Google Cloud Console: create a project and set up billing if you haven’t already. Inside your BigQuery project, add a dataset dedicated to Windsor.ai exports. I usually create a dataset named ‘windsor’ so all connector tables live in one place and are easy to find.

Choose the data location according to your region. If you operate in Europe, choose a multi-region Europe location. If you’re in the US, pick a US location. A dedicated dataset keeps things tidy and simplifies permission management.

Step 2: Sign up with Windsor.ai and select Facebook Ads

Register at Windsor.ai, start the free trial, and log in. In Windsor.ai, open the data sources list and pick Facebook Ads (Meta Ads). You will be asked to grant access to your Facebook account; authenticate and select the ad account(s) you want to export.

Clear Windsor.ai screen showing 'Connect your Facebook account', the 'Grant Facebook Ads Access' button and 'Gaille Reports' account selected

Windsor.ai provides useful onboarding docs and presets that map Facebook fields to analytics-friendly names. This saves you from decoding the raw API field names and speeds up setup.

Step 3: Configure fields, date range, and presets

The Windsor.ai UI shows a preview of the table you’ll get in BigQuery. On the left you preview the result; on the right you pick fields and filters. Start with a preset that fits your needs, then remove fields you don’t use and add the ones you do.

Clear Windsor.ai interface showing Facebook Ads table preview (with clicks and dates) on the left and Filters/Fields checkboxes on the right.

Important fields to include:

  • date — required for partitioning and incremental updates
  • amount_spent — your ad spend
  • impressions, clicks, link_clicks
  • Campaign, adset, ad IDs and names for joins and mapping
  • Conversion metrics that you track in Facebook (if available)
Windsor.ai fields panel with Clicks selected and the 'Add custom field' button visible.

You can also create custom fields with simple formulas inside Windsor.ai. That helps when you need a normalized metric or a combined field before it lands in BigQuery.

Step 4: Choose data range and sync strategy

Windsor.ai lets you pull historical data and configure a rolling window for updates. For ongoing syncs I recommend pulling the last three days daily rather than only yesterday. This gives you a safety net if data late-arrives or a sync fails one day — Windsor.ai will overwrite the recent window and backfill missing rows.

Windsor.ai date range picker with 'Last 7 days' highlighted and month calendars visible

If you need the full history during setup, you can request a larger backfill (for example, one year). After the historical sync, switch to a smaller daily window to reduce processing and cost.

Step 5: Set BigQuery as the destination and configure authentication

Add a destination task in Windsor.ai and select BigQuery. Use a clear task name and match your BigQuery table name to the task name. That makes administration and searches much easier.

Windsor supports two authentication types:

  • Google account: Connect with your Google login. Good for a quick setup or smaller projects.
  • Service account: Create and use a Google Cloud service account for production-level setups and better governance.

Choose a sync frequency. For most marketing teams, daily updates are sufficient. More frequent syncs (hourly or 15 minutes) are possible but increase your Google Cloud costs.

Step 6: Additional options — partitioning, clustering, and match columns

Windsor lets you configure partitioning and clustering on the destination table. For smaller accounts you can skip this. For large, multi-year datasets, partitioning by date reduces query costs and speeds up analyses.

Windsor.ai BigQuery destination modal with 'BigQuery Dataset ID', 'Schedule type', and 'Columns to Match' set to 'date' visible

Set the “columns to match” option to the date field or another unique key. Windsor.ai will then overwrite rows for that window each run, which supports safe backfills and corrections.

Step 7: Test the connection and kick off the first Facebook Ads to BigQuery sync

Use Test Connection inside Windsor.ai to validate permissions and destination settings. When everything is green, save the task and start the initial historical sync. The initial backfill can take time depending on how much history you requested.

BigQuery table preview for fb_ad_daily showing exported Facebook Ads fields including clicks, date and impressions in the schema list

Once the table appears in BigQuery you can preview it and run queries. The table will include every field you selected and will be updated automatically on the schedule you chose.

Step 8: Use the data in Looker Studio or SQL analyses

With your Facebook Ads to BigQuery you can:

  • Connect BigQuery tables directly to Looker Studio for flexible visualizations
  • Join ads data with GA4, Shopify, or CRM tables for full-funnel reporting
  • Run SQL queries for deeper attribution, LTV analysis, or custom cohort reports
Windsor.ai UI showing a Facebook Ads table preview and the Fields panel with the Date checkbox selected

I typically build a Looker Studio report that uses the date field for time filters and aggregates spend, impressions, clicks, and conversions. Because the data is in BigQuery, the report scales and responds well as the dataset grows.

Why I prefer a managed connector like Windsor.ai

I built a custom Facebook Ads connector once and kept up with the API changes for a while. Facebook’s API evolves frequently, so maintaining a custom connector becomes a recurring engineering task. Windsor.ai handles API updates, maintains many connectors, and provides documentation and support. For most teams, this saves time and money.

Windsor.ai supports hundreds of sources — Google Ads, Google Analytics, Shopify, HubSpot, LinkedIn and more — which helps when you want an integrated marketing data warehouse.

Quick checklist before you start

  1. Create a BigQuery project and dataset for Windsor.ai exports
  2. Decide whether to use a Google login or a service account
  3. Select the fields and date column you need for reporting
  4. Choose initial historical range and daily rolling window (last three days recommended)
  5. Pick a sync schedule and test the connection

Summary

Pushing Facebook Ads data into BigQuery via Windsor.ai gives you a maintainable, scalable pipeline without writing and supporting custom code. Configure fields and date windows in the Windsor UI, point the destination to a dedicated BigQuery dataset, and schedule regular updates. Once the data is in BigQuery, use Looker Studio or SQL to build reliable, long-term reports that combine ads with other channels.

Promo: use the code gaillereports for 10% off Windsor.ai plans.

Related articles and resources