Quickstart · Source connector
Google Ads ELT Connector
Extract brings Google Ads quickstart data into data warehouses and databases for analysis with the rest of your business data. Teams use it to build recurring reporting and compare business activity across systems. Flexible scheduling keeps reporting current for routine analysis and time-sensitive decisions.
View setup guide
Use cases
What teams use this connector for
Business performance reporting
Use Google Ads data to monitor recurring activity and investigate meaningful changes over time.
Cross-system analysis
Combine Google Ads data with customer, finance, and operational metrics for consistent reporting.
Data quality monitoring
Compare Google Ads record totals and reporting periods to identify incomplete or unexpected data.
Flexible reporting cadence
Refresh Google Ads reporting every 15 minutes, hourly, daily, or on a custom schedule as business needs change.
Warehouse and database analysis
Use Extract to make Google Ads quickstart data available in data warehouses and databases such as Snowflake, BigQuery, Redshift, and PostgreSQL for governed analysis.
Connector data
Available streams
| Stream | Description | Sync mode |
|---|---|---|
ad_group | Fields include id, customer_id, ad_rotation_mode, base_ad_group. | Incremental |
ad_group_ad | Fields include resource_name, ad.demand_gen_carousel_ad.logo_image.asset, ad.demand_gen_product_ad.call_to_action.asset, ad.demand_gen_product_ad.logo_image.asset. | Incremental |
ad_group_ad_asset_conversions | Fields include customer_id, segments.conversion_action, ad_group.id, all_conversions. | Incremental |
ad_group_ad_asset_stats | Fields include customer_id, ad_group.id, asset.id, biddable_app_install_conversions. | Incremental |
ad_group_conversion_stats | Fields include segments.conversion_action, all_conversions, campaign.id, conversions. | Incremental |
ad_group_criterion | Fields include criterion_id, customer_id, ad_group.id, age_range.type. | Incremental |
ad_group_criterion_label | Fields include ad_group_id, label_id, criterion_id. | Full refresh |
ad_group_stats | Fields include customer_id, active_view_impressions, active_view_measurability, active_view_measurable_cost_micros. | Incremental |
ad_stats | Fields include customer_id, active_view_impressions, active_view_measurability, active_view_measurable_cost_micros. | Incremental |
asset | Fields include customer_id, id, business_message_asset.facebook_messenger_info.page_name, business_message_asset.zalo_info.custom_name. | Incremental |
billing_setup | Fields include resource_name, customer_id, end_date_time, end_time_type. | Full refresh |
campaign | Fields include id, customer_id, ad_serving_optimization_status, advertising_channel_sub_type. | Incremental |
campaign_budget | Fields include id, customer_id, amount_micros, campaign.id. | Full refresh |
campaign_conversion_stats | Fields include segments.conversion_action, all_conversions, conversions, conversions_value. | Incremental |
campaign_criterion | Fields include criterion_id, ad_schedule.day_of_week, ad_schedule.end_hour, ad_schedule.end_minute. | Incremental |
campaign_label | Fields include campaign.id, label.id. | Full refresh |
campaign_shared_set | Fields include resource_name, customer_id, campaign.id, last_change_date_time. | Incremental |
campaign_stats | Fields include customer_id, active_view_impressions, active_view_measurability, active_view_measurable_cost_micros. | Incremental |
change_event | Fields include change_date_time, resource_name, ad_group, asset. | Incremental |
change_status | Fields include last_change_date_time, resource_name, ad_group, ad_group_ad. | Incremental |
conversion_action | Fields include customer_id, id, click_through_lookback_window_days, counting_type. | Full refresh |
customer | Fields include id, auto_tagging_enabled, currency_code, descriptive_name. | Full refresh |
customer_label | Fields include customer_id, label. | Full refresh |
customer_stats | Fields include customer_id, active_view_impressions, active_view_measurability, active_view_measurable_cost_micros. | Incremental |
geo_target | Fields include customer_id, id, canonical_name, country_code. | Full refresh |
invoice_account_budget_summaries | Fields include summary_key, invoice_customer_id, invoice_key, account_budget. | Full refresh |
invoice_account_summaries | Fields include summary_key, invoice_customer_id, invoice_key, billing_correction_subtotal_amount_micros. | Full refresh |
invoices | Fields include invoice_key, customer_id, adjustments_subtotal_amount_micros, adjustments_tax_amount_micros. | Full refresh |
keyword_conversion_stats | Fields include customer_id, segments.conversion_action, ad_group.id, ad_group_criterion.criterion_id. | Incremental |
keyword_stats | Fields include customer_id, active_view_impressions, active_view_measurability, active_view_measurable_cost_micros. | Incremental |
label | Fields include id, name, status, text_label.background_color. | Full refresh |
mobile_device | Fields include customer_id, id, manufacturer_name, name. | Full refresh |
operating_system_version | Fields include customer_id, id, name, operator_type. | Full refresh |
shared_criterion | Fields include customer_id, criterion_id, keyword.match_type, keyword.text. | Full refresh |
shared_set | Fields include customer_id, id, last_change_date_time, member_count. | Incremental |
topic | Fields include customer_id, id, path, topic_constant_parent. | Full refresh |
user_interest | Fields include customer_id, user_interest_id, availabilities, launched_to_all. | Full refresh |
user_list | Fields include customer_id, id, access_reason, account_user_list_status. | Full refresh |
Schema
Data model at a glance
ad_group
idintegercustomer_idintegerad_rotation_modestringbase_ad_groupstringcampaign.idintegercampaign.namestringcampaign.real_time_bidding_setting.opt_inbooleandisplay_custom_bid_dimensionstring
ad_group_ad
resource_namestringad.demand_gen_carousel_ad.logo_image.assetstringad.demand_gen_product_ad.call_to_action.assetstringad.demand_gen_product_ad.logo_image.assetstringad.display_upload_ad.media_bundle.assetstringad.image_ad.image_asset.assetstringad.video_ad.bumper.companion_banner.assetstringad.video_ad.in_stream.companion_banner.assetstring
ad_group_ad_asset_conversions
customer_idintegersegments.conversion_actionstringad_group.idintegerall_conversionsnumberall_conversions_valuenumberasset.idintegercampaign.idintegerconversionsnumber
ad_group_ad_asset_stats
customer_idintegerad_group.idintegerasset.idintegerbiddable_app_install_conversionsnumberbiddable_app_post_install_conversionsnumbercampaign.idintegerclicksintegerconversions_valuenumber
ad_group_conversion_stats
segments.conversion_actionstringall_conversionsnumbercampaign.idintegerconversionsnumberconversions_valuenumberidintegersegments.datestring
ad_group_criterion
criterion_idintegercustomer_idintegerad_group.idintegerage_range.typestringapp_payment_model.typestringapproval_statusstringbid_modifiernumbercpc_bid_microsinteger
No verified relationships are available in this schema preview.
Connector pairings
Popular destinations
Commonly paired with Google Ads in Extract workflows.
Why Extract
Why Extract for Google Ads
- Rust-native performanceUse Rust-native data movement to refresh Google Ads reporting every 15 minutes, hourly, daily, or on a custom schedule as volume grows.
- Full run transparencyInspect Google Ads API activity, execution steps, and timing in Extract's run-level logs when data needs review.
- ELT + Reverse ETL in oneCombine Google Ads data with customer and finance models, then send approved outputs through a separately configured Reverse ETL destination.
FAQ
Frequently asked questions
How does Extract handle incremental and full Google Ads syncs?
An incremental sync processes only new or changed data since a stored checkpoint or new date partition, while a full sync processes the complete selected dataset or date range again. By avoiding repeated processing and writes for the full dataset, incremental syncs can reduce destination database updates and warehouse compute costs. Stream schemas define full refresh, incremental changes, partition-based extraction. Behavior varies by stream and configuration. Extract records run details so teams can verify each sync.
Can I backfill historical Google Ads data with Extract?
Historical coverage for Google Ads: Backfill (Days) (backfill): The backfill setting revisits and updates data from the past X days, ensuring the most current and accurate information replaces any previously pulled data. Use the setup guide and run details to confirm the available source records and selected settings.
How can teams monitor Google Ads data quality and freshness?
Compare expected reporting periods and record totals in your models, then use Extract's run-level logs to inspect Google Ads API activity, execution steps, and timing. This helps teams distinguish a source-data delay from a failed or incomplete run.
How often can Extract sync data from Google Ads?
Extract supports schedules every 15 minutes, hourly, daily, or on a custom cadence. Teams can choose a frequency that matches routine reporting, time-sensitive monitoring, or operational activation needs.
What does the Google Ads data model look like in the destination?
The Available streams table describes the datasets Extract can read from Google Ads. The inline schema previews entities and fields. Only relationships verified from the exported schema are shown. Use the full schema link for more details.