Hi there, thanks for sharing your case. This type of issue is fairly common when working with the native Google Ads to BigQuery connector , especially when attempting a manual backfill.
A few key things to keep in mind:
Not all table types support manual backfill
The BigQuery Data Transfer Service for Google Ads doesn’t generate retroactive snapshots for certain tables, particularly those based on dynamic or segmented data (like ad_*_stats with detailed breakdowns).
Tables like ad_stats or ad_group_criteria_stats often require that the relevant data still be available via the Google Ads API at the time of the backfill , which isn’t always the case if the data is beyond the API’s retention window.
Manual trigger ≠ Guaranteed backfill
Even if you manually run a transfer job, it will only pull the data that’s still accessible through the API.
In some cases, Google restricts access to historical data , especially for reports involving custom fields or complex segmentation.
Alternative solution
If you’re hitting limitations with the native connector, a more flexible option would be to use a third-party solution like Windsor.ai.
It allows you to extract complete historical data directly from the Google Ads API, with granular control over tables, date ranges, and metrics. You can then send that data straight into BigQuery. Plus, it automatically handles retries and API errors that often cause native jobs to fail silently.
Recommendation:
Start by identifying which specific tables are incomplete, and check whether that data is still available through the Google Ads API. If it’s no longer accessible, using an external tool might be your best bet for filling in those gaps.
Hope this helps!