Skip to content

Google Ads: bidding and conversions ​

Bidding strategies, ad schedules and device adjustments, conversion actions and campaign goals. 7 tools. This page is generated from the server's own tool list, version 0.1.0, and is not edited by hand. The descriptions are the ones your AI client reads, so they are written for it. All tools lists every page.

gads_list_conversion_actions ​

Kind: read. It is marked as changing nothing.

Conversion actions with the settings that decide bidding (primary or secondary, category, counting, lookback windows, value, attribution model) and each one's conversions in the last 30 days. Also the account's custom conversion goals and the campaigns that do not follow the account's default goals. Give campaign_id to see that campaign's own goals, which is what gads_set_campaign_conversion_goals changes.

ArgumentTypeRequiredDefaultDescription
customer_idtextyes10-digit Google Ads account id.
include_removedtrue or falsenofalseAlso list removed conversion actions.
campaign_idtextnononeOptional campaign whose goal level and goals to include.

gads_update_conversion_action ​

Kind: write. It only previews the change unless dry_run is false. Removing needs confirm_remove to be true as well. Not offered while the server is in read-only mode.

Change a conversion action: whether bidding uses it (primary_for_goal), its category, how it counts, its lookback windows, its value and its attribution model. Only what is passed changes. This changes what campaigns optimise for across the whole account, so it works only while an administrator has switched conversion edits on.

status REMOVED deletes the action and cannot be undone: it needs confirm_remove=true, and nothing else may be changed in the same call. HIDDEN is the softer state - the action stops showing and stops counting, and can be enabled again.

ArgumentTypeRequiredDefaultDescription
customer_idtextyes10-digit Google Ads account id.
conversion_action_idtextyesId from gads_list_conversion_actions.
statusone of ENABLED, HIDDEN, REMOVEDnononeENABLED, HIDDEN, or REMOVED (see above).
primary_for_goaltrue or falsenononetrue = bidding optimises for it; false = it is only observed.
categoryone of DEFAULT, PAGE_VIEW, PURCHASE, SIGNUP, DOWNLOAD, ADD_TO_CART, BEGIN_CHECKOUT, SUBSCRIBE_PAID, PHONE_CALL_LEAD, IMPORTED_LEAD, SUBMIT_LEAD_FORM, BOOK_APPOINTMENT, REQUEST_QUOTE, GET_DIRECTIONS, OUTBOUND_CLICK, CONTACT, ENGAGEMENT, STORE_VISIT, STORE_SALE, QUALIFIED_LEAD, CONVERTED_LEADnononeThe goal category the action belongs to.
counting_typeone of ONE_PER_CLICK, MANY_PER_CLICKnononeONE_PER_CLICK (leads) or MANY_PER_CLICK (sales).
click_through_lookback_window_dayswhole numbernononeDays after a click a conversion still counts.
view_through_lookback_window_dayswhole numbernononeDays after an impression a conversion still counts.
default_valuenumbernononeThe value of one conversion when none is sent with it.
default_currency_codetextnononeThree-letter currency of default_value, e.g. KWD.
always_use_default_valuetrue or falsenononetrue = ignore the value sent and use default_value.
attribution_modelone of GOOGLE_ADS_LAST_CLICK, GOOGLE_SEARCH_ATTRIBUTION_DATA_DRIVENnononeGOOGLE_ADS_LAST_CLICK or GOOGLE_SEARCH_ATTRIBUTION_DATA_DRIVEN.
confirm_removetrue or falsenofalseMust be true for status REMOVED.
dry_runtrue or falsenotruetrue = validate only (default). false = apply, only after the user confirms.

gads_create_conversion_action ​

Kind: write. It only previews the change unless dry_run is false. Not offered while the server is in read-only mode.

Create a conversion action: UPLOAD_CLICKS, which takes conversions uploaded from the advertiser's own records (gads_upload_offline_conversions), or WEBPAGE, which Google's tag counts on a page of the website. Any other type is refused: Google makes those itself or imports them from a linked property.

A new action is ENABLED and, with primary_for_goal=true, every campaign whose goals include its category starts bidding towards it as soon as it records conversions; pass primary_for_goal=false to only observe it first. It works only while an administrator has switched conversion edits on. After a real create of a WEBPAGE action the result carries its tag snippets, for the website. A new UPLOAD_CLICKS action takes uploads about six hours after it is made.

