To measure the causal impact of your ad campaigns on brand perception, conversions, conversion value, and organic search behavior, query the lift measurement reporting resources in the Google Ads API:
- Brand Lift reporting: Evaluates how ad exposure influences brand perception across surveyed measurement types in Google Ads API v25 and later.
- Conversion Lift reporting: Measures
incremental conversions, conversion value, cost per incremental conversion
(iCPA), and incremental return on ad spend (iROAS) against an unexposed
holdback group in Google Ads API v25 and later, including:
- Standalone Conversion Lift reporting: Evaluates study-level and sliced incrementality across measured campaigns.
- A/B + Conversion Lift reporting: Evaluates per-arm holdback incrementality and Bayesian head-to-head winner scores across competing experiment arms.
- Search Lift reporting: Quantifies the incremental increase in organic search query volume across Google Search and YouTube driven by ad exposure in Google Ads API v26 and later.
For standard A/B experiment reporting on the experiment and campaign
resources, see Report on
experiments.
Brand Lift reporting
To evaluate how your ad campaigns influence brand perception in Google Ads API v25 and later, query the dedicated Brand Lift measurement resources.
Brand Lift resources and breakdown views
Brand Lift configurations, flights, and breakdown views are read-only in the
Google Ads API (all fields are OUTPUT_ONLY) and are configured in the Google Ads UI or
with your Google representative or GPS contact. Query these resources by using
the customer_id parameter of the account (manager or child account) that owns
the study.
Query the LiftMeasurementFlight resource to retrieve
flight-level Brand Lift schedule and survey collection metadata, including the
flight status (lift_measurement_flight.status, defined
by the LiftMeasurementFlightStatus enum with values
ENABLED for active flights and STOPPED for manually halted flights), the
flight date ranges (lift_measurement_flight.start_date
and lift_measurement_flight.end_date) in the customer's
time zone, and the target survey response collection progress
(lift_measurement_flight.survey_lift_measurement.response_collection_ratio_micros,
where 0 equals 0% and 1000000 equals 100%). To determine whether an
ENABLED flight is in progress or completed, compare the current date in the
customer's time zone against lift_measurement_flight.start_date and
lift_measurement_flight.end_date, and check whether
response_collection_ratio_micros has reached 1000000.
Query the LiftMeasurementConfig resource to retrieve overall
study-level Brand Lift metrics, or query the following breakdown resources to
analyze Brand Lift metrics across specific dimensions:
LiftMeasurementCampaign: Breakdown by campaign.LiftMeasurementAgeRange: Breakdown by age range.LiftMeasurementDevice: Breakdown by device.LiftMeasurementGender: Breakdown by gender.LiftMeasurementVideo: Breakdown by video asset.
Include the segments.brand_lift_measurement_type
segment to break down Brand Lift metrics by surveyed question type, defined by
the BrandLiftMeasurementType enum (such as RECALL or
AWARENESS). When you omit the segments.brand_lift_measurement_type segment,
the API returns metrics for a single auto-selected measurement type per slice.
Include the segments.date segment to break down Brand Lift metrics
by date (YYYY-MM-DD). The
metrics.cost_per_lifted_cookie metric is returned in
micros of the study-owning account's currency.
In Google Ads API v27 and later, you can also select the read-only (OUTPUT_ONLY)
lift_guidance field (lift_guidance.outcome and
lift_guidance.guidance_message, of type LiftGuidance) in the Google Ads Query Language (GAQL)
SELECT clause on lift_measurement_config and on the five Brand Lift
breakdown resources (lift_measurement_age_range, lift_measurement_campaign,
lift_measurement_device, lift_measurement_gender, and
lift_measurement_video) to receive row-level statistical interpretation. On
lift_measurement_config, lift_guidance is populated only when the query also
selects or filters on Lift metrics or segments (it is omitted on metadata-only
configuration queries), and lift_guidance.guidance_message can contain inline
Markdown links (such as [Learn more](https://support.google.com/...)). You
cannot filter or sort on lift_guidance subfields in WHERE or ORDER BY
clauses. For descriptions of the LiftOutcomeEnum.LiftOutcome values returned
in lift_guidance.outcome, see Interpret Brand Lift
outcomes.
Reportability thresholds and empty responses
Brand Lift reporting is both latency-gated (requiring a 24–48 hour pipeline
delay after a study starts) and response-gated per surveyed measurement type
(segments.brand_lift_measurement_type) to satisfy statistical reportability
and privacy thresholds:
- Positive response rates
(
metrics.brand_lift_baseline_positive_response_rate*andmetrics.brand_lift_exposed_positive_response_rate*): At least 50 survey responses in the corresponding arm (exposed or suppressed). - Strict positive lift threshold (overall study on
LiftMeasurementConfigor independent slice): Statistically positive lift (p_value <= 0.50) with at least 2,000 total responses and 860 responses per arm. - Relaxed slice positive lift threshold (on a breakdown resource when the
overall study meets the strict threshold with positive lift):
Statistically positive lift (
p_value <= 0.50) with at least 500 total responses and 200 responses per arm. - Complete non-positive lift threshold (
NO_SIGNIFICANT_LIFTversusNOT_ENOUGH_DATA): At least 4,100 total responses per metric when no statistically positive lift is detected.
Queries to LiftMeasurementConfig and the five Brand Lift breakdown resources
(LiftMeasurementAgeRange, LiftMeasurementGender, LiftMeasurementDevice,
LiftMeasurementCampaign, and LiftMeasurementVideo) return an empty response
(results: []) rather than an error in the following cases:
- The queried
customer_idparameter is not on the allowlist or doesn't own the study. - The
WHEREdate filters fall outside evaluated flight dates (lift_measurement_flight.start_dateandlift_measurement_flight.end_date). - The study or specific demographic, device, campaign, or video slice hasn't
met the 24–48 hour reporting delay and survey response volume thresholds,
even when
LiftMeasurementConfigreturns overall study results.
To troubleshoot empty responses, complete the following steps:
- Query
lift_measurement_flightto verify thatlift_measurement_flight.status = 'ENABLED', check that yourWHEREdate filters fall withinlift_measurement_flight.start_dateandlift_measurement_flight.end_date, and inspect survey progress inlift_measurement_flight.survey_lift_measurement.response_collection_ratio_micros(where1000000equals 100%). - Query
LiftMeasurementConfigto confirm whether the overall study has generated reportable Brand Lift metrics before querying dimensional breakdown resources.
Interpret Brand Lift outcomes
In Google Ads API v27 and later, the lift_guidance.outcome field returns a
LiftOutcomeEnum.LiftOutcome value that classifies the statistical state of
each returned row alongside human-readable remediation advice in
lift_guidance.guidance_message:
- In-progress study outcomes (when
lift_measurement_flight.statusisENABLEDand the current date in the customer's time zone is on or beforelift_measurement_flight.end_datewithlift_measurement_flight.survey_lift_measurement.response_collection_ratio_microsless than1000000):STUDY_IN_PROGRESS_WITH_LIFT: The study is in progress and preliminary positive lift is emerging.STUDY_IN_PROGRESS_NO_LIFT_YET: The study is in progress with sufficient initial volume, and no statistically significant lift has been detected yet.STUDY_IN_PROGRESS_COLLECTING_DATA: The study is in progress and actively collecting initial survey responses toward statistical reporting thresholds.
- Completed study outcomes (when
lift_measurement_flight.end_datehas passed orlift_measurement_flight.survey_lift_measurement.response_collection_ratio_microshas reached1000000):POSITIVE_LIFT_DETECTED: Statistically significant positive lift was detected for the completed study or slice.NO_SIGNIFICANT_LIFT: The completed study or slice met statistical precision thresholds (at least 4,100 total responses per metric), and no statistically significant positive lift was detected.NOT_ENOUGH_DATA: The completed study or slice did not meet the survey response thresholds required for statistical reportability (at least 2,000 total and 860 per-arm responses for positive lift on the overall study, 500 total and 200 per-arm responses for positive lift on a slice when the overall study has positive lift, or 4,100 total responses per metric when no positive lift is detected).
Apply the following guidelines when interpreting Brand Lift results:
- In-progress versus completed flights (
STUDY_IN_PROGRESS_*): While anENABLEDstudy flight is still in progress (beforelift_measurement_flight.end_datepasses and beforeresponse_collection_ratio_microsreaches1000000), survey responses and bias-corrected modeling are still stabilizing. Treat in-progress metrics as preliminary and avoid pausing campaigns or reducing budgets until the flight completes. - Positive lift (
POSITIVE_LIFT_DETECTED): When positive Brand Lift is detected, query the dimensional breakdown resources (LiftMeasurementAgeRange,LiftMeasurementGender,LiftMeasurementDevice,LiftMeasurementCampaign, andLiftMeasurementVideo) to identify high-performing audience cohorts ("bright spots") and evaluate creative resonance across the brand funnel. - Insufficient data or no significant lift (
NOT_ENOUGH_DATAorNO_SIGNIFICANT_LIFT): When survey response volume is insufficient (fewer than 4,100 total responses per metric without positive lift, or fewer than the 2,000/860 strict or 500/200 relaxed slice thresholds for positive lift) or no statistically significant lift is detected on a slice, do not treat this as campaign failure or exclude audiences based on single-slice sample insufficiency. Check overall study metrics onLiftMeasurementConfig, query other surveyedsegments.brand_lift_measurement_typevalues (such as upper-funnelRECALLorAWARENESS), and check remaining breakdown dimensions.
Example Brand Lift queries
Because flight metadata and lift statistics reside on separate resources, querying flight details and performance statistics requires separate GAQL queries.
Flight details query
To retrieve metadata for a Brand Lift flight, such as its status, measurement
type, scheduled dates, and survey collection progress, query the
LiftMeasurementFlight resource:
SELECT
lift_measurement_flight.lift_measurement_config_id,
lift_measurement_flight.lift_measurement_flight_id,
lift_measurement_flight.name,
lift_measurement_flight.status,
lift_measurement_flight.lift_type,
lift_measurement_flight.start_date,
lift_measurement_flight.end_date,
lift_measurement_flight.survey_lift_measurement.response_collection_ratio_micros
FROM lift_measurement_flight
WHERE lift_measurement_flight.lift_measurement_config_id = CONFIG_ID
AND lift_measurement_flight.lift_type = 'SURVEY'
Replace the following:
CONFIG_ID: the integer ID of the lift measurement configuration (lift_measurement_config.lift_measurement_config_id).
Statistics query
To retrieve Brand Lift metrics, query the LiftMeasurementConfig
resource or the appropriate breakdown resource. For example, the following query
retrieves Brand Lift metrics segmented by campaign and Brand Lift measurement
type from the LiftMeasurementCampaign resource:
SELECT
lift_measurement_campaign.lift_measurement_config_id,
lift_measurement_campaign.campaign,
segments.brand_lift_measurement_type,
metrics.absolute_brand_lift,
metrics.relative_brand_lift
FROM lift_measurement_campaign
WHERE lift_measurement_campaign.lift_measurement_config_id = CONFIG_ID
Replace the following:
CONFIG_ID: the integer ID of the lift measurement configuration.
Conversion Lift reporting
In Google Ads API v25 and later, Conversion Lift reporting measures the incremental impact of your ads on conversions and conversion value. Conversion Lift studies compare converting behavior between an exposed group (users who were eligible to see your ads) and an unexposed control group (users held back from seeing your ads).
Conversion Lift configurations, flights, and experiment links are read-only in
the Google Ads API (all fields are OUTPUT_ONLY) and are configured in the Google Ads UI
or with your Google representative or GPS contact. Query the
lift_measurement_config resource by using the customer_id parameter of the
account that owns the study. A manager account can directly query cross-account
Conversion Lift studies that it owns. Query studies owned by a child account by
using the child account's customer_id parameter (optionally authenticated with
the login-customer-id header).
Conversion Lift reporting supports two study workflows, both of which share the same study and flight discovery, cumulative snapshot date ranges, and conversion action scopes:
- Standalone Conversion Lift reporting: Measures overall incrementality, cost per incremental conversion (iCPA), and incremental return on ad spend (iROAS) across the selected conversion actions or all conversion actions from the measured campaigns in the study.
- A/B + Conversion Lift reporting: Measures per-arm incrementality and Bayesian winner scores between two competing experiment arms (control versus treatment) alongside overall study incrementality.
For assistance constructing valid queries to the lift_measurement_config
resource, use the
Google Ads Query Builder
tool.
In Google Ads API v27 and later, you can select the read-only (OUTPUT_ONLY)
lift_measurement_config.lift_guidance field (lift_guidance.outcome and
lift_guidance.guidance_message, of type LiftGuidance) in the GAQL SELECT
clause on lift_measurement_config to receive row-level statistical
interpretation for standalone Conversion Lift and A/B + Conversion Lift queries.
On lift_measurement_config, lift_guidance is populated only when the query
also selects or filters on Lift metrics or segments (it is omitted on
metadata-only configuration queries), and lift_guidance.guidance_message can
contain inline Markdown links (such as
[Learn more](https://support.google.com/...)). You cannot filter or sort on
lift_guidance subfields in WHERE or ORDER BY clauses. The
lift_guidance.outcome field returns one of the following
LiftOutcomeEnum.LiftOutcome values:
- In-progress study outcomes (when
lift_measurement_flight.statusisENABLEDand the current date in the customer's time zone is on or beforelift_measurement_flight.end_date):STUDY_IN_PROGRESS_WITH_LIFT: The study is in progress and preliminary positive lift is emerging.STUDY_IN_PROGRESS_NO_LIFT_YET: The study is in progress with sufficient initial volume, and no statistically significant lift has been detected yet.STUDY_IN_PROGRESS_COLLECTING_DATA: The study is in progress and actively collecting initial conversion data toward statistical reporting thresholds.
- Completed study outcomes (when
lift_measurement_flight.end_datehas passed):POSITIVE_LIFT_DETECTED: Statistically significant positive lift was detected for the completed study, experiment arm, or slice.AB_WINNER_WITH_LIFT: An A/B + Conversion Lift study completed with a winning experiment arm head-to-head and statistically significant positive lift over the unexposed holdback group.AB_WINNER_PARITY_VS_CONTROL: An A/B + Conversion Lift study completed with a winning experiment arm head-to-head, but at parity with the unexposed holdback group.NO_SIGNIFICANT_LIFT: The completed study, experiment arm, or slice met statistical precision thresholds, and no statistically significant positive lift was detected.NOT_ENOUGH_DATA: The completed study, experiment arm, or slice did not accumulate enough conversions to reach statistical precision thresholds.
Discover study configurations and flights
To report on a Conversion Lift study, first discover the study configuration and its flight schedule:
- Retrieve the study configuration: Query the
LiftMeasurementConfigresource to retrieve the study's name, holdback ratio (lift_measurement_config.conversion_lift_holdback_ratio_micros), tracked conversion actions (lift_measurement_config.conversion_actions), and—in Google Ads API v26 and later—actively linked campaigns (lift_measurement_config.campaigns). Theconversion_lift_holdback_ratio_microsfield is expressed in micros where1,000,000equals 100% (for example,300000represents a 30% unexposed holdback group). If you don't know the study'sCONFIG_ID, omit theWHEREclause to list all study configurations in the account. - Retrieve flight observation windows: Query the
LiftMeasurementFlightresource to find the scheduled flight dates (lift_measurement_flight.start_dateandlift_measurement_flight.end_date) in the customer's time zone. Because a singleLiftMeasurementConfigresource can group Brand Lift (SURVEY), Conversion Lift (CONVERSION), and Search Lift (SEARCH) flights, include thelift_measurement_flight.lift_typefield in theSELECTclause and filter bylift_measurement_flight.lift_type = 'CONVERSION'in theWHEREclause. Thelift_measurement_flight.start_dateandlift_measurement_flight.end_datefields are sortable inORDER BYclauses, but you cannot filter on them in aWHEREclause.
The following query retrieves the study configuration (omit the
lift_measurement_config.campaigns field in Google Ads API v25, as that field
requires Google Ads API v26 and later):
SELECT
lift_measurement_config.lift_measurement_config_id,
lift_measurement_config.name,
lift_measurement_config.conversion_lift_holdback_ratio_micros,
lift_measurement_config.conversion_actions,
lift_measurement_config.campaigns
FROM lift_measurement_config
WHERE lift_measurement_config.lift_measurement_config_id = CONFIG_ID
Replace the following:
CONFIG_ID: the integer ID of the lift measurement configuration (lift_measurement_config.lift_measurement_config_id).
The following query retrieves the Conversion Lift flight schedule for the study:
SELECT
lift_measurement_flight.lift_measurement_config_id,
lift_measurement_flight.lift_measurement_flight_id,
lift_measurement_flight.name,
lift_measurement_flight.status,
lift_measurement_flight.lift_type,
lift_measurement_flight.start_date,
lift_measurement_flight.end_date
FROM lift_measurement_flight
WHERE lift_measurement_flight.lift_measurement_config_id = CONFIG_ID
AND lift_measurement_flight.lift_type = 'CONVERSION'
Replace the following:
CONFIG_ID: the integer ID of the lift measurement configuration (lift_measurement_config.lift_measurement_config_id).
In Google Ads API v26 and later, you can also discover the lift measurement
configuration linked to a campaign directly from the
campaign resource by querying the
campaign.lift_measurement_config field. Querying this
field avoids having to cross-reference the
LiftMeasurementConfig resource separately:
SELECT
campaign.id,
campaign.lift_measurement_config
FROM campaign
WHERE campaign.id = CAMPAIGN_ID
Replace the following:
CAMPAIGN_ID: the integer ID of the campaign (campaign.id).
The campaign.lift_measurement_config field returns a resource name in the
format customers/CUSTOMER_ID/liftMeasurementConfigs/CONFIG_ID. If a campaign
has participated in multiple lift studies, this field identifies the most
recently linked configuration (active or inactive). In contrast, the
lift_measurement_config.campaigns field lists only actively linked campaigns.
Query cumulative snapshot date ranges
Conversion Lift results are structured as daily cumulative evaluation snapshots starting from the flight's start date:
- The
segments.conversion_lift_start_datesegment remains pinned to the flight's start date (lift_measurement_flight.start_date). - The
segments.conversion_lift_end_datesegment advances daily up to the flight's end date (lift_measurement_flight.end_date).
Both segments.conversion_lift_start_date and
segments.conversion_lift_end_date are INT64 fields formatted as unquoted
8-digit integers without hyphens in YYYYMMDD format (for example, 20260501).
In contrast, the lift_measurement_flight.start_date and
lift_measurement_flight.end_date fields return date strings in ISO 8601
YYYY-MM-DD format (for example, 2026-05-01). Unlike in Brand Lift and Search
Lift queries, the segments.date segment is incompatible with all
Conversion Lift metrics and segments. Selecting the segments.date segment
alongside Conversion Lift segments (such as
segments.conversion_lift_start_date) in the SELECT clause returns a
QueryError.PROHIBITED_FIELD_COMBINATION_IN_SELECT_CLAUSE error, whereas
combining segments.date with Conversion Lift metrics returns a
QueryError.PROHIBITED_SEGMENT_WITH_METRIC_IN_SELECT_OR_WHERE_CLAUSE error.
The newest computed snapshot can lag behind an active flight's end date while
processing data. Always query the lift_measurement_config resource for
available (segments.conversion_lift_start_date,
segments.conversion_lift_end_date) pairs ordered by
segments.conversion_lift_end_date DESC first to identify the most recent
evaluated snapshot.
The following query retrieves the available snapshot date ranges for a study:
SELECT
segments.conversion_lift_start_date,
segments.conversion_lift_end_date,
segments.conversion_lift_included_conversion_action_types
FROM lift_measurement_config
WHERE lift_measurement_config.lift_measurement_config_id = CONFIG_ID
AND segments.conversion_lift_included_conversion_action_types = 'SELECTED'
ORDER BY segments.conversion_lift_end_date DESC
Replace the following:
CONFIG_ID: the integer ID of the lift measurement configuration.
Filter by conversion action scope
Conversion Lift evaluates incrementality across two scopes defined by the
segments.conversion_lift_included_conversion_action_types
segment:
SELECTED: Conversion actions selected during study setup, or all biddable (primary) conversion actions if custom conversion actions were not specified.ALL: All conversion actions from the campaigns measured in the study.
When you query the lift_measurement_config resource for Conversion Lift
metrics without filtering on the
segments.conversion_lift_included_conversion_action_types segment, the API
returns two rows per slice—one for ALL and one for SELECTED. In GAQL, any
non-date segment field (and any Conversion Lift snapshot date segment) filtered
in the WHERE clause must also appear in the SELECT clause. Otherwise, the
API returns a QueryError.EXPECTED_REFERENCED_FIELD_IN_SELECT_CLAUSE error.
When you filter by segments.conversion_lift_included_conversion_action_types =
'SELECTED' in the WHERE clause, include that segment in the SELECT clause.
Standalone Conversion Lift reporting
Standalone Conversion Lift studies measure the incremental impact of your ads against an unexposed holdback group without splitting campaigns into competing treatment arms.
Query conversion lift and iCPA
Conversion Lift reports point estimates alongside 90% one-sided confidence
bounds (*_p90_lower_bound and *_p90_upper_bound, which together form an 80%
two-sided confidence interval) and p-values (p_value <= 0.10 corresponds to
90% one-sided statistical significance):
metrics.conversion_lift_baseline_conversions: Modeled baseline conversions scaled to the size of the exposed group (sometrics.conversion_lift_exposed_conversionsequalsmetrics.conversion_lift_baseline_conversions + metrics.incremental_conversions). Omitted when<= 0.metrics.conversion_lift_exposed_conversions: Modeled conversions in the exposed group. Omitted when<= 0.metrics.incremental_conversions: Incremental conversions attributed to ad exposure, with 90% one-sided confidence bounds (metrics.incremental_conversions_p90_lower_boundandmetrics.incremental_conversions_p90_upper_bound) and statistical significance (metrics.incremental_conversions_p_value).metrics.cost_per_incremental_conversion: Cost per incremental conversion (iCPA), with 90% one-sided confidence bounds (metrics.cost_per_incremental_conversion_p90_lower_boundandmetrics.cost_per_incremental_conversion_p90_upper_bound). Returned in standard currency units of the study-owning account (for example,11.5represents$11.50in USD, not micros—unlike themetrics.cost_microsormetrics.cost_per_conversionmetrics). Themetrics.cost_per_incremental_conversion_p90_upper_boundfield is unset whenmetrics.incremental_conversions_p90_lower_bound <= 0.metrics.relative_conversion_lift: Relative lift in conversions expressed as a decimal proportion (for example,0.20represents a 20% lift), with 90% one-sided confidence bounds (metrics.relative_conversion_lift_p90_lower_boundandmetrics.relative_conversion_lift_p90_upper_bound).
The API omits Conversion Lift metrics on returned rows in the following cases:
- The inclusive snapshot window is fewer than 4 days.
- Unscaled observed conversion volume is less than the minimum precision
thresholds (fewer than 65 observed baseline conversions in the holdback
group or fewer than 150 observed exposed conversions, evaluated before
scaling
metrics.conversion_lift_baseline_conversions). - Measured lift is non-positive (
metrics.incremental_conversions_p_value > 0.5for conversion metrics, ormetrics.incremental_conversion_value_p_value > 0.5for conversion value metrics). - In Google Ads API v27 and later, iROAS metrics
(
metrics.incremental_conversion_value_per_cost*) and conversion-value winner score metrics (metrics.incremental_conversion_value_winner_scoreandmetrics.incremental_conversion_value_per_cost_winner_score) are queried on a study that was configured during setup with conversion count rather than conversion value as its primary metric. Non-cost conversion value metrics (metrics.conversion_lift_baseline_conversion_value,metrics.conversion_lift_exposed_conversion_value,metrics.incremental_conversion_value*, andmetrics.relative_conversion_value_lift*) remain populated on conversion-count-primary studies whenever conversion value lift is reportable. - Multiple rows or studies are aggregated because you omitted the
lift_measurement_config.lift_measurement_config_id,segments.conversion_lift_start_date,segments.conversion_lift_end_date, orsegments.conversion_lift_included_conversion_action_typesfields from theSELECTclause.
Apply the following guidelines when interpreting standalone Conversion Lift outcomes:
- In-progress versus completed flights (
STUDY_IN_PROGRESS_*): While anENABLEDstudy flight is still in progress (when the current date in the customer's time zone is on or beforelift_measurement_flight.end_date), baseline and treatment conversion modeling and delayed conversion attribution are still stabilizing. Treat in-progress metrics as preliminary and avoid pausing campaigns or reducing budgets until the flight completes. - Positive lift (
POSITIVE_LIFT_DETECTED): Conversion Lift metric reportability andlift_guidance.outcome = 'POSITIVE_LIFT_DETECTED'trigger whenever measured lift is positive (p_value <= 0.50, corresponding to at least 50% certainty with a positive point estimate, whereasp_value <= 0.10indicates 90% one-sided statistical significance where*_p90_lower_bound >= 0) and minimum precision thresholds (at least 4 snapshot days, at least 65 unscaled baseline conversions, and at least 150 unscaled exposed conversions) are met. When positive lift is detected, query dimensional breakdowns (demographics, device, country, or conversion category and conversion action) to identify high-performing cohorts ("bright spots"). - Insufficient data or no significant lift (
NOT_ENOUGH_DATAorNO_SIGNIFICANT_LIFT): When data volume is insufficient (fewer than 65 unscaled baseline conversions or fewer than 150 unscaled exposed conversions) or no statistically significant lift is detected on a slice, do not treat this as campaign failure or exclude audiences based on single-slice sample insufficiency. Check overall study metrics and querysegments.conversion_lift_included_conversion_action_types = 'ALL'(ifSELECTEDshows no lift) or remaining dimensional breakdowns to verify whether positive lift was isolated elsewhere.
The following query retrieves overall conversion incrementality, confidence bounds, and iCPA:
SELECT
lift_measurement_config.lift_measurement_config_id,
segments.conversion_lift_start_date,
segments.conversion_lift_end_date,
segments.conversion_lift_included_conversion_action_types,
metrics.conversion_lift_baseline_conversions,
metrics.conversion_lift_exposed_conversions,
metrics.incremental_conversions,
metrics.incremental_conversions_p90_lower_bound,
metrics.incremental_conversions_p90_upper_bound,
metrics.incremental_conversions_p_value,
metrics.cost_per_incremental_conversion,
metrics.cost_per_incremental_conversion_p90_lower_bound,
metrics.cost_per_incremental_conversion_p90_upper_bound,
metrics.relative_conversion_lift,
metrics.relative_conversion_lift_p90_lower_bound,
metrics.relative_conversion_lift_p90_upper_bound
FROM lift_measurement_config
WHERE lift_measurement_config.lift_measurement_config_id = CONFIG_ID
AND segments.conversion_lift_start_date = START_DATE
AND segments.conversion_lift_end_date = END_DATE
AND segments.conversion_lift_included_conversion_action_types = 'SELECTED'
Replace the following:
CONFIG_ID: the integer ID of the lift measurement configuration.START_DATE: the snapshot start date as an unquoted 8-digitYYYYMMDDinteger (for example,20260501).END_DATE: the snapshot end date as an unquoted 8-digitYYYYMMDDinteger (for example,20260515).
Query conversion value lift and iROAS
To evaluate incremental revenue generated by your ad spend, query conversion
value metrics and the
metrics.incremental_conversion_value_per_cost metric.
Non-cost conversion value metrics
(metrics.conversion_lift_baseline_conversion_value,
metrics.conversion_lift_exposed_conversion_value,
metrics.incremental_conversion_value*, and
metrics.relative_conversion_value_lift*) are populated whenever the study has
reportable conversion value lift, regardless of whether the study's primary
metric is conversion count or conversion value. In Google Ads API v27 and later, the
iROAS metrics (metrics.incremental_conversion_value_per_cost*)—along with
metrics.incremental_conversion_value_winner_score and
metrics.incremental_conversion_value_per_cost_winner_score—are returned only
when the study was configured during setup with conversion value as its
primary metric (and are omitted on conversion-count-primary studies):
metrics.conversion_lift_baseline_conversion_value: Modeled baseline conversion value in the currency of the study-owning account, scaled to the size of the exposed group. Omitted when<= 0.metrics.conversion_lift_exposed_conversion_value: Modeled conversion value in the exposed group. Omitted when<= 0.metrics.incremental_conversion_value: Incremental conversion value attributed to ads, with 90% one-sided confidence bounds (metrics.incremental_conversion_value_p90_lower_boundandmetrics.incremental_conversion_value_p90_upper_bound) and statistical significance (metrics.incremental_conversion_value_p_value).metrics.relative_conversion_value_lift: Relative lift in conversion value expressed as a decimal proportion (for example,0.20represents a 20% lift), with 90% one-sided confidence bounds (metrics.relative_conversion_value_lift_p90_lower_boundandmetrics.relative_conversion_value_lift_p90_upper_bound).metrics.incremental_conversion_value_per_cost: Incremental return on ad spend (iROAS), expressed as a dimensionless currency ratio (for example,2.5represents$2.50of incremental conversion value per$1.00spent in the study-owning account's currency), with 90% one-sided confidence bounds (metrics.incremental_conversion_value_per_cost_p90_lower_boundandmetrics.incremental_conversion_value_per_cost_p90_upper_bound). Themetrics.incremental_conversion_value_per_cost_p90_lower_boundfield is unset whenmetrics.incremental_conversion_value_p90_lower_bound < 0.
The following query retrieves conversion value incrementality, confidence bounds, and iROAS:
SELECT
lift_measurement_config.lift_measurement_config_id,
segments.conversion_lift_start_date,
segments.conversion_lift_end_date,
segments.conversion_lift_included_conversion_action_types,
metrics.conversion_lift_baseline_conversion_value,
metrics.conversion_lift_exposed_conversion_value,
metrics.incremental_conversion_value,
metrics.incremental_conversion_value_p90_lower_bound,
metrics.incremental_conversion_value_p90_upper_bound,
metrics.incremental_conversion_value_p_value,
metrics.incremental_conversion_value_per_cost,
metrics.incremental_conversion_value_per_cost_p90_lower_bound,
metrics.incremental_conversion_value_per_cost_p90_upper_bound,
metrics.relative_conversion_value_lift,
metrics.relative_conversion_value_lift_p90_lower_bound,
metrics.relative_conversion_value_lift_p90_upper_bound
FROM lift_measurement_config
WHERE lift_measurement_config.lift_measurement_config_id = CONFIG_ID
AND segments.conversion_lift_start_date = START_DATE
AND segments.conversion_lift_end_date = END_DATE
AND segments.conversion_lift_included_conversion_action_types = 'SELECTED'
Replace the following:
CONFIG_ID: the integer ID of the lift measurement configuration.START_DATE: the snapshot start date as an unquoted 8-digitYYYYMMDDinteger (for example,20260501).END_DATE: the snapshot end date as an unquoted 8-digitYYYYMMDDinteger (for example,20260515).
Segment results by dimension
Segment incremental conversion metrics by conversion category, conversion
action, demographics, device, or geography. When querying the
lift_measurement_config resource, select only compatible segment combinations:
- Conversion category and conversion action segments: You can select the
segments.conversion_lift_conversion_category,segments.conversion_action, andsegments.conversion_action_namesegments individually, pair them with one another, or combine them with at most one demographic, device, or country dimension. (When querying thesegments.experiment_armsegment, only thesegments.conversion_lift_conversion_categorysegment is compatible.) - Demographic, device, and geographic segments: The
segments.age_range,segments.gender,segments.device, and country (segments.countrywithsegments.country_localized_name) dimensions are mutually incompatible with one another and with thesegments.experiment_armsegment. Select at most one of these four dimensions per query.
Selecting mutually incompatible segments in the SELECT clause fails query
validation and returns a
QueryError.PROHIBITED_FIELD_COMBINATION_IN_SELECT_CLAUSE error. Use the
Google Ads Query Builder to
validate segment combinations interactively.
Evaluate cost-efficiency metrics (metrics.cost_per_incremental_conversion* and
metrics.incremental_conversion_value_per_cost*) only on overall study rows
or segments.experiment_arm rows. In Google Ads API v25 and v26, the schema
permits selecting the six cost-ratio metrics
(metrics.cost_per_incremental_conversion,
metrics.cost_per_incremental_conversion_p90_lower_bound,
metrics.cost_per_incremental_conversion_p90_upper_bound,
metrics.incremental_conversion_value_per_cost,
metrics.incremental_conversion_value_per_cost_p90_lower_bound, and
metrics.incremental_conversion_value_per_cost_p90_upper_bound) with the eight
non-arm slice segments (segments.conversion_action,
segments.conversion_action_name,
segments.conversion_lift_conversion_category, segments.age_range,
segments.gender, segments.device, segments.country, and
segments.country_localized_name). Starting in Google Ads API v27, selecting any of
these six cost-ratio metrics with any of those eight non-arm slice segments
fails query validation and returns a
QueryError.PROHIBITED_SEGMENT_WITH_METRIC_IN_SELECT_OR_WHERE_CLAUSE error.
Non-cost conversion value metrics
(metrics.conversion_lift_baseline_conversion_value,
metrics.conversion_lift_exposed_conversion_value,
metrics.incremental_conversion_value*, and
metrics.relative_conversion_value_lift*) remain supported on conversion
category, conversion action, demographic, device, and country segments whenever
conversion value lift is reportable (regardless of whether the study's primary
metric is conversion count or conversion value).
To evaluate lift across conversion categories defined in the
ConversionActionCategory enum (such as PURCHASE,
SIGNUP, or SUBMIT_LEAD_FORM), segment results by the
segments.conversion_lift_conversion_category segment:
SELECT
lift_measurement_config.lift_measurement_config_id,
segments.conversion_lift_start_date,
segments.conversion_lift_end_date,
segments.conversion_lift_included_conversion_action_types,
segments.conversion_lift_conversion_category,
metrics.conversion_lift_baseline_conversions,
metrics.conversion_lift_exposed_conversions,
metrics.incremental_conversions,
metrics.relative_conversion_lift
FROM lift_measurement_config
WHERE lift_measurement_config.lift_measurement_config_id = CONFIG_ID
AND segments.conversion_lift_start_date = START_DATE
AND segments.conversion_lift_end_date = END_DATE
AND segments.conversion_lift_included_conversion_action_types = 'SELECTED'
Replace the following:
CONFIG_ID: the integer ID of the lift measurement configuration.START_DATE: the snapshot start date as an unquoted 8-digitYYYYMMDDinteger (for example,20260501).END_DATE: the snapshot end date as an unquoted 8-digitYYYYMMDDinteger (for example,20260515).
The segments.conversion_action segment returns the
conversion action resource name in the format
customers/CUSTOMER_ID/conversionActions/CONVERSION_ACTION_ID. Select the
segments.conversion_action_name segment on the
lift_measurement_config resource to retrieve human-readable conversion action
names without querying the conversion_action resource separately. The
following query segments Conversion Lift metrics by conversion action,
conversion action name, and conversion category:
SELECT
lift_measurement_config.lift_measurement_config_id,
segments.conversion_lift_start_date,
segments.conversion_lift_end_date,
segments.conversion_lift_included_conversion_action_types,
segments.conversion_action,
segments.conversion_action_name,
segments.conversion_lift_conversion_category,
metrics.conversion_lift_baseline_conversions,
metrics.conversion_lift_exposed_conversions,
metrics.incremental_conversions,
metrics.relative_conversion_lift
FROM lift_measurement_config
WHERE lift_measurement_config.lift_measurement_config_id = CONFIG_ID
AND segments.conversion_lift_start_date = START_DATE
AND segments.conversion_lift_end_date = END_DATE
AND segments.conversion_lift_included_conversion_action_types = 'SELECTED'
Replace the following:
CONFIG_ID: the integer ID of the lift measurement configuration.START_DATE: the snapshot start date as an unquoted 8-digitYYYYMMDDinteger (for example,20260501).END_DATE: the snapshot end date as an unquoted 8-digitYYYYMMDDinteger (for example,20260515).
The following query segments Conversion Lift metrics by the
segments.device segment. Substitute the
segments.age_range or segments.gender segment
in separate requests to retrieve demographic breakdowns (optionally combined
with conversion category or conversion action segments):
SELECT
lift_measurement_config.lift_measurement_config_id,
segments.conversion_lift_start_date,
segments.conversion_lift_end_date,
segments.conversion_lift_included_conversion_action_types,
segments.device,
metrics.conversion_lift_baseline_conversions,
metrics.conversion_lift_exposed_conversions,
metrics.incremental_conversions,
metrics.relative_conversion_lift
FROM lift_measurement_config
WHERE lift_measurement_config.lift_measurement_config_id = CONFIG_ID
AND segments.conversion_lift_start_date = START_DATE
AND segments.conversion_lift_end_date = END_DATE
AND segments.conversion_lift_included_conversion_action_types = 'SELECTED'
Replace the following:
CONFIG_ID: the integer ID of the lift measurement configuration.START_DATE: the snapshot start date as an unquoted 8-digitYYYYMMDDinteger (for example,20260501).END_DATE: the snapshot end date as an unquoted 8-digitYYYYMMDDinteger (for example,20260515).
To break down results by geography, include the
segments.country and
segments.country_localized_name segments (optionally
combined with conversion category or conversion action segments). The
segments.country segment returns a global geo target constant resource name in
the format geoTargetConstants/CRITERION_ID (for example,
geoTargetConstants/2840 for the United States).
The following query segments Conversion Lift metrics by country criterion resource name and localized country name:
SELECT
lift_measurement_config.lift_measurement_config_id,
segments.conversion_lift_start_date,
segments.conversion_lift_end_date,
segments.conversion_lift_included_conversion_action_types,
segments.country,
segments.country_localized_name,
metrics.conversion_lift_baseline_conversions,
metrics.conversion_lift_exposed_conversions,
metrics.incremental_conversions,
metrics.relative_conversion_lift
FROM lift_measurement_config
WHERE lift_measurement_config.lift_measurement_config_id = CONFIG_ID
AND segments.conversion_lift_start_date = START_DATE
AND segments.conversion_lift_end_date = END_DATE
AND segments.conversion_lift_included_conversion_action_types = 'SELECTED'
Replace the following:
CONFIG_ID: the integer ID of the lift measurement configuration.START_DATE: the snapshot start date as an unquoted 8-digitYYYYMMDDinteger (for example,20260501).END_DATE: the snapshot end date as an unquoted 8-digitYYYYMMDDinteger (for example,20260515).
A/B + Conversion Lift reporting
In Google Ads API v25 and later, A/B + Conversion Lift studies combine a two-arm
experiment (comparing control versus treatment strategies) with holdback
measurement in the Google Ads API to assess individual arm incrementality and compute
Bayesian winner scores. Unlike direct experiment
reporting
on the experiment resource, which compares unadjusted arm-versus-arm traffic
metrics, querying the lift_measurement_config resource with the
segments.experiment_arm segment measures each arm's incremental lift against
an unexposed holdback baseline.
Discover experiments and arms
An A/B + Conversion Lift study links a LiftMeasurementConfig
resource to a two-arm experiment resource through the
read-only (OUTPUT_ONLY)
experiment.lift_measurement_config field.
To discover the linked experiment and its arms in a single request, query the
ExperimentArm resource with attributed experiment fields and
filter on the experiment.lift_measurement_config field. The response includes
each arm's control status (experiment_arm.control), traffic
split (experiment_arm.traffic_split), linked
campaigns (experiment_arm.campaigns), and resource name.
Use the returned experiment_arm.resource_name value (formatted as
customers/CUSTOMER_ID/experimentArms/EXPERIMENT_ID~ARM_ID) to filter on the
segments.experiment_arm segment:
SELECT
experiment.experiment_id,
experiment.name,
experiment.lift_measurement_config,
experiment_arm.resource_name,
experiment_arm.name,
experiment_arm.control,
experiment_arm.traffic_split,
experiment_arm.campaigns
FROM experiment_arm
WHERE experiment.lift_measurement_config =
'customers/CUSTOMER_ID/liftMeasurementConfigs/CONFIG_ID'
Replace the following:
CUSTOMER_ID: the 10-digit customer ID of the account that owns the study (without hyphens).CONFIG_ID: the integer ID of the lift measurement configuration.
If you start from a known EXPERIMENT_ID (or want to list all lift-enabled
experiments in the account), run the same experiment_arm query filtered by
WHERE experiment.experiment_id = EXPERIMENT_ID (or WHERE
experiment.lift_measurement_config IS NOT NULL).
Query per-arm incrementality and winner scores
To measure incrementality for each arm and evaluate the statistical probability
that an arm is the winner, include the segments.experiment_arm
segment in your query to the lift_measurement_config resource.
The following Bayesian winner score metrics evaluate the probability (from 0.0
to 1.0, summing to 1.0 across both arms when both arms have reportable
positive lift) that a given arm is superior:
metrics.incremental_conversions_winner_score: The probability that this arm is the winner for incremental conversions, normalized by arm traffic split (experiment_arm.traffic_split).metrics.incremental_conversion_value_winner_score: The probability that this arm is the winner for incremental conversion value, normalized by arm traffic split (experiment_arm.traffic_split). In Google Ads API v27 and later, populated only when the study's primary metric is conversion value, and omitted (left unset) on conversion-count-primary studies.metrics.cost_per_incremental_conversion_winner_score: The probability that this arm is the winner for cost per incremental conversion (lowest iCPA), normalized by spend.metrics.incremental_conversion_value_per_cost_winner_score: The probability that this arm is the winner for incremental conversion value per cost (highest iROAS), normalized by spend. In Google Ads API v27 and later, populated only when the study's primary metric is conversion value, and omitted (left unset) on conversion-count-primary studies.
The following query retrieves per-arm incrementality and Bayesian winner scores for both arms:
SELECT
lift_measurement_config.lift_measurement_config_id,
segments.conversion_lift_start_date,
segments.conversion_lift_end_date,
segments.conversion_lift_included_conversion_action_types,
segments.experiment_arm,
metrics.conversion_lift_baseline_conversions,
metrics.conversion_lift_exposed_conversions,
metrics.incremental_conversions,
metrics.cost_per_incremental_conversion,
metrics.incremental_conversions_winner_score,
metrics.cost_per_incremental_conversion_winner_score,
metrics.incremental_conversion_value,
metrics.incremental_conversion_value_winner_score,
metrics.incremental_conversion_value_per_cost_winner_score
FROM lift_measurement_config
WHERE lift_measurement_config.lift_measurement_config_id = CONFIG_ID
AND segments.conversion_lift_start_date = START_DATE
AND segments.conversion_lift_end_date = END_DATE
AND segments.conversion_lift_included_conversion_action_types = 'SELECTED'
Replace the following:
CONFIG_ID: the integer ID of the lift measurement configuration.START_DATE: the snapshot start date as an unquoted 8-digitYYYYMMDDinteger (for example,20260501).END_DATE: the snapshot end date as an unquoted 8-digitYYYYMMDDinteger (for example,20260515).
To filter for a single arm, add AND segments.experiment_arm =
'customers/CUSTOMER_ID/experimentArms/EXPERIMENT_ID~ARM_ID' to the WHERE
clause, where EXPERIMENT_ID is the experiment ID and ARM_ID is the arm ID
returned in the experiment_arm.resource_name field. The
segments.experiment_arm segment supports filtering in WHERE clauses (=,
!=, IN, NOT IN), but you cannot sort on it in an ORDER BY clause.
Interpret A/B + Conversion Lift outcomes
An A/B + Conversion Lift study evaluates two hypotheses simultaneously:
head-to-head arm superiority (metrics.*_winner_score) and causal lift against
the unexposed holdback group (metrics.incremental_* and *_p_value). While an
ENABLED study flight is still in progress (STUDY_IN_PROGRESS_*, when the
current date in the customer's time zone is on or before
lift_measurement_flight.end_date), head-to-head arm comparison and holdback
conversion modeling are still stabilizing. Treat in-progress metrics as
preliminary and avoid promoting an experiment arm or reallocating budgets until
the flight completes.
On completed studies, an experiment arm is classified as a head-to-head winner
when it meets the minimum precision thresholds (at least 4 snapshot days, 65
unscaled baseline conversions, and 150 unscaled exposed conversions), has 0 <=
p_value <= 0.50, and achieves a Bayesian winner score greater than 0.55
(> 0.55) on the study's primary metric. This dual-hypothesis evaluation
produces two distinct winner states (also reflected in lift_guidance.outcome
in Google Ads API v27 and later):
- Clear winner with causal lift (
AB_WINNER_WITH_LIFT): The winning arm outperforms the competing arm head-to-head (winner_score > 0.55) and generates statistically significant incremental conversions or conversion value over the unexposed holdback group. Promote or scale the winning arm's strategy, and query dimensional breakdowns to review high-performing cohorts. - Head-to-head winner at parity with holdback
(
AB_WINNER_PARITY_VS_CONTROL): The winning arm outperforms the competing arm head-to-head (winner_score > 0.55), but neither arm produces statistically significant incremental lift over the unexposed holdback group at the queried level. Before scaling spend on the winning arm, queryALLconversions (segments.conversion_lift_included_conversion_action_types = 'ALL') andsegments.conversion_lift_conversion_categorybreakdowns to verify whether positive causal lift was isolated elsewhere.
The POSITIVE_LIFT_DETECTED outcome applies across A/B + Conversion Lift query
granularities as follows:
- Combined-arm (
OVERALL) study rows (queries withoutsegments.experiment_arm): The study generated positive lift over the unexposed holdback group (p_value <= 0.50), and neither arm achieved a head-to-head winner score greater than0.55. - Per-arm (
segments.experiment_arm) rows: When one arm wins (winner_score > 0.55) and both arms achieve positive lift over the holdback group, the winning arm row returnsAB_WINNER_WITH_LIFTwhile the non-winning arm row returnsPOSITIVE_LIFT_DETECTED. - Conversion category (
segments.conversion_lift_conversion_category) slice rows: Positive lift rows always returnPOSITIVE_LIFT_DETECTEDbecause winner scores are not evaluated per conversion category.
When a slice returns NOT_ENOUGH_DATA or NO_SIGNIFICANT_LIFT, do not pause
arms or exclude audiences based on single-slice sample insufficiency. Check
overall study metrics and ALL conversions
(segments.conversion_lift_included_conversion_action_types = 'ALL').
Query combined-arm and multi-study results
When you omit the segments.experiment_arm segment from a query on the
lift_measurement_config resource, the API returns study-level incrementality
aggregated across both combined arms. On combined-arm queries, omit the four
metrics.*_winner_score metrics, which apply only across competing arms and are
omitted (left unset) on combined-arm rows without segments.experiment_arm. Use
the study-level queries in Query conversion lift and
iCPA and Query conversion value lift and
iROAS.
When you segment A/B + Conversion Lift results by the
segments.experiment_arm segment, the API supports only the
segments.conversion_lift_conversion_category segment as an
additional breakdown dimension. Because arm spend is not attributed to
individual conversion categories, evaluate conversion and conversion value lift
metrics (omitting iCPA and iROAS metrics, which fail query validation with a
QueryError.PROHIBITED_SEGMENT_WITH_METRIC_IN_SELECT_OR_WHERE_CLAUSE error in
Google Ads API v27 and later) when you include the
segments.conversion_lift_conversion_category segment. The
segments.conversion_action,
segments.conversion_action_name,
segments.age_range, segments.gender,
segments.device, segments.country,
segments.country_localized_name, and
segments.date segments are incompatible with the
segments.experiment_arm segment and with the metrics.*_winner_score metrics.
Selecting any of these incompatible segments alongside segments.experiment_arm
returns a QueryError.PROHIBITED_FIELD_COMBINATION_IN_SELECT_CLAUSE error (and
a QueryError.PROHIBITED_SEGMENT_WITH_METRIC_IN_SELECT_OR_WHERE_CLAUSE error if
the query also selects any metrics.*_winner_score metric).
To retrieve results for multiple study configurations in a single request,
filter with the IN operator:
SELECT
lift_measurement_config.lift_measurement_config_id,
segments.conversion_lift_start_date,
segments.conversion_lift_end_date,
segments.conversion_lift_included_conversion_action_types,
segments.experiment_arm,
segments.conversion_lift_conversion_category,
metrics.incremental_conversions,
metrics.incremental_conversions_winner_score,
metrics.incremental_conversion_value,
metrics.incremental_conversion_value_winner_score
FROM lift_measurement_config
WHERE lift_measurement_config.lift_measurement_config_id IN (
CONFIG_ID_1, CONFIG_ID_2)
AND segments.conversion_lift_start_date = START_DATE
AND segments.conversion_lift_end_date = END_DATE
AND segments.conversion_lift_included_conversion_action_types = 'SELECTED'
Replace the following:
CONFIG_ID_1: the integer ID of the first lift measurement configuration.CONFIG_ID_2: the integer ID of the second lift measurement configuration.START_DATE: the snapshot start date as an unquoted 8-digitYYYYMMDDinteger (for example,20260501).END_DATE: the snapshot end date as an unquoted 8-digitYYYYMMDDinteger (for example,20260515).
Exact date equality (= START_DATE and = END_DATE) returns rows only for
studies that share that exact snapshot window. When querying studies with
different flight start dates or latest evaluated snapshot dates, filter with
range operators (>= and <=) or omit the date filters from the WHERE clause
while keeping both the segments.conversion_lift_start_date and
segments.conversion_lift_end_date segments in the SELECT clause.
Search Lift reporting
To measure the increase in organic search query volume driven by your ad campaigns in Google Ads API v26 and later, query Search Lift reporting resources. Search Lift quantifies the difference in search behavior for your brand or products between users exposed to your ads and an unexposed control group.
Search Lift resources and segmentation
Query the SearchLiftKeywordBundle resource to
retrieve details about keyword bundles configured for Search Lift studies. The
SearchLiftKeywordBundle resource is read-only in the Google Ads API (all fields are
OUTPUT_ONLY), and keyword bundles are configured in the Google Ads UI or by your
Google representative or GPS contact. Its queryable fields in GAQL are
resource_name, search_lift_keyword_bundle_id, source
(SearchLiftMatchingInfoSource), and status
(SearchLiftKeywordBundleStatus) (the repeated keywords
field is not selectable in GAQL queries).
Query the LiftMeasurementConfig resource to retrieve Search
Lift metrics and overall study configurations.
In Google Ads API v27 and later, you can also select the read-only (OUTPUT_ONLY)
lift_measurement_config.lift_guidance field (lift_guidance.outcome and
lift_guidance.guidance_message, of type LiftGuidance) in the GAQL SELECT
clause on lift_measurement_config when querying Search Lift metrics or
segments (segments.search_lift_keyword_bundle or segments.search_property).
On lift_measurement_config, lift_guidance is omitted on metadata-only
configuration queries, and lift_guidance.guidance_message can contain inline
Markdown links (such as [Learn more](https://support.google.com/...)). For
Search Lift, lift_guidance.outcome returns STUDY_IN_PROGRESS_WITH_LIFT,
STUDY_IN_PROGRESS_NO_LIFT_YET, STUDY_IN_PROGRESS_COLLECTING_DATA,
POSITIVE_LIFT_DETECTED (at least 70% certainty, p_value <= 0.30),
NO_SIGNIFICANT_LIFT, or NOT_ENOUGH_DATA (evaluated against thresholds of at
least 1,000,000 overall impressions or 100,000 slice impressions, at least 75
observed searches, and at least 17 of 20 cookie buckets, where a single
underpowered keyword bundle causes overall study results to report
NOT_ENOUGH_DATA).
Segment Search Lift performance across the following dimensions:
segments.search_lift_keyword_bundle: Segment by the keyword bundle resource name. Compatible with thesegments.search_property,segments.date, and demographic segments (segments.device,segments.age_range, andsegments.gender). Every keyword bundle reports the full campaign cost and impressions, and keywords can belong to more than one bundle. Do not summetrics.search_lift_cost_micros,metrics.search_lift_impressions, or Search Lift metrics across keyword bundles.segments.search_property: Segment by the search property where the search occurred, defined by theSearchLiftSearchPropertyenum (such asGOOGLE_SEARCHorYOUTUBE). Thesegments.search_propertysegment is compatible only with thesegments.search_lift_keyword_bundleandsegments.datesegments. Combiningsegments.search_propertywith demographic segments (segments.device,segments.age_range, orsegments.gender) fails query validation. Becausesegments.search_propertypartitions where subsequent organic searches occurred rather than where ads were served, rows segmented bysegments.search_propertyrepeat unpartitioned campaign-level cost and impressions in Google Ads API v26. Starting in Google Ads API v27, all eight spend and impression metrics (metrics.search_lift_cost_micros,metrics.search_lift_impressions,metrics.normalized_incremental_searches_per_cost*, andmetrics.normalized_incremental_searches_per_impression*) are incompatible withsegments.search_propertyand fail query validation with aQueryError.PROHIBITED_SEGMENT_WITH_METRIC_IN_SELECT_OR_WHERE_CLAUSEerror.- Demographic and date segments:
segments.device,segments.age_range,segments.gender, andsegments.date.
Search Lift metrics
The LiftMeasurementConfig resource provides Search Lift
metrics to evaluate search behavior changes:
metrics.relative_search_lift: The difference in search query volume between the exposed and control groups, expressed as a fraction of search queries in the control group.metrics.relative_search_lift_p90_lower_boundandmetrics.relative_search_lift_p90_upper_bound: The 90% one-sided confidence bounds (which together form an 80% two-sided confidence interval) for relative search lift.metrics.incremental_searches_p_value: The p-value for incremental searches, representing the statistical probability that the observed increase in search queries occurred by chance.metrics.search_lift_cost_micros: The total cost (in micros) of ad impressions served for this Search Lift measurement slice. Incompatible withsegments.search_propertyin Google Ads API v27 and later.metrics.search_lift_impressions: The total number of ad impressions served for this Search Lift measurement slice. Incompatible withsegments.search_propertyin Google Ads API v27 and later.
The following normalized incremental metrics—along with their corresponding 90%
one-sided confidence bounds (*_p90_lower_bound and *_p90_upper_bound)—are
reported when lift is statistically positive:
metrics.normalized_incremental_searches(withmetrics.normalized_incremental_searches_p90_lower_boundandmetrics.normalized_incremental_searches_p90_upper_bound): Estimated number of incremental search queries driven by ad exposure, normalized across exposed and control groups.metrics.normalized_incremental_searches_per_cost(withmetrics.normalized_incremental_searches_per_cost_p90_lower_boundandmetrics.normalized_incremental_searches_per_cost_p90_upper_bound): Estimated incremental search queries generated per unit of ad spend. Incompatible withsegments.search_propertyin Google Ads API v27 and later.metrics.normalized_incremental_searches_per_impression(withmetrics.normalized_incremental_searches_per_impression_p90_lower_boundandmetrics.normalized_incremental_searches_per_impression_p90_upper_bound): Estimated incremental search queries generated per ad impression. Incompatible withsegments.search_propertyin Google Ads API v27 and later.
Example Search Lift queries
The following GAQL queries demonstrate how to retrieve Search Lift keyword bundles and performance metrics.
Keyword bundle query
To retrieve keyword bundles configured for Search Lift measurements, query the
search_lift_keyword_bundle resource:
SELECT
search_lift_keyword_bundle.resource_name,
search_lift_keyword_bundle.search_lift_keyword_bundle_id,
search_lift_keyword_bundle.source,
search_lift_keyword_bundle.status
FROM search_lift_keyword_bundle
Metrics query
The search_lift_keyword_bundle.resource_name values retrieved in the keyword
bundle query correspond to the values returned in the
segments.search_lift_keyword_bundle segment in the following query. To
discover the CONFIG_ID, linked campaigns, and flight schedule for your study,
follow Discover study configurations and flights on
the lift_measurement_config and lift_measurement_flight resources (filtering
flights by lift_measurement_flight.lift_type = 'SEARCH').
The following query retrieves Search Lift metrics segmented by keyword bundle
and search property (omit segments.search_property when selecting
metrics.search_lift_cost_micros or metrics.search_lift_impressions):
SELECT
lift_measurement_config.lift_measurement_config_id,
segments.search_lift_keyword_bundle,
segments.search_property,
metrics.relative_search_lift,
metrics.relative_search_lift_p90_lower_bound,
metrics.relative_search_lift_p90_upper_bound,
metrics.incremental_searches_p_value,
metrics.normalized_incremental_searches,
metrics.normalized_incremental_searches_p90_lower_bound,
metrics.normalized_incremental_searches_p90_upper_bound
FROM lift_measurement_config
WHERE lift_measurement_config.lift_measurement_config_id = CONFIG_ID
Replace the following:
CONFIG_ID: the integer ID of the lift measurement configuration.