calculation of (absolute_)top_impression_percentage

236 views
Skip to first unread message

fru...@adzlocal.de

unread,
Nov 26, 2020, 5:55:00 AM11/26/20
to AdWords API and Google Ads API Forum
Hi all,

given the metrics data of the last 14 days of an adgroup (e.g. metrics.impressions, metrics.absolute_top_impression_percentage for each single day) 
i'm trying to calculate the cumulated absolute_top_impression_percentage value for that period. 
I know i can get that value simply via api request - but i'd like to understand the logic / calculation behind that values.

For example i have following datasets, copied from a specific adgroup via performance data report in My Client Centre (MCC) segmented by day:

day impressions absolute_top_impression_percentage impressions*absolute_top_impression_percentage
20201125 7 50 350
20201124 5 66.67 333.35
20201123 12 25 300
20201122 0 0 0
20201121 0 0 0
20201120 31 50 1550
20201119 9 66.67 600.03
20201118 4 66.67 266.68
20201117 13 87.5 1137.5
20201116 13 77.78 1011.14
20201115 0 0 0
20201114 0 0 0
20201113 9 40 360
20201112 5 60 300


What i would do to calculate the cumulated absolute_top_impression_percentage (weighted average value):

absolute_top_impression_percentage_14days 
= SUM(impressions*absolute_top_impression_percentage) / SUM(impressions)
= (7*50 + 5*66.67 + 12*25 + 0*0 + 0*0 + 31*50 + 9*66.67 + 4*66.67 + 13*87.5 + 13*77.78 + 0*0 + 0*0 + 9*40 + 5*60) / 108
=  6208.7/108
= 57.4879... %

But the mcc shows 59.32% for that adgroup.. so can anyone throw some light on how this value is calculated?

Regards
Frank

Zweitze

unread,
Nov 26, 2020, 11:16:14 AM11/26/20
to AdWords API and Google Ads API Forum
If you look at the top row, you see seven impressions, of which 50% was a top impression. That is a red flag. More rows have this problem.

You should realize that top impressions are only available on the search network. This particular adgroup probably shows ads on other networks as well, like the display network, and/or the shopping network, and/or search partners, and/or YouTube. These networks do have impressions but not top impressions - so these impressions should be discarded from your calculation.

To see if this is the case: in the web interface, try looking at the numbers with segmentation on Network.
To get the right calculation: Try adding a filter on NetworkType (AdNetworkType2 in AdWords API), and see how that works out.

Let us know if you find other explanations!

fru...@adzlocal.de

unread,
Nov 27, 2020, 4:18:13 AM11/27/20
to AdWords API and Google Ads API Forum

thanks a lot for your response!

The report with segmentation on network (web interface/mcc) shows the impressions belong to a single type of network only (search network).  
And i get the same result via api request (segmented by segments.ad_network_type, ads api v4) - only one network type.
So i don't think impressions on different networks are the reason for the different values, unfortunately.. was a promising approach.
But you're right, e.g. 7 impressions with 50% of them as absolute top (and 50% top impressions) looks suspicious to me. 
3.5 impressions (non-integer) is not what i would expect here.


btw. that is my awql-query: 

SELECT
metrics.impressions,
metrics.absolute_top_impression_percentage,
segments.ad_network_type,
segments.date
FROM ad_group
WHERE ad_group.id IN (<adgroup_id>)
AND segments.date BETWEEN '2020-11-12' AND '2020-11-25'

The values with segments.date match the values for impressions and absolute_top_impression_percentage in my spreadsheet.
Without segmentation by date i get 108 impressions in total, but the total absolute_top_impression_percentage value doesn't match the calculated one..

Zweitze

unread,
Dec 1, 2020, 5:21:51 AM12/1/20
to AdWords API and Google Ads API Forum
Too bad it didn't work...

One of the lessons I learned - field "impressions" is one of the most abused fields, every time it has a different meaning (for fun, just check the difference for impressions between "Video discovery" and "In-stream video".
Come to think of it, maybe this group also advertises on gmail?

As a next step I suggest to focus on the day with seven impressions: In the web UI, set that as the date and then try all possible segmentations. Also check the group's keywords - see if their impressions add up to seven. Do the same for ads, etc.
Another suggestion is to check ad extensions. Does the group have site links? I think site links are only shown when it's on a top position, and only on search network. It could offer an alternative way to calculate top positions. But only for groups that do have active site links of course.

Google Ads API Forum Advisor Prod

unread,
Dec 2, 2020, 1:54:05 PM12/2/20
to fru...@adzlocal.de, adwor...@googlegroups.com

Hi,

Thank you for reaching out. The way you do the calculation seems right. However, the formula used to calculate accumulated absolute_top_impression_percentage value for a period of time is not exposed so we could not make too much conclusion here. I calculated the impressions*absolute_top_impression_percentage for each day and summed the ceiling values instead to get the result at 61.1111%. It’s not the same as the value shown on the Google Ads UI. It’s possible that the Google Ads UI also takes other considerations into account and uses a more complex algorithm to calculate the accumulated value.

Thanks and regards,
Xiaoming, Google Ads API Team

 

Google Logo
Xiaoming
Google Ads API Team
 


ref:_00D1U1174p._5004Q28lAF6:ref

Google Ads API Forum Advisor Prod

unread,
Dec 2, 2020, 1:58:44 PM12/2/20
to adwor...@googlegroups.com

fru...@adzlocal.de

unread,
Dec 11, 2020, 5:04:22 AM12/11/20
to AdWords API and Google Ads API Forum
Hi Xiaoming,

thanks a lot for your valuable response! 
Then i think the best i can probably do is to use the values provided by the api/ads ui instead of calculating them on my own.
But if anyone knows more about the secret formula :-) , i'd love to learn more about it!

