---
title: campaign_plan_create
description: 'Write down what you intend to run — on which channels, for whom, for how much, over what period.'
---

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`](/mcp/tools/list-entities) and [`get_entity`](/mcp/tools/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

```ts
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.
