Marketing11 min read

Google Ads API v23.1 + April 2026 Core Update Playbook

Google Ads API v23.1 shipped Feb 25, 2026: YouTubeVideoUpload, text guidelines, unique_users metrics. Pair with April 2026 core update for AI PPC.

Digital Applied Team
April 18, 2026
11 min read
12 days

Core Update Rollout

25

Text Exclusions / Campaign

40

Messaging Restrictions

Aug 18

Content API Sunset

Key Takeaways

v23.1 Ships AI Asset Controls: Campaign.text_guidelines adds up to 25 term_exclusions and 40 messaging_restrictions for programmatic oversight of AI-generated copy on Performance Max and Search (including AI Max) campaigns.
MCP Is Read-Only by Design: The official Google Ads MCP server exposes list_accessible_customers and GAQL search tools but cannot modify bids, pause campaigns, or create assets — mutations stay in the REST API.
Information Gain Now Dominant: The March 2026 core update (completed April 8) re-weighted Information Gain — proprietary data and first-hand experience now outrank exhaustive topical coverage.
Two Hard Deadlines This Quarter: Merchant API lands in Ads Scripts on April 22, 2026; the Content API for Shopping sunsets August 18, 2026 — leaving ~4 months to migrate inventory and feed automation.
Monthly Cadence Changes Pipelines: Google moved from quarterly to monthly API releases in 2026. CI/CD pipelines that pinned versions annually will drift within weeks and miss new metrics like unique_users frequency data.

April 2026 collapsed the Venn diagram between paid search and SEO. On February 25, 2026 Google shipped Google Ads API v23.1 — the release that finally gives programmatic control of AI-generated ad copy via Campaign.text_guidelines. Six weeks later, on April 8, 2026, the March 2026 core update finished rolling out with Information Gain re-weighted as the dominant content-quality signal. The agencies winning in Q2 are the ones wiring both changes into a single playbook.

This guide is the technical reference for managing Google Ads programmatically after that shift. It covers every new v23 and v23.1 field, the official Google Ads MCP server (read-only, but valuable for AI-assisted reporting), the April 22 Merchant API cutover in Ads Scripts, and — critically — how to align landing pages with the new Information Gain weighting so your paid traffic compounds into organic share instead of bleeding out.

v23 and v23.1 Release Timeline

Google transitioned from a quarterly to a monthly API release cadence starting with v23 on January 28, 2026. That is the most important operational change of the year — CI pipelines that pinned versions once a quarter will now drift within four weeks and miss metrics that customers expect on dashboards.

VersionShippedClassificationHeadline Capabilities
v23Jan 28, 2026MajorAudienceInsightsService.GenerateAudienceDefinition; CallAd removed; new incentive error codes
v23.1Feb 25, 2026MinorYouTubeVideoUpload; Campaign.text_guidelines; unique_users_X metrics; EU political disclosure
v23.2Mar 25, 2026MinorVideoEnhancement; AppTopCombinationView; AdGroupAd.start_date_time/end_date_time (restricted ad group types)

Pin the API version explicitly

The biggest practical consequence of the monthly cadence is silent drift. The Python client defaults to the library's current API version, which now changes every 4 weeks. Any script that omits the version= kwarg will start hitting a new API version the first time you pip install -U google-ads — new metrics, new enums, occasionally new breaking changes. Pin explicitly:

# Before — uses whatever the library's default version is today
client = GoogleAdsClient.load_from_storage(path=credentials_path)

# After — explicit pin; intentional bumps only
client = GoogleAdsClient.load_from_storage(
    path=credentials_path,
    version="v23",
)

# Bonus diagnostic: log the actual versions at startup
import google.ads.googleads as googleads_lib
print(f"[env] google-ads {googleads_lib.__version__}, API {client.version}")

