← All connectors

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
Google Ads logo

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.

Available streams

StreamDescriptionSync mode
ad_groupFields include id, customer_id, ad_rotation_mode, base_ad_group.Incremental
ad_group_adFields 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_conversionsFields include customer_id, segments.conversion_action, ad_group.id, all_conversions.Incremental
ad_group_ad_asset_statsFields include customer_id, ad_group.id, asset.id, biddable_app_install_conversions.Incremental
ad_group_conversion_statsFields include segments.conversion_action, all_conversions, campaign.id, conversions.Incremental
ad_group_criterionFields include criterion_id, customer_id, ad_group.id, age_range.type.Incremental
ad_group_criterion_labelFields include ad_group_id, label_id, criterion_id.Full refresh
ad_group_statsFields include customer_id, active_view_impressions, active_view_measurability, active_view_measurable_cost_micros.Incremental
ad_statsFields include customer_id, active_view_impressions, active_view_measurability, active_view_measurable_cost_micros.Incremental
assetFields include customer_id, id, business_message_asset.facebook_messenger_info.page_name, business_message_asset.zalo_info.custom_name.Incremental
billing_setupFields include resource_name, customer_id, end_date_time, end_time_type.Full refresh
campaignFields include id, customer_id, ad_serving_optimization_status, advertising_channel_sub_type.Incremental
campaign_budgetFields include id, customer_id, amount_micros, campaign.id.Full refresh
campaign_conversion_statsFields include segments.conversion_action, all_conversions, conversions, conversions_value.Incremental
campaign_criterionFields include criterion_id, ad_schedule.day_of_week, ad_schedule.end_hour, ad_schedule.end_minute.Incremental
campaign_labelFields include campaign.id, label.id.Full refresh
campaign_shared_setFields include resource_name, customer_id, campaign.id, last_change_date_time.Incremental
campaign_statsFields include customer_id, active_view_impressions, active_view_measurability, active_view_measurable_cost_micros.Incremental
change_eventFields include change_date_time, resource_name, ad_group, asset.Incremental
change_statusFields include last_change_date_time, resource_name, ad_group, ad_group_ad.Incremental
conversion_actionFields include customer_id, id, click_through_lookback_window_days, counting_type.Full refresh
customerFields include id, auto_tagging_enabled, currency_code, descriptive_name.Full refresh
customer_labelFields include customer_id, label.Full refresh
customer_statsFields include customer_id, active_view_impressions, active_view_measurability, active_view_measurable_cost_micros.Incremental
geo_targetFields include customer_id, id, canonical_name, country_code.Full refresh
invoice_account_budget_summariesFields include summary_key, invoice_customer_id, invoice_key, account_budget.Full refresh
invoice_account_summariesFields include summary_key, invoice_customer_id, invoice_key, billing_correction_subtotal_amount_micros.Full refresh
invoicesFields include invoice_key, customer_id, adjustments_subtotal_amount_micros, adjustments_tax_amount_micros.Full refresh
keyword_conversion_statsFields include customer_id, segments.conversion_action, ad_group.id, ad_group_criterion.criterion_id.Incremental
keyword_statsFields include customer_id, active_view_impressions, active_view_measurability, active_view_measurable_cost_micros.Incremental
labelFields include id, name, status, text_label.background_color.Full refresh
mobile_deviceFields include customer_id, id, manufacturer_name, name.Full refresh
operating_system_versionFields include customer_id, id, name, operator_type.Full refresh
shared_criterionFields include customer_id, criterion_id, keyword.match_type, keyword.text.Full refresh
shared_setFields include customer_id, id, last_change_date_time, member_count.Incremental
topicFields include customer_id, id, path, topic_constant_parent.Full refresh
user_interestFields include customer_id, user_interest_id, availabilities, launched_to_all.Full refresh
user_listFields include customer_id, id, access_reason, account_user_list_status.Full refresh

Data model at a glance

Preview the exported entities and fields for Google Ads.

Open full ERD

ad_group

  • idinteger
  • customer_idinteger
  • ad_rotation_modestring
  • base_ad_groupstring
  • campaign.idinteger
  • campaign.namestring
  • campaign.real_time_bidding_setting.opt_inboolean
  • display_custom_bid_dimensionstring

ad_group_ad

  • resource_namestring
  • ad.demand_gen_carousel_ad.logo_image.assetstring
  • ad.demand_gen_product_ad.call_to_action.assetstring
  • ad.demand_gen_product_ad.logo_image.assetstring
  • ad.display_upload_ad.media_bundle.assetstring
  • ad.image_ad.image_asset.assetstring
  • ad.video_ad.bumper.companion_banner.assetstring
  • ad.video_ad.in_stream.companion_banner.assetstring

ad_group_ad_asset_conversions

  • customer_idinteger
  • segments.conversion_actionstring
  • ad_group.idinteger
  • all_conversionsnumber
  • all_conversions_valuenumber
  • asset.idinteger
  • campaign.idinteger
  • conversionsnumber

ad_group_ad_asset_stats

  • customer_idinteger
  • ad_group.idinteger
  • asset.idinteger
  • biddable_app_install_conversionsnumber
  • biddable_app_post_install_conversionsnumber
  • campaign.idinteger
  • clicksinteger
  • conversions_valuenumber

ad_group_conversion_stats

  • segments.conversion_actionstring
  • all_conversionsnumber
  • campaign.idinteger
  • conversionsnumber
  • conversions_valuenumber
  • idinteger
  • segments.datestring

ad_group_criterion

  • criterion_idinteger
  • customer_idinteger
  • ad_group.idinteger
  • age_range.typestring
  • app_payment_model.typestring
  • approval_statusstring
  • bid_modifiernumber
  • cpc_bid_microsinteger
+2 more

No verified relationships are available in this schema preview.

Popular destinations

Commonly paired with Google Ads in Extract workflows.

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.

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.