Shopping Performance Report returns same product twice

349 views
Skip to first unread message

Firma Lemundo

unread,
Mar 14, 2017, 9:04:37 AM3/14/17
to AdWords API Forum
Hi everyone,

I am facing the following issue:

I am using the SHOPPING_PERFORMANCE_REPORT to find the performance by the products (OfferId).
I am not using Date or other segments and the product is only in a single adgroup.

However, I still get two entries, because the product's ProductTypeL3 changed in the time frame.

So I get different data for the same product (which is in different time frames) which is very annoying for my purpose.

Moreover, ProductTypeL3 is not a segment field, so I wonder if this is a bug, or expected behavior?

Comments and help much appreciated :)

Sreelakshmi Sasidharan (AdWords API Team)

unread,
Mar 14, 2017, 2:54:02 PM3/14/17
to AdWords API Forum
Hi, 

To take a closer look at your issue, could you please Reply privately to author and share your report definition, a copy of the SHOPPING_PERFORMANCE_REPORT and you client customer Id?

Thanks,
Sreelakshmi, AdWords API Team

Thanet Knack Praneenararat (AdWords API Team)

unread,
Mar 29, 2017, 4:31:18 AM3/29/17
to AdWords API Forum
Hello,

Let us investigate more based on your information sent earlier.
I'll update this thread once we know more.

Best,
Thanet, AdWords API Team

Thanet Knack Praneenararat (AdWords API Team)

unread,
Mar 30, 2017, 2:56:22 AM3/30/17
to AdWords API Forum
Hello,

It seems what makes your returned rows look duplicate is not ProductTypeL3, but the CategoryL5.
As CategoryL5 is also the main key of SHOPPING_PERFORMANCE_REPORT, this works as intended.
In other words, to tell the uniqueness of a row in this report type, CategoryL5 should be taken into account as well.

Cheers,
Thanet, AdWords API Team

On Tuesday, March 14, 2017 at 10:04:37 PM UTC+9, Firma Lemundo wrote:

Marc P

unread,
Mar 30, 2017, 9:40:27 AM3/30/17
to AdWords API Forum
Hi Thanet,

yes, in this case it is CategoryL5 - for another customer id it is ProductTypeL3.

My point is: both ProductTypeL3 and CategoryL5 are attributes as specified in https://developers.google.com/adwords/api/docs/appendix/reports/shopping-performance-report

They are not Segments.

So my understanding is that they should not split the data. Rather I would assume to get just one result with ProductTypeL3 and CategoryL5 having the most recent attribute value ?

Thank you for your help
Marc

Thanet Knack Praneenararat (AdWords API Team)

unread,
Mar 30, 2017, 12:06:33 PM3/30/17
to AdWords API Forum
Hi Marc,

It's true that they're not the segment field, but it's a key column in this report type.
The key columns are what you need to include in order to tell the uniqueness of the report row.
For instance, if you look at either only AdGroupName, CampaignName in this report type, you can't distinguish two rows from each other.
But if you have a look at OfferId and CategoryL5, you can tell that those two rows are different.

Put it in another way, they're an attribute field that even when you've not requested them, they're still requested implicitly.
You can't combine those rows that have at least one key field different from each other.
Not requesting them in AWQL / report definition just makes the reporting service not return them with the results.

This is different from segment fields. If you don't request them, they're not requested implicitly.
Once you request them, you're likely to get more report rows than usual.

Hope this help.

Thanet, AdWords API Team

Marc P

unread,
Apr 5, 2017, 3:16:20 AM4/5/17
to AdWords API Forum
Hi Thanet,

another request confirmed my confusion and my assumption that CategoryL5 behaves as a segment in this case.
When I do the same request without requestion the CategoryLX fields, I get just one result with the OfferId.

