meta_create_campaign
Create a Meta campaign from a conversation. It always arrives PAUSED.
On this page
Creates a campaign on a live Meta ad account your organization owns and has connected with write access — so setting one up no longer means leaving the conversation for Ads Manager.
Warning
Nothing spends until you say so
The campaign is always created PAUSED, and cannot be created active. There
is no status input, at any layer — the guardrail lives below the tool
surface, so no client can reach around it. Activate it yourself with
meta_set_status once you have reviewed it.
Input
| Field | Type | Required | Description |
|---|---|---|---|
advertiserId |
acc_* |
yes | The Meta advertiser. Must belong to your active organization. |
name |
string |
yes | Campaign name, as it appears in Ads Manager. |
objective |
OUTCOME_* |
yes | What the campaign optimizes toward. Constrains its ad sets’ optimization goals. |
specialAdCategories |
string[] |
no | Regulated categories Meta requires you to declare. Declaring one limits targeting. |
dailyBudget |
integer |
no | Campaign-level daily budget, in minor currency units (cents). |
lifetimeBudget |
integer |
no | Campaign-level lifetime budget, in minor currency units. |
Objectives are OUTCOME_AWARENESS, OUTCOME_ENGAGEMENT, OUTCOME_LEADS, OUTCOME_SALES, OUTCOME_TRAFFIC, OUTCOME_APP_PROMOTION.
Setting a budget here turns on Advantage campaign budget (CBO) — Meta distributes one pot across the ad sets. Omitting it means each ad set carries its own budget instead. Provide at most one of the two.
Output
{ workflowId }, immediately. The write runs asynchronously: call get_mutation_status with that workflowId to get the created campaign’s { id }.
That returned id is the handle — pass it to meta_update_budget, meta_set_status, or a future ad set. Do not expect the new campaign to appear in list_entities right away; AdCrunch refreshes it in the background, and the id is the contract.
Example
“Set up a sales campaign called Spring Prospecting on my Meta account, €50 a day.”
Claude calls meta_create_campaign({ advertiserId: 'acc_998877', name: 'Spring Prospecting', objective: 'OUTCOME_SALES', dailyBudget: 5000 }), then polls get_mutation_status and reports the new campaign’s ID — paused, spending nothing.
Errors
Advertiser not found for this organization— calllist_advertisers.This advertiser is connected without write access— reconnect Meta and grant write permission.- A budget above the safety cap is rejected with the same message
meta_update_budgetgives; it is one guardrail, not two. - Anything Meta itself refuses is surfaced in Meta’s own words, including its error subcode.