Posts tagged with google-ad-manager

Please see this minimum example

I have a static HTML page that looks like this

<!DOCTYPE html> <html>   <head>     <meta charset="UTF-8" />     <meta name="viewport" content="width=device-width, initial-scale=1.0" />     <meta http-equiv="X-UA-Compatible" content="ie=edge" />     <title>New User</title>   </head>   <body>     <!-- Google Analytics Code -->     <script>(function (i, s, o, g, r, a, m) {         i["GoogleAnalyticsObject"] = r;         (i[r] =           i[r] ||           function () {             (i[r].q = i[r].q || []).push(arguments);           }),           (i[r].l = 1 * new Date());         (a = s.createElement(o)), (m = s.getElementsByTagName(o)[0]);         a.async = 1;         a.src = g;         m.parentNode.insertBefore(a, m);       })(         window,         document,         "script",         "https://www.google-analytics.com/analytics.js",         "ga"       );       ga("create", "MY_UA", "auto");       ga("send", "pageview");       ga("send", {         hitType: "event",         eventCategory: "livechatNewUser",         eventAction: "redirect",       });</script>     <!-- Global site tag (gtag.js) -->     <script src="https://www.googletagmanager.com/gtag/js?id=MY_AdWords"></script>     <script>window.dataLayer = window.dataLayer || [];       function gtag() {         dataLayer.push(arguments);       }       gtag("js", new Date());       gtag("config", "MY_AdWords");       gtag("event", "conversion", {         send_to: "MY_AdWords/MY_Label",       });</script>     <script language="javascript">setTimeout(function () {         document.location.href = "/dashboard";       }, 1000);</script>   </body> </html> 

After 3 days, my ga backend is receiving some data

However, my ad words backend is not receiving any data

The date range is the same, Why is this happening?

We are currently having one active MCC account for production. We want to create a new MCC account for our testing purpose. If we apply for the approval of new account it gets rejected from Google it says there already exists one account.

How to create two MCC Account so that we can separate out the production and non production activity completely from each other?

We want both the accounts to be live and the ads get live and some impression,clicks can be accumulated against the ads.