SELECT OfferId,       AdGroupId,       AdGroupStatus,       AdGroupName,       CampaignName,       Brand,       ProductCondition,       ProductTypeL1,       ProductTypeL2,       ProductTypeL3,       ProductTypeL4,       ProductTypeL5,       CustomAttribute0,       CustomAttribute1,       CustomAttribute2,       CustomAttribute3,       CustomAttribute4,          Channel,       ChannelExclusivity,       SearchClickShare,       SearchImpressionShare,       Ctr,       Clicks,       Impressions,       Cost,       ConversionValue,       ConversionRate,       Conversions,       AverageCpc FROM SHOPPING_PERFORMANCE_REPORT WHERE CampaignStatus IN [ENABLED] AND AdGroupStatus IN [ENABLED] AND ConversionValue > 0 AND Cost > 0 AND OfferId = 12044542 

-> 1 Result with OfferId 12044542

SELECT OfferId,       AdGroupId,       AdGroupStatus,       AdGroupName,       CampaignName,       Brand,       ProductCondition,       ProductTypeL1,       ProductTypeL2,       ProductTypeL3,       ProductTypeL4,       ProductTypeL5,       CustomAttribute0,       CustomAttribute1,       CustomAttribute2,       CustomAttribute3,       CustomAttribute4,       CategoryL1,       CategoryL2,       CategoryL3,       CategoryL4,       CategoryL5,       Channel,       ChannelExclusivity,       SearchClickShare,       SearchImpressionShare,       Ctr,       Clicks,       Impressions,       Cost,       ConversionValue,       ConversionRate,       Conversions,       AverageCpc FROM SHOPPING_PERFORMANCE_REPORT WHERE CampaignStatus IN [ENABLED] AND AdGroupStatus IN [ENABLED] AND ConversionValue > 0 AND Cost > 0 AND OfferId = 12044542 

-> 2 Results with OfferId 12044542 TWICE -> differing only on CategoryL5

Cheers
Marc

Marc P

unread,
Apr 5, 2017, 3:16:32 AM4/5/17
to AdWords API Forum
Hi Thanet,

thank you for your help. Two more questions to clarify:

1) How do I know what are the "key fields" in a report?
2) You wrote "Have a look at OfferId and CategoryL5, you can tell that those two rows are different" - you mean combined, correct? Because the OfferId here is the same

My point is this: I want to get the current information of the product, however I get two rows for the same OfferId and it is different only on CategoryL5 - thus I do not know which value of CategoryL5 is current and which one is old / legacy.

This only happens when the product was changed on CategoryL5 - it is the same product (same OfferId). It appears twice only because it was changed at some point in time.

I find this confusing and would expect to get just one row with the product and with CategoryL5 set to the most recent value for that product...

Thank you again
Marc

Thanet Knack Praneenararat (AdWords API Team)

unread,
Apr 5, 2017, 3:27:17 AM4/5/17
to AdWords API Forum
Hi Marc,

Thanks very much for reporting.
Your previous example then shows that CategoryL5 really behaves like a segment.
If it's a key column, even if you don't request for it, there should be two rows returned.
I'll talk with engineering to see how we fix this.

As for your other questions:
1) How do I know what are the "key fields" in a report?
Unfortunately, it's not quite obvious from the field itself. But we try to document it in the summary description in the beginning of each report type page.

2) You wrote "Have a look at OfferId and CategoryL5, you can tell that those two rows are different" - you mean combined, correct? Because the OfferId here is the same
Yes, combined. It's like you have a composite key in relational databases. Only one key can't tell uniqueness of a row. We have to use them together to tell uniqueness.

I find this confusing and would expect to get just one row with the product and with CategoryL5 set to the most recent value for that product...
I've passed this feedback to engineering too.
For now, would using date range help you? Or does it always return two rows for any kinds of date ranges? 

Best,
Thanet, AdWords API Team

Marc P

unread,
Apr 5, 2017, 9:04:13 AM4/5/17
to AdWords API Forum
Hi Thanet,

thank you for your reply.

The date range solves it if you get the date range right, i.e. you request a range where the product was not changed in that date range.

However, I do not know when and if products were changed and thus my fix right now is to always filter out all duplicates which is bad as I thus cannot act on the information and have to skip the duplicate products completely.

Ideally, the report would only return the product once (as OfferId is unique for the product and I would not expect to get the same product twice) and have all the properties like CategoryL5 with the most recent information, i.e. CategoryL5 is as it is RIGHT NOW for the product even if it was different in the past.

