May 19, 2026: if your Advantage+ Shopping or App campaigns were still using the legacy creation paths, they are now read-only or paused — and you did not choose that.
This was the enforcement date Meta announced months in advance. The migration window closed. Here is what happened and what you need to do right now.
What Was Deprecated and When
| Date | What Happened |
|---|---|
| October 8, 2025 | Marketing API v24.0 blocked new legacy ASC/AAC creation |
| February 18, 2026 | smart_promotion_type removed from all API versions (v25.0) |
| May 19, 2026 | Final enforcement — legacy campaigns read-only or auto-paused |
| September 2026 | Non-migrated campaigns scheduled for system termination |
What is gone:
- The
smart_promotion_typeenum field — permanently removed across all API versions - The
existing_customer_budget_percentagefield (Existing Customer Budget Cap) — permanently deprecated - All legacy "Automated" campaign objective creation paths for ASC and AAC
The New Structure: Three Levers
Advantage+ status is now a state derived from three specific campaign settings — all three must be active simultaneously:
- Advantage+ Budget — campaign-level budget (CBO enabled)
- Advantage+ Audience — targeting automation enabled (
advantage_audience: 1) - Advantage+ Placements — automated placements, no manual exclusions
All three on = Advantage+. Any one off = not Advantage+.
Migration Steps (Do These Immediately)
1. Use the in-place migration API call.
POST to your existing campaign ID with migrate_to_advantage_plus: true. Converts in-place without losing historical data. Use /copies to generate new IDs if preferred.
2. Replace the deprecated ECBC. Implement a two-ad-set structure within one campaign:
- Ad Set 1: excludes existing customers (new customer acquisition)
- Ad Set 2: targets a Custom Audience of existing customers with an Ad Set Minimum Spend
3. Audit every API integration and third-party tool.
Any system calling the old smart_promotion_type or existing_customer_budget_percentage fields is now broken. Fix these now.
4. Refresh creative to 10-20 assets minimum. The SilverTorch engine that powers these campaigns is creative-signal-driven. Fewer assets means less semantic surface area for the algorithm.
5. Verify Advantage+ state via the advantage_state field.
After migration, confirm each campaign returns ADVANTAGE_PLUS. If it returns anything else, your Three Levers are not all active.
Paused campaigns are losing delivery every hour. The new structure exists and the machine is ready to run.
Let's get after it.

Founder CEO/CTO




