Google Ads API Required Minimum Functionality in PaidSync
For the Google Ads API Compliance team. Each row is one Required Minimum Functionality item, with where it lives in PaidSync, the exact click path or sentence a reviewer uses to reach it, the Google Ads API object it uses and the PaidSync tool behind it. Every write in PaidSync lands on an approval card before anything is applied; numbers on the card can be edited and are re-validated against Google's own ranges.
Which of Google's feature lists apply to PaidSync
Google publishes one feature list per tool category and makes the campaign-type lists conditional: "If your tool implements Smart Campaigns at all, you must implement at minimum this set of features. If your tool does not implement Smart Campaigns, then these features are not required." PaidSync creates Search, Display, Video, Shopping, Performance Max and Demand Gen campaigns, so:
- Full-service Tool Feature List: applies. 27 items, all in the table below.
- Performance Max Campaign Feature List: applies. 9 items, all in the table below.
- Standard Shopping Campaign Tool Feature List: applies. 27 items, all in the table below.
- App campaign Tool Feature List: does not apply. PaidSync creates no App campaigns: no tool sends advertising_channel_type APP or MULTI_CHANNEL.
- Hotel-only Tool Feature List: does not apply. PaidSync creates no Hotel campaigns: no tool sends advertising_channel_type HOTEL, and no Hotel Center identifier is ever set.
- Smart Campaign Feature List: does not apply. PaidSync creates no Smart campaigns: no tool sends advertising_channel_type SMART.
Creation
| Item | Functionality | Status | Where in PaidSync | API object | Tool |
|---|---|---|---|---|---|
| C.10 | Create campaign Creates the campaign itself, Search or Performance Max. Locations (C.20), languages (C.30), the ad group (C.190) and keywords (C.260) are their own entries in the same menu. |
Implemented | New chat > + > Actions > Create a campaign (Search or Performance Max) Then answer, in order: Search campaign: Name, Daily budget, Bidding strategy (optional), Objective (optional), Target CPA (optional), Target ROAS (optional), Include google search (optional), Include search partners (optional), Include display network (optional), Geo target type (optional); Performance Max campaign: Name, Daily budget, Final url, Target ROAS (optional), Target CPA (optional), Brand guidelines enabled (optional) |
campaign | create_search_campaign |
| C.20 | Enable geo targeting | Implemented | New chat > + > Actions > Set geographic targeting Then answer, in order: Set locations: Campaign ID, Target location ids, Exclude location ids (optional) |
Location Targeting | set_geo_targeting |
| C.30 | Enable language targeting | Implemented | New chat > + > Actions > Set language targeting Then answer, in order: Set languages: Campaign ID, Language ids |
campaign_criterion.language language_constant | set_language_targeting |
| C.65 | Create website / call conversion and generate code snippet | Implemented | Brand Setup > Conversions Then answer, in order: Conversion action: Name, Type, Category, Default value (optional), Always use default value (optional), Counting type (optional), Attribution model (optional) |
Conversion Tracking | create_conversion_action get_conversion_tag_snippet |
| C.75 | Callout extensions | Implemented | New chat > + > Actions > Add account callout extensions Then answer, in order: Account callouts: Callouts |
Callout feed placeholder Extension Setting Services Feed Services | add_account_callout_extensions list_account_extensions |
| C.96 | Set bidding option: Target CPA (Portfolio and Standard) | Implemented | New chat > + > Actions > Set Target CPA (standard or portfolio) Then answer, in order: Standard (this campaign only): Campaign ID, Target CPA; Portfolio: create a shared Target CPA strategy: Name, Target CPA; Portfolio: create a shared Target impression share strategy: Name, Target impression share location, Target impression share fraction, Target impression share CPC bid ceiling micros (optional); Portfolio: put this campaign on a shared strategy: Campaign ID, Bidding strategy ID |
campaign.target_cpa (Standard) bidding_strategy.target_cpa (Portfolio) | create_search_campaign create_bidding_strategy |
| C.97 | Set bidding option: Target ROAS (Portfolio and Standard) | Implemented | New chat > + > Actions > Set Target ROAS (standard or portfolio) Then answer, in order: Standard (this campaign only): Campaign ID, Target ROAS; Portfolio: create a shared Target ROAS strategy: Name, Target ROAS; Portfolio: put this campaign on a shared strategy: Campaign ID, Bidding strategy ID |
campaign.target_roas (Standard) bidding_strategy.target_roas (Portfolio) | create_search_campaign create_bidding_strategy |
| C.98 | Set bidding option: Maximize Conversions (Standard) | Implemented | New chat > + > Actions > Set Maximize Conversions Then answer, in order: Maximize Conversions: Campaign ID |
campaign.maximize_conversions (Standard) | create_search_campaign |
| C.120 | Set budget | Implemented | New chat > + > Actions > Set a campaign budget Then answer, in order: Daily budget: Campaign ID, Daily budget |
campaign_budget | create_search_campaign update_campaign_budget |
| C.190 | Create ad group | Implemented | New chat > + > Actions > Create an ad group Then answer, in order: Ad group: Campaign ID, Name, CPC bid, Ad group type (optional), Status (optional) |
ad_group | create_ad_group |
| C.260 | Add keyword | Implemented | New chat > + > Actions > Add keywords with a match type Then answer, in order: Keywords with match type: Ad group ID, Keywords |
ad_group_criterion.keyword | add_keywords |
| C.270 | Add campaign negative keywords | Implemented | New chat > + > Actions > Add campaign negative keywords Then answer, in order: Campaign level: Campaign ID, Keywords; Ad group level: Ad group ID, Keywords |
campaign_criterion.negative | add_negative_keywords |
| C.300 | Set keyword match type Google's C.300 is the match type set when a keyword is added; the same form covers C.260. Changing an existing keyword's match type is a remove and re-add, which the same entry performs. |
Implemented | New chat > + > Actions > Add keywords with a match type (broad, phrase, exact) Then answer, in order: Keywords with match type: Ad group ID, Keywords |
ad_group_criterion.keyword .match_type | add_keywords |
| C.505 shopping-only |
Set merchant identifier One Shopping form covers this: create_shopping_campaign builds the campaign, its ad group, the product ad and the root product group in one Google mutate, and enables local inventory when ticked. Google requires a Merchant Center account linked to the Google Ads account before it will accept a Shopping campaign; without the link Google refuses the create on merchant_id. |
Implemented | New chat > + > Actions > Create a Shopping campaign (set the Merchant Center ID) Then answer, in order: Shopping campaign: Name, Daily budget, Merchant ID, Feed label (optional), Campaign priority (optional), Enable local (optional), Ad group name (optional), CPC bid (optional) |
create_shopping_campaign |
|
| C.506 shopping-only |
Set sales country One Shopping form covers this: create_shopping_campaign builds the campaign, its ad group, the product ad and the root product group in one Google mutate, and enables local inventory when ticked. Google requires a Merchant Center account linked to the Google Ads account before it will accept a Shopping campaign; without the link Google refuses the create on merchant_id. |
Implemented | New chat > + > Actions > Create a Shopping campaign (set the sales country / feed label) Then answer, in order: Shopping campaign: Name, Daily budget, Merchant ID, Feed label (optional), Campaign priority (optional), Enable local (optional), Ad group name (optional), CPC bid (optional) |
create_shopping_campaign |
|
| C.510 shopping-only |
Set inventory filter Google requires a Merchant Center account linked to the Google Ads account before it will accept a Shopping campaign; without the link Google refuses the create on merchant_id. |
Implemented | New chat > + > Actions > Set a Shopping inventory filter Then answer, in order: Inventory filter: Campaign ID, Dimension, Values |
set_shopping_inventory_filter |
|
| C.520 shopping-only |
Create product ad One Shopping form covers this: create_shopping_campaign builds the campaign, its ad group, the product ad and the root product group in one Google mutate, and enables local inventory when ticked. Google requires a Merchant Center account linked to the Google Ads account before it will accept a Shopping campaign; without the link Google refuses the create on merchant_id. |
Implemented | New chat > + > Actions > Create the Shopping product ad (with its campaign) Then answer, in order: Shopping campaign with product ad: Name, Daily budget, Merchant ID, Feed label (optional), Campaign priority (optional), Enable local (optional), Ad group name (optional), CPC bid (optional) |
create_shopping_campaign |
|
| C.525 shopping-only |
Add first (root) product partition One Shopping form covers this: create_shopping_campaign builds the campaign, its ad group, the product ad and the root product group in one Google mutate, and enables local inventory when ticked. Subdividing it afterwards is M.160. Google requires a Merchant Center account linked to the Google Ads account before it will accept a Shopping campaign; without the link Google refuses the create on merchant_id. |
Implemented | New chat > + > Actions > Create the root product group (with its campaign) Then answer, in order: Shopping campaign with root product group: Name, Daily budget, Merchant ID, Feed label (optional), Campaign priority (optional), Enable local (optional), Ad group name (optional), CPC bid (optional) |
create_shopping_campaign |
|
| C.530 shopping-only |
Create local inventory ads One Shopping form covers this: create_shopping_campaign builds the campaign, its ad group, the product ad and the root product group in one Google mutate, and enables local inventory when ticked. Google requires a Merchant Center account linked to the Google Ads account before it will accept a Shopping campaign; without the link Google refuses the create on merchant_id. |
Implemented | New chat > + > Actions > Create a Shopping campaign with local inventory ads Then answer, in order: Shopping campaign with local inventory: Name, Daily budget, Merchant ID, Feed label (optional), Campaign priority (optional), Enable local (optional), Ad group name (optional), CPC bid (optional) |
create_shopping_campaign |
Management
| Item | Functionality | Status | Where in PaidSync | API object | Tool |
|---|---|---|---|---|---|
| M.10 | Edit campaign settings | Implemented | New chat > + > Actions > Edit campaign settings Then answer, in order: Settings (name, status, networks, dates): Campaign ID, Name (optional), Status (optional), Include google search (optional), Explicit partner networks (optional), Include search partners (optional), Include display network (optional), Geo target type (optional), Start date (optional), End date (optional); Budget: Campaign ID, Daily budget; Locations: Campaign ID, Target location ids, Exclude location ids (optional); Languages: Campaign ID, Language ids; Bidding (objective, bid ceiling, impression share): Campaign ID, Bidding strategy (optional), Objective (optional), CPC bid ceiling (optional), Target impression share location (optional), Target impression share percent (optional), Detach portfolio strategy (optional) |
campaign.*setting | update_campaign |
| M.96 | Edit bidding option: Target CPA (Portfolio and Standard) | Implemented | New chat > + > Actions > Edit Target CPA Then answer, in order: Standard (this campaign only): Campaign ID, Target CPA; Portfolio strategy: Strategy ID, Name (optional), Target CPA (optional) |
campaign.target_cpa (Standard) bidding_strategy.target_cpa (Portfolio) | update_campaign update_bidding_strategy |
| M.97 | Edit bidding option: Target ROAS (Portfolio and Standard) | Implemented | New chat > + > Actions > Edit Target ROAS Then answer, in order: Standard (this campaign only): Campaign ID, Target ROAS; Portfolio strategy: Strategy ID, Name (optional), Target ROAS (optional) |
campaign.target_roas (Standard) bidding_strategy.target_roas (Portfolio) | update_campaign update_bidding_strategy |
| M.98 | Edit bidding option: Maximize Conversions (Standard) | Implemented | New chat > + > Actions > Edit Maximize Conversions Then answer, in order: Maximize Conversions: Campaign ID |
campaign.maximize_conversions (Standard) | update_campaign |
| M.110 | Pause / enable / remove campaign | Implemented | New chat > + > Actions > Pause, enable or remove a campaign Then answer, in order: Pause: Campaign ID; Enable: Campaign ID; Remove (permanent): Campaign ID |
campaign.status | pause_campaign enable_campaign remove_campaign |
| M.130 | Pause / enable / remove ad | Implemented | New chat > + > Actions > Pause, enable or remove an ad Then answer, in order: Pause: Ad ID, Ad group ID (optional); Enable: Ad ID, Ad group ID (optional); Remove (permanent): Ad ID, Ad group ID (optional) |
ad_group_ad.status | pause_ad enable_ad remove_ad |
| M.140 | Pause / enable / remove keyword | Implemented | New chat > + > Actions > Pause, enable or remove a keyword Then answer, in order: Pause: Keyword resource name; Enable: Keyword resource name; Remove (permanent): Keyword resource name |
ad_group_criterion.status | pause_keyword enable_keyword remove_keyword |
| M.150 shopping-only |
Edit inventory filter Google requires a Merchant Center account linked to the Google Ads account before it will accept a Shopping campaign; without the link Google refuses the create on merchant_id. |
Implemented | New chat > + > Actions > Change a Shopping inventory filter Then answer, in order: Inventory filter: Campaign ID, Dimension, Values |
set_shopping_inventory_filter |
|
| M.160 shopping-only |
Subdivide (add product partition) Google requires a Merchant Center account linked to the Google Ads account before it will accept a Shopping campaign; without the link Google refuses the create on merchant_id. |
Implemented | New chat > + > Actions > Subdivide a product group Then answer, in order: Subdivide: Ad group ID, Parent resource name, Dimension, Values, CPC bid (optional) |
subdivide_product_partition |
|
| M.170 shopping-only |
Delete product partition Google requires a Merchant Center account linked to the Google Ads account before it will accept a Shopping campaign; without the link Google refuses the create on merchant_id. |
Implemented | New chat > + > Actions > Remove a product group Then answer, in order: Remove (permanent): Resource name |
remove_product_partition |
|
| M.190 shopping-only |
Exclude product partition Google requires a Merchant Center account linked to the Google Ads account before it will accept a Shopping campaign; without the link Google refuses the create on merchant_id. |
Implemented | New chat > + > Actions > Exclude a product group Then answer, in order: Exclude: Resource name, Exclude (optional) |
exclude_product_partition |
Reporting
| Item | Functionality | Status | Where in PaidSync | API object | Tool |
|---|---|---|---|---|---|
| R.10 | Customer | Implemented | Reports > Google Ads > Account |
metrics.clicks metrics.cost_micros metrics.impressions metrics.conversions metrics.all_conversions | get_performance_summary |
| R.20 | Campaign | Implemented | Reports > Google Ads > Campaign |
metrics.clicks metrics.cost_micros metrics.impressions metrics.conversions metrics.all_conversions | get_campaign_performance pause_campaign enable_campaign remove_campaign |
| R.40 | Ad Group Ad | Implemented | Reports > Google Ads > Ad |
metrics.clicks metrics.cost_micros metrics.impressions metrics.conversions | get_ad_performance pause_ad enable_ad remove_ad |
| R.50 | Keyword View | Implemented | Reports > Google Ads > Keyword |
metrics.clicks metrics.cost_micros metrics.impressions metrics.conversions ad_group_criterion .position_estimates .first_page_cpc_micros ad_group_criterion .position_estimates .first_position_cpc_micros | get_keyword_performance pause_keyword enable_keyword remove_keyword |
| R.70 | Search Term View | Implemented | Reports > Google Ads > Search term |
search_term_view.search_term segments.search_term_match_type metrics.clicks metrics.cost_micros metrics.impressions | get_search_terms_report |
| R.100 | Dynamic Search Ads Search Term View Dynamic Search Ads are not implemented, proven from source by qa-rmf-coverage. Stated in the reply, never claimed. |
Not applicable | dynamic_search_ads_search_term_view.search_term metrics.clicks metrics.cost_micros metrics.impressions metrics.conversions | ||
| R.110 shopping-only |
Shopping performance Google requires a Merchant Center account linked to the Google Ads account before it will accept a Shopping campaign; without the link Google refuses the create on merchant_id. |
Implemented | Reports > Google Ads > Shopping |
metrics.clicks metrics.cost_micros metrics.impressions metrics.conversion_value | get_shopping_performance |
| R.120 shopping-only |
Product partition Google requires a Merchant Center account linked to the Google Ads account before it will accept a Shopping campaign; without the link Google refuses the create on merchant_id. |
Implemented | Reports > Google Ads > Product groups Then answer, in order: Product group tree: Ad group ID, Date range (optional) |
metrics.clicks metrics.cost_micros metrics.impressions metrics.conversion_value | list_product_partitions |
| R.130 | Bidding Strategy | Implemented | Reports > Google Ads > Bidding strategy |
bidding_strategy.type metrics.clicks metrics.cost_micros metrics.cost_per_conversion metrics.impressions metrics.average_cpc metrics.conversions | list_bidding_strategies |
Cross-cutting obligations
| Item | Functionality | Status | Where in PaidSync | API object | Tool |
|---|---|---|---|---|---|
| X.1 cross-cutting |
Recommendations must be presented as "Google Ads Recommendations" | Implemented | Reports > Google Ads > Google Ads Recommendations |
list_recommendations |
|
| X.2 cross-cutting |
Users can view AND apply all surfaced recommendations | Implemented | Reports > Google Ads > Google Ads Recommendations Then answer, in order: Apply: Recommendation ID |
list_recommendations apply_recommendation |
|
| X.3 cross-cutting |
Bid adjustments offered as bid adjustments, never as an exclusion mechanism, across the full range | Implemented | New chat > + > Actions > Set a bid adjustment Then answer, in order: By device: Campaign ID, Adjustments; By location: Campaign ID, Location ID, Bid modifier |
set_device_bid_adjustment set_location_bid_adjustment |
|
| X.4 cross-cutting |
Users can review AND EDIT a change before it is set Met by the product itself, not by a Google Ads API call. |
Implemented | Approval card, wherever a change is proposed |
||
| X.5 cross-cutting |
Account disassociation within 3 business days Met by the product itself, not by a Google Ads API call. |
Implemented | Brand Setup > Connections |
||
| X.6 cross-cutting |
Reporting can be filtered by date range Met by the product itself, not by a Google Ads API call. |
Implemented | Reports > Google Ads > Account |
Not yet implemented or not applicable
- R.100 Dynamic Search Ads Search Term View: Not applicable (Dynamic Search Ads are not implemented, proven from source by qa-rmf-coverage. Stated in the reply, never claimed.)