Cheers
Marc

Marc P

unread,
Apr 24, 2017, 3:01:49 AM4/24/17
to AdWords API Forum
Hi Thanet,

any update on this topic?

Thanks
Marc

Thanet Knack Praneenararat (AdWords API Team)

unread,
Apr 24, 2017, 1:07:03 PM4/24/17
to AdWords API Forum
Hello Marc,

Sorry for the delay. It looks like this works as intended--all data of CategoryL5 is returned in SHOPPING_PERFORMANCE_REPORT.
I'm still asking if there are other workarounds for this.

Best,
Thanet, AdWords API Team

Firma Lemundo

unread,
Apr 25, 2017, 10:07:45 AM4/25/17
to AdWords API Forum
Hi Thanet,

CategoryL5 is just one example, this seems to be happening for almost all product related attributes.

I guess the intended functionality is to show that a product changed at some point in time, but this is very misguiding as I would not expect to get the same product twice (it has the same OfferId...) without the information at what point it was changed or what time range we are talking about.

This might be a case where it would be useful to have a parameter to set, something like "showProductChanges = true/false".

At the very least, there should be a possibility to distinguish at what point in time the product changed, so for example:

OfferId CategoryL2          DateRange
123      Clothing/Pants     03/14 - 03/18
123      Clothing/Shorts    03/18 - 03/29

In that case, I could at least detect which entry is the most recent one (Clothing/Shorts) and use that one, but getting the results as is the case now is like this:

OfferId CategoryL2        
123      Clothing/Pants    
123      Clothing/Shorts  

and I do not know whether the product with OfferId 123 is in CategoryL2 Clothing/Pants or Clothing/Shorts RIGHT NOW.

Thanks
Marc

Thanet Knack Praneenararat (AdWords API Team)

unread,
Apr 26, 2017, 4:30:35 AM4/26/17
to adwor...@googlegroups.com
Hi Marc,

I totally understand what you said but, unfortunately, it's not supported by the current version of SHOPPING_PERFORMANCE_REPORT.
I'll give your feedback as a feature request to engineering.

Best,
Thanet, AdWords API Team

Marc P

unread,
Jul 11, 2017, 10:02:57 AM7/11/17
to AdWords API Forum
Hi Thanet,

any updates on this issue?

We are still having many problems due to this.

At the very least, it would be helpful to get a date range per row in the response, so we can now at what times the ID performed good and at what times not so good.

Cheers
Marc

Thanet Knack Praneenararat (AdWords API Team)

unread,
Jul 12, 2017, 3:23:44 AM7/12/17
to AdWords API Forum
Hello Marc,

Really sorry for this long waiting.
It was a long conversation between many parties.

First, it looks like this works as intended for engineering to return the CategoryL* as segment fields.
The documentation needs to be fixed.

About the date range per row, I'm pushing this through but cannot tell the exact date to finish.

Best,
Thanet, AdWords API Team

Marc P

unread,
Aug 29, 2017, 3:27:17 AM8/29/17
to AdWords API Forum
Hi Thanet,

thank you for the update. This sounds promising. Looking forward to getting the date ranges per row :)

Cheers
Marc

Ad Ja

unread,
Jul 27, 2018, 1:05:00 AM7/27/18
to AdWords API and Google Ads API Forum
Hi Thanet,

Apologies if it's late, but I'm currently working on a project that would make this very useful.
Is there any updates on this?

Also, do you know any other way of getting a report where it returns products with the most recent information?

Thanks.

Thanet Knack Praneenararat (AdWords API Team)

unread,
Jul 27, 2018, 1:39:36 AM7/27/18
to AdWords API and Google Ads API Forum
Hello Ad Ja,

Unfortunately, this doesn't look like very high priority for engineering at this moment.
So, there is no progress on this right now.

Also, do you know any other way of getting a report where it returns products with the most recent information?
As far as I know, we cannot get that using the current version of the API. 

Best,
Thanet, AdWords API Team
Reply all
Reply to author
Forward
0 new messages