PPC Rebels 2026 cover: EU political advertising declaration in Google Ads and the campaign edit errors it causes

The EU Political Advertising Declaration in Google Ads: Why Campaign Edits Fail and How to Clear It

Here is a failure hundreds of accounts have hit over the past year. You change location targeting through the API, a script or a bulk upload, and the operation is rejected with: “This operation is only allowed after you confirm if this campaign has European Union political ads.” The campaign sells plumbing supplies, contains nothing remotely political, and targets Brazil. This is the EU political advertising declaration at work. Below: where the requirement came from, which operations it blocks, what changed in October 2026, and how to clear it across an account in about ten minutes — in the UI and through the API.

The EU political advertising declaration: what Google asks

After the EU adopted its Regulation on the transparency and targeting of political advertising (TTPA), Google stopped serving political advertising in the European Union in October 2025. To separate those campaigns from everything else, Google Ads introduced a self-declaration: the advertiser states whether a campaign contains EU political advertising.

Technically that lives in two fields:

  • Campaign level — Campaign.contains_eu_political_advertising, with three values: the campaign has EU political ads, it does not, and unspecified (the self-declaration is missing).
  • Account level — Customer.contains_eu_political_advertising. In the interface this is an account-level political content setting, phrased along the lines of “I don’t intend to use this account to run political ads in the EU.” It acts as the default for future campaigns and lets you clear undeclared campaigns in one move.

One detail trips people up: declaring “contains EU political advertising” does not unlock anything, it switches serving off. A campaign with that value stops serving in the EU, because Google exited the category there entirely.

For 99% of advertisers the correct action is to explicitly declare “does not contain.” It is not consent to anything and it is not a serving restriction — per the Google Ads API team, no additional serving restrictions apply to that value.

Timeline: how the EU political advertising declaration reached you

Date What happened
August 6–7, 2025 The self-declaration fields ship in the Google Ads API releases of that date.
September 3, 2025 Enforcement begins in the Google Ads API and in Google Ads scripts: creating a campaign without the declaration fails.
October 2025 Google stops serving political advertising in the EU ahead of the regulation taking effect.
April 1, 2026 The painful step: if an account holds even one undeclared campaign, the API fails all mutate calls related to campaign management.
October 14, 2026 In API v26 the field becomes optional for campaigns that do not positively target the EU — for those campaigns, and in that version only.

The answer to “why me, I never touched politics” sits in the April 1, 2026 row. The block is tied not to the campaign you are editing but to the state of the account as a whole. One forgotten 2019 campaign without a declaration, and every campaign-management operation in the account fails.

Which operations break, and with which errors

Operation Error When it fires
Creating a campaign FieldError.REQUIRED In API versions before v26 the field is required on every new campaign
Editing location, proximity or location group CriterionError.MISSING_EU_POLITICAL_ADVERTISING_SELF_DECLARATION Campaign or ad group criterion changes on an undeclared campaign
Scheduling an experiment ExperimentError.MISSING_EU_POLITICAL_ADVERTISING_SELF_DECLARATION A treatment draft campaign without the declaration
Any campaign-management mutate MutateError.EU_POLITICAL_ADVERTISING_DECLARATION_REQUIRED From April 1, 2026, when the account holds undeclared campaigns

Batch jobs, the generic GoogleAdsService.Mutate, experiment scheduling and the whole list of campaign and ad group management services are in scope. What keeps working: reporting, account management and Keyword Planner. Hence the typical picture — dashboards look fine while every automation that changes something has quietly stopped. If that sounds familiar, start by checking change history to diagnose why campaigns stopped updating.

Google Ads scripts have followed the same rules since September 3, 2025: bulk mutate methods and location-adding calls fail. If you run a nightly script that adjusts geo bids or rebuilds targeting, it is the first thing to break. The wider automation picture is in our guide to Google Ads scripts and rules.

Finding undeclared campaigns in two minutes

With API access there is nothing to hunt for manually — the declaration state is queryable. First the overview:

SELECT campaign.id, campaign.name, campaign.contains_eu_political_advertising
FROM campaign

Then the list of culprits:

SELECT campaign.id, campaign.name
FROM campaign
WHERE campaign.missing_eu_political_advertising_declaration = true

