Posts tagged with google-ads-api

We are using Google Ads as a source for new users of our app. We have it linked to Firebase and can see the install (first_open) events in Google Ad words.

We would like to record the Google Ad campaign information against our authenticated Firebase users in our back-end database so we can better track value of campaigns over time.

Is there some way to hook into the Firebase SDK in the Flutter app to listen for/retrieve this information as it is sent to Google Ads when the app is first installed? Or is there another way we can use for source attribution tracking across both iOS and Android installs?

Thanks!

I'm currently using the Google Ads API to fetch historical metrics for specific keywords. By default, the API provides data for the last 12 months. However, I'm interested in retrieving data for a longer period, say 24 months or more. Is there a way to specify a date range or retrieve data for more than 12 months using the Google Ads API? If not, are there any workarounds to achieve this? The sample code is here:https://developers.google.com/google-ads/api/docs/keyword-planning/generate-historical-metrics

def main(client, customer_id):     """The main method that creates all necessary entities for the example.     Args:         client: an initialized GoogleAdsClient instance.         customer_id: a client customer ID.     """     generate_historical_metrics(client, customer_id) def generate_historical_metrics(client, customer_id):     """Generates historical metrics and prints the results.     Args:         client: an initialized GoogleAdsClient instance.         customer_id: a client customer ID.     """     googleads_service = client.get_service("GoogleAdsService")     keyword_plan_idea_service = client.get_service("KeywordPlanIdeaService")     request = client.get_type("GenerateKeywordHistoricalMetricsRequest")     request.customer_id = customer_id     request.keywords = ["mars cruise", "cheap cruise", "jupiter cruise"]     # Geo target constant 2840 is for USA.     request.geo_target_constants.append(         googleads_service.geo_target_constant_path("2840")     )     request.keyword_plan_network = (         client.enums.KeywordPlanNetworkEnum.GOOGLE_SEARCH     )     # Language criteria 1000 is for English. For the list of language criteria     # IDs, see:     # https://developers.google.com/google-ads/api/reference/data/codes-formats#languages     request.language = googleads_service.language_constant_path("1000")     response = keyword_plan_idea_service.generate_keyword_historical_metrics(         request=request     )     for result in response.results:         metrics = result.keyword_metrics         # These metrics include those for both the search query and any variants         # included in the response.         print(             f"The search query '{result.text}' (and the following variants: "             f"'{result.close_variants if result.close_variants else 'None'}'), "             "generated the following historical metrics:\n"         )         # Approximate number of monthly searches on this query averaged for the         # past 12 months.         print(f"\tApproximate monthly searches: {metrics.avg_monthly_searches}")         # The competition level for this search query.         print(f"\tCompetition level: {metrics.competition}")         # The competition index for the query in the range [0, 100]. This shows         # how competitive ad placement is for a keyword. The level of         # competition from 0-100 is determined by the number of ad slots filled         # divided by the total number of ad slots available. If not enough data         # is available, undef will be returned.         print(f"\tCompetition index: {metrics.competition_index}")         # Top of page bid low range (20th percentile) in micros for the keyword.         print(             f"\tTop of page bid low range: {metrics.low_top_of_page_bid_micros}"         )         # Top of page bid high range (80th percentile) in micros for the         # keyword.         print(             "\tTop of page bid high range: "             f"{metrics.high_top_of_page_bid_micros}"         )         # Approximate number of searches on this query for the past twelve         # months.         for month in metrics.monthly_search_volumes:             print(                 f"\tApproximately {month.monthly_searches} searches in "                 f"{month.month.name}, {month.year}"             )        

I am trying to replicate the Google Ads API Laravel Sample app and port it to a Laravel Jetstream application.

I keep getting the following error: Target class [GoogleAdsApiController] does not exist.

GoogleAdsApiController

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Google\Ads\GoogleAds\Lib\V15\GoogleAdsClient; use Google\Ads\GoogleAds\Util\FieldMasks; use Google\Ads\GoogleAds\Util\V15\ResourceNames; use Google\Ads\GoogleAds\V15\Enums\CampaignStatusEnum\CampaignStatus; use Google\Ads\GoogleAds\V15\Resources\Campaign; use Google\Ads\GoogleAds\V15\Services\CampaignOperation; use Google\Ads\GoogleAds\V15\Services\GoogleAdsRow; use Illuminate\Pagination\LengthAwarePaginator; use Illuminate\View\View; class GoogleAdsApiController extends Controller{     private const REPORT_TYPE_TO_DEFAULT_SELECTED_FIELDS = [         'campaign' => ['campaign.id', 'campaign.name', 'campaign.status'],         'customer' => ['customer.id']     ];     private const RESULTS_LIMIT = 100;  ... 

Routes/Web.php

<?php use Illuminate\Support\Facades\Route; use App\Http\Controllers\GoogleAdsApiController; Route::middleware([     'auth:sanctum',     config('jetstream.auth_session'),     'verified', ])->group(function () {     Route::get('/dashboard', function () {         return view('dashboard');     })->name('dashboard'); }); Route::post(     'pause-campaign',     'GoogleAdsApiController@pauseCampaignAction' ); Route::match(     ['get', 'post'],     'show-report',     'GoogleAdsApiController@showReportAction' );  Route::get('/', function () {     return view('welcome'); }); Route::get('/main', function () {     return view('main'); }); 

Any help is much appreciated

I have configured the Google ads conversions with GTM. Google ads conversions are high when compared to GA4. GA4 is linked to the Google ads account but was set as secondary. Primary conversion is configured with GTM. I know there will be bit discrepancies but I am facing a huge difference.

Google Ads configured via GTM and GA4 is linked with Google Ads. However, I am seeing higher conversions in Google ads for purchase and low conversion value in GA4 when I select source/ medium revenue.

I´d like to use the Google Ads API to programmatically retrieve ads data from my Google Ads account. I`d like to use a PHP script (Laravel command and the Google Ads API PHP client library) triggered by a cron-job to retrieve this data regularly. After reading the documentations a couple of times I still have a few questions:

Q1: My understanding is that for such "program to program" API access with no user involvement, I need to follow the service account authentication scenario. Is that right?

Q2: The service account documentation says that I have to have Google Workspace Domain with my company domain, email address, etc. My company website, email is hosted by another provider, do I really need to pay for the Google Workspace Domain, just to be able use the Google Ads API? Any alternative solutions?

Thanks for any suggestions on how to do this right. W.