a.ads
← All guides

Creating a campaign

The campaign wizard walks you from goal to a reviewed, ready-to-publish plan — and everything ships paused.

How the wizard works

Start at Campaigns → New campaign. The AI writes only the ad copy; campaign structure, budget allocation, and targeting are assembled by a deterministic rules engine, so the plan is predictable and inspectable.

  1. Platform. Meta (Facebook and Instagram) is available today. Other platforms appear as their API access lands.
  2. Goal. Awareness, Traffic, Engagement, Leads, Sales, or App — each maps to the correct optimization settings on the platform.
  3. Offer and destination. What you're promoting and where the ad sends people. You can also start from a URL scan that prefills what it finds on your site.
  4. Budget. Daily budget with sensible presets, editable to any amount.
  5. Audience. Live interest targeting searched from Meta's own taxonomy, age and gender ranges, or Advantage+ automation.
  6. Creatives. Generate on-brand ad variants, or attach images from your Asset Library.
Review before anything is proposed

The wizard ends in an editable review canvas showing the full campaign tree. Every edit re-runs validation live, and warnings appear inline — for example, budgets below platform minimums or copy exceeding length limits.

Publish target and approval

Before a campaign can be approved, it needs a publish target: which ad account it belongs to and which Facebook Page it publishes from (plus an optional pixel). You pick these in the flow, or on the approval card itself — Approve is blocked until a target is set.

What happens on approve

Approving sends the plan to our executor, which builds the real campaign, ad sets, and ads on Meta — always paused. If any step fails, the partial tree is rolled back. The paused campaign then shows a go-live card with exactly what it will spend per day; taking it live is a separate request that also passes through the Approval Center. Nothing spends until you say so, twice.

Questions? hello@dotstack.io