That second query is your work list, and it also explains why the problem appears out of nowhere: it returns paused, long-forgotten campaigns nobody looks at, which nevertheless keep blocking account-level operations. If GAQL is unfamiliar territory, start with our primer on GAQL queries that return honest numbers.

Three ways to clear it

One: the account-level setting. The Google Ads interface offers an account-level political content declaration. It clears undeclared campaigns and becomes the default for new ones. For advertisers who do not run political ads and never intend to, this is a one-time fix and the whole job.

Two: through the API. Update contains_eu_political_advertising on every campaign in your list. Usefully, those updates go through even when the account is already blocked for this reason — provided you change only that field and nothing else. There is no catch-22 where you cannot update because you have not updated.

Three: campaign by campaign in the UI. Fine when you have a handful of campaigns. At scale it is the worst option, because one missed paused campaign puts the automation back on the floor.

Which value? If your campaigns are not political advertising under Google’s definition, declare “does not contain.” If you genuinely run political communication targeting the EU, the correct declaration means no EU serving — that follows from the regulation, not from a setting, and there is no technical workaround to look for.

What changed in October 2026

With API v26, released on October 14, 2026, the rule softened: the field became optional for campaigns that do not positively target the EU — meaning they contain no positive location, proximity or location group criterion inside the EU, and have at least one positive location criterion outside it. In earlier API versions the field is required on all new campaigns.

Two caveats. First, the relief attaches to the API version, not to your account: while your integration runs on an older version, the old rules apply — version lifecycles are covered in our piece on Google Ads API releases and sunsets. Second, the wording demands a positive criterion outside the EU, and a worldwide-targeted campaign, or one with no location criteria at all, does not clearly satisfy it; the documentation does not address that case. Declaring explicitly is cheaper than betting on an interpretation.

It is also worth remembering how Google decides that you “target” a country at all: the presence versus presence-or-interest setting changes your actual audience more than most people expect, as covered in location targeting: presence or interest explained.

What counts as political advertising

Care is needed here, because the definition comes from Google’s policy and the EU regulation, not from an advertiser’s common sense. The TTPA frames political advertising broadly — through the preparation, placement, promotion, publication, delivery or dissemination of a message — and industry analyses note that it reaches beyond candidate campaigning into issue-based advertising, with additional restrictions in the window before elections and referendums. Google itself has said publicly that issue ads are difficult to identify reliably at scale, which was part of why it left the category in the EU altogether.

The practical read for an ordinary business: if your advertising sells a product or a service and does not appeal to elections, candidates, parties, referendums or socio-political issues, you declare “does not contain.” If the subject matter is even partly socio-political and your geo includes the EU, that call belongs with a lawyer rather than a blog post, this one included. A related operational skill — reading disapprovals without burning your appeals — is covered in Policy Manager and appeals in Google Ads.

The ten-minute runbook

Here is the sequence worth running once and then writing into your process — split for people who live in the interface and people whose work goes through the API.

If you work in the UI:

  1. Open account settings and find the political content declaration section.
  2. Pick the option that matches reality: you do not run political advertising in the EU.
  3. Go back to the campaign that threw the error and repeat the original action — the geo edit, the experiment, the bulk change.
  4. Confirm that nightly automations (rules, scripts, a contractor’s integration) completed their next cycle without errors.

If you run an API integration:

  1. Run the undeclared-campaigns query and export the list of IDs.
  2. Update the declaration field on all of them in a single batch — that field only, with no budget or status changes riding along, so the call clears a blocked account.
  3. Re-run the query; the list should come back empty.
  4. Set the account-level value separately so new campaigns inherit it by default.
  5. Add a check to your campaign creation code: the field is set explicitly, never implied.

On an account with several hundred campaigns the whole procedure is one batch and a couple of minutes of waiting. The time sink is never the fix — it is working out the cause, which is exactly why the error description belongs wherever your team looks for answers.

Five mistakes that cost time

  • Fixing only the campaign that failed. Since April 2026 the block works at account level, so next week a different operation fails because of a neighbouring undeclared campaign. Fix the whole list.
  • Forgetting paused and archived campaigns. They do not serve, do not spend and never appear in weekly reports — and they block mutates perfectly well. The undeclared query returns them alongside active ones.
  • Bundling the declaration with other field updates. On an already blocked account, an update that changes only the declaration goes through. Add a budget change to the same call and you get the same error, and conclude the method does not work.
  • Assuming an API upgrade solves it. The v26 relief applies only to campaigns that do not positively target the EU. If you run EU traffic the requirement stands, and older API versions keep the old rules.
  • Declaring “contains political advertising” just in case. That is not a neutral value: the campaign stops serving in the EU. Choose it deliberately, and only when it matches what the ads actually say.

