Skip to content

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 — call list_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_budget gives; it is one guardrail, not two.
  • Anything Meta itself refuses is surfaced in Meta’s own words, including its error subcode.