← Knowledge

How to Launch a Campaign

The Campaign Launch workflow takes your brand from "we should run something on TikTok" to a planned, drafted, ready-to-publish campaign — with four explicit human approval gates before anything hits the world.

Before you start

Campaign Launch is for your own brand. The brief's target_type should be own_brand, and ideally a brand_id linking to your Studio brand profile (so the agents can read your voice, guidelines, and product catalog). Without a linked brand, agents fall back to generic defaults and the output is noticeably worse.

Run a Profile Audit first if you haven't audited the account in the last week or two. The Campaign Launch workflow assumes the account is healthy; surprises (a shadowban, a compliance block) will derail it mid-flight.

You'll need to be available for the four approval gates. The workflow pauses and waits for you at each one — it doesn't time out, but it also won't move forward without you.

What runs

The DAG (defined at ~/projects/tiktok-army/tiktok_army/orchestrator/definitions.py:165) looks like this in order:

  1. Audience Mapper — clusters the brand's audience into segments. Runs first because everything downstream uses these segments to target.
  2. Listing Optimizer — generates rewritten title/description/hashtag variants for underperforming Shop posts.
  3. Approval gate #1 — Approve listing rewrites
  4. Content Producer — briefs Studio for new video content tied to the approved listings and audience.
  5. Approval gate #2 — Approve TikTok publish
  6. Ad Campaign Director — plans TikTok Ads campaigns (objective, audience, budget, creatives) using the new content and segments.
  7. Approval gate #3 — Approve ad spend
  8. Creator Outreach — finds creators with audience overlap and drafts personalized DMs.
  9. Approval gate #4 — Approve outreach DMs
  10. Synthesis — produces the final campaign plan as Markdown.

Approval gates run in parallel where the workflow allows it: Listing Optimizer, Content Producer, Ad Campaign Director, and Creator Outreach all branch off the audience map, so you may see multiple Approval cards waiting in the queue at once.

The four approval gates

Each gate is a card in the Approvals queue (see The Approval Flow for how the queue works). What you're being asked to confirm is different at each one.

Gate #1 — Approve listing rewrites

What you're seeing. A list of underperforming Shop posts, each with one or more proposed rewrites. Per variant: a new title, a new description, a new hashtag set, and a recommended-or-not flag.

What to look at before approving.

  • Does the new title match how your brand actually talks? Listing Optimizer pulls voice from your brand profile, but a slightly off-brand title is the most common rejection.
  • Are the hashtags ones you'd actually use? It will sometimes propose niche tags that are technically rising but feel weird for your brand.
  • Is the recommended variant the strongest one? You can override and pick a different variant if you disagree with the score.

What gets published when you approve. Nothing yet. Approval here means "use these rewrites in the rest of this workflow." The listing changes don't push to TikTok Shop until the Content Producer step writes posts referencing them.

Gate #2 — Approve TikTok publish

What you're seeing. The full Studio brief that produced the video, the rendered caption, the hashtag set. The video itself was approved in a separate Studio approval flow (Studio's own approval gate runs before this one and is enforced inside the agent — studio_client.wait_for_approval blocks until a human signs off on the rendered asset).

What to look at before approving.

  • The caption — read it out loud. Does it sound like your brand or like a marketing intern wrote it?
  • The hashtag set — are any of them flagged or controversial? Compliance ran earlier in the workflow but it's worth a sanity scan.
  • The shot list — does the concept match what was approved as the Studio brief?

What gets published when you approve. This is the gate where the post actually hits TikTok. The agent calls tiktok_publisher.publish with the approved caption + hashtags pointing at the rendered asset.

Gate #3 — Approve ad spend

What you're seeing. A list of proposed ad campaigns. Per campaign: a name, an audience segment, an objective (VIDEO_VIEWS, PRODUCT_SALES, etc.), a daily budget in USD, the creative (which post(s)), and a target KPI. There's a total_daily_budget_usd summing the proposals and a spend_cap_check flag.

What to look at before approving.

  • The total daily budget vs your monthly cap. The Ad Campaign Director respects the workspace's spend cap (lib.spend_cap.charge is called before launch) but you should still sanity-check the number.
  • The audience segment — is it one you actually want to target now? If the audience map produced a "Glow-curious teens" segment but your legal team prefers not to target under-18s, this is the gate to catch it.
  • Whether you want all the proposed campaigns to launch, or only some. Reject the whole batch with feedback ("only launch the prospecting one for now") to redo the plan.

What gets published when you approve. TikTok Ads campaigns get launched. This is the only step in the workflow that costs money beyond Claude API fees. The spend cap is the floor of safety; your approval is the ceiling.

Gate #4 — Approve outreach DMs

What you're seeing. A list of creators (handle, follower count, audience overlap with your brand) and a per-creator drafted DM. The agent typically drafts 8 of these by default; reduce or increase via the targets option.

What to look at before approving.

  • The personalization — does each DM reference something specific to that creator, or do they all read like a template?
  • The offer — is the agent committing to anything ("paid collab", "product gifted") that you haven't actually decided?
  • The handle list — any creators on your "do not work with" list? The agent has no idea who you've had bad experiences with unless your brand profile says so.

What gets published when you approve. The DMs get sent through TikTok's messaging API. Once a DM is sent, it's sent — there's no recall. This is usually the most consequential gate.

After all four gates

Once you've approved (or rejected) all four, the synthesis step runs and produces the final campaign plan Markdown. That document captures: the audience targets, the creative plan, the listings, the ad campaigns, the outreach roster, and any approved-with-comments notes you left along the way.

Reject any gate and the workflow stops. The run is marked failed with the rejection reason. You can submit a new brief (often with notes referencing what went wrong) to restart cleanly. There's no "undo and continue" yet — for now, rejection is terminal for the run.

Things to know

  • The four approvals can come at you in roughly the same minute or spread out over hours, depending on how long Studio takes to render the video and how long the planning agents need. The dashboard shows the live DAG so you can see what's blocking what.
  • You can reject with feedback at any gate — the rejection comment is stored on the workflow step and shows up in the synthesis report. See The Approval Flow for what the future "approver agent" will do with that feedback.
  • If you have a nervous-launch policy ("never auto-launch ads"), set auto_launch=false on the Ad Campaign Director options. The agent will draft proposals but never call tiktok_ads.launch even after approval; you launch manually from TikTok Ads Manager.