The BigQuery Facebook Ads connector is the simplest way to send selected Meta Ads data to BigQuery. It connects to a Meta Business app, retrieves supported Facebook Ads reports, and loads them into BigQuery on a recurring schedule. The minimum recurring interval is 24 hours, so the connector is suited to daily reporting and analysis.
Use a custom Meta Marketing API pipeline or a managed ETL connector when you need hourly updates, custom reports, near-real-time data, or more control over transformations.
| Method | Best for | Refresh rate | Coding required | Main limitation |
|---|---|---|---|---|
| BigQuery Data Transfer Service | Daily reporting and warehouse imports | Minimum 24 hours | No | Fixed supported tables and reports |
| Meta Marketing API plus custom pipeline | Custom fields, transformations, or frequent syncs | Flexible | Yes | Your team maintains authentication, retries, schemas, and rate limits |
| Managed ETL connector | Multiple ad platforms and low-maintenance pipelines | Depends on provider | No or low-code | Additional subscription cost |
| Manual CSV export | One-time analysis or testing | Manual | No | Not suitable for recurring reporting |
For teams already using Google Cloud, start with the BigQuery Data Transfer Service. It removes the need to build an API ingestion system, but it does not provide real-time data or arbitrary Meta Ads reports.
The BigQuery Facebook Ads connector transfers selected Facebook Ads objects and reports, including:
AdInsightsAdInsightsActionsAdsCampaignsAdSetsYou can set the insights aggregation level to the account, campaign, ad set, or ad level. The time increment can range from one to seven days, and the connector supports selected generic and action breakdowns.
Depending on the selected action collections and breakdowns, the transferred data can include:
Create or select the Google Cloud project and BigQuery dataset that will store the Facebook Ads tables.
Before creating the transfer, confirm that:
Google Cloud uses the destination dataset's location for the transfer configuration. Choose the location carefully because BigQuery dataset locations cannot be changed after creation.
The Facebook Ads connection requires a Meta developer app with the Business app type.
In the Meta App Dashboard:
Google Cloud identifies the required credentials as:
clientIDclientSecretrefreshTokenThe refresh token is a long-lived Facebook user access token that authorizes the transfer.
In the Google Cloud console:
Google Cloud starts transfer runs according to the schedule. You can also run a backfill when historical data needs to be loaded again.
The connector's insights settings control how Facebook Ads data is grouped in BigQuery.
Choose the level that matches your reporting needs:
Campaign or ad set level is often enough for campaign performance reporting. Use ad level when you need creative-level analysis, but expect more rows and potentially more API usage.
The time increment controls how the connector groups insights data. A value of one produces daily rows. Larger values group performance across multiple days.
For daily reporting, use a one-day increment where supported.
Generic breakdowns split performance by dimensions such as:
Action breakdowns organize conversion and engagement actions into separate structures. Examples include action type and action device.
Meta restricts which breakdown combinations can be used together. An unsupported combination can cause the transfer to fail, so use combinations allowed by the Ads reporting API.
The connector creates tables in the destination dataset for the selected Facebook Ads objects. A basic analysis query may look like this:
SELECT
date_start,
campaign_id,
campaign_name,
spend,
impressions,
clicks
FROM
`your_project.facebook_ads.AdInsights`
WHERE
date_start >= DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY)
ORDER BY
date_start DESC;The exact field names and table schema depend on the selected report, breakdowns, and current connector mapping. Check the generated table schema before building production dashboards.
A common warehouse design uses three layers:
A reporting table might include:
This structure makes it easier to join Facebook Ads data with Google Ads, Google Analytics 4, CRM, ecommerce, and revenue data.
The minimum recurring interval for Facebook Ads transfers is 24 hours. The connector is suitable for daily reporting, but not for live bid monitoring or hourly optimization.
The connector supports a fixed set of Facebook Ads tables and reports. It does not support arbitrary custom reports. Use the Meta Marketing API when you need a field or report that the connector does not expose.
Incremental transfers are not supported for:
AdInsightsAdInsightsActionsAdsCampaignsAdSetsGoogle Cloud states that these tables can be reloaded for the selected date range during each transfer. The refresh window can be configured for up to 30 days.
Long-lived user access tokens expire after 60 days. When a token expires, the transfer stops until you generate or authorize a replacement token.
Google Cloud also recommends checking that the token includes:
ads_managementads_readbusiness_managementSelecting many action collections and breakdowns increases the number of fields and API requests. Google Cloud warns that adding more action collections increases the likelihood of reaching Facebook Ads rate limits.
Use a custom Meta Marketing API to BigQuery pipeline when the native connector does not meet your requirements.
A typical architecture is:
Meta Marketing API
↓
Cloud Run, Cloud Functions, or another scheduled worker
↓
Cloud Storage or BigQuery staging table
↓
BigQuery transformation models
↓
Reporting tables and dashboardsThe pipeline normally:
BigQuery supports batch loading from formats such as CSV and newline-delimited JSON. For custom high-throughput streaming pipelines, Google Cloud also supports the BigQuery Storage Write API.
This approach provides more control, but your team must maintain:
The total cost can include:
Google Cloud states that standard BigQuery storage and query pricing applies after the data reaches BigQuery. Check current Google Cloud pricing before estimating production costs. Charges depend on data volume, query patterns, region, and retention.
For a standard marketing reporting setup:
AdInsights, Campaigns, AdSets, and Ads tables required by your reporting.Choose the Meta Marketing API instead when you need refreshes more often than once per day, unsupported fields, custom reports, near-real-time ingestion, or full control over the warehouse schema.