Skip to content

campaign_plan_create

Write down what you intend to run — on which channels, for whom, for how much, over what period.

On this page

Creates a Campaign Plan: a statement of intent you can sum, execute, and later compare against what actually ran.

Warning

A Campaign Plan is not a provider campaign

It is AdCrunch’s own planning document — written before anything is bought, and possibly executed into several campaigns, or none. For campaigns that exist on Meta or Google, use list_entities and get_entity.

Input

Field Type Required Description
name string yes Display name, e.g. "Q4 Acquisition".
description string yes One-line summary used to pick this plan from a list.
currency string yes ISO 4217. Changeable until a Line Item carries a budget.
slug string no Explicit handle; normalized to kebab-case. Defaults to one derived from the name.
brand_name string no The brand this plan is for. A plan may precede its brand, or cover several.
total_budget integer no The envelope, in minor units. Omit for “no declared constraint”.
start_date / end_date YYYY-MM-DD no Either may be omitted. No end date means always-on.
rationale string no The argument for the split — what a reviewer approves.
measurement string no How success will be judged.

Example

campaign_plan_create({
  name: 'Q4 Acquisition',
  description: 'Prospecting across Meta and TikTok, Oct–Dec.',
  currency: 'EUR',
  total_budget: 10_000_000, // €100,000.00
  start_date: '2026-10-01',
  end_date: '2026-12-31',
  rationale: 'Meta carries the proven CPA; TikTok is a 30% test we can cut.',
});
// → { campaignPlan: { slug: 'q4-acquisition', status: 'draft', revision: 1, … } }

Warning

Amounts are integer minor units

Send 4050 for €40.50, never 40.50. A fractional amount is refused rather than rounded, because rounding it would silently turn €40.50 into 40 cents.

Tip

Almost everything is optional

A plan is authored incrementally. The window, the budget and the brand can all arrive later — only the currency is required up front, because every amount written afterwards is read through it.

Requires the campaign_plan:write scope.