In another post, I wrote about plotting charts in blog posts generated by a static site generator. Here I apply the technique to look at Google Ads performance data. Nothing sophisticated. I just want to follow the daily impressions trend for Asset-based Ad Extensions since the start of 2022 as mandated auto migration begins.
CSV data used is available here and here
Getting Data
Google’s schedule for auto migration starts with Sitelinks, Callout, and Structured Snippets on Jan 10th, 2022. The second batch starts on Apr 8th and includes Call, App, Hotel Callout, and Price extensions. Since customers can also self-migrate ahead of time, it would be interesting to see the real traffic shift from Feeditem to Asset-based with respect to each Ad Extension type.
I use a tool called mccfind (one of my Rust learning projects) to grab extension level daily traffic via below GAQL. The query is applied across ~1000 Google Ads accounts. Results are aggregated by Date and Extension Type, and saved as plain text in CSV format.
mccfind -q asset_field_type_view_ytd --groupby "asset_field_type_view.field_type" --groupby "segments.date" -o all_asset_field_type_view_ytd.csv
GAQL to get YTD traffic across all Asset-based Ad Extension Types
SELECT
asset_field_type_view.field_type,
segments.date,
metrics.impressions,
metrics.clicks,
metrics.cost_micros,
customer.currency_code
FROM asset_field_type_view
WHERE
segments.year IN (2022)
AND metrics.impressions > 1
ORDER BY
asset_field_type_view.field_type, segments.date
The output file is cleaned up a bit to remove extra " quotation marks in the date column and . periods from header names (e.g. from segments.date to just date).
$ cat all_asset_field_type_view_ytd.csv | sed 's/[a-z_]*\.//g' | sed 's/"//g' > all_asset_field_type_view_ytd_cleaned.csv
Here’s a peek at the cleaned-up CSV. Please note that the cost column isn’t summed up correctly since it’s aggregated without currency conversion.
A peek of all_asset_field_type_view_ytd_cleaned.csv
field_type,date,impressions_sum_sum,clicks_sum_sum,cost_micros_sum_sum
Call,2022-02-11,63,2,139000000
Call,2022-02-12,63,4,242000000
Call,2022-02-14,95,7,301000000
Call,2022-02-15,93,5,326000000
Asset-based Traffic by Extension Type
Ad Extensions are extra advertisement material that appear next to Ads. They help reinforce branding or product niche, but may not be clicked on. Hence, let’s look at daily total impressions as opposed to clicks or cost.
Here’s the visualization of daily impressions trend from the CSV above using vega-lite.
YTD Daily Impressions by Asset-based Extension Type
From the plot, it’s clear that most of the traffic comes from Callout and Sitelinks Extensions. Structured Snippets has a minor share and the rest of the extension types don’t even show up.
In terms of migration dates, compared to the originally announced migration date of Jan 10th, 2022, Asset-based traffic doesn’t start to increase significantly until after Feb 9th, reaching a plateau around Feb 17th.
Tracking State of Asset-based Migration
To track how much of Ad Extensions traffic is migrated to Asset-based, let’s plot YTD Daily Impressions from both Asset-based and Feeditem.
First step is to download Feeditem traffic via this GAQL.
mccfind -q feed_placeholder_view_ytd --groupby "feed_placeholder_view.placeholder_type" --groupby "segments.date" -o all_feed_placeholder_view_ytd.csv
GAQL to download Feeditem traffic for all Ad Extensions
SELECT
feed_placeholder_view.placeholder_type,
segments.date,
metrics.impressions,
metrics.clicks,
metrics.cost_micros,
customer.currency_code
FROM feed_placeholder_view
WHERE
segments.year IN (2022)
AND metrics.impressions > 1
ORDER BY
feed_placeholder_view.placeholder_type, segments.date
To combine Feeditem and Asset-based Sitelinks traffic into a single plot, the two CSV files need to be combined. A new category column marks each row as either Feeditem or Asset-based.
$ echo "category,type,date,impressions,clicks,cost_micros" > combined_ad_extensions_ytd.csv
$ cat all_feed_placeholder_view_ytd.csv | grep -v "metrics" | awk '{print "Feeditem,"$0}' | sed 's/"//g' >> combined_ad_extensions_ytd.csv
$ cat all_asset_field_type_view_ytd.csv | grep -v "metrics" | awk '{print "Asset,"$0}' | sed 's/"//g' >> combined_ad_extensions_ytd.csv
Here’s a peek at Sitelinks data from the combined csv. It’s interesting that Asset-based Sitelinks already has some, albeit tiny, traffic since Jan 1st, 2022. Some customers started early.
YTD Daily Impressions for Sitelinks
Similarly, for Callout Extensions:
YTD Daily Impressions for Callout
And for Structured Snippet:
YTD Daily Impressions for Structured Snippet
And finally for Promotion Extension:
YTD Daily Impressions for Promotion Extension
Summary
Visualizing the daily impression changes across Asset-based Ad Extension migration reveals a number of trends:
- Some customers have had Asset-based impressions since Jan 1st, 2022 to experiment with the new format
- The bulk of Sitelinks, Callout, and Structured Snippet traffic shifted to Asset-based around Feb 17th, 2022
- As of Apr 12, ~10% of trafficking Ad Extensions are still in Feeditem form
- Towards the end of March, a downward trend appears across most of the extension types. Unclear if related to migration to Asset-based
- Promotion Extension shows a very different periodic traffic pattern, with larger percentage still in Feeditem category