Why this is a class of problem, not a one-off bug

The EU political ads error is a good teaching example of how blocks work in Google Ads in 2026. It has three properties that recur elsewhere: the requirement applies at account level rather than to the object you are touching; the error message states a formal cause and gives no hint about the action required; and it fires while you are doing something entirely unrelated.

The practical conclusion for a team is to keep a short internal document of “strange errors and what they mean,” extended every time somebody loses an hour to diagnosis. That is cheaper than rediscovering the path, and it pays off most in agencies where accounts move between people. The second half of the same conclusion: check requirements like this during account intake, not at the moment a client asks you to change geo urgently before a launch.

A standing process for agencies and large structures

If you run dozens of accounts under a manager account, a one-off fix does not solve anything: tomorrow a new client account arrives where nobody declared anything, and your shared pipeline falls over. The minimum process:

  1. On account intake, query undeclared campaigns and set the account-level declaration. Put this line in your handover checklist next to access and billing; a baseline version lives in our 54-point Google Ads account audit checklist.
  2. In campaign creation code, always set the field explicitly instead of relying on an API version’s defaults.
  3. Run a weekly check across every account under the manager account: one query, one alert. The hierarchy mechanics are in our guide to the Google Ads manager account.
  4. Put a screenshot of the error and the fix into team onboarding. It saves hours, because the message looks unrelated to the actual cause.

The general lesson: quiet requirements like this appear regularly and break operations without warning. The next one on the same calendar is Data Manager moving from SHA-256 to encryption on November 16, 2026. If you want a stable platform and help with the operational side, see Google Ads agency account rental and the full list of PPC Rebels services. And when you get to trimming waste, start with n-gram analysis of your search terms.

FAQ

Why does the EU political advertising declaration apply if I never advertise politics?

Because Google requires the self-declaration from every campaign, not only political ones. Since April 1, 2026, having undeclared campaigns blocks campaign-management operations across the whole account regardless of subject matter.

What value should I set for non-EU campaigns?

“Does not contain EU political advertising.” Per the Google Ads API team, that value brings no additional serving restrictions.

Can I clear the whole account at once?

Yes. The Google Ads UI has an account-level political content setting that covers undeclared campaigns and becomes the default for future ones.

I get the error editing geo on an ancient campaign. What now?

Declare the campaign (or the account) first, then repeat the edit. Location, proximity and location group changes are precisely the operations that demand the declaration.

How do I find every undeclared campaign?

Query the API for campaigns where campaign.missing_eu_political_advertising_declaration = true. The result includes paused campaigns everyone has forgotten about.

Can I update the field while the account is already blocked?

Yes. An update that changes only the declaration field goes through and does not return the declaration-required error.

What happens if I declare “contains EU political advertising”?

The campaign stops serving in the European Union, because Google ended political advertising there in October 2025. That is not a penalty for declaring; it is the consequence of the category exit.

v26 made the field optional — can I forget about it?

Only for campaigns that do not positively target the EU, and only if your integration runs on v26. Older API versions and EU-targeting campaigns still require it.

What about worldwide targeting?

The exemption describes campaigns with no positive EU criteria and at least one positive criterion outside the EU. A worldwide campaign, or one with no location criteria, does not clearly meet that, and the documentation does not cover the case — declaring is safer.

Does this affect Google Ads scripts and Editor?

Scripts, yes, since September 3, 2025: bulk mutate and location-adding methods fail. The sources reviewed say nothing about Google Ads Editor, but the logic is identical — any operation changing a campaign in an undeclared account is at risk until the declaration is set.

What exactly does Google count as political advertising?

The definition comes from Google’s policy and the EU regulation and reaches beyond direct campaigning. If your subject matter is even partly socio-political and you run in the EU, get the call reviewed by counsel.

How do I avoid stepping on this again?

Set the field explicitly in campaign creation code, set the account-level declaration whenever a new account is onboarded, and run a weekly undeclared-campaign check across every account under the manager account.

Similar Posts