Local Services campaigns let you advertise your business on Google and receive leads directly from potential customers. This guide summarizes the supported operations and restrictions in the current version of the Google Ads API.
Supported operations
The following operations are supported.
Retrieve Local Services campaigns and budgets
Local Services campaigns and budgets can be retrieved using the
GoogleAdsService.Search
or
GoogleAdsService.SearchStream
method to query for the campaign resources where
advertising_channel_type = 'LOCAL_SERVICES'
. Here is an example:
SELECT
campaign.id,
campaign.status,
campaign_budget.id,
campaign_budget.period,
campaign_budget.amount_micros,
campaign_budget.type
FROM campaign
WHERE campaign.advertising_channel_type = 'LOCAL_SERVICES'
Edit Local Services campaigns
You can update the campaign's status
and the
associated campaign budget's
amount_micros
fields.
Set the bidding strategy of Local Services campaigns
You can set the following bidding strategies as the standard bidding strategy of Local Services campaigns:
ManualCpa
by setting the fieldmanual_cpa
You can set the bids of
ManualCpa
throughLocalServicesCampaignSettings.category_bids
. You can retrieve and setLocalServicesCampaignSettings
of Local Services campaigns thoughCampaign.local_services_campaign_settings
.MaximizeConversions
by setting the fieldmaximize_conversions
Set an ad schedule as a campaign criterion
You can set an ad schedule for a Local Services campaign as a campaign criterion.
Create an AdScheduleInfo
and set it to the
ad_schedule
of the
CampaignCriterion
that is sent to the Google Ads API, using
CampaignCriterionService.MutateCampaignCriteria
.
Set location targeting
To enable location targeting for a Local Services campaign, add a
LocationInfo
and set it to the
location
of the
CampaignCriterion
that is sent to the Google Ads API, using
CampaignCriterionService.MutateCampaignCriteria
.
For more details, see Location
targeting.
Target specific service types
To enable targeting for a specific service type, add a
LocalServiceIdInfo
and set it to the
type of
service.
You should use a service ID that matches your campaign's targeting location and category.
Unsupported operations
The restrictions listed in the following table can change in future versions of the Google Ads API.
Unsupported operations | |
---|---|
Create and remove campaigns | The Google Ads API blocks creation of new Local Services campaigns. |
Operations on sub-entities in a campaign | The Google Ads API does not support the creation, modification, removal, or retrieval of ad groups, ads, or criteria in Local Services campaigns. |
Local Services resources
Some data from Local Services Ads are exposed directly in the Google Ads API through the following read-only report resources:
local_services_lead
local_services_lead_conversation
local_services_verification_artifact
local_services_employee
In order for these resources to return data, there must be a Local Services campaign in the client account making the request. And since there can only be one Local Services campaign per client account, these resources don't specify a campaign. To identify the campaign that these resources are affiliated with, use the following query:
SELECT campaign.id
FROM campaign
WHERE campaign.advertising_channel_type = 'LOCAL_SERVICES'
Local Services lead
LocalServicesLead
exposes the details of a
lead that are generated when a consumer calls, messages, or books a service from
the advertiser.
Local Services lead data can be retrieved from the
local_services_lead
resource. Here's an
example query:
SELECT
local_services_lead.lead_type,
local_services_lead.category_id,
local_services_lead.service_id,
local_services_lead.contact_details,
local_services_lead.lead_status,
local_services_lead.creation_date_time,
local_services_lead.locale,
local_services_lead.lead_charged,
local_services_lead.credit_details.credit_state,
local_services_lead.credit_details.credit_state_last_update_date_time
FROM local_services_lead
Limitations
- The
contact_details
field is null iflead_status
equalsWIPED_OUT
. - Data from leads where the
category_id
is part of a healthcare category are not available.
Local Services lead conversation
LocalServicesLeadConversation
exposes the details of conversations that have taken place as part of a
LocalServicesLead
. There is a one-to-many relationship with
LocalServicesLead
, where one lead can have many conversations. The resource
name for the related lead can be found in the lead
field.
Conversation data can be retrieved from the
local_services_lead_conversation
resource. Here's an example query that filters for results that are phone calls:
SELECT
local_services_lead_conversation.id,
local_services_lead_conversation.conversation_channel,
local_services_lead_conversation.participant_type,
local_services_lead_conversation.lead,
local_services_lead_conversation.event_date_time,
local_services_lead_conversation.phone_call_details.call_duration_millis,
local_services_lead_conversation.phone_call_details.call_recording_url,
local_services_lead_conversation.message_details.text,
local_services_lead_conversation.message_details.attachment_urls
FROM local_services_lead_conversation
WHERE local_services_lead_conversation.conversation_channel = 'PHONE_CALL'
Starting in version 17 of the Google Ads API, you can use the
LocalServicesLeadService.AppendLeadConversation
method to append LocalServicesLeadConversation
resources to a LocalServicesLead
.
Limitations
- To access the call recording URL, you must sign in with an email address that has at least read-only access to the Google Ads client account that owns the campaign that the lead is associated with.
Requesting all conversations at once can be a time-consuming request, so you should filter conversations by lead, for example:
SELECT local_services_lead_conversation.id, local_services_lead_conversation.event_date_time, local_services_lead_conversation.message_details.text FROM local_services_lead_conversation WHERE local_services_lead.id = LEAD_ID
Local Services verification artifact
LocalServicesVerificationArtifact
exposes verification data for advertisers' businesses. Note that these
verifications are at the business level and don't include verifications for
employees. The data includes the following:
- License verifications
- Insurance verifications
- Background check verifications
- Business registration verifications
Any time a verification request is submitted to Local Services Ads, a new verification artifact instance is created for it in the Google Ads API, and each verification artifact represents a single verification request. Each verification artifact might contain some of the following information, depending on what type of verification request it represents:
- Status of each verification artifact
- Background check URL to be used for background check verification
- Background check adjudication time (if applicable)
- Insurance document URL to view the already-submitted Insurance information
- Insurance rejection reason (if applicable)
- License details (type, number, first, last names)
- License rejection reason (if applicable)
- License document URL to view already submitted license image (if applicable)
- Business registration details (check ID, registration number)
- Business registration rejection reason (if applicable)
- Business registration document URL to view already submitted registration image (if applicable)
Verification artifact data can be retrieved from the
local_services_verification_artifact
resource. Here's an example query that retrieves data for all the
license-related verification artifacts for a given client account:
SELECT
local_services_verification_artifact.id,
local_services_verification_artifact.creation_date_time,
local_services_verification_artifact.status,
local_services_verification_artifact.artifact_type,
local_services_verification_artifact.license_verification_artifact.license_type,
local_services_verification_artifact.license_verification_artifact.license_number,
local_services_verification_artifact.license_verification_artifact.licensee_first_name,
local_services_verification_artifact.license_verification_artifact.licensee_last_name,
local_services_verification_artifact.license_verification_artifact.rejection_reason
FROM local_services_verification_artifact
WHERE local_services_verification_artifact.artifact_type = 'LICENSE'
Geographic and categorical license and insurance data
To programmatically determine the status of verification requests by geographic
location, specifically, geo target code) and
local services category
ID, you can use a new
field on the customer
resource, called
LocalServicesSettings
.
This field exposes a high-level summary of the status of license and insurance verification requests by location and category. Here's an example query that retrieves all such data:
SELECT
customer.local_services_settings.granular_license_statuses,
customer.local_services_settings.granular_insurance_statuses
FROM customer
Local service employee
LocalServicesEmployee
exposes the data
about local service employees that the advertisers have uploaded their ad
profile into our systems.
Here's an example query that retrieves data for all the local service employees for a given client account:
SELECT
local_services_employee.status,
local_services_employee.type,
local_services_employee.university_degrees,
local_services_employee.residencies,
local_services_employee.fellowships,
local_services_employee.job_title,
local_services_employee.year_started_practicing,
local_services_employee.languages_spoken,
local_services_employee.first_name,
local_services_employee.middle_name,
local_services_employee.last_name
FROM local_services_employee