Imported campaigns bidding
Most VibeAds users have existing Google Ads campaigns when they sign up. Those campaigns can be at any rung of the bidding ladder, set up correctly or incorrectly, mature or fresh. The agent picks up where you left off.
The problem
VibeAds-published campaigns always start at Stage 1 (Manual CPC) and climb. The promotion rules assume that history. Imported campaigns can arrive at:
- Stage 1 (Manual CPC) with 6 months of data
- Stage 2 (Max Conversions) that you set up last week
- Stage 3a (Max Conversion Value) that has been running for 2 years
- Stage 3b (Target ROAS 4.0) you set up but never tuned
- Off-ladder Portfolio bidding
Naively firing the ladder rules on these would either skip unlocks (because data looks "new" from VibeAds' perspective) or auto-promote into a misconfigured state. We had to detect, audit, and approve before management starts.
Stage detection
At import time, VibeAds pulls campaign.bidding_strategy_type, campaign.target_roas.target_roas, and campaign.start_date from Google Ads via GAQL. A pure classifier maps the strategy + target to one of 6 stages:
stage_0_unknownstage_1_manualstage_2_volumestage_3a_valuestage_3b_target_roasstage_offladder
The detected stage is written to campaigns.agent_managed_stage and an initial row goes into campaign_stage_history withtrigger='imported'.
Configuration audit
After classification, the agent runs a per-stage health check against the campaign's actual data:
- correctly_configured. Stage matches the data. Stage 2 with steady conversions, Stage 3b with stable observed ROAS, etc. Agent is ready to manage.
- data_starved. Stage is too aggressive for current volume. Stage 3a with under 20 paid invoices/30d. Stage 3b that has not had conversions in 21 days. Suggest watching, do not change.
- misconfigured. Stage is wrong for the data. Stage 3b without a Revenue conversion action (Target ROAS cannot optimize value with no value signal). Surfaces fix recommendations.
- unsupported. Off-ladder strategy. Agent acknowledges, stops.
Audit signals include: 30-day conversion count, paid invoice count, days at current stage, days at top of ladder, primary action count, whether revenue action exists, observed ROAS (Stage 3 only), CPA vs category benchmark.
Approval gates
On Free and Pro, the audit produces a recommendation card. You click Approve to mark the campaign as agent-managed. Ladder rules stay disabled until then.
On Max with hands-free on, the audit auto-approves immediately when health is correctly_configured, data_starved, or unsupported. misconfigured still requires manual approval because the agent thinks the campaign is set up wrong, and you should see the explanation before changes start firing.
Auto-approval is observable: a notification fires ("Agent is now managing this campaign at Stage X") and the change appears on the Bidding Lifecycle panel of the campaign detail page.
External change cooldown
If you change a campaign's bidding strategy directly in Google Ads UI, VibeAds detects the change within 6 hours via the metrics-sync cron. The change is logged in campaign_stage_history with trigger='external_change'.
A 7-day cooldown kicks in. During the cooldown, no ladder rules fire on this campaign even if it qualifies. The rationale: you just made a deliberate choice, and the agent should not second-guess you immediately. After 7 days, the agent resumes managing from the new stage.
Lifecycle timeline
Every campaign detail page has a Bidding Lifecycle panel that shows:
- Current stage with color-coded badge
- Audit health pill (correctly_configured / data_starved / misconfigured / unsupported)
- Agent managed since timestamp (or "Awaiting approval")
- External change cooldown banner if active (shows when it expires)
- Audit issues list with severity icons + fix hints
- Recent transitions timeline (last 10 events)
- Last audited timestamp