How Google Ads reads the site, links pages to queries, generates creatives and prepares the auction.
We analysed the Google Ads app’s code and how its web interface works. We then compared our findings with Google’s public documentation and evidence from the antitrust trial.
The study sheds light on how Google Ads uses AI: 88 types of scores for evaluating ads, queries linked to pages through NavBoost and QBST, and website content prepared for language models. It helps explain what happens between your landing page and the ad that appears.
A Search campaign connects a query, a keyword, an ad and a landing page. Analysing the Google Ads code reveals the many steps involved in bringing them together.
Google Ads fetches pages and extracts their headings, text, images and structured data. It prepares this information for AI, connects it with business information and search queries, then uses it to create, check and select assets.
Landing pages have long played a role in Dynamic Search Ads, targeting without keywords and the experience after a click. This study details capabilities found in the code: storing page content, preparing it for AI, creating ads with AI Max and checking that their claims are supported by the website. It also reveals assistants that can prepare campaign changes.
The calendar explains the timing of this study. AI Max for Search left beta on 15 April 2026 and AI Brief was announced on 30 April. Since 1 September, campaigns that used campaign-level broad match or the legacy text customization are switched to AI Max automatically; the end of Dynamic Search Ads, first planned for the same date, has been pushed back to February 2027. What this text describes is becoming the default regime of Search campaigns.
This study compares two versions of the Android app and the web interface with Google documentation, patents, research papers and antitrust trial evidence. The technical names quoted appear in the app or web interface. Connections between features are reconstructed from these observations and public sources. The code does not reveal all of Google’s settings or which features are enabled for each account. Technical details are available in the “View technical details” panels and the appendix.
Google Ads fetches page content and prepares it for AI.
The system links website, Merchant Center, Business Profile, YouTube and social profiles.
Pages, queries and the brief help create, assess and select ad text.
Ad text is assessed for relevance, quality and consistency with the website’s claims.
Create ads, match them to queries, calculate bids and help manage campaigns.
In AI Overviews it must match the query and the content of the generated answer.
Crawl pages, collect their content and prepare it for ads.
To select an ad, Google Ads needs to understand the offer on the page. The app’s code supports several steps: fetch the page, check that it is accessible, store its content in a database used by Ads, then prepare it for AI.
Text, vectors and estimates such as click probability are produced on Google’s servers. Vectors represent content as numbers so its meaning can be compared with other content. The app reveals the information sent to Google, the results expected and the checks planned. It does not reveal the full workings of the AI models.
Several functions in the code handle crawling, updating page content and checking URLs.
Google Ads can fetch page content, check that it is usable and update it. The code also includes a landing page content database, named LANDING_PAGE_REPOSITORY, and tracks whether a page is available for asset creation.
The ASSET_GENERATION_STATUS_URL_NOT_INDEXED message indicates that a page is missing from the database used by Ads. It does not describe its presence in Google’s organic search results. A page can therefore be stored in one system without being stored in the other, even if the two share some data.
Google uses dedicated crawlers to check the quality of advertising pages. Those bots ignore the generic User-agent: * rule in robots.txt. They have to be allowed or blocked explicitly under the names AdsBot-Google and AdsBot-Google-Mobile. A page that is technically reachable by Googlebot can therefore fail inside the Ads chain, and the other way round.
The code supports extracting different parts of the page separately.
Google Ads distinguishes the title, description, sections, important passages, text snippets, structured data and images. Each part can serve a different purpose.
The title and business name can help identify the offer. Page text and existing assets can help write an ad. Short versions of pages make it easier to compare them when choosing a URL. The system can also look for the passage that supports an ad claim: this check is called grounding.
Structured data describes the business, products, categories and their attributes in a machine-readable format. Visible text provides explanations and evidence. The two need to be consistent: structured data does not replace page content.
The code supports several ways to prepare content: combine the business name, title, meta tags, description lists and page text, then shorten the result. Google Ads can therefore create different versions of the content from the same HTML.
These versions help find information, compare pages, give instructions to AI and check the text it produces. Some use Markdown, a simple text format that preserves headings and lists. The purpose is practical: understand the offer, choose the right page and write an ad that reflects its content.
The code names the main preparation and checking operations in TransformationName_Enum.
The system gathers information from the page and other sources, then prepares instructions for the AI. It checks the generated text and records which information was used. The list of operations helps reconstruct this process, but does not establish the exact order of every step on its own.
Bring business information together and connect it with what people search for.
Names in the code point to a business profile separate from its web pages. It can bring together the business’s identity, category, description, brand characteristics and several content sources.
The AI uses this profile and its knowledge of the products and brand to assess what the advertiser is trying to promote.
For marketing teams, these sources need to tell the same story. Different categories, contradictory descriptions or inconsistent offers make it harder to create ads and match them to the right queries.
To create an asset, the system can draw on several website pages and other sources. The AdAssistantAssetExtractionSourcePB_Enum list distinguishes pages by their purpose.
The home, About, Contact and Why-us pages are named separately in the code: HOME_PAGE, ABOUT_PAGE, CONTACT_PAGE and WHY_PAGE. They can therefore provide information for creating ads, alongside the product page that receives the click.
The code tracks each source separately for asset suggestions: the landing page, recent assets, past campaigns, stock images, social networks, Merchant Center or Business Profile. AssetAutomationSuggestionsStatus defines 17 tracking fields, including smartGenaiAssetSuggestionStatus, behind what the interface presents as a single feature.
A vague About page, a missing Why-us page or a social profile that contradicts the website gives Google less useful information for writing your ads.
The name LP_GROUNDED indicates that the query or keyword is compared with the landing page content. QuerySpec settings define the query source, number of queries, time period and a maximum per ad group. Only part of the available history is therefore selected to prepare ad text.
References to similar queries, synonyms, DSA and broad match concern finding more relevant queries. SQM_ORGANIC_TRAFFIC names a variant using organic traffic information. Combining paid and organic data can support reporting and suggestions; it does not establish that an SEO score enters the Ad Rank calculation.
QueryMatchSourcePB_Enum
What connects the ad to the query
QueryMatchTypePB_Enum
The match type used
The code distinguishes matches based on search context, close variants and matches associated with Performance Max. Reports also retain the match source: AI Max without keywords or AI Max broad match. A dedicated report links each search term to the landing page and ad headline that were served.
BROAD_SESSION corresponds to the use of session context. NEAR_EXACT and NEAR_PHRASE describe close variants. UBERVERSAL is associated with Performance Max. The search terms report also keeps the provenance of the match, with the AI_MAX_KEYWORDLESS and AI_MAX_BROAD_MATCH values of the search_term_match_source segment, and the ai_max_search_term_ad_combination_view links each term to the landing page and the headline served.
Public priority rules favour a Search campaign when a query is identical to an eligible keyword. Search Themes have a priority comparable to phrase and broad keywords. The keywordless systems of AI Max, DSA and Performance Max cover the remaining demand.
Public documentation describes measuring whether a Search Theme brings traffic that Performance Max would not have found on its own. SEARCH_SHADOW most likely refers to that baseline. A rise in reported conversions is therefore not enough: check whether the theme reaches new searches or takes credit for ones already covered.
The code defines several versions of the Coauthor writing functions. Five functions each appear in three forms: without an extra label, with NavBoost disabled (NAVBOOST_DISABLED) and with filtering for rare queries (K_ANON_NAVBOOST). The table preserves their technical IDs.
| Function | Without an extra label | NAVBOOST_DISABLED | K_ANON_NAVBOOST |
|---|---|---|---|
| keyword aware | 19 | 113 | 120 |
| query prefix EN | 41 | 109 | 116 |
| query prefix I18N | 42 | 110 | 117 |
| query prefix headline EN | 50 | 111 | 118 |
| query prefix headline I18N | 51 | 112 | 119 |
These names appear among functions that prepare landing pages, queries and ad headlines. They indicate that queries linked to a page can help write ad text.
The antitrust trial describes NavBoost as a system that links queries and documents from memorised click data. A Google patent with a 2004 priority date describes the reverse move: starting from a document, retrieve the queries that led to clicks, then use them as keywords or creative material. The K_ANON_NAVBOOST variant points to filtering meant to keep aggregate behaviour while dropping queries that are too rare.
QBST stands for Query Based Salient Terms. It identifies important words and phrases on pages relevant to a query, also using click data. The names QBST_TEXT_ASSET_SUGGESTION and QBST_ADVERTISER_TEXT_ASSET in WorkflowAssetGenerationKeywordSourcePB_Enum identify it as a source of terms for asset creation.
These findings indicate that queries, page content and click data can help create ads. They do not show that organic and paid rankings are merged.
The code helps reconstruct the steps from reading the page to creating and selecting ad text.
Names grouped under IDs 226 to 255 in SignalName_Enum refer to the page, reports, text creation, evaluation, selection and the brief. The steps below offer an interpretation.
The identifiers ADSAPI_SUPPORT_AI_BRIEF_FOR_TARGETING and ADSAPI_SUPPORT_PMAX_AI_BRIEF_FOR_TARGETING connect the brief to targeting explicitly.
AI Max for Search was announced in beta on 6 May 2025 and left beta on 15 April 2026. It bundles three features.
Broad match plus keywordless technology based on keywords, creatives and URLs.
Headlines and descriptions produced from existing text, the landing page and query signals.
Selection of a page that fits the intent, then adjustment of the assets to its content.
The switch is under way. Since 1 September 2026, campaigns that used automatically created assets (ACA) are moved to AI Max automatically with search term matching and text customization switched on. Campaigns that used campaign-level broad match receive only search term matching. DSA campaigns will follow from February 2027, with all three features and their URL controls preserved.
The app includes AI Max settings at campaign and ad group level, plus URL inclusions and exclusions. The ai_max_search_term_ad_combination_view report links a search term to the landing page and ad headline that were served.
A page that is hard to find, poorly linked or unclear about its offer is harder to select. A well-structured category, service or service-area page can answer a search more precisely than a generic page.
AI Brief, announced on 30 April 2026, organises advertiser instructions into three categories: messaging, query matching and audiences. Names in the code refer to these same uses.
The brief sets rules for choosing queries, writing text and selecting ads. It complements keywords, exclusions, bidding goals and brand guidelines.
The information given to AI, the instructions and the checks matter as much as the model chosen.
The code can combine the page title and description, keywords, existing assets, business information and queries. It also includes writing instructions, examples and a response format. Together, these form a ‘recipe’ for creating ads.
LlmAssetGenerationConfig combines the page title and description, keywords, existing assets, business information, salient text and queries. Each source carries its own minimums, maximums, separators, prefixes and suffixes. LlmPromptSpec exposes the instructions, the developer instructions, the context, the inference input, n-shot examples and formatting options.
The code includes several systems for running models, with different versions and settings. The choice can reflect language, speed, availability or cost needs. Sax refers to Saxml, software published by Google. Beyond, Evergreen, Servo, Steelmill and Uniserve remain internal names whose precise roles are not publicly documented.
The AssetSelectionVersionPB_Enum list contains 295 versions of methods for creating and selecting assets. Of these, 157 carry a date, from May 2020 to May 2026. They show how the techniques defined in the code developed over time. Their presence does not reveal which are active on an account today.
Early methods combine text extracted from the site, category-specific writing templates, selected assets and Dynamic Search Ads content. They do not rely on AI writing freely.
Models that summarise and understand text appear. GROUNDED_GENERATIONS is named as early as January 2022: the code already supports checking generated text against its sources.
This year contains the most versions. It includes models adapted to tasks or languages, smaller models trained from other models, and learning methods guided by evaluations of their results. Five versions of the QUAC check appear, along with a method using only the landing page database.
The defined methods can use multiple exchanges with AI and span several ad groups. Some edit existing assets; another uses only the page title.
The code supports suggesting keywords with a language model and names a first assistant. It also explicitly links GenAI V3 to Final URL expansion.
The latest dated versions include an assistant for checking ad policy compliance and a method for refining text with GenAI V4.
The code contains two lists for evaluating assets: 88 score types in AssetScore_ScoreType and 60 quality indicators in AssetQualitySignalType_Enum. They share 59 names but remain separate lists. Many of the checks assess whether ad text reflects the page content and whether its claims are supported.
The binary declares two separate inventories to grade an asset. AssetScore_ScoreType holds 88 values, AssetQualitySignalType_Enum holds 60, and 59 names are strictly identical across the two registers. The same names exist on both sides: once as a quality signal attached to the asset, once as a score usable to filter and rank. The intersection is one of labels only: apart from UNKNOWN, each of the 58 homonymous pairs carries a different numeric identifier, which rules out one register being a wire-level inclusion of the other. That shared core is therefore almost entirely devoted to faithfulness and grounding, with 38 signals in the FAITHFULNESS family alone on the quality side.
Some scores assess relevance, expected clicks or advice for improving headlines. Others try to identify the page sentences used to create the text. These checks answer several questions: is the ad relevant, appealing and consistent with its source content?
The 29 values specific to AssetScore_ScoreType show what the second register does not cover: relevance and expected performance (KEYWORD_RELEVANCE, PCTR, SELECTABILITY, EXTRACTION, ROUGE_FILTER), the eleven MAQS classifiers inherited from the pre-LLM generation, and the four ASSET_STRENGTH_HEADLINE_* diagnostics. Only one value exists on the quality side alone, INFERRED_SOURCE_SENTENCES, which counts the source sentences reconstructed behind an asset.
These checks can be grouped into seven categories. They help select text, reject problematic content and provide feedback to the advertiser. They are not all applied to every asset.
Does the ad answer the search?
Signals taken from the landing page
Does the ad describe the offer accurately?
Which passages support the claims?
Quality of the sentence itself
Text can be rejected even if it attracts clicks.
Headline-level assessments, ASSET_STRENGTH family
The checks depend on the text source, model, language, asset type and features enabled for the account. All 88 score types are therefore not calculated for every proposed ad.
AssetScore carries a type, a value, the language, a category and a possible error code. Filters restrict a scorer by source, model, language, asset type, recipe and ramp-up percentage. Google therefore does not compute 88 scores on every candidate: the jury actually convened depends on the recipe served to that account, in that language, on that day.
The code suggests selection in several steps: simple rules reject some texts, then more complex checks assess those that remain. The exact order remains an interpretation of the study.
88 score types are defined; the checks applied vary by case.
Settings allow different checks for a headline, description, product or keyword. The system can compare a whole text or specific words with the page. It can also measure how much of the text is supported by a source and detect negations that change the meaning.
GenerativeModelGroundingOptions carries distinct thresholds for headline, description, product, long headline and keyword. LandingPageGroundingTechnique_Enum separates SIMPLE_FULL_GROUNDING from WORD_LEVEL_GROUNDING. Other contracts measure the ratio of attributed tokens, the number of source sentences, filler tokens, stopwords, invisible sources and problematic negations.
The code can retain the exact passages supporting part of an ad’s text, along with their language and limits on length and number. This is the grounding check introduced earlier.
SignalAttributionConfig keeps the source signal, the minimum length of a fragment, the maximum number of fragments, their distance and the language. That is how the system ties a piece of an asset to precise passages of the page.
Reusing the site’s words does not guarantee the same meaning. For example, changing ‘free delivery on orders over €50’ to ‘free delivery’ removes a condition. A Google patent first filed in 2023 describes checking individual clauses, replacing those that fail, then checking relevance and missing information.
The AssetQualitySignalType_Enum list defines 38 indicators related to consistency with source content. The variants mainly change the information provided to check the text: the title alone, description, business name, snippets or full page content.
| Variant | Information used to check the text |
|---|---|
FAITHFULNESS_V5 | The information normally provided to this method. |
…_WITH_TITLE_TAG | The page title, on its own. |
…_WITH_TITLE_DL_METATAG | Title, description lists and meta description. |
…_WITH_BUSINESS_NAME_TITLE_DL_METATAG | The same, plus the business name. |
…_NO_LP_SENTENCES | The same, but stripped of the sentences extracted from the page. |
…_WITH_SNIPPETS | Selected extracts rather than the whole page. |
…_CONTEXT_ONLY_WITH_SNIPPETS_RAW_TEXT | Snippets and their context, plus the full text. |
…_NO_CONTEXT_WITH_SNIPPETS | The snippets with no surrounding context at all. |
…_WITH_FILLER_VOCAB_V2 | Extra filler words added to test whether the check remains reliable. |
These variants address practical questions: is the title enough to verify a claim? Does the meta description help identify the right source? Does the business name prevent confusion between brands? Does the full text add useful information or make the check harder?
Other checks look for likely source sentences, assess accuracy and usefulness, or identify contradictions and changes in meaning or tone.
The same registry holds judges specialised beyond faithfulness: INFERRED_SOURCE_SENTENCES for inferred source, SENTIMENT_INVERSION_CLASSIFIER_V1 for flipped sentiment, ACCURACY_CLASSIFIER_V1 for accuracy, HELPFULNESS_CLASSIFIER_V1 for helpfulness, AUTO_AIS_V7_CONTRADICTION and AUTO_AIS_V7_NEUTRAL for contradiction and neutrality.
The title, meta description, description lists and business name can help verify ad claims. They should clearly describe the same offer with the same conditions. In the free-delivery example, the minimum order value needs to remain visible in the content used to write the ad.
The code also names an internal test set with reference answers for assessing these checks. Some settings can return only claims whose source could not be confirmed.
An internal benchmark is named in the binary to evaluate that chain: IDENTIFIER_ADSORACLE_BENCHMARK_EXAM_GROUNDING_TRUTHS, a ground-truth set dedicated to grounding. ExactGroundingConfig comes with it, carrying the signal used as ground truth, the source attribution type, the maximum number of output values, and a selectedUngroundedOnly option that returns only what could not be verified.
The evaluation includes the text to check, its source, a result chosen from allowed responses and an explanation.
ExtractAssetRatingCsvConfig expects the rated text, its attribution, an allowed label and a justification.
A model can create text, evaluate it or check where its claims come from. Google has also published ad moderation methods that group similar content, remove duplicates and have AI review a selection.
The code tracks distinct headlines, possible combinations, argument variety and repetition. Google describes a similar approach for RSAs: assemble assets that fit the context, remove duplicates, assess combinations and send the best ones to the auction.
The system can also use results from ads already served. The SignalName_Enum list includes several measures of their impressions and clicks.
Texts that earned clicks can provide information or examples for creating the next ones. Some method names also refer to objectives for click probability (pCTR), landing page experience (pLQ) or both (PCTR_PLQ). These estimates can therefore guide text creation as well as play a role in the auction.
For paid search teams, current assets can therefore influence future suggestions. Texts with little variety give the AI few different examples. A headline that attracts clicks with an unsupported promise may look good for CTR while creating a poor experience after the click.
Ad Strength assesses asset quantity, relevance, variety and possible combinations. Google presents it as feedback for improving ads: it does not enter the Ad Rank or Quality Score calculation and does not directly affect eligibility to serve. However, an ‘Incomplete’ status prevents a Performance Max asset group from serving. The app uses recommendations to identify assets to add to aim for an ‘Excellent’ rating. This feedback complements analysis of performance and genuinely additional traffic.
Create, match to queries, bid and measure: different functions to keep distinct.
Before the auction, Google Ads has already selected usable pages, information for writing text, relevant queries and asset combinations. It may also have selected products, images or videos. Ad Rank comes after these choices.
| Operation | What is ranked or selected | Code references |
|---|---|---|
| Finding pages | The site pages Ads can use. | UrlValidationService · LANDING_PAGE_REPOSITORY · VisurlService |
| Selecting useful passages | Titles, sections and important excerpts. | SALIENT_STUFF_PROCESSOR · SNIPPET_SEGMENT_PROCESSOR |
| Finding queries | Searches that express the needs to address. | RAW_TOPK_HISTORICAL_QUERIES · …_LP_GROUNDED · VASCO · SEQUOIA |
| Identifying the business and its offers | Business, brand, products, locations. | canonical_business_database_id · business_classification |
| Selecting ad text | Headlines and descriptions kept after checks. | AssetScore_ScoreType · FAITHFULNESS · KEYWORD_RELEVANCE |
| Choosing asset combinations | The combination of assets sent to serving. | SEMANTIC_GROUPING · LLM_CLUSTERING · MTP_LLM_CLUSTERING |
| Choosing products and visuals | Products, images and source videos. | productFidelityScore · VIDEO_SOURCING_RANKING · indexed_image |
| Auction | The ads eligible for a slot. | pCTR · pCQ · pLQ · Ad Rank |
The 88 asset score types help evaluate text as it is prepared. They do not form a second Ad Rank. The website, product catalogue, structured data and brand guidelines therefore play a role earlier in the process: they supply the information the system can choose from.
Read the website and other business sources, prepare information for AI, create text, check claims and choose assets and the landing page.
Identify ads that can answer a search through exact, phrase or broad match keywords, close variants, DSA, AI Max or Performance Max. Apply priority rules.
Use the manual or Smart Bidding bid, click and quality estimates, and Ad Rank thresholds to determine serving, position and price.
Use Quality Score, Ad Strength, Optimization Score, reports, recommendations and simulators to analyse results and manage campaigns.
The landing page plays a role at several points: its content helps create the ad, its expected quality matters in the auction, and diagnostics help the advertiser improve it. It does not determine ranking or click price on its own.
Before the auction
Smart Bidding estimates conversion probability and value while accounting for budget or ROAS targets. It determines the bid sent to the auction.
During the auction
Google uses click and quality estimates, among other factors, to determine whether the ad can appear, its ranking, position and price.
According to a Google document provided to the CMA, the UK competition authority, a few hundred relevant ads reach Ad Mixer. This system assigns them an Ad Score or LTV Score. Trial documents connect this score with the public name Ad Rank.
Other trial documents explain that Google accounts for expected ad quality (pCQ) and landing page quality (pLQ). The calculation combines expected click revenue and the negative effects of a poor experience. It also accounts for the risk that users click ads less often in the future, known as ads blindness.
Document UPX0010 explicitly links LTV Score and Ad Rank. Click price also depends on pricing mechanisms separate from ad quality. The record names squashing, format pricing and rGSP, detailed below. Judge Mehta’s opinion states that Google used them to increase text ad prices.
UPX0010 itself explicitly links LTV Score and Ad Rank: “the higher the LTV Score (i.e., the higher the Ad Rank)”. The price paid does not follow mechanically from quality. The record documents pricing levers tuned for revenue, not derived from ad quality: squashing, which artificially raises the runner-up’s pCTR and thereby increases its LTV score, format pricing and rGSP, a randomised second-price auction. Judge Mehta’s opinion finds that Google used them to raise text ad prices. Page quality weighs on the ranking; the final CPC also depends on settings aimed at revenue.
Estimates click probability based on the query, ad, position and context. Google states that its pCTR models do not use landing page information.
Estimates ad quality independently of the landing page.
Estimates landing page experience before the click, using post-click behaviour and session information.
Accounts for the risk that a poor ad experience reduces future clicks.
Patents filed as early as 2005 already distinguish click probability from landing page quality. The code also names text creation methods guided by pCTR, pLQ or both. For paid search teams, the implication is clear: a headline can attract clicks while creating an expectation the page does not meet.
Ad Rank thresholds determine whether an ad can occupy a placement. They vary with quality, context, position and the search topic. Even without a direct competitor, they can impose a minimum price. Other pricing settings can also change CPC.
Ad Rank thresholds determine eligibility for a slot and vary with quality, context, position and topic. Even with no direct competitor they can set a floor price. The court record also describes squashing, the former format pricing and rGSP, codename Polyjuice. Those mechanisms change the price reference or the relative weight of certain terms.
Page quality matters in the auction. CPC also depends on the bid, competition, thresholds, position and pricing settings.
| Indicator | Level | Role |
|---|---|---|
| Quality Score 1 to 10 | keyword | Diagnostic of the quality components. |
| Ad Strength | ad or asset group | Feedback on asset quantity, variety and the arguments covered. |
| pCTR, pCQ, pLQ | auction | Click and quality estimates used in the auction. |
| Optimization Score | account or campaign | Prioritisation of recommendations. |
A trial document distinguishes pCTR, pCQ and pLQ, used in the auction, from the 1–10 Quality Score, used for diagnosis. Scores shown in the interface or found in the code therefore do not all serve the same purpose.
For each recommendation, the code defines one effect on Optimization Score if it is applied and another if it is dismissed. These effects can be tracked at account and campaign level. The score therefore also depends on how you handle recommendations.
The Optimization Score is not only a displayed grade. The internal messages SuggestionScore and SuggestionScopeScore carry, for each recommendation, a separate applyUplift and dismissUplift, a viewedScore and campaign and account scopes. The client subtracts both uplifts from the page's aggregate score when a suggestion is removed. The score behaves like a ledger of mutations, not like a sum.
The code describes a temporary budget increase with a possible return to the original budget. It specifies the information needed to track this adjustment.
The field names of two internal messages describe a temporary, reversible budget adjustment mechanism, with a complete lifecycle. These are not isolated enum names: they are fields resolved inside messages, which is stronger evidence.
Four technical statuses track applying the increase, returning to the original budget and ending the adjustment. Among them, the ‘apply’ status appears in the latest version of the message.
The targetRoasRelaxationPercentMillis setting supports temporarily relaxing the ROAS target alongside the budget increase.
targetRoasRelaxationPercentMillis indicates that the budget increase comes with a temporary loosening of the profitability target, expressed in percent-thousandths.
The budgetBoostSeasonalityEventId field links the increase to a seasonal event. It suggests a connection to a calendar, without establishing on its own how the increase is triggered.
AdaptiveBudgetsSettings also defines limits for automatic adjustments: an allowed percentage, a minimum and a maximum. Campaign-specific settings and an opt-out are included. This allows the system to limit the size of budget changes.
AdaptiveBudgetsSettings describes a second, adjacent mechanism: automatic adjustment bounds in percent, a ceiling and a floor, with a campaign-level override and an exclusion option. In other words, an account can define the range within which the system is allowed to move on its own.
During a seasonal peak, a change in spend or ROAS may also come from a temporary budget adjustment. Before attributing the difference to competition or an optimisation, check whether an increase was applied and then reversed during the period, and what limits were allowed.
Inside a generated answer, the ad has to be consistent with what the AI has just explained.
Google states that for ads served in AI Overviews two contexts are taken into account: the user query and the content of the AI Overview. The Search or Shopping ad has to win the auction, answer the query and stay relevant to the information in the generated answer.
The code contains functions that could help match ads to conversation content.
In a classic search, Google connects the query, ad and landing page. With an AI-generated answer, the answer’s content also matters. Several 2023 patents describe ads adapted to conversations: identify important terms in exchanges, clarify the need across messages and adjust the ad text. These patents describe possibilities, not proof of deployment.
AI Max for Shopping uses Merchant Center feed data, site content and title generation to answer more conversational queries. Final URL expansion can walk the site to identify categories, new arrivals, commercial editorial pages and other relevant destinations.
The code includes product information (gmc_product_info), Merchant Center asset suggestions, information about titles and descriptions, and landing page variants. The productFidelityScore assesses whether a generated asset describes the product accurately.
Trial documents indicate that text ads and Product Listing Ads use separate auction systems. Sharing content sources or models therefore does not mean sharing a single auction.
The name GENERIC_MUTATE indicates that an assistant can prepare or apply account changes, subject to the product’s controls. Another set of functions, Ads Guide, brings together conversation history, website information, personalisation and campaign creation. It also includes specialised capabilities and models able to reason through several steps.
The products Google has announced point the same way: Ads Advisor, Analytics Advisor and Ask Advisor. Google states that approval is requested before an action is applied.
To manage these assistants, instructions and sources need to be consistent. A brand rule is hard to apply if the website, product feed, Business Profile and assets give conflicting information. The assistant works with the data it can access.
Eight workstreams for SEO, SEA and AI search teams.
Make each important piece of information easy to find in the page’s HTML: product or service, target audience, benefits, evidence, price, availability and conditions. Organise content into clear sections with sentences that make sense when read separately.
Clearly display prices, discounts, delivery times, warranties, certifications and restrictions. Each ad claim should be traceable to the page, with its conditions. For example, keep ‘on orders over €50’ next to ‘free delivery’.
AI can combine the title, H1, sections, meta tags and structured data. These should describe the same offer, brand and conditions. The aim is consistent information, without mechanically repeating the same words everywhere.
Make category, service, service-area, comparison and seasonal pages easy to find through navigation. Visitors should quickly find the offer promised in the ad and understand how to buy or get in touch.
Vary the arguments: product, benefit, use case, audience, evidence, price, availability, brand and call to action. Complementary headlines offer more useful combinations than several rewordings of the same benefit.
Query history, broad match, Search Themes and AI Max reports reveal the needs people express in searches. Use them to identify missing information, add useful sections and create relevant landing pages. Also check that the website supports the claims associated with these searches.
Targeting without keywords does not remove priority rules. For searches important to the brand, products or profitability, an eligible keyword identical to the query remains useful for guiding campaign selection. It does not guarantee serving on its own.
A global rule in robots.txt is not enough to control AdsBot. Check AdsBot-Google, AdsBot-Google-Mobile, the HTTP responses, the redirects and how the main content renders. Site, Merchant Center, Business Profile, YouTube, social profiles and existing assets must stay consistent on brand name, categories, products, visuals, service areas, prices and promotional conditions.
A useful brief specifies required messages, prohibited claims, queries to target or avoid, priority audiences and allowed pages. Include sensitive terms, excluded categories and evidence available on the website. Then monitor performance, queries, consistency between ad and page, and genuinely additional conversions.
Nine things to check in Google Ads, your reports and your server logs.
| Checkpoint | Where to read it | What it tells you |
|---|---|---|
| AdsBot access | Server logs filtered on AdsBot-Google and AdsBot-Google-Mobile, robots.txt, response codes. | Pages AdsBot cannot access, even when Googlebot can. |
| Source of the match | Search terms report, match type column, AI_MAX_KEYWORDLESS and AI_MAX_BROAD_MATCH labels. | How much traffic is captured outside your keywords, and on which intents. |
| Search term, page and ad headline | ai_max_search_term_ad_combination_view |
The destination and the text Google pairs with each intent. |
| URLs the expansion picks | Landing page report, exclusion list, page feeds. | Pages with no commercial goal that receive paid traffic. |
| Automatically created assets | Assets tab, filter on creation source, rejected or pending assets. | Claims the page does not support, and the ones Google dropped. |
| Asset variety | Ad Strength and the detail of its recommendations, asset performance report. | Repeated headlines and missing arguments. |
| Quality Score components | Expected CTR, ad relevance and landing page experience columns, at keyword level. | The gap between an attractive text and a destination that keeps the promise. |
| Consistency across your sources | Merchant Center diagnostics, Business Profile listing, asset suggestions Google offers. | Which source Google keeps when the site, the feed and the listing disagree. |
| Additional traffic from Search Themes | Search Theme incrementality column in Performance Max. | Whether a theme captures new demand or reattributes demand already covered. |
These observations alone do not prove the effect of a change. Seasonality, competition, budget and bidding learning can also affect results. To measure an effect, compare conditions that are as similar as possible, change one factor at a time and allow enough time for the test.
We analysed app versions 3.34 and 3.37 to identify supported functions, exchanged information and available settings. Both versions were compared on the same architecture to distinguish version changes from differences in how the app was built. This work was complemented by observing the ads.google.com web interface: several traffic captures from real sessions were used to cross-check the site’s vocabulary and schemas against those found in the app.
A tool developed for the study read the program’s structure beyond a simple word search. Checks confirmed that the analysis covered the expected data: 3,018 groups read out of 3,018, followed by 220 matching fields out of 225 when compared with the web interface. The version 3.37 inventory includes 1,638 technical value lists and 39,409 entries. The detailed method is available below.
The binary was not read by mere string extraction. A deserializer for the Dart snapshot was written for the purpose and checked against the format's own internal oracles: 3,018 clusters read out of 3,018, no reference outside its type, end of stream reached exactly. The BuilderInfo initialisers, which declare the protobuf fields, were disassembled and cross-checked against the web interface descriptors: 220 fields identical out of 225. The inventory counts were redone by class and library identity, which separates the homonyms the first dump merged: 1,638 enum types and 39,409 constants in version 3.37.
This interpretation is compared with US v. Google trial evidence, product documentation, Google Research publications and the patents listed below. These sources help interpret the functions found in the code.
The app does not reveal internal model settings, decision thresholds or the features actually enabled on each account. Some connections remain hypotheses, including the role of SEARCH_SHADOW and the order of checks or AI Max steps. Beyond, Evergreen, Servo, Steelmill, Uniserve and Sequoia remain internal names without public documentation.
The raw inventories of version 3.37 are published on a separate page: 173 gRPC services grouped by family, the 25 enums quoted in the study with their 1,507 values, and the 2,143 protobuf libraries. They are several times the size of this text and are not read the same way.