A conversion in Google Ads is when a user performs some specified action after clicking an ad or viewing a Display Network ad, such as purchasing a product, installing a mobile app, or signing up for an email list.
Conversion tracking provides key insights into users' actions after viewing or clicking an ad. You can keep track of users who call, buy a product, install a mobile app, and more.
Conversion actions
To measure conversions, you set up a
ConversionAction
for the type of conversion
action you want to track. For instance, an online purchase and a phone call
require different conversion actions.
Most conversion actions also require additional steps on your part to track them.
For instance, tracking conversion actions on your website requires creation of
a ConversionAction
with the
ConversionActionType
set as WEBPAGE and a code snippet called a tag that you add to the
conversion page on your website.
Note that the Source related to calls in the Google Ads web interface
(Phone number clicks, Calls from ads, and Calls from websites) are
each mapped to a different ConversionActionType
in Google Ads API:
- Phone number clicks corresponds to CLICK_TO_CALL
- Calls from ads corresponds to AD_CALL
- Calls from websites corresponds to WEBSITE_CALL
Phone call conversions
Tracking phone calls from call extensions requires a ConversionAction
with a
type of
AD_CALL
.
These use a Google forwarding
number and specify the
conversion action in the phone call extension's
FeedItem
. In the Google Ads web interface, this type of
conversion is called Calls from ads.
A call is reported as a conversion if it lasts longer than a specified duration. The default is 60 seconds.
Website call conversions
A
WEBSITE_CALL
conversion action type maps to Calls from a
website in the Google Ads web
interface.
Unlike
AD_CALL
,
this tracker requires event_snippet
and global_site_tag
to be added
to your website to retrieve the dynamic Google forwarding number for call
tracking on numbers listed on your website. In addition, you must set up a
call extension and attach it
to the campaign or ad groups whose website calls you want to track.
Website conversions
The ConversionAction
encompasses several
types of website conversions, distinguished within the API by the
type
field in
TagSnippet
.
The following table shows the equivalent API parameters to use for each Source in the Google Ads web interface:
Tracking Code Type | Google Ads Source |
---|---|
WEBPAGE |
Website, Website (Google Analytics (GA4)) |
WEBPAGE_ONCLICK |
Website, Website (Google Analytics (GA4)) |
CLICK_TO_CALL |
Phone number clicks |
--- |
Website (Google Analytics (UA)) |
Website and Phone number clicks conversions require the event_snippet
,
which should be placed on web pages that indicate a conversion action such as
a checkout confirmation or lead submission page, and global_site_tag
, which
must be installed on every page of your website. You can retrieve both of these
attributes with
ConversionActionService
.
The CLICK_TO_CALL
type differs from AD_CALL
type in
ConversionAction.type
in that it does
not track actual phone calls. Instead, it tracks only clicks on a phone number
from a mobile device. This is useful when you're unable to use a Google
forwarding number for tracking actual phone calls.
App conversions
ConversionActionType
covers both mobile app installs and in-app actions for Android. The following
table shows the equivalent API parameters to use for each Source in the
Google Ads web interface:
Conversion Action Type | Google Ads Source |
---|---|
GOOGLE_PLAY_DOWNLOAD |
Android app install (first open) |
GOOGLE_PLAY_IN_APP_PURCHASE |
Android in-app action |
SKAdNetwork conversions
If you run iOS App campaigns
and have implemented
SKAdNetwork, you can access
SKAdNetwork data provided to Google at the Customer
and Campaign
level using
the following resources:
Report field | Description |
---|---|
metrics.sk_ad_network_conversions |
The number of conversions reported by Apple. This metric can only be segmented
by any combination of segments.sk_ad_network_conversion_value and
date-related segments.
|
segments.sk_ad_network_conversion_value |
The value of a conversion reported by Apple. This segment cannot be applied
to any metric other than A value of |
You can also save a SKAdNetwork conversion value mapping for specific linked
customers with iOS apps through CustomerSkAdNetworkConversionValueSchema
.
Sample Python code
#!/usr/bin/env python # Copyright 2019 Google LLC # # 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 # # https://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. import argparse import sys from google.ads.googleads.client import GoogleAdsClient from google.ads.googleads.errors import GoogleAdsException def main(client, customer_id): """Adds a keyword plan, campaign, ad group, etc. to the customer account. Also handles errors from the API and prints them. Args: client: An initialized instance of GoogleAdsClient customer_id: A str of the customer_id to use in requests. """ res = update_skan_cv_schema( client, customer_id, "my_app_id", "account_link_id" ) print(res) def update_skan_cv_schema(client, customer_id, app_id, account_link_id): skan_service = client.get_service( "CustomerSkAdNetworkConversionValueSchemaService" ) req = client.get_type( "MutateCustomerSkAdNetworkConversionValueSchemaRequest" ) operation = client.get_type( "CustomerSkAdNetworkConversionValueSchemaOperation" ) schema_instance = client.get_type( "CustomerSkAdNetworkConversionValueSchema" ) new_schema = operation.update new_schema.resource_name = ( skan_service.customer_sk_ad_network_conversion_value_schema_path( "customer_id", "account_link_id" ) ) new_schema.schema.app_id = app_id new_schema.schema.measurement_window_hours = 48 skan_cv_mapping = ( schema_instance.SkAdNetworkConversionValueSchema.FineGrainedConversionValueMappings() ) skan_cv_mapping.fine_grained_conversion_value = 0 # 0 - 63 skan_cv_mapping.conversion_value_mapping.min_time_post_install_hours = 0 skan_cv_mapping.conversion_value_mapping.max_time_post_install_hours = 48 skan_cv_event = schema_instance.SkAdNetworkConversionValueSchema.Event() skan_cv_event.mapped_event_name = "TEST" skan_cv_event.event_revenue_value = 10 skan_cv_mapping.conversion_value_mapping.mapped_events.append(skan_cv_event) new_schema.schema.fine_grained_conversion_value_mappings.append( skan_cv_mapping ) req.operation = operation req.customer_id = customer_id res = skan_service.mutate_customer_sk_ad_network_conversion_value_schema( req ) return res if __name__ == "__main__": # GoogleAdsClient will read the google-ads.yaml configuration file in the # home directory if none is specified. googleads_client = GoogleAdsClient.load_from_storage( version="v14" ) parser = argparse.ArgumentParser( description="Creates a keyword plan for specified customer." ) # The following argument(s) should be provided to run the example. parser.add_argument( "-c", "--customer_id", type=str, required=True, help="The Google Ads customer ID.", ) args = parser.parse_args() try: main(googleads_client, args.customer_id) except GoogleAdsException as ex: print( f'Request with ID "{ex.request_id}" failed with status ' f'"{ex.error.code().name}" and includes the following errors:' ) for error in ex.failure.errors: print(f'\tError with message "{error.message}".') if error.location: for field_path_element in error.location.field_path_elements: print(f"\t\tOn field: {field_path_element.field_name}") sys.exit(1)
Offline conversions
Conversion actions can be used to upload offline
click or
call conversions into Google Ads by setting the
conversion action type to UPLOAD_CLICKS
or UPLOAD_CALLS
.
Additional conversion types
There are several types of conversion actions that cannot be created using the Google Ads API, but you can still retrieve their performance metrics in reports and, in some cases, modify some of their attributes.
Conversion goals
Conversion goals help you organize your conversion actions so that you can more easily optimize toward your advertising objectives. Check out the goals guide for more information.
Conversion value rules
Conversion value rules let you define rules for adjusting the values of your conversions based on various dimensions.
Enabling conversion tracking
You can check your account's conversion tracking setup and confirm conversion
tracking is enabled by issuing the following query with
GoogleAdsService.searchStream
:
SELECT
customer.conversion_tracking_setting.conversion_tracking_id,
customer.conversion_tracking_setting.conversion_tracking_status,
customer.conversion_tracking_setting.cross_account_conversion_tracking_id,
customer.conversion_tracking_setting.google_ads_conversion_customer
FROM customer
The conversion_tracking_status
field indicates whether conversion tracking
is enabled and whether the account is using cross-account conversion
tracking.
NOT_CONVERSION_TRACKED
Conversion tracking is not enabled for the account. Enable conversion tracking by creating at least one
ConversionAction
in the account identified bygoogle_ads_conversion_customer
.Starting with v12 of the Google Ads API, the
conversion_tracking_id
will be a non-zero value, even if theconversion_tracking_status
isNOT_CONVERSION_TRACKED
. If your application usesconversion_tracking_id
to determine if conversion tracking is enabled, switch to usingconversion_tracking_status
instead.CONVERSION_TRACKING_MANAGED_BY_SELF
Conversion tracking is enabled, and the account is managing its conversions instead of using cross-account conversion tracking.
CONVERSION_TRACKING_MANAGED_BY_THIS_MANAGER
Conversion tracking is enabled and the account is using cross-account conversion tracking. The account specified in the
login-customer-id
of the request and returned ingoogle_ads_conversion_customer
in the response manages conversions.CONVERSION_TRACKING_MANAGED_BY_ANOTHER_MANAGER
Conversion tracking is enabled and the account is using cross-account conversion tracking. However, the account managing conversions is the
google_ads_conversion_customer
, not thelogin-customer-id
in the request header.
Cross-account conversion tracking
If you're using cross-account conversion
tracking, the
ConversionActionService
returns the
following conversion actions:
- All conversion actions defined by the manager account used by the account for cross-account conversion tracking
- All conversion actions on which the customer has accrued stats, including system-defined actions, and actions owned by the manager even if that manager unlinks subsequently
- All actions the customer has defined in their own account, including
Analytics goals and transactions created in linked Google Analytics profiles.
This includes actions not imported into Google Ads, which would have a status of
HIDDEN
and could only be imported using the Google Ads web interface.
You can set up and query cross-account conversion actions using the API, but you must opt in your accounts to cross-account conversion tracking from the manager account.