Monthly spend, paced daily.
Budget Pacing Optimizer reads where you are against your monthly plan, computes a daily-cap adjustment per campaign with Lyra-Agent-written reasoning, and applies the changes via the Google Ads API once you approve. Four automation levels graduate from insight-only to fully-automated. Every applied change is logged in budget_change_history and Account Diary.
Two modes, four automation levels.
Each pacing run is scoped to one customer. You pick a mode (monthly_cap or redistribute) and an automation level (insight_only → fully_automated). The output is a recommendation per campaign with reasoning + confidence; the apply step is gated by your chosen automation level.
- monthly_budget_override
- max_change_percent
- conversion_lag_days
- excluded_campaign_ids
- old / new daily budget
- change EUR + %
- reasoning
- confidence
- budget_change_history row
- Account Diary entry
- Assessment metrics
A pacing curve with the rebalance to land on plan.
Below is a sample pacing view from one customer, day 26 of April. The dashed line is the planned daily spend to hit €38k for the month; the solid line is actual to date. The recommendations below recommend the day-27-onward adjustments to land on plan.
Heuristic math, Lyra Agent reasoning, Google Ads API.
The pacing math is deterministic — same inputs, same recommendation, every run. The Lyra Agent enters once a recommendation is shortlisted to write the reasoning string. Apply is a Google Ads API write.
Plan vs actual, daily target.
Daily target = (monthly_budget − spent_to_date) / days_remaining. Each campaign's recommended cap is the daily-target share scaled by recent spend share, ROAS confidence, and learning-state guardrails.
Land one campaign on its target.
Use when one campaign has its own monthly budget. Adjusts that campaign's daily cap to land on the target by month-end, respecting max_change_percent.
Pull from underperformers, push to heroes.
Use when multiple campaigns share a budget envelope. Pulls cap off campaigns trailing on ROAS, pushes onto the heroes within the same envelope. Net spend stays the same; mix shifts.
Why this delta, in human language.
Once the math has shortlisted a recommendation, the Lyra Agent reads the structured signals (ROAS delta, spend share, campaign type, prior cap) and writes the reasoning string. Confidence is a separate signal — derived from data freshness + variance.
Direct write, not a queue.
Approved recommendations write to Google Ads via CampaignBudgetApi.update_campaign_budget. Real budget change in your account, with the source field tagged so the audit log can trace which run + which user approved.
Every applied change leaves a trail.
Each apply writes a row to budget_change_history with old/new caps + reasoning + confidence + mode. A nightly assessment job backfills the 14-day-after metrics (ROAS, CPA, conversions) so the change can be evaluated retrospectively. A tool_action entry lands in Account Diary on apply.
The honest answers about pacing.
Does it apply changes automatically?
It can. Four automation levels — insight_only (no apply), recommendations (default; you approve), semi_automated (you approve high-confidence; rest are insight), fully_automated (apply all approved-by-policy without manual click). Default is recommendations; most agencies leave it there.
What's the difference between monthly_cap and redistribute mode?
monthly_cap mode adjusts one campaign's daily budget to land on its monthly target. redistribute mode rebalances across multiple campaigns within a shared budget envelope — keeping net spend the same but shifting share toward better performers.
What stops a runaway adjustment?
max_change_percent is the hard cap on how much any single recommendation can move a daily budget (default 25%). Recommendations above the cap are dropped before the list is shown. Cooldown is enforced via the budget_change_history audit trail — recent changes are visible to the next run, and the Lyra Agent factors them into the reasoning.
What's the difference vs Google's automated bidding?
Different layer. Smart Bidding (tCPA, tROAS) optimises bids within a daily budget cap. Budget Pacing Optimizer adjusts the daily cap itself based on monthly pacing. They're complementary — pacing sets the envelope, Smart Bidding optimises within it.
What gets logged on apply?
A budget_change_history row (old/new daily budget, change %, reasoning, confidence, mode, source) and an Account Diary entry tagged tool_action. The diary entry has the same reasoning string. A separate nightly job backfills 14-day-after assessment metrics so each change can be evaluated retrospectively.
Run the audit.
Keep the findings.
Connect your account and let Lyra run its 18 tools for 14 days. If the projected waste recovery isn't worth at least 10× the $49, don't pay. You keep every insight either way.
Read-only connect · write access opt-in per tool · SOC 2 in progress · GDPR + CCPA compliant