Google’s Ads API documents self-declaration via contains_eu_political_advertising and states that starting April 1, 2026, if an account has one or more undeclared campaigns, campaign-management mutates fail with MutateError.EU_POLITICAL_ADVERTISING_DECLARATION_REQUIRED. Reporting and many non-campaign-management calls continue. The steps below are an operator runbook — this site does not execute API calls for you.
- List every customer ID that your jobs mutate. Include MCC children, Scripts, and batch jobs. Save the list next to your April 2026 change window.
- Run the missing-declaration GAQL. Using
GoogleAdsService.SearchorSearchStream, select campaigns wherecampaign.missing_eu_political_advertising_declaration = true. Export ids and names locally. - Classify each undeclared campaign. Decide
CONTAINS_EU_POLITICAL_ADVERTISINGvsDOES_NOT_CONTAIN_EU_POLITICAL_ADVERTISINGwith your policy owner. Declaring contains stops serving in the EU for that campaign. - Open the deadline checklist on this site. Confirm countdown, copy GAQL/safe-path notes into your runbook, and tick the ship checklist beside your ticket.
- Clear with declare-only mutates. Use
CampaignService.MutateCampaigns,GoogleAdsService.Mutate, or BatchJobService updating onlycontains_eu_political_advertising. Mixed field updates are not the “safe clear” path described in docs. - Optionally use the Google Ads UI account-level declaration when that fits your operating model; still verify API-visible campaign fields for automation accounts.
- Self-check: re-query until zero missing rows. Also create a canary mutate on a non-production campaign after declarations land. Expect reporting queries to keep working even if you had been blocked on mutates.
- Hardening for new creates. Ensure create paths set the declaration field. Note v26 optional behaviour for some non-EU-targeted campaigns — do not assume older clients behave the same.
Keep the official enforced-methods table bookmarked. The checklist’s method sample is illustrative; production runbooks should link the live table, not a static mirror alone.