Regards
Frank 

Wei Zhong

unread,
Feb 19, 2024, 10:44:31 AM2/19/24
to Google Ads API and AdWords API Forum

We do notice the "Absolute top impression rate on Search" we have is different than the Google Local service UI... Does anyone have lucks to figure out the UI formula to provide that % number?

by date range:
```
SUM(impressions*absolute_top_impression_percentage) / SUM(impressions)  = 0.03245232519237203
```


Screenshot 2024-02-19 at 10.43.15 AM.png

Google Ads API Forum Advisor

unread,
Feb 19, 2024, 3:29:36 PM2/19/24
to w...@searchkings.ca, adwor...@googlegroups.com
Hi,

Thank you for getting back to us.

By reviewing your query, I understand that you are getting some discrepancy in the "absolute top impression rate on search" data. I would suggest you refer to the help center article About top and absolute top metrics to get more information.

Kindly note that the concerns related to the Google Ads UI are out of scope for the Google Ads API support team, as our team specializes in Google Ads API related concerns and technical implementations only. I would suggest you reach out to the Google Ads Product support team as they are better equipped to assist you on this.
 
This message is in relation to case "ref:!00D1U01174p.!5004Q028lAF6:ref"

Thanks,
 
Google Logo Google Ads API Team



 

Message has been deleted
Message has been deleted

Wei Zhong

unread,
Feb 19, 2024, 3:59:36 PM2/19/24
to Google Ads API and AdWords API Forum
From our understanding, the "metrics.absolute_top_impression_percentage" is from:
"Search absolute top impression rate = Impressions on the absolute top/Impressions"

Also, we are trying to do it by `segments.date` which the result is different than without the segments,
example:


Without `segments.date`:
```
    metrics: {
      clicks: '22',
      conversions: 2,
      absoluteTopImpressionPercentage: 0.04819277108433735, => the UI uses this value, so the UI does not calculate their way
      impressions: '196'
    }
```


With `segments.date`, we are trying to match back the result like above because we need a daily metric for the chart:
```
    metrics: {
      clicks: '7',
      conversions: 0,
      absoluteTopImpressionPercentage: 0.06557377049180328,
      impressions: '97'
    },
    segments: { date: '2024-01-01' }
  },
  {
    campaign: { resourceName: 'xxxxxxx' },
    metrics: {
      clicks: '15',
      conversions: 2,
      absoluteTopImpressionPercentage: 0,
      impressions: '99'
    },
    segments: { date: '2024-01-02' }

  }

>>> SUM(impressions*absolute_top_impression_percentage) / SUM(impressions)  = 0.03245232519237203
```

From these two examples: why these two numbers are different "0.04819277108433735" vs  "0.03245232519237203"?

It seems Google Ads API is using its way(hidden values) rather than just like this simple formula:
Search absolute top impression rate = Impressions on the absolute top/Impressions

Or the API has another internal metric "Impressions on the absolute top" which is different than the normal "metrics.impressions"?


Thanks

Google Ads API Forum Advisor

unread,
Feb 19, 2024, 6:47:13 PM2/19/24
to w...@searchkings.ca, adwor...@googlegroups.com
Hi,

Thank you for getting back to us.

Kindly note that the "Impressions on the absolute top" is the impressions you’ve received in the absolute top location (the very first ad above the organic search results). I would suggest you to check this metrics documentation to know available metrics in the Google Ads API. Also, if you're able to see that metric in the Google Ads UI, provide us with the uncropped UI screenshot so that we can assist you further.

You can send the details via Reply privately to the author option, or direct private reply to this email.

Wei Zhong

unread,
Feb 19, 2024, 9:25:39 PM2/19/24
to Google Ads API and AdWords API Forum
I already tried with "metrics.search_top_impression_share" but nothing shows up.

SELECT
metrics.impressions,
metrics.absolute_top_impression_percentage,
metrics.search_top_impression_share,
segments.date
FROM campaign
WHERE customerId
AND segments.date BETWEEN '2024-01-01' AND '2024-01-02'

Zweitze

unread,
Feb 20, 2024, 5:12:51 AM2/20/24
to Google Ads API and AdWords API Forum
Wei,

