V8 : CALL_AD : display_url VALUE_MUST_BE_UNSET

269 views
Skip to first unread message

Pete Lavetsky (AdWords API Guru)

unread,
Jun 22, 2021, 12:25:47 PM6/22/21
to AdWords API and Google Ads API Forum
Originally posted in the Java library bug list : https://github.com/googleads/google-ads-java/issues/447

Was told to post here.

All request IDs and logs are in the above thread.

We are not passing in display_url to an existing CallAd but on mutation we receive an error back that display_url VALUE_MUST_BE_UNSET

Looks like fallout from the CallOnlyAd to CallAd migration

Pete

Google Ads API Forum Advisor

unread,
Jun 24, 2021, 1:31:17 PM6/24/21
to pete.l...@gmail.com, adwor...@googlegroups.com
Hi Pete,

Thanks for pointing this out and sharing a detailed summary of the issue. Please allow me to share this with our team and we will provide an update on the issue shortly. 

Regards,
Matt
Google Ads API Team

Google Logo
Matt
Google Ads API Team
 


ref:_00D1U1174p._5004Q2IxmDo:ref

Google Ads API Forum Advisor

unread,
Jun 30, 2021, 2:06:13 AM6/30/21
to pete.l...@gmail.com, adwor...@googlegroups.com
Hi Pete,

Relaying the feedback we received from our team :

The creative itself, an old call-only ad, already has the display_url set. 

Therefore, you need to explicitly set display_url (on the Ad resource) to be an empty string. This is the new requirement of the call ad, also what VALUE_MUST_BE_UNSET means.


I hope this helps and let us know if you have additional clarifications.

Best regards,

Google Logo
Peter Laurence Napa Oliquino
Google Ads API Team
 


ref:_00D1U1174p._5004Q2IxmDo:ref
Message has been deleted

Google Ads API Forum Advisor

unread,
Jul 4, 2021, 10:43:08 PM7/4/21
to pete.l...@gmail.com, adwor...@googlegroups.com
Hi Pete,

I had to delete your recent response as it contained your logs. You may instead use the Reply privately to author option or send the logs directly to our googleadsa...@google.com alias.

Moving forward, I have taken note of the information of your deleted logs, and allow me now to raise this once more to the rest of our team so we can discuss and investigate further. We'll reach back to you once we have updates.

Pete Lavetsky (AdWords API Guru)

unread,
Jul 6, 2021, 9:59:17 AM7/6/21
to AdWords API and Google Ads API Forum
The only thing it contained was the request-Id ... everything else was REDACTED ... what was sensitive about it?

Pete

Google Ads API Forum Advisor

unread,
Jul 8, 2021, 6:20:00 PM7/8/21
to pete.l...@gmail.com, nbi...@google.com, adwor...@googlegroups.com
Hi Pete,

I read through the whole thread, the blog and the Java GitHub bug. Unfortunately in this case, the "fix" you provided in the GitHub bug is the right fix. The explanation is a bit long though.

1. In v8, for CALL_ADS, you should set final_urls. You should also clear display_url in the process. 

I believe the thought process here was that whenever anyone sets a CALL_AD, Google will also force them to clear the display_url, thus upgrading from CallOnlyAd  to CallAd.

2. Since display_url has to be cleared, the right way to do this is to:

a) Do not set display_url field.
b) Add a display_url to the FieldMask.

This is why the following code works:
final FieldMask.Builder fieldMaskBuilder = FieldMasks.allSetFieldsOf( ad ).toBuilder();

if( ad.hasCallAd() ) {
  fieldMaskBuilder.addPaths( "display_url" );
}

3) If you set display_url = "", then that is interpreted by the server as "trying to set display_url to an empty string", which is why you get the VALUE_MUST_BE_UNSET error. Normally, this should be the same thing as "clearing display_url", but the servers don't interpret it this way, because we published display_url as an optional field (https://github.com/googleapis/googleapis/blob/master/google/ads/googleads/v8/resources/ad.proto#L86), which is a way of saying that "" and unset values have different meanings. I can file a request to interpret both errors the same way, but your "fix" is just as valid in this case.

4) Setting the display_url as null is shouldn't throw an NPE, that should be a bug with the Java client library team. However, that won't fix your issue due to point (3).

Apologies for the long thread. I've copied Nick so you don't have to file yet another bug on the Java client library repo. Hopefully in a few months, the migration will be complete, v7 will be sunset, and this workaround is no longer needed.

Cheers
Anash



ref:_00D1U1174p._5004Q2IxmDo:ref

Pete Lavetsky (AdWords API Guru)

unread,
Jul 15, 2021, 10:40:29 AM7/15/21
to AdWords API and Google Ads API Forum
Anash,

Thanks for the full explanation ... I appreciate the communication.

Pete

Reply all
Reply to author
Forward
0 new messages