API Basic Access Permission has not been answered for over a week
Hi guys We submitted a request over two weeks ago and then a week ago for API basic access - but have not received a response. Can someone please come back to us? We have a developer access that we want to change to basic. thanks!! -- -- =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Also find us on our blog: https://googleadsdeveloper.blogspot.com/ =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ You received this message because you are subscribed to the Google Groups "AdWords API and Google Ads API Forum" group. To post to this group, send email to adwords-api@googlegroups.com To unsubscribe from this group, send email to adwords-api+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/adwords-api?hl=en --- You received this message because you are subscribed to the Google Groups "Google Ads API and AdWords API Forum" group. To unsubscribe from this group and stop receiving emails from it, send an email to adwords-api+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/adwords-api/5be91a1b-c9b7-43a7-b8d3-5421ae847e6bn%40googlegroups.com.
Get "Resource was not found" when creating SHOPPING campaign
Hi I got error "Resource was not found" when creating SHOPPING campaign Could you please help to check what the reason of it? I, [2023-06-26T15:02:23.353200 #55021] INFO -- : CID: 8667304723, Host: googleads.googleapis.com:443, Method: /google.ads.googleads.v12.services.CampaignBudgetService/MutateCampaignBudgets, IsFault: no, Request ID: f057ZEJ8Jdlou-hpFkr93g D, [2023-06-26T15:02:23.354559 #55021] DEBUG -- : Outgoing request: Headers: {"developer-token":"REDACTED","login-customer-id":"9677213623","x-goog-api-client":"gl-ruby/3.1.3 gccl/20.0.0 gax/0.9.0 gapic/20.0.0 grpc/1.47.0","x-goog-request-params":"customer_id=8667304723"} Payload: {"customerId":"8667304723","operations":[{"create":{"name":"Interplanetary Budget 1687762942793","amountMicros":"11100","deliveryMethod":"STANDARD","explicitlyShared":false}}]} D, [2023-06-26T15:02:23.354652 #55021] DEBUG -- : Incoming response: Payload: {"results":[{"resourceName":"customers/8667304723/campaignBudgets/12717849749"}]} W, [2023-06-26T15:02:23.869043 #55021] WARN -- : CID: 8667304723, Host: googleads.googleapis.com:443, Method: /google.ads.googleads.v12.services.CampaignService/MutateCampaigns, IsFault: yes, Request ID: 3s7NdIOvKt7-_-9yOfpbGw I, [2023-06-26T15:02:23.869522 #55021] INFO -- : Outgoing request: Headers: {"developer-token":"REDACTED","login-customer-id":"9677213623","x-goog-api-client":"gl-ruby/3.1.3 gccl/20.0.0 gax/0.9.0 gapic/20.0.0 grpc/1.47.0","x-goog-request-params":"customer_id=8667304723"} Payload: {"customerId":"8667304723","operations":[{"create":{"name":"gg without enable","status":"PAUSED","advertisingChannelType":"SHOPPING","shoppingSetting":{"merchantId":"688974403","campaignPriority":0,"enableLocal":true},"campaignBudget":"customers/8667304723/campaignBudgets/12717849749","startDate":"2023-06-26","endDate":"2023-06-27","manualCpc":{}}}]} I, [2023-06-26T15:02:23.869769 #55021] INFO -- : Incoming response (errors): Google::Ads::GoogleAds::Errors::GoogleAdsError(Google::Ads::GoogleAds::Errors::GoogleAdsError): Resource was not found. Thanks Mike -- -- =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Also find us on our blog: https://googleadsdeveloper.blogspot.com/ =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ You received this message because you are subscribed to the Google Groups "AdWords API and Google Ads API Forum" group. To post to this group, send email to adwords-api@googlegroups.com To unsubscribe from this group, send email to adwords-api+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/adwords-api?hl=en --- You received this message because you are subscribed to the Google Groups "Google Ads API and AdWords API Forum" group. To unsubscribe from this group and stop receiving emails from it, send an email to adwords-api+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/adwords-api/17ed375a-e052-46f2-94a0-5ed1714b0c18n%40googlegroups.com.
RE: creating and mutating video campaigns
Hi Mohamad, Thank you for reaching out to the Google Ads API team. As mentioned here:(https://developers.google.com/google-ads/api/docs/campaigns/overview#differences_from_the_google_ads_ui), video campaign metrics are available for retrieval in the API. However, video campaigns cannot be mutated at all from the API, including simple operations such as pausing or enabling as well as complex operations like organizing, changing criteria, or adding ad groups. For video campaign management, kindly do this via the Google Ads UI. Let me know if you have any questions. This message is in relation to case "ref:_00D1U1174p._5004Q2mWtti:ref" Thanks, Google Ads API Team -- -- =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Also find us on our blog: https://googleadsdeveloper.blogspot.com/ =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ You received this message because you are subscribed to the Google Groups "AdWords API and Google Ads API Forum" group. To post to this group, send email to adwords-api@googlegroups.com To unsubscribe from this group, send email to adwords-api+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/adwords-api?hl=en --- You received this message because you are subscribed to the Google Groups "Google Ads API and AdWords API Forum" group. To unsubscribe from this group and stop receiving emails from it, send an email to adwords-api+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/adwords-api/jIPt70RWUN8Q0080Fepw2WTmezVreaJusHQA%40sfdc.net.
RE: 'resourceexhausted too many requests.' despite not exceeding request limit.
Hi Julia, Thank you for reaching out to Google Ads API Forum. It appears that you are getting a RESOURCE_EXHAUSTED error, it means that a system frequency limit has been exceeded. Kindly prevent sending too many requests in a short period of time and also ensure to set up short delays between requests or combine more operations into fewer requests. You can check this documentation (https://developers.google.com/google-ads/api/docs/best-practices/common-errors?hl=en#quotaerror) for more details. Additionally, kindly note that as per this documentation (https://developers.google.com/google-ads/api/docs/best-practices/quotas#daily_api_operation_limits), daily API usage limits are based on the number of API operations made per developer token. API operations are the total sum of get requests and mutate operations. The limits for daily API operations depend on the access level of the developer token. The Access Levels and Permissible Use Guide outlines the specific API operation limits for each access level. Requests that violate these limits are rejected with the error RESOURCE_EXHAUSTED. You may check the API Limits and Quotas (https://developers.google.com/google-ads/api/docs/best-practices/quotas?hl=en) for more information. If the issue still persists after trying the suggestions from the above statement, kindly share with us the updated complete request and response logs with the request ID and request header generated on your end showing the error so our team can further investigate and provide appropriate guidance. You may send the requested logs via Reply privately to the author option. If this option is not available, then send it instead on this email address googleadsapi-supp...@google.com. Reference Links: API operations: https://developers.google.com/google-ads/api/docs/rate-sheet#api_operations Access Levels and Permissible Use: https://developers.google.com/google-ads/api/docs/access-levels request - https://developers.google.com/google-ads/api/docs/concepts/field-service#request response - https://developers.google.com/google-ads/api/docs/concepts/field-service#response request ID - https://developers.google.com/google-ads/api/docs/concepts/call-structure#request-id request header - https://developers.google.com/google-ads/api/docs/concepts/call-structure#request_headers This message is in relation to case "ref:_00D1U1174p._5004Q2mWqPf:ref" Thanks, Google Ads API Team -- -- =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Also find us on our blog: https://googleadsdeveloper.blogspot.com/ =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ You received this message because you are subscribed to the Google Groups "AdWords API and Google Ads API Forum" group. To post to this group, send email to adwords-api@googlegroups.com To unsubscribe from this group, send email to adwords-api+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/adwords-api?hl=en --- You received this message because you are subscribed to the Google Groups "Google Ads API and AdWords API Forum" group. To unsubscribe from this group and stop receiving emails from it, send an email to adwords-api+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/adwords-api/vtJLA0RWURNG00RtmoOFBTT2SpGMZtcUCcoA%40sfdc.net.
Re: service account auth error - not_ads_user
Hi Vlad, Thank you for the reply. Kindly note that the NOT_ADS_USER error (https://developers.google.com/google-ads/api/docs/best-practices/common-errors#authenticationerror) is one of the common authorization errors encountered when the service account has not been correctly linked to the Google Ads account via the OAuth2 assertion flow. Kindly note that you need to use the actual email address of the Google Ads user with permissions on the Google Ads account you want to access. You may check the guide on how to set up OAuth2 for API access using your own credentials with a service account in the client library you are using here: https://developers.google.com/google-ads/api/docs/oauth/service-accounts?hl=en#client_library_configuration This error typically means that the email address used to create your OAuth credentials in Google Cloud Console is not associated with any Google Ads account. See this section in our Common Errors (https://developers.google.com/google-ads/api/docs/best-practices/common-errors#authenticationerror) guide. If you know the email address that was used to create your OAuth credentials, you should be able to log into the Google Ads UI and send it an invitation by following the instructions in the guide I linked to above. You may also need to enable the Google Ads API in your Google Cloud project by following the steps here (https://developers.google.com/google-ads/api/docs/first-call/oauth-cloud-project). If you are still encountering errors after considering all the mentioned information above, you may provide us with the user account / email address that you used to generate API access so we can further check this information. You may then send the requested information via the Reply privately to author option. If this option is not available, you may send the details directly to our googleadsapi-supp...@google.com alias instead. In addition, we strongly recommend using OAuth2 installed app or web flows (https://developers.google.com/google-ads/api/docs/oauth/cloud-project#choose_an_application_type) instead of service accounts unless you need domain-specific features (for example, impersonation). OAuth2 installed application and web flows require user interaction only once, when access to the account is granted. You need to implement the code set up on your end to make calls using service accounts. This message is in relation to case "ref:_00D1U1174p._5004Q2mWOfh:ref" Thanks, Google Ads API Team -- -- =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Also find us on our blog: https://googleadsdeveloper.blogspot.com/ =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ You received this message because you are subscribed to the Google Groups "AdWords API and Google Ads API Forum" group. To post to this group, send email to adwords-api@googlegroups.com To unsubscribe from this group, send email to adwords-api+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/adwords-api?hl=en --- You received this message because you are subscribed to the Google Groups "Google Ads API and AdWords API Forum" group. To unsubscribe from this group and stop receiving emails from it, send an email to adwords-api+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/adwords-api/RQ0rQ0RWURPI003Y3cApA2SJKzLOM5uD5Ssg%40sfdc.net.
Internal error encountered.
hello, i got the following exception Status(StatusCode="Internal", Detail="Internal error encountered.", DebugException="Grpc.Core.Internal.CoreErrorDetailException: {"created":"@168578.12400","description":"Error received from peer ipv4:216.58.211.202:443","file":"..\..\..\src\core\lib\surface\call.cc","file_line":953,"grpc_message":"Internal error encountered.","grpc_status":13}") when i try to use UploadOfflineConversion GoogleAdsClient client = new GoogleAdsClient(new Google.Ads.GoogleAds.Config.GoogleAdsConfig() { LinkedCustomerId = CustomerId, OAuth2ClientId = ClientId, OAuth2ClientSecret = ClientSecret, OAuth2RefreshToken = RefreshToken, DeveloperToken = DevToken, UseGrpcCore = true, }); // Get the ConversionActionService. ConversionUploadServiceClient conversionUploadService = client.GetService(Services.V14.ConversionUploadService); // Creates a click conversion by specifying currency as USD. ClickConversion clickConversion = new ClickConversion() { ConversionAction = "Pending-Revenues", ConversionValue = ConvertedValue.Value, ConversionDateTime = ConversionTime.ToString("MMdd HHmmss") + " Africa/Cairo", CurrencyCode = CurrencyCode }; // Verifies that exactly one of gclid, gbraid, and wbraid is specified, as required. // See https://developers.google.com/google-ads/api/docs/conversions/upload-clicks // for details. string[] ids = { GCLID }; int idCount = ids.Where(id => !string.IsNullOrEmpty(id)).Count(); if (idCount != 1) { throw new ArgumentException($"Exactly 1 of gclid, gbraid, or wbraid is " + $"required, but {idCount} ID values were provided"); } // Sets the single specified ID field. if (!string.IsNullOrEmpty(GCLID)) { clickConversion.Gclid = GCLID; } try { // Issues a request to upload the click conversion. UploadClickConversionsResponse response = conversionUploadService.UploadClickConversions( new UploadClickConversionsRequest() { CustomerId = CustomerId, Conversions = { clickConversion }, PartialFailure = true, ValidateOnly = false, DebugEnabled = false }); // Prints the result. ClickConversionResult uploadedClickConversion = response.Results[0]; Console.WriteLine($"Uploaded conversion that occurred at " + $"'{uploadedClickConversion.ConversionDateTime}' from Google " + $"Click ID '{uploadedClickConversion.Gclid}' to " + $"'{uploadedClickConversion.ConversionAction}'."); } catch (Exception ex) { } and here is the stack trace at Google.Ads.Gax.Interceptors.UnaryRpcInterceptor.<>c__DisplayClass1_0`2.b__0(Task`1 oldTask) at System.Threading.Tasks.ContinuationResultTaskFromResultTask`2.InnerInvoke() at System.Threading.Tasks.Task.Execute() --- End of stack trace from previous location --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Google.Api.Gax.Grpc.ApiCall.GrpcCallAdapter`2.<>c__DisplayClass4_0.d.MoveNext() at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at Google.Api.Gax.TaskExtensions.WaitWithUnwrappedExceptions(Task task) at Google.Api.Gax.Grpc.ApiCall.GrpcCallAdapter`2.CallSync(TRequest request, CallSettings callSettings) at Google.Api.Gax.Grpc.ApiCallRetryExtensions.<>c__DisplayClass1_0`2.b__0(TRequest request, CallSettings callSettings) at Google.Api.Gax.Grpc.ApiCall`2.<>c__DisplayClass12_0.b__1(TRequest req, CallSettings cs) at Google.Api.Gax.Grpc.ApiCall`2.Sync(TRequest request, CallSettings perCallCallSettings) at Google.Ads.GoogleAds.V14.Services.ConversionUploadServiceClientImpl.UploadClickConversions(UploadClickConversionsRequest request, CallSettings callSettings) Thanks -- -- =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Also find us on our blog: https://googleadsdeveloper.blogspot
Missing refresh_token error even though it's there
First off. I'm really new to Google Ads API. I'm trying to created a small C# console app to retrieve some basic ads info (clicks, impressions..) I have created a cloud app to get a client ID and secret. Enabled Google Ad API. I have the developer token from Google Ads API Center. (It is still in Test Access level. I have applied for basic access, but waiting on approval) Then I needed to get a refresh token for my user. I used a tutorial program to get that, so now (I think) I have all the GoogleAdsAPI info that I added to app.config. I then have this code I try to run: GoogleAdsServiceClient googleAdsService = client.GetService(Services.V14.GoogleAdsService); string query = @"SELECT ad_group.id, ad_group.name, campaign.id, campaign.name, metrics.impressions, metrics.clicks, segments.device, segments.day, FROM ad_group WHERE segments.date DURING LAST_7_DAYS AND ad_group.status IN ('ENABLED','PAUSED') ORDER BY metrics.impressions DESC LIMIT 50"; try { // Issue a search request. googleAdsService.SearchStream(customerId.ToString(), query, delegate (SearchGoogleAdsStreamResponse resp) { // Display the results. foreach (GoogleAdsRow criterionRow in resp.Results) { Console.WriteLine( $"'{criterionRow.AdGroup.Name}' with ID " + $"{criterionRow.AdGroup.Id} in campaign " + $"'{criterionRow.Campaign.Name}' with ID " + $"{criterionRow.Campaign.Id} had " + $"{criterionRow.Metrics.Impressions.ToString()} impressions, " + $"{criterionRow.Metrics.Clicks} clicks " + "during the last 7 days."); } } ); } catch (GoogleAdsException e) { Console.WriteLine("Failure:"); Console.WriteLine($"Message: {e.Message}"); Console.WriteLine($"Failure: {e.Failure}"); Console.WriteLine($"Request ID: {e.RequestId}"); throw; } But I get this error: System.AggregateException: 'One or more errors occurred. (Status(StatusCode="Internal", Detail="Error starting gRPC call. TokenResponseException: Error:"invalid_request", Description:"Missing required parameter: refresh_token", Uri:""", DebugException="Google.Apis.Auth.OAuth2.Responses.TokenResponseException: Error:"invalid_request", Description:"Missing required parameter: refresh_token", Uri:"" at Google.Apis.Auth.OAuth2.Responses.TokenResponse.FromHttpResponseAsync(HttpResponseMessage response, IClock clock, ILogger logger) at Google.Apis.Auth.OAuth2.Requests.TokenRequestExtenstions.ExecuteAsync(TokenRequest request, HttpClient httpClient, String tokenServerUrl, CancellationToken taskCancellationToken, IClock clock, ILogger logger) at Google.Apis.Auth.OAuth2.Flows.AuthorizationCodeFlow.FetchTokenAsync(String userId, TokenRequest request, CancellationToken taskCancellationToken) at Google.Apis.Auth.OAuth2.Flows.AuthorizationCodeFlow.FetchTokenAsync(String userId, TokenRequest request, CancellationToken taskCancellationToken) at Google.Apis.Auth.OAuth2.Flows.AuthorizationCodeFlow.RefreshTokenAsync(String userId, String refreshToken, CancellationToken taskCancellationToken) at Google.Apis.Auth.OAuth2.UserCredential.RefreshTokenAsync(CancellationToken taskCancellationToken) at Google.Apis.Auth.OAuth2.TokenRefreshManager.RefreshTokenAsync() at Google.Apis.Auth.OAuth2.UserCredential.GetAccessTokenWithHeadersForRequestAsync(String authUri, CancellationToken cancellationToken) at Google.Apis.Auth.OAuth2.TokenRefreshManager.g__LogException|10_0(Task task) at Grpc.Auth.GoogleAuthInterceptors.<>c__DisplayClass3_0.d.MoveNext() --- End of stack trace from previous location --- at Grpc.Net.Client.Internal.GrpcProtocolHelpers.ReadCredentialMetadata(DefaultCallCredentialsConfigurator configurator, GrpcChannel channel, HttpRequestMessage message, IMethod method, CallCredentials credentials) at Grpc.Net.Client.Internal.GrpcCall`2.ReadCredentials(HttpRequestMessage request) at Grpc.Net.Client.Internal.GrpcCall`2.RunCall(HttpRequestMessage request, Nullable`1 timeout)"))' It says the refresh token isn't there... But it is in my config file... What I'm I missing/doing wrong?? -- -- =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Also find us on our blog: https://googleadsdeveloper.blogspot.com/ =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ You received this message because you are subscribed to the Google Groups "AdWords API and Google Ads API Forum" group. To post to t
Another USER_PERMISSION_DENIED code 7
Hi I'm trying to replicate the GetAccountHieararchy.php example on my Laravel application and I keep getting this aparently very common permissions error but I can't see whats the problem: { "message": "The caller does not have permission", "code": 7, "status": "PERMISSION_DENIED", "details": [ { "@type": "type.googleapis.com\/google.ads.googleads.v13.errors.GoogleAdsFailure", "errors": [ { "errorCode": { "authorizationError": "USER_PERMISSION_DENIED" }, "message": "User doesn't have permission to access customer. Note: If you're accessing a client customer, the manager's customer id must be set in the 'login-customer-id' header. See https:\/\/developers.google.com\/google-ads\/api\/docs\/concepts\/call-structure#cid" } ], "requestId": "HvUJs9KXJuoUXsX1rySSZg" } ] } Using a refresh token generated with the playground app and then placing it in th google_ads_php.ini works. But it doesn't with my implementation of the oauth2 login Is there something wrong or missing here? I see in the playground some parameters in the first step that I don't see here. This is not my implementation I'm just looking to understand and fix the permissions issue here. class MCCHierarchy { public function all() { $efGoogleAds = new EfGoogleAds(); return $this->createCustomerClientHierarchy($efGoogleAds); } private function createCustomerClientHierarchy(EfGoogleAds $efGoogleAds) { // First, fetch the list of accessible customers $outputArray = $this->getAccessibleCustomers($efGoogleAds-> getGoogleAdsClient()); $selects = ['customer_client.client_customer', 'customer_client.level', 'customer_client.manager', 'customer_client.descriptive_name', 'customer_client.currency_code', 'customer_client.time_zone', 'customer_client.id', 'customer_client.status']; $wheres = [ ['customer_client.level', '= 1'], ['customer_client.status', '= "ENABLED"'], ['customer_client.manager', '= true'] ]; // Now, we fetch subClients againsts each customer foreach ($outputArray as $key => $mccClient) { try{ $subAccountsStreamReport = new StreamReportGoogleAds('customer_client', $efGoogleAds->serviceClient, intval($mccClient['clientId']), $selects, $wheres, ''); }catch(\Google\ApiCore\ApiException $e){ Log::error('Client id failing: '.$mccClient['clientId']); if (isset($e->getMetadata()[0]["errors"][0]["errorCode"][ "authorizationError"]) && $e->getMetadata()[0]["errors"][0]["errorCode"][ "authorizationError"] === 'CUSTOMER_NOT_ENABLED') { // The customer account can't be accessed because it is not yet enabled or has been deactivated. // You may want to log this or handle differently in your application. continue; } else { throw $e; } } $subClientArray = []; $subClientIdsArray = []; try{ foreach ($subAccountsStreamReport->stream->iterateAllElements() as $subAccount) { $customerClient = $subAccount->getCustomerClient(); $subClientArray[] = [ 'clientName' => $customerClient->getDescriptiveName(), 'clientId' => $customerClient->getId(), 'manager' => $customerClient->getManager(), 'clientStatus' => CustomerStatus::name($customerClient->getStatus()) ]; $subClientIdsArray[] = [ "subClientName" => $customerClient->getDescriptiveName(), "subClientId" => $customerClient->getId() ]; } }catch(\Google\Ads\GoogleAds\Lib\V13\GoogleAdsException $e){ Log::error('Client id failing in second loop: '.$mccClient['clientId']); throw $e; } $outputArray[$key]['subClients'] = $subClientArray; $outputArray[$key]['subClientsIds'] = json_encode($subClientIdsArray); } //dd($outputArray); return $outputArray; } /** * Retrieves a list of accessible customers with the provided set up credentials. * * @param GoogleAdsClient $googleAdsClient the Google Ads API client * @return int[] the list of customer IDs */ private function getAccessibleCustomers(GoogleAdsClient $googleAdsClient): array { $outputArray = []; // Issues a request for listing all customers accessible by this authenticated Google // account. $customerServiceClient = $googleAdsClient->getCustomerServiceClient(); $accessibleCustomers = $customerServiceClient->listAccessibleCustomers([ 'customer.status' => 'ENABLED']); foreach ($accessibleCustomers->getResourceNames() as $customerResourceName) { $customer = CustomerServiceClient::parseName($customerResourceName)[ 'customer_id']; $outputArray[] = [ 'clientName' => $customerResourceName, 'clientId' => intval($customer), ]; } return $outputArray; } class GoogleAuthController extends Controller { private $client; public function __construct() { $this->client = new Google_Client(); $this->client->setClientId(env('GOOGLE_ADS_CLIENT_ID')); $this->client->setClientSecret(env('GOOGLE_ADS_CLIENT_SECRET')); $this->client->setRedirectUri(env('GOOGLE_ADS_REDIRECT_URI')); $this->client->addScope('https://www.googleapis.com/auth/adwords'); } public function login() { $authUrl = $this->client->createAuthUrl(); return redirect($authUrl); } public function callback(Request $request) { if (!$request->has('code')) { return redirect()->route('login')->withErrors('
Assistance Needed: Google Ads Data Integration into Zoho CRM
Hello, My team and I are facing challenges integrating Google Ads data into Zoho CRM. We're using a standard Joomla registration form and aiming to evaluate our ROI by comparing ad investment with offline customer sales. The Zoho instructions for integration have been helpful, except for a disconnect we're experiencing on step 3. Zoho support hasn't been able to provide a clear solution, stating their limited involvement with third-party matters. The specific issue lies with the line "$gclid": "CMPjuu-Xx78CFRSTjgodPHsA3Q," as our developer informs us that the $GCLID needs to be unique to each ad click. Considering the simplicity of the problem, I would greatly appreciate any assistance or explanation from the community to help resolve this matter. *Note:* Our sales predominantly occur offline. *These are the instructions from zoho support below* To facilitate webform tracking using third-party web forms, please follow the steps outlined below: 1. Add the following hidden field code in your web form's code: 2. Include the following tracking code in all your website's web pages, just before the tag: 3. Modify your existing API script by including the "GCLID" variable as shown in the sample below to transfer the tracking details: { "data": [ { "Company": "Zylker", "Last_Name": "Daly", "First_Name": "Paul", "Email": "p.d...@zylker.com", "State": "Texas", "$gclid": "CMPjuu-Xx78CFRSTjgodPHsA3Q" } ] } The tracking code "zcga.js" fetches the GCLID from the browser's cookies and sends it to the third party's database. To make this information available in Zoho CRM, it needs to be pushed via API. Include the GCLID variable in addition to the existing variables, allowing the GCLID to be pushed to Zoho CRM. *For more details, please refer to the Zoho CRM help article at* [https://help.zoho.com/portal/en/kb/crm/integrations/google/google-ads/articles/configure-google-ads-crm-integration#Step_2_Add_hidden_element_in_your_web_forms:~:text=js%27%3E%3C/script%3E-,For%20Third%2Dparty%20web%20forms%3A,-In%20the%20case]. Thank you for your assistance and any insights you can provide to resolve this issue promptly. Best regards, Kaido Whims -- -- =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Also find us on our blog: https://googleadsdeveloper.blogspot.com/ =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ You received this message because you are subscribed to the Google Groups "AdWords API and Google Ads API Forum" group. To post to this group, send email to adwords-api@googlegroups.com To unsubscribe from this group, send email to adwords-api+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/adwords-api?hl=en --- You received this message because you are subscribed to the Google Groups "Google Ads API and AdWords API Forum" group. To unsubscribe from this group and stop receiving emails from it, send an email to adwords-api+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/adwords-api/d977740c-70b0-4e5f-8e43-be457ec25b89n%40googlegroups.com.
Shopping Ads script
Hi, I'm trying to write a small script for my Google Shopping Ads campaigns so that when a product group gets 100 clicks and its conversion value is 0, it will be excluded. I'm a newbie to programming and I'm having trouble with the second condition: conversion value < 0, because I haven't found a method available to retrieve values like conversion value, conversion or cost at the Product Groups level. Can someone help me find a method? Here is the code, but only with the first condition: function main() { const productGroups = AdsApp.productGroups() .withCondition("metrics.clicks > 100") .Achieve(); for (const productGroup of productGroups) { productGroup.exclude(); } } Thank you! -- -- =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Also find us on our blog: https://googleadsdeveloper.blogspot.com/ =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ You received this message because you are subscribed to the Google Groups "AdWords API and Google Ads API Forum" group. To post to this group, send email to adwords-api@googlegroups.com To unsubscribe from this group, send email to adwords-api+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/adwords-api?hl=en --- You received this message because you are subscribed to the Google Groups "Google Ads API and AdWords API Forum" group. To unsubscribe from this group and stop receiving emails from it, send an email to adwords-api+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/adwords-api/1ed4bc31-6c5b-4d3c-893b-4272e10e2312n%40googlegroups.com.
Re: it's been over a month since i applied for baisic access for google ads api token, but still no reply
Hi Google Ads API Team , Thank you so much for your help. We had received email from Compliance team. Thanks again. Best, Moon On Tuesday, June 20, 2023 at 1:32:21 AM UTC+8 Google Ads API Forum Advisor wrote: > Hi Moon, > > Thank you for providing additional information. > > @Compliance team - The client sent their details privately to our team. > For your reference, here's the MCC ID of the client: 329-775-6294. He noted > that they did not receive any reply or case ID after submitting their > application. Please confirm if you are able to assist. > This message is in relation to case "ref:_00D1U1174p._5004Q2mCoKB:ref" > > Thanks, > > [image: Google Logo] Google Ads API Team > > > -- -- =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Also find us on our blog: https://googleadsdeveloper.blogspot.com/ =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ You received this message because you are subscribed to the Google Groups "AdWords API and Google Ads API Forum" group. To post to this group, send email to adwords-api@googlegroups.com To unsubscribe from this group, send email to adwords-api+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/adwords-api?hl=en --- You received this message because you are subscribed to the Google Groups "Google Ads API and AdWords API Forum" group. To unsubscribe from this group and stop receiving emails from it, send an email to adwords-api+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/adwords-api/45a314ae-1791-483c-9a17-fe23989a577en%40googlegroups.com.
Audience segment & metrics
I'm trying to achieve the Audience Segment as can be achieved in Google Ads UI report (refer to attached image) alongside with some metrics. What would be the query to attain this? -- -- =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Also find us on our blog: https://googleadsdeveloper.blogspot.com/ =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ You received this message because you are subscribed to the Google Groups "AdWords API and Google Ads API Forum" group. To post to this group, send email to adwords-api@googlegroups.com To unsubscribe from this group, send email to adwords-api+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/adwords-api?hl=en --- You received this message because you are subscribed to the Google Groups "Google Ads API and AdWords API Forum" group. To unsubscribe from this group and stop receiving emails from it, send an email to adwords-api+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/adwords-api/107ef9e4-6c06-4533-8741-ac5b96957239n%40googlegroups.com.
RE: audience segment & metrics
Hi, Thank you for reaching out to Google Ads API Forum. In order for us to investigate further, can you share with us the Google Ads UI screenshot (without cropping with CID shown) of the data in the UI you are trying to retrieve via API? This is so we can check on our end as well and investigate further. You can provide it via the Reply privately to author option. If this option is not available, then send it instead on this email address googleadsapi-supp...@google.com. This message is in relation to case "ref:_00D1U1174p._5004Q2mXrlB:ref" Thanks, Google Ads API Team -- -- =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Also find us on our blog: https://googleadsdeveloper.blogspot.com/ =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ You received this message because you are subscribed to the Google Groups "AdWords API and Google Ads API Forum" group. To post to this group, send email to adwords-api@googlegroups.com To unsubscribe from this group, send email to adwords-api+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/adwords-api?hl=en --- You received this message because you are subscribed to the Google Groups "Google Ads API and AdWords API Forum" group. To unsubscribe from this group and stop receiving emails from it, send an email to adwords-api+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/adwords-api/yxQem0RWWEIV00NvbmxHE1Qk-Q_ucASNAtIQ%40sfdc.net.