With this pin in place, a quarterly schema-drift audit (grep forCallAd, CallAdInfo, other removed resources; compare against the month's release notes) catches deprecations one release ahead of any production break.

Every New Field in v23 and v23.1

Most agency stacks touch only a thin slice of the Ads API surface, which is exactly how features like the new frequency metrics get missed. Below is the exhaustive list of v23 and v23.1 additions ranked by the order you should wire them into production.

v23.1 — the highest-leverage additions

Campaign.text_guidelines
Programmatic control of AI-generated copy

Nested field containing two arrays: term_exclusions (up to 25 case-insensitive strings suppressed from AI assets) and messaging_restrictions (up to 40 natural-language tone rules applied semantically across all campaign languages).

Synchronized with the UI rollout on Feb 26, 2026. First API-exposed brand-safety layer for Performance Max and Search campaigns (including AI Max).

unique_users_X metrics
Five frequency-saturation metrics

unique_users_two_plus, three_plus, four_plus, five_plus, and ten_plus report how many distinct users saw ads at each threshold. They fill the gap left by cookie deprecation and let you detect saturation before ROAS collapses.

Only available via v23.1. Use in automated frequency-cap rules.

YouTubeVideoUpload service
Upload and manage YouTube assets via API

New top-level service supporting video upload plus status polling on the YouTubeVideoUpload resource. Important constraint: REST and the Python client library only — not available in gRPC, Java, .NET, PHP, or Ruby clients at launch.

Closes the manual YouTube Studio step that blocks autonomous Demand Gen pipelines.

contains_eu_political_advertising
Customer-level political disclosure flag

Boolean on the Customer resource exposing the account-level declaration required under the EU Political Ads Regulation. Audit scripts can now verify disclosure in the same sweep as payment status.

Net-new attribute; absence of the field was a compliance blind spot prior to v23.1.

v23 — January carryovers still missed by many stacks

  • AudienceInsightsService.GenerateAudienceDefinition — accepts a natural-language description (e.g. “eco-conscious urban parents looking for sustainable wooden toys”) and returns a structured audience definition. Currently allowlist-gated; request access for high-spend accounts before Q3.
  • CallAd and CallAdInfo removed — the call-only ad format was officially retired. If your account still references either type, mutations will fail in v23+.
  • Two new incentive error codes MAX_INCENTIVES_REDEEMED and ACCOUNT_TOO_OLD start returning for requests on or after March 11, 2026. Wrap incentive mutations in explicit retry logic now.
  • Ad-level scheduling arrived in v23.2, not v23. AdGroupAd.start_date_time and AdGroupAd.end_date_time shipped March 25, 2026 and are limited to specific ad group types. Confirm your ad group type is supported before replacing any cron-based pause/resume script.

Google Ads MCP Server Setup

Google's official Google Ads MCP server is an open-source Model Context Protocol implementation published atgoogleads/google-ads-mcp. It is strictly read-only — it cannot pause campaigns, modify bids, or create assets. That scoping is deliberate: Google elected to keep mutations inside the authenticated REST/gRPC API while letting LLM agents handle the read-heavy reporting use cases that dominate day-to-day account work.

Installation (Claude and Gemini)

Install via pipx and inject three environment variables. Add the resulting command to mcpServers in your Claude or Gemini configuration.

// claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/)
{
  "mcpServers": {
    "google-ads": {
      "command": "pipx",
      "args": [
        "run",
        "--spec",
        "git+https://github.com/googleads/google-ads-mcp.git",
        "google-ads-mcp"
      ],
      "env": {
        "GOOGLE_APPLICATION_CREDENTIALS": "/abs/path/to/credentials.json",
        "GOOGLE_PROJECT_ID": "your-gcp-project-id",
        "GOOGLE_ADS_DEVELOPER_TOKEN": "22-char-token"
      }
    }
  }
}

For Gemini CLI, add the same block under your Gemini configuration and run /mcp inside the CLI to confirm the server registered. The first invocation triggers the OAuth 2.0 consent flow; service-account credentials are accepted for agency manager-account setups.

Tools exposed

ToolPurposeWrite-access?
list_accessible_customersReturns customer IDs and account names the authenticated user can access.No
searchExecutes Google Ads Query Language (GAQL) requests and returns rows. The single most powerful MCP tool in the stack.No

Example GAQL via MCP

Pair the search tool with the new v23.1 frequency metrics to detect audience saturation. This GAQL runs inside the MCP agent and returns rows the agent can summarize as plain English:

SELECT
  campaign.id,
  campaign.name,
  metrics.cost_micros,
  metrics.conversions,
  metrics.unique_users,
  metrics.unique_users_two_plus,
  metrics.unique_users_five_plus,
  metrics.unique_users_ten_plus
FROM campaign
WHERE campaign.status = 'ENABLED'
  AND segments.date DURING LAST_7_DAYS
  AND campaign.advertising_channel_type = 'PERFORMANCE_MAX'
ORDER BY metrics.cost_micros DESC
LIMIT 50

April 2026 Core Update: Information Gain

Google confirmed the completion of the March 2026 core update on April 8, 2026 at 6:12 AM PDT — 12 days and 4 hours after it began on March 27. The update re-weighted a signal the SEO community has been calling Information Gain since a Google patent of the same name surfaced in 2020. In 2026, it moved from one of many signals to the dominant content-quality evaluator.

What Information Gain measures

Information Gain measures how much genuinely new information a page contributes relative to content already ranking for the same query. Two pages can be equally thorough, equally well-structured, and equally fast — but the page that introduces a proprietary dataset, a first-hand benchmark, or an original framework will outrank the page that paraphrases the existing top-10.

Page archetypePre-April 2026Post-April 2026
Original benchmark / datasetNiche authorityGained sharply
First-hand case studyMid-rankingGained
Exhaustive topical coverage (no new data)Top-3 regularlyLost rankings
Thin AI-rewritten rollupMarginalLost heavily

A working Information Gain rubric

Score each page 0–2 on the five sub-dimensions below. A combined score of 7+ is the bar for content that meaningfully supports programmatic PPC post-April 2026:

  • Proprietary data (0–2): original numbers readers cannot find elsewhere.
  • First-hand evidence (0–2): screenshots, transcripts, your own tooling output.
  • Original framework (0–2): a named approach or structure you introduced.
  • Expert attribution (0–2): named author with verifiable experience on the topic.
  • Freshness hook (0–1): tied to a dated event (release, deadline, data cut).

Merchant API in Ads Scripts (Apr 22 Deadline)

The Merchant API arrives in Google Ads Scripts on April 22, 2026 as an Advanced API. The existing Content API for Shopping keeps running until its confirmed August 18, 2026 sunset. Four months is enough runway — but only if you treat April 22 as the start gun, not the finish line.

Content API (sunsetting)
  • Monolithic surface; every change rolls everyone
  • Sunset August 18, 2026 — scripts stop running after
  • No Product Studio API / Reviews API access
Merchant API (target)
  • Modular sub-APIs: accounts, inventory, promotions, reviews, notifications
  • Product Studio API generates imagery for listings
  • Push-style Notifications API replaces polling

90-day shipping script playbook

WindowWork
Apr 22 – May 6Enable the Merchant API advanced service in one sandbox account. Port the lowest-risk script first (price checker or inventory status).
May 7 – Jun 7Run old and new scripts in shadow mode. Compare output daily. Log schema drifts; promote the Merchant API script to primary only after two clean reporting cycles.
Jun 8 – Jul 15Migrate the promotions, supplemental feeds, and regional inventory scripts. These touch more fields — budget a full week per script.
Jul 16 – Aug 17Contingency + freeze. No new Content API writes after July 31. Aug 18 the Content API is gone.

Text Guidelines: Programmatic AI Max Control

Before v23.1, brand-safety teams had to open the Google Ads UI to constrain AI-generated copy. With v23.1, the Campaign.text_guidelinesfield makes brand voice, banned terms, and regulatory guardrails part of the same mutation pipeline as bids and budgets. That alone moves Performance Max and AI Max from “creative wildcard” to “governed channel.”

term_exclusions vs. messaging_restrictions

FieldWhat it doesLimitScope
term_exclusionsBlocks literal strings from AI-generated assets (case-insensitive, language-specific).25 per campaignPer language
messaging_restrictionsNatural-language tone / intent rules interpreted semantically.40 per campaignAll campaign languages

Mutation example

// Python client — set text_guidelines on an existing Performance Max campaign
from google.ads.googleads.client import GoogleAdsClient

client = GoogleAdsClient.load_from_storage(version="v23")
campaign_service = client.get_service("CampaignService")

operation = client.get_type("CampaignOperation")
campaign = operation.update
campaign.resource_name = campaign_service.campaign_path(CUSTOMER_ID, CAMPAIGN_ID)

# Block price-based claims and competitor references
campaign.text_guidelines.term_exclusions.extend([
    "cheapest", "lowest price", "beat any price",
    "[Competitor Brand A]", "[Competitor Brand B]",
])

# Natural-language tone rules (semantic, not literal)
campaign.text_guidelines.messaging_restrictions.extend([
    "Don't generate assets with prices",
    "Avoid superlatives unless substantiated by a cited study",
    "Never imply medical outcomes",
])

client.get_type("FieldMask").from_any_pb(campaign).CopyFrom(
    client.helpers.field_mask(None, campaign._pb)
)

response = campaign_service.mutate_campaigns(
    customer_id=CUSTOMER_ID,
    operations=[operation],
)
print(f"Updated campaign: {response.results[0].resource_name}")

Autonomous Campaign Management Workflows

With v23.1 in production and the MCP server wired up, the shape of an autonomous Google Ads workflow in 2026 looks like this:

  1. Observe — the MCP server streams spend, impressions, frequency (unique_users_X), and conversions into an LLM context.
  2. Diagnose — the agent flags anomalies (e.g. unique_users_ten_plus / unique_users > 30% suggests frequency saturation).
  3. Propose — the agent drafts a mutation (e.g. reduce budget 20%, add messaging restriction, add negative keyword) and writes a change ticket to your queue.
  4. Approve— human-in-the-loop signs off if spend delta > 20% of daily budget; below that, policy auto-approves.
  5. Execute — REST mutation against the Google Ads API using service-account credentials. MCP is never the write path.
  6. Verify — post-change, the agent re-pulls the campaign and confirms the mutation landed before closing the ticket.

Policy gates that keep automation safe

Change typeAuto-approve thresholdHuman SLA
Budget change≤ 20% of daily spend15 min
Bid strategy swapNever auto-approvedSame-day
New messaging_restriction≤ 3 per week per campaign1 hour
Campaign pauseNever auto-approvedImmediate

Landing Page Alignment With the Core Update

Programmatic Google Ads management affects the ad layer. Information Gain is scored on what the user lands on. The agencies compounding paid spend into organic share in Q2 2026 are the ones who stopped treating landing pages as disposable conversion assets and started treating them as topical authority anchors.

The paid-to-organic bridge

  • Every ad group links to a content hub. The hub includes original benchmarks, a named framework, or a first-hand case study that meets the 7+ rubric score from Section 4.
  • Landing page URL matches the content hub.Paid traffic, organic traffic, and direct traffic all reinforce the same URL's engagement signals — exactly what Information Gain weighting rewards.
  • Ad copy previews the novel data.Example: “27% conversion lift on price-heavy queries — see the benchmark” instead of “AI-powered ads for your business.”
  • Internal link chain is short. Hub → pillar → service page, with no more than two hops. Attention to dwell-time propagation is part of the Information Gain story.

Measurement Guardrails for Programmatic Spend

The metrics that mattered in 2023 (CTR, basic impression share) are insufficient for autonomous workflows. Below is the minimum monitoring surface we run on every managed account in April 2026.

MetricWhy it matters in 2026Alert threshold
unique_users_ten_plus / unique_usersFrequency saturation; higher = wasted spend on fatigued users.> 30%
AI Max impression shareConfirms text_guidelines are not starving reach.Drop > 15% week-over-week
Conversion rate on hub-linked adsSignal that landing page authority is compounding.Should exceed generic LP by 10%+
Asset disapproval rateMisconfigured term_exclusions bleed review time.> 5%
Organic traffic to hub pagesInformation Gain compounding proxy; should rise 4–12 weeks after content hub ships.Flat after 6 weeks = re-score rubric

The 90-Day Migration Roadmap

Running every change in parallel is the fastest way to break production. This sequenced 90-day plan is what we ship against inside agency engagements.

Days 1–14: Stabilize the API Layer

  • Upgrade all clients to v23.1; run an audit query for deprecated CallAd resources.
  • Extend CI pipeline to re-run schema diffs every month instead of quarterly.
  • Install the Google Ads MCP server for the reporting team; restrict the MCP service account to read-only GAQL.

Days 15–30: Ship Text Guidelines + Frequency Monitoring

  • Publish a brand-voice policy, then translate into term_exclusions + messaging_restrictions for top 10 campaigns.
  • Wire the five unique_users_Xmetrics into your BI layer; set the >30% saturation alert.
  • Define the autonomous workflow policy gates (see Section 7).

Days 31–60: Land the Paid-to-Organic Bridge

  • Audit the top 20 landing pages against the Information Gain rubric. Replace anything scoring < 7.
  • Rewrite ad copy to preview the novel data point on each hub.
  • Link-build internally from every relevant blog post to the new content hubs.

Days 61–90: Merchant API Migration

  • Port the lowest-risk Shopping script to Merchant API as an Advanced Service (April 22 rollout).
  • Run shadow mode for two reporting cycles. Promote only after zero schema drifts.
  • Ship promotions, supplemental feeds, and regional inventory scripts. Freeze Content API writes by July 31.

Conclusion

Google Ads API v23.1, the read-only MCP server, and the April 2026 core update add up to one coherent message: programmatic PPC management is finally a first-class citizen, but only if you wire the content layer to it. The agencies still running quarterly v22 upgrades, ignoring text_guidelines, and buying generic AI-written landing pages are about to underperform — and the data after April 8 is already confirming it.

Use the 90-day roadmap above. Start with v23.1 client upgrades, layer in MCP reporting, then bring the landing pages up to the Information Gain rubric. The compounding work is on the bridge between paid and organic — that is where the gap between “automated” and “accountable” actually closes in 2026.

Ship v23.1 and the April Update With One Team

Programmatic Google Ads management only pays off when paid and organic layers are synchronized. Our team builds, migrates, and monitors both.

Free consultation
Expert guidance
Tailored solutions

Frequently Asked Questions

Related Guides

Deeper reads on programmatic Google Ads, agent workflows, and 2026 search.