It's been more than a week and I haven't been to figure out where I'm going wrong.
I'm trying to use a keyword planner and getting a continuous Authentication error. I have my test manager account and have created a google test ads account from that. I have also my client_id, client_secret, and refresh_token from console.developer.google.com
I'm using a developer token from the production account which is not verified.
Thanks in advance.
Here is the error Message:

 Your default encoding, cp1252, is not UTF-8. Please run this script with UTF-8 encoding to avoid errors. Error summary: {'faultMessage': "[QuotaCheckError.INVALID_TOKEN_HEADER @ ; trigger:'New developers must use the Google Ads API.']", 'requestId': 'foobar', 'serviceName': 'TrafficEstimatorService', 'methodName': 'get', 'operations': '1', 'responseTime': '83'} Traceback (most recent call last):   File "env\lib\site-packages\googleads\common.py", line 984, in MakeSoapRequest      return soap_service_method(   File "env\lib\site-packages\zeep\proxy.py", line 46, in __call__     return self._proxy._binding.send(   File "env\lib\site-packages\zeep\wsdl\bindings\soap.py", line 135, in send          return self.process_reply(client, operation_obj, response)  File "env\lib\site-packages\zeep\wsdl\bindings\soap.py", line 229, in process_reply     return self.process_error(doc, operation)   File "env\lib\site-packages\zeep\wsdl\bindings\soap.py", line 329, in process_error     raise Fault( zeep.exceptions.Fault: [QuotaCheckError.INVALID_TOKEN_HEADER @ ; trigger:'New developers must use the Google Ads API.']      During handling of the above exception, another exception occurred: Traceback (most recent call last):   File "test.py", line 181, in <module>     main(adwords_client)   File "test.py", line 97, in main     estimates = traffic_estimator_service.get(selector)          File "env\lib\site-packages\googleads\common.py", line 996, in MakeSoapRequest      raise googleads.errors.GoogleAdsServerFault( googleads.errors.GoogleAdsServerFault: [QuotaCheckError.INVALID_TOKEN_HEADER @ ; trigger:'New developers must use the Google Ads API.'] 

Here is my google ads file:

adwords: # AdWordsClient configurations   developer_token: mydevtoken1234   client_customer_id: 123-123-123   validate_only: False   client_id: myclientId.apps.googleusercontent.com   client_secret: myclientsecret   refresh_token: myrefreshtoken # AdManagerClient configurations ad_manager:   developer_token: EZ-x_JXs6mtX6tDO_8VauA   application_name: get-keyword-ideas   # path_to_private_key_file: INSERT_PATH_TO_JSON_KEY_FILE_HERE   client_id: myclientId.apps.googleusercontent.com   client_secret: myclientsecret   refresh_token: myrefreshtoken 

And Here is my Python code for trafficEstimator

#!/usr/bin/env python # # Copyright 2016 Google Inc. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # #      http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """This example retrieves keyword traffic estimates. The LoadFromStorage method is pulling credentials and properties from a "googleads.yaml" file. By default, it looks for this file in your home directory. For more information, see the "Caching authentication information" section of our README. """ from googleads import adwords def main(client):   # Initialize appropriate service.   traffic_estimator_service = client.GetService(       'TrafficEstimatorService', version='v201809')   # Construct selector object and retrieve traffic estimates.   keywords = [       {'text': 'mars cruise', 'matchType': 'BROAD'},       {'text': 'cheap cruise', 'matchType': 'PHRASE'},       {'text': 'cruise', 'matchType': 'EXACT'}   ]   negative_keywords = [       {'text': 'moon walk', 'matchType': 'BROAD'}   ]   keyword_estimate_requests = []   for keyword in keywords:     keyword_estimate_requests.append({         'keyword': {             'xsi_type': 'Keyword',             'matchType': keyword['matchType'],             'text': keyword['text']         }     })   for keyword in negative_keywords:     keyword_estimate_requests.append({         'keyword': {             'xsi_type': 'Keyword',             'matchType': keyword['matchType'],             'text': keyword['text']         },         'isNegative': 'true'     })   # Create ad group estimate requests.   adgroup_estimate_requests = [{       'keywordEstimateRequests': keyword_estimate_requests,       'maxCpc': {           'xsi_type': 'Money',           'microAmount': '1000000'       }   }]   # Create campaign estimate requests.   campaign_estimate_requests = [{       'adGroupEstimateRequests': adgroup_estimate_requests,       'criteria': [           {               'xsi_type': 'Location',               'id': '2840'  # United States.           },           {               'xsi_type': 'Language',               'id': '1000'  # English.           }       ],   }]   # Create the selector.   selector = {       'campaignEstimateRequests': campaign_estimate_requests,   }   # Optional: Request a list of campaign-level estimates segmented by   # platform.   selector['platformEstimateRequested'] = True   # Get traffic estimates.   estimates = traffic_estimator_service.get(selector)   campaign_estimate = estimates['campaignEstimates'][0]   # Display the campaign level estimates segmented by platform.   if 'platformEstimates' in campaign_estimate:     platform_template = ('Results for the platform with ID: "%d" and name: '                          '"%s".')     for platform_estimate in campaign_estimate['platformEstimates']:       platform = platform_estimate['platform']       DisplayEstimate(platform_template % (platform['id'],                                            platform['platformName']),                       platform_estimate['minEstimate'],                       platform_estimate['maxEstimate'])   # Display the keyword estimates.   if 'adGroupEstimates' in campaign_estimate:     ad_group_estimate = campaign_estimate['adGroupEstimates'][0]     if 'keywordEstimates' in ad_group_estimate:       keyword_estimates = ad_group_estimate['keywordEstimates']       keyword_template = ('Results for the keyword with text "%s" and match '                           'type "%s":')       keyword_estimates_and_requests = zip(keyword_estimates,                                            keyword_estimate_requests)       for keyword_tuple in keyword_estimates_and_requests:         if keyword_tuple[1].get('isNegative', False):           continue         keyword = keyword_tuple[1]['keyword']         keyword_estimate = keyword_tuple[0]         DisplayEstimate(keyword_template % (keyword['text'],                                             keyword['matchType']),                         keyword_estimate['min'], keyword_estimate['max']) def _CalculateMean(min_est, max_est):   if min_est and max_est:     return (float(min_est) + float(max_est)) / 2.0   else:     return None def _FormatMean(mean):   if mean:     return '%.2f' % mean   else:     return 'N/A' def DisplayEstimate(message, min_estimate, max_estimate):   """Displays mean average cpc, position, clicks, and total cost for estimate.   Args:     message: str message to display for the given estimate.     min_estimate: zeep.objects.StatsEstimate containing a minimum estimate from the       TrafficEstimatorService response.     max_estimate: zeep.objects.StatsEstimate containing a maximum estimate from the       TrafficEstimatorService response.   """   # Find the mean of the min and max values.   mean_avg_cpc = (_CalculateMean(min_estimate['averageCpc']['microAmount'],                                  max_estimate['averageCpc']['microAmount'])                   if 'averageCpc' in min_estimate                   and min_estimate['averageCpc'] else None)   mean_avg_pos = (_CalculateMean(min_estimate['averagePosition'],                                  max_estimate['averagePosition'])                   if 'averagePosition' in min_estimate                   and min_estimate['averagePosition'] else None)   mean_clicks = _CalculateMean(min_estimate['clicksPerDay'],                                max_estimate['clicksPerDay'])   mean_total_cost = _CalculateMean(min_estimate['totalCost']['microAmount'],                                    max_estimate['totalCost']['microAmount'])   print(message)   print('  Estimated average CPC: %s' % _FormatMean(mean_avg_cpc))   print('  Estimated ad position: %s' % _FormatMean(mean_avg_pos))   print('  Estimated daily clicks: %s' % _FormatMean(mean_clicks))   print('  Estimated daily cost: %s' % _FormatMean(mean_total_cost)) if __name__ == '__main__':   # Initialize client object.   adwords_client = adwords.AdWordsClient.LoadFromStorage('googleads.yaml')   main(adwords_client) 

i need display multiple ads on one page with this code:

<script async src="https://securepubads.g.doubleclick.net/tag/js/gpt.js"></script> <div id="gpt-passback650x250"> <script> window.googletag = window.googletag || {cmd: []}; googletag.cmd.push(function() { googletag.defineSlot('/162717810/xxxxx/650x250', [650, 250], 'gpt-  passback650x250').addService(googletag.pubads()); googletag.enableServices(); googletag.display('gpt-passback650x250'); }); </script> </div> 

If i use this code twice or more on page, i get error: Exception in queued GPT command TypeError: Cannot read property 'addService' of null

Code must be same, customer want paste it to page via shortcode in cms. How to solve this? Thanks