ArgumentTypeRequiredDefaultDescription
customer_idtextyes10-digit Google Ads account id.
nametextyesThe action's name, unique in the account.
typetextyesUPLOAD_CLICKS or WEBPAGE.
categoryone of DEFAULT, PAGE_VIEW, PURCHASE, SIGNUP, DOWNLOAD, ADD_TO_CART, BEGIN_CHECKOUT, SUBSCRIBE_PAID, PHONE_CALL_LEAD, IMPORTED_LEAD, SUBMIT_LEAD_FORM, BOOK_APPOINTMENT, REQUEST_QUOTE, GET_DIRECTIONS, OUTBOUND_CLICK, CONTACT, ENGAGEMENT, STORE_VISIT, STORE_SALE, QUALIFIED_LEAD, CONVERTED_LEADyesThe goal category it belongs to, e.g. QUALIFIED_LEAD, CONVERTED_LEAD, PURCHASE, SUBMIT_LEAD_FORM.
counting_typeone of ONE_PER_CLICK, MANY_PER_CLICKnononeONE_PER_CLICK (leads) or MANY_PER_CLICK (sales). Google's default if omitted.
default_valuenumbernononeThe value of one conversion when none is sent with it.
currencytextnononeThree-letter currency of default_value, e.g. SAR.
click_through_dayswhole numbernononeDays after a click a conversion still counts.
view_through_dayswhole numbernononeDays after an impression a conversion still counts.
primary_for_goaltrue or falsenotruetrue = bidding optimises for it (default); false = it is only observed.
dry_runtrue or falsenotruetrue = validate only (default). false = apply, only after the user confirms.

gads_set_campaign_conversion_goals ​

Kind: write. It only previews the change unless dry_run is false. Not offered while the server is in read-only mode.

Choose what one campaign optimises for. Exactly one of three:

  • use_account_default_goals=true: back to the account's goals.
  • goals: campaign-specific goals. The ones listed are set as given and EVERY OTHER goal the campaign has is set to not biddable, so the list is the whole answer. Each must be a category and origin the campaign already has (see gads_list_conversion_actions with campaign_id); Google creates those, this cannot.
  • custom_conversion_goal_id: bid on that custom goal's conversion actions, primary or not.

Works only while an administrator has switched conversion edits on.

ArgumentTypeRequiredDefaultDescription
customer_idtextyes10-digit Google Ads account id.
campaign_idtextyesCampaign id.
use_account_default_goalstrue or falsenofalsetrue to follow the account's default goals again.
goalslist of GoalInputnononeList of {category, origin, biddable}.
custom_conversion_goal_idtextnononeId of an enabled custom conversion goal.
dry_runtrue or falsenotruetrue = validate only (default). false = apply, only after the user confirms.

gads_set_bidding_strategy ​

Kind: write. It only previews the change unless dry_run is false. Not offered while the server is in read-only mode.

Change how a campaign bids. Changing the strategy restarts Google's learning, and a strategy that bids by itself ignores keyword and ad group bids: tell the user both.

  • MANUAL_CPC: keyword and ad group bids, nothing else.
  • MAXIMIZE_CLICKS: optional cpc_bid_ceiling.
  • MAXIMIZE_CONVERSIONS: optional target_cpa. TARGET_CPA is the same with target_cpa required.
  • MAXIMIZE_CONVERSION_VALUE: optional target_roas. TARGET_ROAS is the same with it required.
  • TARGET_IMPRESSION_SHARE: impression_share_location, impression_share_pct and cpc_bid_ceiling, all three required.
  • PORTFOLIO: portfolio_strategy_id, a shared strategy that already exists in the account.

Leaving an optional target or ceiling out removes the one the campaign has. A target CPA and a ceiling are held to the installation's limits; lowering one is never refused.

