campaign status discrepancy in google ads platform and in big query tables

I am working with my company’s Google Ads data. In the Google Ads platform, I can see the campaign statuses as eligible, eligible (limited), paused, etc. After transferring the Google Ads data into BigQuery using a scheduled transfer, I see the campaign statuses as ‘enabled’, ‘paused’, ‘removed’, etc. How can I get the eligible and eligible (limited) statuses like in the Google Ads platform?

Hi @rincy93 the difference you’re noticing between campaign statuses in Google Ads and what’s transferred to BigQuery happens because the platform’s user interface (UI) and its API represent statuses differently. Let me explain:

1. Understanding the Status Mapping

In the Google Ads UI, statuses like Eligible or Eligible (Limited) provide real-time information about approval or delivery conditions.

However, the Google Ads API, which powers the BigQuery data transfer, simplifies these into broader categories, such as:

  • Enabled
  • Paused
  • Removed

These API statuses reflect the structural state of a campaign but don’t capture delivery conditions or eligibility details. Unfortunately, detailed statuses like Eligible (Limited) aren’t directly available in the standard API tables.

2. Fetching Detailed Campaign Statuses

To get more granular information, you’ll need to query the Google Ads API directly. Specifically, use resources like campaign_criterion or ad_group_criterion.

Here’s an example query:

SELECT campaign.id,
campaign.name,
campaign.status,
campaign_criterion_approval_status
FROM campaign_criterion
WHERE campaign.status IN (‘ENABLED’, ‘PAUSED’)

With this approach, you can access:

  • Approval statuses for ads or keywords.
  • Delivery constraints (e.g., budget issues or targeting problems).

3. Combining Data in BigQuery

To align your BigQuery dataset with what you see in the Google Ads UI:

  1. Fetch detailed statuses via the Google Ads API and export them to BigQuery.
  2. Merge this detailed data with your existing campaign table in BigQuery.

Here’s an example SQL query to combine datasets:

SELECT bq.campaign_id,
bq.campaign_name,
bq.status AS api_status,
api.detailed_status
FROM your_project.bigquery_campaign_table bq
LEFT JOIN your_project.google_ads_detailed_status api
ON bq.campaign_id = api.campaign_id

4. Exploring Alternative Tools

If building custom API queries feels too complex, third-party tools can make the process easier.

For example, Windsor.ai provides advanced connectors that can pull detailed campaign data, including eligibility statuses, directly into BigQuery. This way, you can skip writing manual queries and save time.

Final Thoughts

  • Use the Google Ads API when you need granular details that aren’t included in BigQuery’s standard data transfers.
  • Combine API data with your existing BigQuery dataset for a more complete view of your campaigns.
  • Explore tools like Windsor.ai to simplify the entire integration process and improve your reporting workflow.