Launch a campaign with Pro mode
Last updated: May 19, 2026
Launch a campaign with Pro mode
Pro mode is the full-control editor for users who need more than Express's opinionated defaults. Structure tree on the left (campaign → adsets → ads), configuration area in the center (edit what's selected), preview panel on the right (live ad preview). Multi-adset + multi-ad in a single campaign supported. Keyboard shortcuts for fast navigation.
Who is this for
Mediabuyers who:
Need multiple adsets in one campaign (CBO with audience tests)
Want multiple ads per adset (creative A/B within audience)
Use advanced bid strategies (Cost Cap, Bid Cap, Min ROAS)
Configure fine-grained per-placement controls
Are comfortable with the platform's full feature set
Before you start
Comfortable with Express mode basics — Pro shares the same backend
Clear plan: which adsets, which ads per adset, what's the testing strategy
All prerequisites of Express (ad account connected, pixel ready, creative + copy)
Switch to Pro
At /campaign-creator/new (Express loads by default), click the Pro mode toggle at the top-right.
Layout switches to the 3-panel editor.
The Pro layout (3 panels)
Left: structure tree
Hierarchical view of your campaign:
[Campaign Name]
├── adset_1 (Audience A)
│ ├── ad_1 (Creative X)
│ ├── ad_2 (Creative Y)
│ └── + Add ad
├── adset_2 (Audience B)
│ ├── ad_1 (Creative X)
│ └── + Add ad
├── + Add adset
Click any node to edit it in the center panel. Right-click for context menu (duplicate, delete, etc.).
Center: configuration area
Edits the currently-selected node:
Campaign-level: objective, budget (if CBO), special ad categories, DSA fields, schedule
Adset-level: audience, budget (if ABO), placements, optimization goal, bid strategy, schedule
Ad-level: creative + copy + CTA + destination URL + UTM
Form fields with inline validation (red highlight + tooltip on errors). Verified via POST /api/v1/campaign-drafts/:id/validate-field on blur.
Right: preview panel
Live preview of the selected ad as it'll appear on platform:
Toggle placement (Feed / Stories / Reels / Marketplace / etc.)
Toggle device (mobile / desktop / tablet)
Updates as you type copy and pick creative
Multi-adset workflow
Add a second adset
In structure tree → + Add adset → name it → fill configuration in center.
Common patterns:
CBO with audience tests: one campaign budget, multiple adsets each targeting a different audience. CBO lets the platform distribute spend toward best-performing adset.
ABO with fixed splits: per-adset budget for explicit control.
Add ads within an adset
Select adset in tree → + Add ad inside that adset. Fill ad fields in center.
Common pattern: 3-5 ads per adset, each with a creative variation, for in-adset A/B.
Canonical structure under the hood
Verified apps/backend/src/types/campaigns/canonical.types.ts:
CanonicalCampaign {
campaign: CampaignLevel // objective, budget (if CBO), category
adSets: CanonicalAdSet[] // one or many
accountId: string // ad account ID
sessionId: string // workspace data isolation
}
CanonicalAdSet {
ads: CanonicalAd[] // one or many per adset
audience: AudienceTargeting
budget?: AdSetBudget // present only if ABO
bidStrategy: BidStrategy
optimizationGoal: OptimizationGoal
placements: PublisherPlatform[]
...
}
CanonicalAd {
creative: AdCreative
copy: AdCopy // headline, primary text, description
cta: CallToAction
destinationUrl: string
...
}
This structure is platform-agnostic — Wevion translates to per-platform format at publish time via launch providers.
Advanced bid strategies
In adset configuration → Bid strategy dropdown (verified BidStrategy enum):
Strategy | Use |
|---|---|
LOWEST_COST_WITHOUT_CAP | Default; platform spends to maximize results within budget |
LOWEST_COST_WITH_BID_CAP | You set max bid; platform won't pay more |
COST_CAP | Target CPA; platform tries to deliver at or below |
LOWEST_COST_WITH_MIN_ROAS | Target ROAS; platform delivers above min ROAS threshold |
Most strategies require 30+ conversions in the optimization window to learn — see cc-106 objectives.
Optimization goal
Per adset → Optimization goal (OptimizationGoal enum, 30+ values verified):
Common: OFFSITE_CONVERSIONS (pixel events), LANDING_PAGE_VIEWS, LINK_CLICKS, LEAD_GENERATION, THRUPLAY (15s video views), IMPRESSIONS, REACH.
Picking the right goal aligns the platform's auction logic with your business outcome.
Keyboard shortcuts
Verified apps/frontend/src/pages/campaign-creator/pro/use-keyboard-shortcuts.ts:
Shortcut | Action |
|---|---|
| Save draft now |
| Duplicate selected node |
| Run preflight + publish (paused) |
| Navigate structure tree |
| Close current panel / cancel edit |
| Show shortcut reference overlay |
Press ? in Pro mode for the full list.
Pre-flight + dry-run before publish
Before clicking Publish:
Preflight (
POST /api/v1/campaign-drafts/:id/preflight): runs full validation suite. ReturnsValidationResultwith errors + warnings + info per field.Dry-run (
POST /api/v1/campaign-drafts/:id/dry-run): simulates the publish without committing. Returns what would happen + per-adset estimates.
Both surfaceable via Pro mode buttons in the top toolbar.
Publish
When validation passes:
Click Publish in the top-right
Choose Paused (recommended) or Active
Wevion publishes via the platform-specific launch provider (
apps/backend/src/providers/{meta,google,tiktok,taboola,snapchat}/*.launch-provider.ts)Toast confirms
Campaign appears in Ads Manager
For paused → activate flow: same as Express (cc-119 paused vs active).
Saving as draft
Drafts auto-save continuously. Manual save: Cmd+S. Drafts visible at GET /api/v1/campaign-drafts. Pick up later from the same point.
Duplicating a published campaign in Pro
POST /api/v1/campaigns/duplicate (verified endpoint) creates a draft mirror of an existing campaign — opens in Pro mode for editing. Common use: copy a winning campaign + tweak audience or creative for a new variant.
What you'll see
Pro mode active:
3-panel layout
Structure tree shows current campaign hierarchy
Save status indicator (auto-saved N seconds ago)
Validation badges per node (red for errors, yellow for warnings)
Publish button enabled when all validation passes
Common issues
"Structure tree empty": brand new draft. Click + Add adset to start.
"Add ad button disabled": the parent adset must have audience + budget configured first.
"Pro mode shows fewer placements than Meta has": Wevion exposes the most common placements. Edit advanced placements in Meta Ads Manager post-publish.
"Multiple adsets but campaign uses ABO budget": switch to CBO for a campaign-level budget OR set per-adset budget on each adset.
"Bid strategy LOWEST_COST_WITH_MIN_ROAS rejected": needs ad account with conversion history; switch to lower-bid strategy until learning settles.
"Lost work after browser refresh": drafts auto-save but if you cleared cookies or workspace switched, you may lose unsaved. Check
/campaign-draftslist.
When to NOT use Pro
Don't use Pro for:
Simple single-adset launches (Express is faster)
Bulk wave launches (use Bulk Launch)
Templated repeatable patterns (use Campaign Templates)
Related
Launch with Express mode — simpler alternative
Budget CBO vs ABO — Pro lets you do both, decide which
Ad copy — headlines, primary text, CTA — Pro's copy fields