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

meta_update_bidding

Change the bid strategy of a Meta campaign or ad set, and the amount that the strategy takes, at the level where the budget sits.

Ask to change how Meta bids for a campaign or an ad set: the bid strategy, and the bid cap, the cost cap or the ROAS goal that the strategy takes. AdCrunch reads the object on Meta before the change reaches Meta. It checks that the object is in the ad account of the advertiser and that the change names the level that holds the strategy, and it keeps the bid that the change replaces.

Move the FR BE 25-54 ad set from Highest volume to a cost per result goal of 12 euros.

The agent calls meta_update_bidding, then get_mutation_status, and you see whether Meta applied the new bid. Change what runs on Meta tells where the strategy sits, and which changes Meta refuses.

Reference

Available on: Meta

Change how a Meta campaign or ad set bids on a live ad account: its bid strategy, and the amount that the strategy takes. Before you change a bid, read the bid that the object has now: meta_list_adsets gives bidStrategy, bidAmount (in whole units) and roasFloor of each ad set, and meta_list_campaigns gives bidStrategy and adsetBudgetSharing of each campaign. Send bidStrategy with the one amount it takes: bidCap, costCap or roasFloor, and no amount for LOWEST_COST_WITHOUT_CAP. To change only an amount, send the same strategy with the new amount. The strategy sits where the budget sits. Under a campaign budget, the campaign holds the strategy: with level campaign, a bid cap or a cost cap applies one amount to every ad set of the campaign, and with level adset, send the strategy of the campaign with the amount for this ad set. Without a campaign budget, each ad set holds its own strategy. A change at the other level is rejected with wrong_level. A bid change can make an ad set spend its full budget, never more: the budget is the only spend ceiling. A change of strategy starts the learning phase again. Meta advises at most 2 or 3 bid or budget changes a day, and 15 minutes between a budget change and a bid change. Meta refuses a change of strategy on a campaign with ad set budget sharing, on a campaign budget with more than 70 ad sets, and on a campaign budget on ROAS goal, and its message comes back intact. Runs asynchronously: returns a workflowId immediately — call get_mutation_status with it to see whether the change succeeded, and to get the bid that it replaced as priorValue. Rejected if it names an object that is not in this ad account.

Input

Argument Type Required Description
bidCap number, more than 0 no The highest bid Meta places in an auction. Only with LOWEST_COST_WITH_BID_CAP. A bid is per optimization event, for example per purchase, and per 1,000 impressions when the optimization goal is IMPRESSIONS or REACH. The amount is in whole units of the ad account currency: 2.5 is 2.50. Meta refuses more decimals than the currency has.
costCap number, more than 0 no The average cost per result that Meta tries to keep. Only with COST_CAP. A bid is per optimization event, for example per purchase, and per 1,000 impressions when the optimization goal is IMPRESSIONS or REACH. The amount is in whole units of the ad account currency: 2.5 is 2.50. Meta refuses more decimals than the currency has. A cost cap can stop the ad set before it spends its full budget.
roasFloor number, 0.01 to 1000 no The lowest return on ad spend that Meta bids for, as a ratio: 1.5 means purchase value of 1.5 times the spend. Only with LOWEST_COST_WITH_MIN_ROAS. From 0.01 to 1000, with at most 4 decimals.
bidStrategy one of LOWEST_COST_WITHOUT_CAP, LOWEST_COST_WITH_BID_CAP, COST_CAP, LOWEST_COST_WITH_MIN_ROAS yes How Meta bids. LOWEST_COST_WITHOUT_CAP (“Highest volume” in Ads Manager) gets the most results for the budget and takes no amount. LOWEST_COST_WITH_BID_CAP (“Bid cap”) takes bidCap. COST_CAP (“Cost per result goal”) takes costCap. LOWEST_COST_WITH_MIN_ROAS (“ROAS goal”) takes roasFloor, and needs the optimization goal VALUE. Give exactly the amount that the strategy takes, and no other amount. A higher bid cap, a higher cost cap or a lower ROAS floor can make an ad set spend its full budget, never more. Send the strategy also to change only an amount. A change of strategy starts the learning phase again, and a large change of amount can too. Meta refuses a change of strategy on a campaign with ad set budget sharing, on a campaign budget with more than 70 ad sets, and on a campaign budget on ROAS goal. Meta advises at most 2 or 3 bid or budget changes a day, and 15 minutes between a budget change and a bid change.
advertiserId string yes Advertiser account ID (acc_<id>). Must belong to the active organization.
id string yes The Meta object ID of the campaign or ad set, digits only.
level one of campaign, adset yes Which level the id refers to. Under a campaign budget, campaign changes the strategy of the campaign and adset changes the amount of one ad set. Without a campaign budget, only adset.

Output

A successful call returns this object in structuredContent.

Field Type Always present Description
workflowId string yes The id of the change. The change has not reached Meta yet. Give this id to get_mutation_status to find out how the change ended.

Failure codes

A failed call has isError set, and structuredContent.error holds one of these codes. Errors describes the shape of a failed call.

  • not_found
  • provider_not_connected
  • missing_write_access
  • forbidden
  • invalid_request
  • internal_error

Scope

The token must hold mutation:write. Auth & scopes lists each scope.

Annotations

A client reads these hints. A hint that the tool does not declare has the default value of the MCP specification.

  • Writes. The tool can change data.
  • Destructive. The tool can make a change that you cannot undo. A client can ask you to confirm before it calls the tool.
  • Not idempotent. A second call with the same arguments can change more.
  • Open world. The tool reaches a system outside AdCrunch, such as an ad platform.

Example

The arguments:

{
  "advertiserId": "acc_1485443900032333",
  "bidStrategy": "COST_CAP",
  "costCap": 12.5,
  "id": "120215678901234568",
  "level": "adset"
}

The result, in structuredContent:

{
  "workflowId": "3f9c2b7e-8a41-4d6e-9b05-c1e7a2d4f860"
}

Was this page helpful?