Skip to content
AdCrunch
Esc
↑↓navigate↵open⌘Jpreview
On this page

meta_create_campaign

Create a Meta campaign from a conversation. It always arrives PAUSED.

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.

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 number no Campaign-level daily budget, in whole units of the account currency.
lifetimeBudget number no Campaign-level lifetime budget, in whole units of the account currency.

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: 50 }), 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.
  • 401 or 403 — see Errors, which every tool shares. This one needs mutation:write.

Was this page helpful?