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

Cmd+S / Ctrl+S

Save draft now

Cmd+D / Ctrl+D

Duplicate selected node

Cmd+Enter

Run preflight + publish (paused)

/

Navigate structure tree

Esc

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. Returns ValidationResult with 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:

  1. Click Publish in the top-right

  2. Choose Paused (recommended) or Active

  3. Wevion publishes via the platform-specific launch provider (apps/backend/src/providers/{meta,google,tiktok,taboola,snapchat}/*.launch-provider.ts)

  4. Toast confirms

  5. 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-drafts list.

When to NOT use Pro

Don't use Pro for:

Related