That's an amazing discovery. Question though:
When you set the SummaryResultSetting to SUMMARY_ROW_WITH_RESULTS, and you post the segmented query, what is written on the result row? 0.048 or 0.034?

Further I would suggest to try to reproduce this in the UI. Go to the campaigns page, filter on that particular campaign, select the right columns and date range.
Then try to include and exclude the date segment.

Either you get different results and the API is wrong in certain scenarios, or turning the date segment off and on results to a different a "Totals"-line, meaning you've got to ask the product support.

Google Ads API Forum Advisor

unread,
Feb 20, 2024, 9:35:00 AM2/20/24
to zwe...@gmail.com, adwor...@googlegroups.com
Hi,

Thank you for reaching out to the Google Ads API support team.

I see that you have already raised this concern on another thread with the subject “calculation of (absolute_)top_impression_percentage” and we have already responded there for this issue. To avoid multiple threads on the same issue, please take a look at that thread and continue the discussion on the same for further updates on the issue.

 
This message is in relation to case "ref:!00D1U01174p.!5004Q02rzG9F:ref"


Thanks,
 
Google Logo Google Ads API Team


Wei Zhong

unread,
Feb 20, 2024, 11:21:49 AM2/20/24
to Google Ads API and AdWords API Forum
Hey Zweitze,

We only care for Local Service at this point, so we are trying to match it with that UI for now.

And we want to get the metric daily so we can display the data in a chart, but the weighted average result is different.

[
({
metrics: {
clicks: '22',
absoluteTopImpressionPercentage: 0.04819277108433735, => matched the 4.82% AB Top % from the UI
impressions: '196',
},
},
{
campaign: { resourceName: 'xxx' },
metrics: {
clicks: '7',
absoluteTopImpressionPercentage: 0.06557377049180328, => if it is one day, it matched the UI as well
impressions: '97',
},
segments: { date: '2024-01-01' },
},
{
campaign: { resourceName: 'xxx' },
metrics: {
clicks: '15',
absoluteTopImpressionPercentage: 0,
impressions: '99',
},
segments: { date: '2024-01-02' },
})
];


>>> Not matched: SUM(impressions*absolute_top_impression_percentage) / SUM(impressions)  = 0.04032254813835469


```

Multiple days' result is different:
Screenshot 2024-02-20 at 11.12.42 AM.png


Single day which matched the absoluteTopImpressionPercentage from the API response
Screenshot 2024-02-20 at 11.17.25 AM.png

Wei Zhong

unread,
Feb 20, 2024, 11:45:25 AM2/20/24
to Google Ads API and AdWords API Forum
The early response from your team about the formula is not right.
Search absolute top impression rate                 =     Impressions on the absolute top    ÷   Impressions
metrics.absolute_top_impression_percentage              ^ metrics.???                                        ^ metrics.impressions


And the "Impressions on the absolute top" doesn't in the API response and the API doc, also we believe the metrics.search_absolute_top_impression_share is a completely different metric.
 

Could you clarify again what is the "Impressions on the absolute top"? and it is available from the API response? Thanks!

Zweitze

unread,
Feb 20, 2024, 11:50:57 AM2/20/24
to Google Ads API and AdWords API Forum
Wei,

The reasoning behind my question is the following:
The Ads API team can only investigate results that differ from the UI. You probably noticed that.
(Actually that is not entirely true - if you manage to escalate you could get further. But don't hold your breath...)

If you can prove similar differences in the UI, you can confront the product team.
They have better access to the backoffice of Google Ads and can help you out.

If the results in the UI make sense but the API produces different results, then the API has a problem and the Ads API team is there to help you. Post screenshots plus the logs of the API call, then the Ads API team can work with that and do its job.

Google Ads API Forum Advisor

unread,
Feb 20, 2024, 2:12:24 PM2/20/24
to w...@searchkings.ca, adwor...@googlegroups.com
Hi,

Thank you for reaching out to the Google Ads API support team.

I see that you have already raised this concern on another thread with the subject 'calculation of (absolute_)top_impression_percentage', and we have already responded there for this issue. To avoid multiple threads on the same issue, please take a look at that thread and continue the discussion on the same for further updates on the issue.
 
This message is in relation to case "ref:!00D1U01174p.!5004Q02rzGpC:ref"


Thanks,
 
Google Logo Google Ads API Team


Google Ads API Forum Advisor

unread,
Feb 20, 2024, 2:12:28 PM2/20/24
to zwe...@gmail.com, adwor...@googlegroups.com
Hi,

Thank you for getting back to us.

I see that you have already raised this concern on another thread with the subject 'calculation of (absolute_)top_impression_percentage', and we have already responded there for this issue. To avoid multiple threads on the same issue, please take a look at that thread and continue the discussion on the same for further updates on the issue.
 
This message is in relation to case "ref:!00D1U01174p.!5004Q02rzG9F:ref"


Thanks,
 
Google Logo Google Ads API Team


Reply all
Reply to author
Forward
0 new messages