Landing pages data in BigQuery doesn't match with Google Ads manager UI

Hello,

I am using a custom query to get the data on landing pages from Google Ads into BigQuery. The code is:

SELECT campaign.id , campaign.name, campaign.status, campaign.advertising_channel_type, campaign.advertising_channel_sub_type, campaign.experiment_type, ad_group.id, ad_group.name, ad_group.status, ad_group.type, expanded_landing_page_view.resource_name, landing_page_view.resource_name, expanded_landing_page_view.expanded_final_url, landing_page_view.unexpanded_final_url, campaign.final_url_suffix, campaign.url_custom_parameters, ad_group.final_url_suffix, ad_group.url_custom_parameters, segments.click_type, segments.date, metrics.impressions, metrics.clicks, metrics.interactions, metrics.conversions, metrics.all_conversions, metrics.cost_micros FROM expanded_landing_page_view

AND

SELECT campaign.id , campaign.name, campaign.status, campaign.advertising_channel_type, campaign.advertising_channel_sub_type, campaign.experiment_type, ad_group.id, ad_group.name, ad_group.status, ad_group.type, expanded_landing_page_view.resource_name, landing_page_view.resource_name, expanded_landing_page_view.expanded_final_url, landing_page_view.unexpanded_final_url, campaign.final_url_suffix, campaign.url_custom_parameters, ad_group.final_url_suffix, ad_group.url_custom_parameters, segments.click_type, segments.date, metrics.impressions, metrics.clicks, metrics.interactions, metrics.conversions, metrics.all_conversions, metrics.cost_micros FROM landing_page_view

However, the data in BigQuery always shows lower numbers than in the Google Ads account. I tried even the backfill of January 2025 data, but the data is still different. Any guess how to fix it?

Hi olha.buts,

It looks like you are encountering a data discrepancy between your Google Ads account and the data you’re extracting into BigQuery. Despite using your custom query and attempting a backfill, the landing page metrics (such as impressions, clicks, conversions, and cost) appear significantly lower than what’s shown in your Google Ads interface.

You might find it helpful to review this case, as it offers a suggested solution to the issue you’re experiencing.

Thanks for sharing. As it appears, the issue is in Performance Max campaigns (whose data is not included in the tables). And if you use the custom report type in the data transfer the option to ‘Include PMax Campaign Tables’ is gone. Any chance it could be possibe to include the PMax data into the landing pages report? Without paying for third-party tools

thanks for replying.

Yes, I do normalize the URLs. Did it work well for you after you integrated it with windsor.ai?

select timezone(‘UTC’, current_timestamp) as insertion_timestamp,

date_trunc('month', segments_date)::date as segments_month, 

segments_date, 

campaign_id, 

campaign_name, 

campaign_experiment_type,

case

when right(split_part(landing_page_view_unexpanded_final_url, ‘{ignore}’, 1), 1) = ‘/’

then split_part(landing_page_view_unexpanded_final_url, ‘{ignore}’, 1)

else split_part(landing_page_view_unexpanded_final_url, ‘{ignore}’, 1) || ‘/’

end as unexpanded_url,

case

when right(split_part(expanded_landing_page_view_expanded_final_url, ‘?’, 1), 1) = ‘/’

then split_part(expanded_landing_page_view_expanded_final_url, ‘?’, 1)

else split_part(expanded_landing_page_view_expanded_final_url, ‘?’, 1) || ‘/’

end as expanded_url,

sum(metrics_impressions) as impressions,

sum(metrics_clicks) as clicks,

sum(metrics_conversions) as conversions,

round(sum(metrics_cost_micros)/1000000, 2) as cost

from --mart.gads_landing_page glp

{{ ref ('mart_gads_landing_page') }}

group by 1, 2, 3, 4, 5, 6, 7, 8