Dear Google Groups Team,
Please unsubscribe me from this group. I no longer wish to receive emails from it.
Thank you for your assistance.
- api v18/19 : the error code is not in this version - 1 Update
- How to Set Campaign Level Device Controls (e.g., Computers && Mobile Phones Only) via Google Ads API - 2 Updates
- Is “Keyword and Asset Generation” from Final URL Available via API? - 2 Updates
- cannot log google ads logging v19 python client - 3 Updates
- post to uploadclickconversions yields the field cannot be set., at conversions[0].gclid - 2 Updates
- asset_field_type_view metrics mismatch between API and UI - 3 Updates
- Enhanced conversions for leads - 4 Updates
- How to request ad/group/campaign data by region through Google Ads API - 3 Updates
- API to Get Weekly Impression Estimates for Audience Segments - 2 Updates
Google Ads API Forum Advisor <ads...@forumsupport.google>: May 13 10:38AM
Hi,
Thank you for reaching out to the Google Ads API support team.
Please be informed that I have removed your response from the forums as it contains the PII information.
With regard to the issue you are experiencing, I am checking with the rest of our team and one of our colleagues will reach out to you once we have an update on this.
Thanks,
Google Ads API Team
Feedback
How was our support today?
[2025-05-13 10:38:27Z GMT] This message is in relation to case "ref:!00D1U01174p.!500Ht01qWmX7:ref" (ADR-00305359)
How to Set Campaign Level Device Controls (e.g., Computers && Mobile Phones Only) via Google Ads API
Ashish Chaturvedi (Ashu) <ashish007...@gmail.com>: May 12 10:15PM -0700
Hello Google Ads API Support,
I'm working with *Demand Gen campaigns* and need to configure *devices
controls at the campaign level*—specifically, to limit serving to *Computers
and Mobile Phones* ads only. This option is available in the Google Ads UI
(see attached screenshot), where I can manually select "Set specific
targeting for devices" and enable just the "Computers and Mobile Phones"
devices.
[image: Screenshot 2025-05-13 at 10.40.04 AM.png]
However, I cannot find any corresponding field or setting in the Google Ads
API documentation (v18 or v19) that allows me to replicate this
functionality programmatically through the API.
Could you please clarify:
1.
Is there a way to *set devices restrictions (e.g., Computers && Mobile
Phone only)* at the *campaign** level* via the Google Ads API?
2.
If so, what are the relevant fields or resource structures?
3.
If not yet available, is this feature in *beta*, and is there any
estimated timeline for *API support*?
Thank you in advance for your help!
Google Ads API Forum Advisor <ads...@forumsupport.google>: May 13 09:13AM
Hi,
Thank you for contacting the Google Ads API support team.
Please refer to the below response to your queries respectively.
Is there a way to set devices restrictions (e.g., Computers && Mobile Phone only) at the campaign level via the Google Ads API? If so, what are the relevant fields or resource structures?
Yes, you can target only computers or mobile phones. You can achieve this device targeting for specific devices using the bid_modifier value in CampaignCriterion. I would recommend you to refer to this guide for additional details, along with the bid_modifier guide.
Thanks,
Google Ads API Team
Feedback
How was our support today?
[2025-05-13 09:13:39Z GMT] This message is in relation to case "ref:!00D1U01174p.!500Ht01qWmUD:ref" (ADR-00305335)
Amit Tomar <amittomar...@gmail.com>: May 12 11:11AM -0700
Hi Team,
While creating a *Search campaign* in the Google Ads UI, I noticed that on
the *“Keyword and asset generation”* screen, once I enter only the *Final
URL*, the system automatically generates:
-
A suggested answer for *“What makes your products or services unique?”*
-
Relevant *keywords* for the ad group
-
Auto-generated *headlines*, *descriptions*, *sitelinks*, and *other
assets* for the ad
I've attached a screenshot for reference.
My question is:
*Is this automatic asset and keyword generation functionality available at
the API level?*
If yes, could you please guide me on:
1.
The relevant *API endpoints or services* we can use to access this
feature
2.
Any *requirements or parameters* we need to provide (e.g., Final URL)
3.
Where this functionality is documented in the API reference
Looking forward to your response. This would be extremely useful for
streamlining our campaign creation process via the API.
Thanks in advance!
Google Ads API and AdWords API Forum <adwor...@googlegroups.com>: May 12 11:48PM -0700
Hi,
Thank you for reaching out to the Google Ads API support team.
Yes, the keyword generation is possible in Google Ads API. You can achieve
this by generating keyword ideas for a campaign by using the
KeywordPlanIdeaService.GenerateKeywordIdeas
<https://developers.google.com/google-ads/api/reference/rpc/v19/KeywordPlanIdeaService#generatekeywordideas>
service. You can provide keyword and URL seeds to generate ideas. Set
targeting parameters such as locations, language, and network settings to
narrow down your search. Historical statistics such as search volume data
are returned to help you determine if you want to use the keywords for your
campaign. For users familiar with the Google Ads UI, this is similar to Keyword
Planner <https://support.google.com/google-ads/answer/6325025>. For more
information refer to the Generate keyword Ideas
<https://developers.google.com/google-ads/api/docs/keyword-planning/generate-keyword-ideas>
for more information.
Thanks,
Google Ads API Team.
Google Ads API and AdWords API Forum <adwor...@googlegroups.com>: May 12 02:10PM -0700
Hi,
Thank you for reaching out to the Google Ads API support team.
Please be informed that the library uses Python's built-in logging
<https://docs.python.org/3.7/library/logging.html> framework and logs to
stderr by default. If included, the logging object defined in your
configuration is passed directly to logging.config.dictConfig
<https://docs.python.org/3.7/library/logging.config.html#logging.config.dictConfig>as
a dict. You can also configure logging programmatically by setting a
logging configuration before initializing the client. You can retrieve the
client logger instance and configure it with the following example:
import logging
logging.basicConfig(level=logging.INFO, format='[%(asctime)s -
%(levelname)s] %(message).5000s')
logging.getLogger('google.ads.googleads.client').setLevel(logging.INFO)
Note that the client logger is configured when the client is initialized.
Any subsequent changes to the logging configuration will be ignored. I
would recommend you refer to the guide Logging to get more information.
I hope this helps! If you need any further assistance, I recommend you
reach out to the Python client library owners via this link
<https://github.com/googleads/googleads-python-lib/issues>, for further
assistance.
Thanks & Regards,
Google Ads API support team.
On Monday, May 12, 2025 at 2:40:18 PM UTC+5:30 locdoan...@gmail.com wrote:
Hi Google Ads team,
Since upgrading Google Ads API version to v19, I cannot get the Google Ads
logging.
```
import asyncio
import logging
from google.protobuf.json_format import MessageToDict
logging.basicConfig(level=logging.INFO, format='[%(asctime)s - %(levelname)s]
%(message).5000s')
logging.getLogger('google.ads.googleads.client').setLevel(logging.INFO)
import google.ads.googleads.client
def setup_google_ads_connection():
google_ads_client = (
google.ads.googleads.client.GoogleAdsClient.load_from_storage(
"googleads.yaml")
)
ga_service = google_ads_client.get_service("GoogleAdsService", version="v19"
)
return google_ads_client, ga_service
async def main(google_ads_client, google_ads_service):
cust_list = ["2978713003"]
for cust_id in cust_list:
asset_query = "SELECT segments.date,campaign.id,ad_group.id,metrics.impressions,metrics.clicks,metrics.cost_micros,asset_field_type_view.field_type,metrics.video_views,metrics.cross_device_conversions
FROM asset_field_type_view WHERE segments.date >= '2025-03-05' AND
segments.date <= '2025-03-05' AND metrics.impressions > 0 AND campaign.id
in ('21080449403')"
setting = google_ads_client.get_type('SummaryRowSettingEnum'
).SummaryRowSetting.SUMMARY_ROW_WITH_RESULTS
search_request = google_ads_client.get_type("SearchGoogleAdsStreamRequest")
search_request.customer_id = cust_id
search_request.query = asset_query
search_request.summary_row_setting = setting
_CLIENT_TIMEOUT_SECONDS = 400
stream = google_ads_service.search_stream(
search_request,
timeout=_CLIENT_TIMEOUT_SECONDS
)
result = []
summary_result = []
for batch in stream:
summary_row = batch.summary_row
summary_row = MessageToDict(
summary_row,
use_integers_for_enums=False,
preserving_proto_field_name=True
)
summary_result.append(summary_row)
for row in batch.results:
row = MessageToDict(
row,
use_integers_for_enums=False,
preserving_proto_field_name=True
)
result.append(row)
if result:
print(f"{cust_id} has data")
if __name__ == "__main__":
google_ads_client, google_ads_service = setup_google_ads_connection()
asyncio.run(
main(google_ads_client, google_ads_service)
)
```
I use python 3.12.9
Here's the version of library used in python when pip freeze
aiohttp==3.9.5
aiosignal==1.3.2
attrs==25.3.0
boto3==1.34.126
botocore==1.34.126
cachetools==5.5.2
certifi==2025.1.31
charset-normalizer==3.4.1
frozenlist==1.6.0
google-ads==26.1.0
google-api-core==2.24.2
google-auth==2.39.0
google-auth-oauthlib==1.2.2
googleapis-common-protos==1.70.0
googlemaps==4.10.0
grpcio==1.71.0
grpcio-status==1.62.3
idna==3.10
iso3166==2.1.1
jmespath==1.0.1
multidict==6.4.3
numpy==2.2.5
oauthlib==3.2.2
pandas==2.2.2
propcache==0.3.1
proto-plus==1.26.1
protobuf==4.25.7
psycopg2-binary==2.9.10
pyasn1==0.6.1
pyasn1_modules==0.4.2
python-dateutil==2.9.0.post0
pytz==2025.2
PyYAML==6.0.2
redis==5.1.1
requests==2.32.3
requests-oauthlib==2.0.0
rsa==4.9.1
s3transfer==0.10.4
six==1.17.0
tzdata==2025.2
ujson==5.10.0
urllib3==2.4.0
uvloop==0.19.0
yarl==1.20.0
P/S: when I use v17, the logging is normal.
Can you guide me through the steps to get Google Ads logging again?
Lộc Đoàn <locdoan...@gmail.com>: May 12 08:33PM -0700
Hi Google Ads team,
I have read your logging doc and follow it. Can you give further
assistance?
Also, this only happens when I upgrade API to v19. When I downgrade to v17,
the log is still fine.
On Tuesday, May 13, 2025 at 4:10:53 AM UTC+7 Google Ads API and AdWords API
Forum wrote:
Google Ads API and AdWords API Forum <adwor...@googlegroups.com>: May 12 10:03PM -0700
Hi,
I see that you are having issues with Google Ads API (Python client). I
would recommend that you reach out to the Python Client Library
<https://developers.google.com/google-ads/api/docs/client-libs/python>
owner by filing an issue in the issue tracker
<https://github.com/googleads/googleads-python-lib/issues> on the issues
tab of your client library on GitHub, so that they can provide guidance on
it.
Jon Watte <jwa...@reve.art>: May 12 09:07PM -0700
Thanks for the answer.
> ● The ClickConversion has a value set for gclid as well as at least one
of gbraid or wbraid. Update the conversion to use only one click ID, and
make sure you are not combining multiple clicks into the same conversion.
Each click has only one click ID.
This is not mentioned on any of the API documentation pages. I assume the
gclid is the better option to choose when it's availble, then.
> Tag is not firing on your website form
My message is mysteriously deleted (it did not include any PII that I can
see, though, as I redacted the identifiers?)
Anyway, in my message, I mentioned that I cannot change the web application
to install google tags, or google tag manager, and thus, I have to do all
the work using back-end requests.
Our ads use a final URL that hits a back-end endpoint that records the
necessary parameters, and redirects to an appropriate location in our
webapp.
Once the user converts, we upload the appropriate conversion action.
Is there something I need to do in this click-landing redirecting web
service to notify Google about the click landing, in lieu of the tag/tag
manager that I cannot use?
On Monday, May 12, 2025 at 4:09:23 AM UTC-7 Google Ads API Forum Advisor
wrote:
Jon Watte <jwa...@reve.art>: May 12 09:12PM -0700
Additional information:
- yes, I have gone through all offline conversion provisioning, because
otherwise I wouldn't even get to this point of the API.
- yes, the action is Inactive, because Google is not accepting my
conversions. That's essentially the point of this question.
- the troubleshooter asks me to install google tags / google tag manager,
which I cannot do, and it doesn't tell me how to send the same signal in
another way
On Monday, May 12, 2025 at 4:09:23 AM UTC-7 Google Ads API Forum Advisor
wrote:
Google Ads API and AdWords API Forum <adwor...@googlegroups.com>: May 12 04:30PM -0700
Hi,
Thank you for contacting the Google Ads API support team.
To check further on this data discrepancy issue, kindly provide the uncropped
Google Ads UI screenshot where the respective data is presented and the
same you are trying to fetch via the API and observe the different results.
You can send the details via the Reply privately to the author option or a direct
private reply to this email.
Lộc Đoàn <locdoan...@gmail.com>: May 12 08:29PM -0700
Hi Google Ads team,
Here's the UI screenshot
[image: Image 13-5-25 at 10.27.jpeg]
On Tuesday, May 13, 2025 at 6:30:52 AM UTC+7 Google Ads API and AdWords API
Forum wrote:
Hi,
Thank you for contacting the Google Ads API support team.
To check further on this data discrepancy issue, kindly provide the uncropped
Google Ads UI screenshot where the respective data is presented and the
same you are trying to fetch via the API and observe the different results.
You can send the details via the Reply privately to the author option or a direct
private reply to this email.
On Monday, May 12, 2025 at 2:48:25 PM UTC+5:30 locdoan...@gmail.com wrote:
Hi Google Ads team
Please help check why the Google Ads UI and API metrics
of asset_field_type_view like impression, clicks is different from each
other?
Here's the query:
SELECT segments.date,campaign.id,ad_group.id,metrics.impressions,metrics.clicks,metrics.cost_micros,asset_field_type_view.field_type,metrics.video_views,metrics.cross_device_conversions
FROM asset_field_type_view WHERE segments.date >= '2025-03-05' AND
segments.date <= '2025-03-05' AND metrics.impressions > 0 AND campaign.id
in ('21080449403')
Here's the library log:
[2025-05-12 16:09:01,492 - INFO] Request made: ClientCustomerId:
2978713003, Host: googleads.googleapis.com, Method:
/google.ads.googleads.v17.services.GoogleAdsService/SearchStream,
RequestId: abk2G0oNyqEQVL6tlBYhpQ, IsFault: False, FaultMessage: None
2978713003 has data
Looking forward to your reply
Lộc Đoàn <locdoan...@gmail.com>: May 12 08:29PM -0700
Hi Google Ads team,
I have sent the image through private message. Have you received it?
On Tuesday, May 13, 2025 at 6:30:52 AM UTC+7 Google Ads API and AdWords API
Forum wrote:
Muhammad Adnan <adnan...@gmail.com>: May 12 03:02PM +0100
Dear Google Ads API Support Team,
I am currently implementing Enhanced Conversions for Leads using the Google
Ads API. On the client side, we are using `gtag('set', 'user_data')` to
pass normalized but unhashed email addresses. On the server side, we are
uploading hashed user identifiers using the `UploadClickConversions`
endpoint.
Despite this setup, we're seeing the message in Google Ads:
**"No user-provided data matches – Your Google tag is implemented correctly
on your website form, but there have been no matches with your imported
user-provided data."**
We followed the hashing guidance from the documentation [
https://developers.google.com/google-ads/api/docs/conversions/upload-offline#prepare-data],
and our implementation hashes normalized email addresses using SHA-256.
However, we recently noticed that our C# implementation was producing
**uppercase hexadecimal hashes**, while Google-provided examples and tools
(Apps Script extension) output lowercase hashes.
Could you please confirm:
1. Does the casing of the hexadecimal hash (uppercase vs lowercase) affect
Google's ability to match user data?
2. Is it a strict requirement to send lowercase SHA-256 hashes in API
requests?
Thank you for your assistance.
Best regards,
Muhammad Adnan
Google Ads API Forum Advisor <ads...@forumsupport.google>: May 12 04:44PM
Hi,
>> Does the casing of the hexadecimal hash (uppercase vs lowercase) affect Google's ability to match user data?
No, the casing of the hexadecimal hash might not affect Google's ability to match user data.
>> Is it a strict requirement to send lowercase SHA-256 hashes in API requests?
According to the Google Ads API documentation, it is necessary to convert the text to lower case before hashing.
Thanks,
Google Ads API Team
Feedback
How was our support today?
[2025-05-12 16:44:20Z GMT] This message is in relation to case "ref:!00D1U01174p.!500Ht01qWdhA:ref" (ADR-00305169)
Muhammad Adnan <adnan...@gmail.com>: May 12 01:01PM -0700
Hello,
Thank you for the response.
I’m currently implementing Enhanced Conversions for Leads on my website
using the Google tag (`gtag.js`). I have followed the documentation and am
setting `user_data` with a normalized (but unhashed) email address.
When a lead is submitted, the lead data is stored in our CRM, and we then
upload the normalized and hashed email addresses using the Google Ads API
(`UploadClickConversions` endpoint).
Could you please confirm if this flow is required and sufficient for
Enhanced Conversions for Leads to function correctly?
Also, on the client side, this is how we are triggering the event:
```javascript
gtag('set', 'user_data', {
email: userEmailVariable
});
gtag('event', 'form_submit', {
'send_to': 'AW-1234567890'
});
I noticed that most documentation examples use ' form_submit' as the event
name instead of 'conversion'.
Could you please clarify:
Is it required to use 'conversion' as the event name in order for Enhanced
Conversions for Leads to properly match data?
Will using an event name like 'form_submit' prevent the enhanced conversion
data from being correctly registered in Google Ads?
I’d appreciate your confirmation, as we are currently seeing the message:
"No user-provided data matches" in the Google Ads.
Thanks again for your support.
Best regards,
Muhammad Adnan
On Monday, 12 May 2025 at 17:45:17 UTC+1 Google Ads API Forum Advisor wrote:
Google Ads API Forum Advisor <ads...@forumsupport.google>: May 12 10:35PM
Hi,
Regarding the event name, since you are using the Google tag, kindly reach out to the Tag Manager help or to these support options, as they are better equipped to assist you on this. Please note that our team specializes in Google Ads API-related concerns and technical implementations only.
The No user-provided data matches warning message triggered when no matches are found with the user-provided data. Please ensure that the data you have imported is properly normalized, hashed, and consistent with the data captured by your website forms. For privacy and security, the following data should be hashed using SHA-256 before uploading:
Email address
Phone number
First name
Last name
Street address
To ensure consistent hash results, please follow these steps before hashing any of the above values:
Remove any leading or trailing spaces.
Convert the text to lowercase.
Format phone numbers according to the E164 standard.
For Gmail or Googlemail addresses, remove any periods (.) before the domain name.
By ensuring these guidelines, you can help prevent mismatches in your data. Since you are uploading the enhanced leads conversions via the API, kindly refer to the prepare data for upload API documentation, where you can find the code examples of how you can upload the hashed user identifiers programmatically.
If you are still unable to resolve the issue, since you are uploading the conversion via the API, kindly provide the complete API logs (request and response with request-id and request header) generated at your end where conversions are uploaded via the API. This information will help us to understand if the issue originates from the API side.
Please note that you have to enable the logging if you are using a client library. You can refer to the guides Java, .Net, PHP, Python, Ruby or Perl to enable logging at your end. For REST interface requests, you can enable logging via the curl command by using the -i flag.
You can send the details via the Reply privately to the author option or a direct private reply to this email.
Thanks,
Google Ads API Team
Feedback
How was our support today?
[2025-05-12 22:35:24Z GMT] This message is in relation to case "ref:!00D1U01174p.!500Ht01qWdhA:ref" (ADR-00305169)
秦润辉 <qinr...@gmail.com>: May 12 06:06AM -0700
How to request ad/group/campaign data by region through Google Ads API
秦润辉 <qinr...@gmail.com>: May 12 06:07AM -0700
How to request ad/group/campaign data by region through Google Ads API
Google Ads API Forum Advisor <ads...@forumsupport.google>: May 12 04:39PM
Hi,
Thank you for reaching out to the Google Ads API support team.
Based on the information provided, I understand that you are looking for guidance to retrieve the ad_group and campaign data segmented by region using the Google Ads API. I would recommend you to use the user_location_view or geographic_view resources to fetch the adgroup and campaign level data segmented by region through the Google Ads API. You need to make sure from where you are trying to retrieve the data before using any of the resources.
1. I would recommend you to use the user_location_view resource if you are trying to fetch the data from your Google Ads account > Campaigns tab > Audiences, keywords and content > Locations. However, I am sharing with you the sample GAQL query and the Google Ads UI screenshot for your reference.
SELECT user_location_view.country_criterion_id, user_location_view.resource_name, user_location_view.targeting_location,
campaign.id, ad_group.id, campaign.name, ad_group.name, metrics.clicks, metrics.impressions, metrics.cost_micros,
metrics.conversions, segments.geo_target_county FROM user_location_view
2. I would recommend you to use the geographic_view report if you are trying to fetch the data from your Google Ads account > Campaigns Tab > Insights and reports > When and where ads showed > Matched locations. However, I am sharing with you the sample GAQL query and the Google Ads UI screenshot for your reference.
SELECT geographic_view.country_criterion_id, geographic_view.location_type, geographic_view.resource_name,
segments.geo_target_region, campaign.id, ad_group.id, ad_group.name, campaign.name, metrics.clicks, metrics.impressions,
metrics.cost_micros, metrics.conversions FROM geographic_view
You can use the search or searchStream methods in making the API calls while retrieving the data. Additionally, you can utilize the Google Ads Query Builder and Query Validator to build and validate the queries for retrieving the data from the Google Ads API.
I hope this clarifies.
Thanks,
Google Ads API Team
Feedback
How was our support today?
[2025-05-12 16:39:24Z GMT] This message is in relation to case "ref:!00D1U01174p.!500Ht01qWd48:ref" (ADR-00305158)
Amit Tomar <amittomar...@gmail.com>: May 12 06:26AM -0700
Dear Team,
I have a follow-up question related to targeting via audience segments.
As shown in the attached screenshot, when selecting an audience segment
(e.g., *Arts & Crafts Supplies*), the UI displays *weekly impression
estimates* (e.g., *100M – 500M*), along with details like location and
selected languages.
I would like to know:
*Is there an API available to retrieve the weekly impression estimates for
audience segments programmatically, similar to what is shown in the Google
Ads UI?*
If yes, could you please guide me to the appropriate endpoint or resource
for this purpose?
Thank you for your continued support.
Google Ads API Forum Advisor <ads...@forumsupport.google>: May 12 04:31PM
Hi,
Thank you for reaching out to the Google Ads API support team.
Currently Google Ads API does not support retrieving the weekly impressions estimates for audience segments. However, I will raise a request to add this feature to be available in the Google Ads API. We cannot provide a scheduled timeline for the availability of this feature in the Google Ads API. With that being said, I would recommend you to follow our blog post and release notes for announcements about new API releases and features.
Thanks,
Google Ads API Team
Feedback
How was our support today?
[2025-05-12 16:31:41Z GMT] This message is in relation to case "ref:!00D1U01174p.!500Ht01qWdEN:ref" (ADR-00305162)
You received this digest because you're subscribed to updates for this group. You can change your settings on the group membership page.
To unsubscribe from this group and stop receiving emails from it send an email to adwords-api...@googlegroups.com.