ArgumentTypeRequiredDefaultDescription
customer_idtextyes10-digit Google Ads account id.
campaign_idtextyesCampaign id.
strategyone of MANUAL_CPC, MAXIMIZE_CLICKS, MAXIMIZE_CONVERSIONS, TARGET_CPA, MAXIMIZE_CONVERSION_VALUE, TARGET_ROAS, TARGET_IMPRESSION_SHARE, PORTFOLIOyesOne of the names above.
target_cpanumbernononeTarget cost per conversion, in account currency.
target_roasnumbernononeTarget return on ad spend as a ratio: 4.0 means 400%.
cpc_bid_ceilingnumbernononeThe most the strategy may bid for a click, in account currency.
impression_share_locationone of ANYWHERE_ON_PAGE, TOP_OF_PAGE, ABSOLUTE_TOP_OF_PAGEnononeANYWHERE_ON_PAGE, TOP_OF_PAGE or ABSOLUTE_TOP_OF_PAGE.
impression_share_pctnumbernononeThe share of impressions to aim for, 1 to 100.
portfolio_strategy_idtextnononeId of a portfolio bidding strategy.
enhanced_cpctrue or falsenofalseNot available: Google ended enhanced CPC for Search campaigns in March 2025.
dry_runtrue or falsenotruetrue = validate only (default). false = apply, only after the user confirms.

gads_set_ad_schedule ​

Kind: write. It only previews the change unless dry_run is false. Not offered while the server is in read-only mode.

Set the hours a campaign's ads may show, in the account's time zone. A campaign with no schedule runs at all hours; once it has one, ads show only inside it.

replace_existing=false (default) adds these entries to the schedule the campaign has, and refuses one that overlaps it. replace_existing=true removes the whole current schedule and puts this list in its place, in one transaction; with an empty list that returns the campaign to all hours. An entry cannot be edited: Google changes one by removing it and adding another.

ArgumentTypeRequiredDefaultDescription
customer_idtextyes10-digit Google Ads account id.
campaign_idtextyesCampaign id.
entrieslist of ScheduleEntryyesList of {day_of_week, start_hour, start_minute, end_hour, end_minute, bid_modifier}. Minutes are 0, 15, 30 or 45; 24:00 is the end of a day; at most six entries a day. Hours past midnight are two entries.
replace_existingtrue or falsenofalsetrue = this list becomes the whole schedule.
dry_runtrue or falsenotruetrue = validate only (default). false = apply, only after the user confirms.

gads_set_device_bid_modifier ​

Kind: write. It only previews the change unless dry_run is false. Not offered while the server is in read-only mode.

Raise or lower bids on one kind of device, for a campaign or for one ad group.

bid_modifier multiplies the bid: 1.2 is +20%, 0.8 is -20%, 1.0 is no adjustment, and 0 EXCLUDES the device - ads stop showing there. Google takes 0.1 to 10. A raise is held to the installation's limit; lowering and excluding are never refused. Under a conversion strategy Google mostly ignores device modifiers; the result says when that applies.

ArgumentTypeRequiredDefaultDescription
customer_idtextyes10-digit Google Ads account id.
deviceone of MOBILE, TABLET, DESKTOPyesMOBILE, TABLET or DESKTOP.
bid_modifiernumberyesThe multiplier, or 0 to exclude the device.
campaign_idtextnononeThe campaign to set it on (give this or ad_group_id).
ad_group_idtextnononeThe ad group to set it on.
dry_runtrue or falsenotruetrue = validate only (default). false = apply, only after the user confirms.

Objects the arguments take ​

An argument whose type is a name takes an object with these fields.

GoalInput ​

FieldTypeRequiredDefaultDescription
categoryone of DEFAULT, PAGE_VIEW, PURCHASE, SIGNUP, DOWNLOAD, ADD_TO_CART, BEGIN_CHECKOUT, SUBSCRIBE_PAID, PHONE_CALL_LEAD, IMPORTED_LEAD, SUBMIT_LEAD_FORM, BOOK_APPOINTMENT, REQUEST_QUOTE, GET_DIRECTIONS, OUTBOUND_CLICK, CONTACT, ENGAGEMENT, STORE_VISIT, STORE_SALE, QUALIFIED_LEAD, CONVERTED_LEADyesThe goal's category, e.g. SUBMIT_LEAD_FORM.
originone of WEBSITE, GOOGLE_HOSTED, APP, CALL_FROM_ADS, STORE, YOUTUBE_HOSTEDyesWhere the conversion happens, e.g. WEBSITE.
biddabletrue or falsenotrueWhether the campaign bids towards this goal.

ScheduleEntry ​

FieldTypeRequiredDefaultDescription
day_of_weekone of MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAYyes
start_hourwhole numberyes0 to 23.
start_minutewhole numberno00, 15, 30 or 45.
end_hourwhole numberyes0 to 24; 24 is the end of the day.
end_minutewhole numberno00, 15, 30 or 45.
bid_modifiernumbernononeOptional bid multiplier for these hours: 1.2 is +20%, 0.8 is -20%.