Skip to content

Fix: Performance Max limited by budget

finding google ads updated 2026.06.08 5 min read

When Google marks a Performance Max campaign "Limited by budget," it is throttling delivery — capping the impressions, clicks, and conversions a campaign that's meeting its target could otherwise win. Unlike Search, PMax exposes no budget-lost impression-share metric, so this status is the only signal that the cap is biting.

Why this matters

Performance Max sets bids to hit your tROAS/tCPA target across Search, Shopping, YouTube, Display, Discover, and Gmail in one campaign. When the daily budget is the binding constraint, Google stops entering auctions it could otherwise win profitably — so a campaign that's already meeting its target is leaving conversions on the table at exactly the efficiency you asked for. Google's own guidance is to lift the constraint on target-meeting campaigns before opening new ones, because that marginal spend is typically the most efficient available in the account.

The catch unique to PMax: there is no search_budget_lost_impression_share metric (that field only exists for Search). So the only reliable signal that the budget is capping delivery is campaign.primary_status + campaign.primary_status_reasons — the same data that renders the "Limited by budget" label in the UI. Whitead reads those fields directly.

This is a MEDIUM finding, not high, because a budget cap is sometimes deliberate — margin control, deliberate pacing, or a capped test. The audit surfaces it for confirmation; you hold the context on whether the ceiling is intentional.

How to verify the issue

  1. Open Campaigns and look at the Status column for the Performance Max campaign. "Limited by budget" confirms the finding.
  2. Hover the status (or open Campaign settingsBudget) to see how often the campaign hit its budget over the last 30 days.
  3. Check whether the status also shows a bid-strategy constraint. If both budget and bid-strategy limits appear, the target — not just the budget — is part of the problem (see the fix below).
  4. Confirm whether the campaign is on a shared budget (ToolsShared libraryBudgets). If so, sibling campaigns may be draining the pool, and the campaign-level lever doesn't exist.

If the status reads "Limited by budget" and the cap isn't deliberate, the finding is actionable.

How to fix it

  1. Confirm the cap is unintentional. If the budget is deliberately limited (margin, pacing, or a test), no action is needed — this is expected. Otherwise continue.
  2. If the campaign is meeting its tROAS/tCPA target, raise the daily budget incrementally. Step up roughly 20–30% and let the campaign re-stabilize for 1–2 weeks before the next increase, rather than one large jump that resets pacing.
  3. If you can't add net-new budget, reallocate from lower-ROAS campaigns. Move spend out of campaigns underperforming on ROAS/CPA into this constrained, target-meeting one. If it sits on a shared budget, either move it to its own budget or raise the shared budget — siblings may be consuming the pool.
  4. If the target is suppressing spend, loosen an over-tight tROAS/tCPA first. A tROAS set too high (or tCPA too low) makes the bid strategy decline auctions it could profitably win — and adding budget on top won't help, because the strategy won't deploy it. Relax the target modestly, then revisit the budget.
  5. Re-check after stabilization. Confirm the campaign has cleared "Limited by budget" and that ROAS/CPA held after the change.

"If your campaign is limited by budget, it could be missing out on potential clicks and conversions. To get the most out of your campaign, consider increasing your budget."
Google Ads Help, Fix "Limited by budget" status (accessed 2026-06-08)

How to confirm the fix worked

Diagnostic checklist — run 2–4 weeks post-change

  • The campaign Status no longer reads "Limited by budget."
  • Impression / conversion volume rose after the constraint was removed.
  • ROAS/CPA held within your target band — the extra spend converted at the efficiency you asked for, rather than buying low-quality volume.
  • If you loosened the target, the bid-strategy constraint is also cleared.

If the status is clear and ROAS/CPA held, re-run the audit — the pmax_budget_limited rule moves from failedpassed.

Methodology note. Whitead's pmax_budget_limited rule is a single-flag composite evaluated per PMax campaign. It fires when BUDGET_CONSTRAINED is present in campaign.primary_status_reasons and campaign.primary_status is ELIGIBLE or LIMITED. LEARNING is deliberately excluded — a campaign still ramping in its learning window shouldn't be told to raise budget, and it re-fires automatically once it exits LEARNING. PAUSED, REMOVED, NOT_ELIGIBLE, and MISCONFIGURED are out of scope (not serving, or another rule's job). The rule is impact_kind: qualitative and reports no dollar figure: primary_status carries no loss quantity, and PMax exposes no budget-lost impression-share metric, so any number would be invented ("no crutches"). Because the existing Search budget rule (campaign_budget_limited) is scoped to SEARCH campaigns and keys off search_budget_lost_impression_share, the two rules never double-count — they cover disjoint campaign types.

Sources

// was this useful?
// anonymous · no personal data stored