Stay organized with collectionsSave and categorize content based on your preferences.
Automatic improvementsare a set of features that allow Google to automatically update your products,
images, and shipping estimates based on your website's landing page. Enabling
these automatic improvements can lead to an improved user experience, more
traffic to your products, and higher conversion rates.
itemUpdates(automatic item
updates)
andimageImprovements(automatic image
improvements)
settings can be inherited by sub-accounts from their advanced account.
Sub-account-specific settings override inherited ones.
shippingImprovementsare manageable only through the API, not through
the Merchant Center UI.
Update behavior:
When updating settings foritemUpdates,imageImprovements, orshippingImprovements, the API performs a full replacement of the
specified top-level component (e.g., the entireitemUpdatesobject).
Verify that your update request includes all intended sub-fields for the
components you intend to modify, as specified by theupdate_mask.
Retrieve the current automatic improvement settings for your Merchant Center
account. This includes settings for item updates (price, availability,
condition), image improvements, and shipping improvements. The response shows
both the settings configured directly on the account (if any) and the effective
settings, which consider inheritance from an advanced account for item and image
updates.
GET https://merchantapi.googleapis.com/accounts/v1/accounts/<var>ACCOUNT_ID</var>/automaticImprovements
A successful request returns anAutomaticImprovementsresource in the response
body. The response shows both the settings configured directly on the account
and the effective settings. Theeffectivesettings are what is applied to the
account and may be inherited from a higher-level account (such as a multi-client
account) if not explicitly set.
{"name":"accounts/12345/automaticImprovements",// Example 1: Settings are directly configured on the account."itemUpdates":{// When `accountItemUpdatesSettings` is present, `effective` values match the configured ones."accountItemUpdatesSettings":{"allowPriceUpdates":true,"allowAvailabilityUpdates":true,"allowStrictAvailabilityUpdates":false,"allowConditionUpdates":true},"effectiveAllowPriceUpdates":true,"effectiveAllowAvailabilityUpdates":true,"effectiveAllowStrictAvailabilityUpdates":false,"effectiveAllowConditionUpdates":true},// Example 2: Settings are inherited from a parent account."imageImprovements":{// `accountImageImprovementsSettings` is omitted, thus the `effective` value of `true` is inherited."effectiveAllowAutomaticImageImprovements":true},"shippingImprovements":{"accountShippingImprovementsSettings":{"allowShippingImprovements":true},"effectiveAllowShippingImprovements":true}}
This example shows how to retrieve the automatic improvement settings for a
Merchant Center account.
Java
importcom.google.api.gax.core.FixedCredentialsProvider;importcom.google.auth.oauth2.GoogleCredentials;importcom.google.shopping.merchant.accounts.v1.AutomaticImprovements;importcom.google.shopping.merchant.accounts.v1.AutomaticImprovementsName;importcom.google.shopping.merchant.accounts.v1.AutomaticImprovementsServiceClient;importcom.google.shopping.merchant.accounts.v1.AutomaticImprovementsServiceSettings;importcom.google.shopping.merchant.accounts.v1.GetAutomaticImprovementsRequest;importshopping.merchant.samples.utils.Authenticator;importshopping.merchant.samples.utils.Config;/** This class demonstrates how to get the automatic improvements of a Merchant Center account. */publicclassGetAutomaticImprovementsSample{publicstaticvoidgetAutomaticImprovements(Configconfig)throwsException{// Obtains OAuth token based on the user's configuration.GoogleCredentialscredential=newAuthenticator().authenticate();// Creates service settings using the credentials retrieved above.AutomaticImprovementsServiceSettingsautomaticImprovementsServiceSettings=AutomaticImprovementsServiceSettings.newBuilder().setCredentialsProvider(FixedCredentialsProvider.create(credential)).build();// Creates AutomaticImprovements name to identify the AutomaticImprovements.Stringname=AutomaticImprovementsName.newBuilder().setAccount(config.getAccountId().toString()).build().toString();// Calls the API and catches and prints any network failures/errors.try(AutomaticImprovementsServiceClientautomaticImprovementsServiceClient=AutomaticImprovementsServiceClient.create(automaticImprovementsServiceSettings)){// The name has the format: accounts/{account}/automaticImprovementsGetAutomaticImprovementsRequestrequest=GetAutomaticImprovementsRequest.newBuilder().setName(name).build();System.out.println("Sending get AutomaticImprovements request:");AutomaticImprovementsresponse=automaticImprovementsServiceClient.getAutomaticImprovements(request);System.out.println("Retrieved AutomaticImprovements below");System.out.println(response);}catch(Exceptione){System.out.println(e);}}publicstaticvoidmain(String[]args)throwsException{Configconfig=Config.load();getAutomaticImprovements(config);}}
use Google\ApiCore\ApiException;use Google\Shopping\Merchant\Accounts\V1\Client\AutomaticImprovementsServiceClient;use Google\Shopping\Merchant\Accounts\V1\GetAutomaticImprovementsRequest;/*** This class demonstrates how to get the automatic improvements of a Merchant Center account.*/class GetAutomaticImprovementsSample{/*** Helper function to construct the resource name for AutomaticImprovements.** @param string $accountId The Merchant Center account ID.* @return string The resource name in the format: accounts/{account}/automaticImprovements*/private static function getAutomaticImprovementsName(string $accountId): string{return sprintf("accounts/%s/automaticImprovements", $accountId);}/*** Retrieves the automatic improvements settings for a given Merchant Center account.** @param array $config The configuration array containing the account ID.* @return void*/public static function getAutomaticImprovementsSample(array $config): void{// Obtains OAuth credentials for authentication.$credentials = Authentication::useServiceAccountOrTokenFile();// Contructs an options array for the client.$options = ['credentials' => $credentials];// Creates a new AutomaticImprovementsServiceClient.$automaticImprovementsServiceClient = new AutomaticImprovementsServiceClient($options);// Constructs the full resource name for the automatic improvements settings.$name = self::getAutomaticImprovementsName($config['accountId']);// Creates the GetAutomaticImprovementsRequest.$request = new GetAutomaticImprovementsRequest(['name' => $name]);printf("Sending get AutomaticImprovements request:%s", PHP_EOL);try {// Makes the API call to retrieve automatic improvements settings.$response = $automaticImprovementsServiceClient->getAutomaticImprovements($request);printf("Retrieved AutomaticImprovements below%s", PHP_EOL);// Prints the response in JSON format for readability.print_r($response);} catch (ApiException $e) {printf("ApiException was thrown: %s%s", $e->getMessage(), PHP_EOL);}}/*** Helper to execute the sample.** @return void*/public function callSample(): void{$config = Config::generateConfig();self::getAutomaticImprovementsSample($config);}}// Runs the script.$sample = new GetAutomaticImprovementsSample();$sample->callSample();
"""Gets the automatic improvements settings for a Merchant Center account."""fromexamples.authenticationimportconfigurationfromexamples.authenticationimportgenerate_user_credentialsfromgoogle.shopping.merchant_accounts_v1importAutomaticImprovementsServiceClientfromgoogle.shopping.merchant_accounts_v1importGetAutomaticImprovementsRequest# Fetches the account ID from the config file.# This is a placeholder for your actual account ID._ACCOUNT_ID=configuration.Configuration().read_merchant_info()# Construct the resource name for AutomaticImprovements.# The format is accounts/{account}/automaticImprovements_NAME=f"accounts/{_ACCOUNT_ID}/automaticImprovements"defget_automatic_improvements_sample():"""Gets the automatic improvements settings for a Merchant Center account."""# Generates OAuth 2.0 credentials for authentication.credentials=generate_user_credentials.main()# Creates a client for the AutomaticImprovementsService.client=AutomaticImprovementsServiceClient(credentials=credentials)# Creates the request to get automatic improvements.# The name parameter is the resource name of the automatic improvements# settings.request=GetAutomaticImprovementsRequest(name=_NAME)print("Sending get AutomaticImprovements request:")# Makes the API request to get automatic improvements.try:response=client.get_automatic_improvements(request=request)print("Retrieved AutomaticImprovements below")print(response)exceptRuntimeErrorase:print(f"An API error occurred:{e}")if__name__=="__main__":get_automatic_improvements_sample()
Modify the automatic improvement settings for your Merchant Center account.
Provide theAutomaticImprovementsobject with the intended state foritemUpdates,imageImprovements, andshippingImprovements. Use theupdate_maskquery parameter to specify which fields you are updating (for
example, to update all provided settings, useupdate_mask=*).
When you update settings, you can either overwrite the existing configuration or
clear it to inherit settings from a parent account.
To overwrite a setting:Include the top-level field name (for example,itemUpdatesorimageImprovements) in theupdate_maskand provide its
new configuration in the request body. This action replaces any existing
settings for that field on the sub-account.
To clear a setting and inherit from a parent:Include the field name in
theupdate_mask, but omit the field entirely from the request body. This
removes the specific configuration from the sub-account, causing it to
inherit the setting from its parent. If the parent account also has no
setting configured, the system default applies.
The following example demonstrates how to clear theimageImprovementssettings
for a sub-account, causing it to inherit them from its parent account, while
simultaneously updating theitemUpdatessettings.
This example demonstrates how to update the automatic improvements settings,
enabling all available automatic improvements for a Merchant Center account. Theupdate_maskis set to*, meaning all fields provided in theautomatic_improvementsobject in the request body are applied. The response
shows the updated settings, with both the configured and effective values.
Java
importcom.google.api.gax.core.FixedCredentialsProvider;importcom.google.auth.oauth2.GoogleCredentials;importcom.google.protobuf.FieldMask;importcom.google.shopping.merchant.accounts.v1.AutomaticImageImprovements;importcom.google.shopping.merchant.accounts.v1.AutomaticImageImprovements.ImageImprovementsAccountLevelSettings;importcom.google.shopping.merchant.accounts.v1.AutomaticImprovements;importcom.google.shopping.merchant.accounts.v1.AutomaticImprovementsName;importcom.google.shopping.merchant.accounts.v1.AutomaticImprovementsServiceClient;importcom.google.shopping.merchant.accounts.v1.AutomaticImprovementsServiceSettings;importcom.google.shopping.merchant.accounts.v1.AutomaticItemUpdates;importcom.google.shopping.merchant.accounts.v1.AutomaticItemUpdates.ItemUpdatesAccountLevelSettings;importcom.google.shopping.merchant.accounts.v1.AutomaticShippingImprovements;importcom.google.shopping.merchant.accounts.v1.UpdateAutomaticImprovementsRequest;importshopping.merchant.samples.utils.Authenticator;importshopping.merchant.samples.utils.Config;/** This class demonstrates how to update AutomaticImprovements to be enabled. */publicclassUpdateAutomaticImprovementsSample{publicstaticvoidupdateAutomaticImprovements(Configconfig)throwsException{GoogleCredentialscredential=newAuthenticator().authenticate();AutomaticImprovementsServiceSettingsautomaticImprovementsServiceSettings=AutomaticImprovementsServiceSettings.newBuilder().setCredentialsProvider(FixedCredentialsProvider.create(credential)).build();// Creates AutomaticImprovements name to identify AutomaticImprovements.Stringname=AutomaticImprovementsName.newBuilder().setAccount(config.getAccountId().toString()).build().toString();// Create AutomaticImprovements with the updated fields.AutomaticImprovementsautomaticImprovements=AutomaticImprovements.newBuilder().setName(name).setItemUpdates(AutomaticItemUpdates.newBuilder().setAccountItemUpdatesSettings(ItemUpdatesAccountLevelSettings.newBuilder().setAllowPriceUpdates(true).setAllowAvailabilityUpdates(true).setAllowStrictAvailabilityUpdates(true).setAllowConditionUpdates(true).build()).build()).setImageImprovements(AutomaticImageImprovements.newBuilder().setAccountImageImprovementsSettings(ImageImprovementsAccountLevelSettings.newBuilder().setAllowAutomaticImageImprovements(true).build()).build()).setShippingImprovements(AutomaticShippingImprovements.newBuilder().setAllowShippingImprovements(true).build()).build();FieldMaskfieldMask=FieldMask.newBuilder().addPaths("*").build();try(AutomaticImprovementsServiceClientautomaticImprovementsServiceClient=AutomaticImprovementsServiceClient.create(automaticImprovementsServiceSettings)){UpdateAutomaticImprovementsRequestrequest=UpdateAutomaticImprovementsRequest.newBuilder().setAutomaticImprovements(automaticImprovements).setUpdateMask(fieldMask).build();System.out.println("Sending Update AutomaticImprovements request");AutomaticImprovementsresponse=automaticImprovementsServiceClient.updateAutomaticImprovements(request);System.out.println("Updated AutomaticImprovements Name below");System.out.println(response.getName());}catch(Exceptione){System.out.println(e);}}publicstaticvoidmain(String[]args)throwsException{Configconfig=Config.load();updateAutomaticImprovements(config);}}
use Google\ApiCore\ApiException;use Google\Protobuf\FieldMask;use Google\Shopping\Merchant\Accounts\V1beta\AutomaticImageImprovements;use Google\Shopping\Merchant\Accounts\V1beta\AutomaticImageImprovements\ImageImprovementsAccountLevelSettings;use Google\Shopping\Merchant\Accounts\V1beta\AutomaticImprovements;use Google\Shopping\Merchant\Accounts\V1beta\Client\AutomaticImprovementsServiceClient;use Google\Shopping\Merchant\Accounts\V1beta\AutomaticItemUpdates;use Google\Shopping\Merchant\Accounts\V1beta\AutomaticItemUpdates\ItemUpdatesAccountLevelSettings;use Google\Shopping\Merchant\Accounts\V1beta\AutomaticShippingImprovements;use Google\Shopping\Merchant\Accounts\V1beta\UpdateAutomaticImprovementsRequest;/*** This class demonstrates how to update AutomaticImprovements to be enabled.*/class UpdateAutomaticImprovementsSample{/*** Helper function to construct the resource name for AutomaticImprovements.** @param string $accountId The Merchant Center account ID.* @return string The resource name in the format: accounts/{account}/automaticImprovements*/private static function getAutomaticImprovementsName(string $accountId): string{return sprintf("accounts/%s/automaticImprovements", $accountId);}/*** Updates the automatic improvements settings for a Merchant Center account.* This sample enables all automatic improvements.** @param array $config The configuration array containing the account ID.* @return void*/public static function updateAutomaticImprovementsSample(array $config): void{// Obtains OAuth credentials for authentication.$credentials = Authentication::useServiceAccountOrTokenFile();// Contructs an options array for the client.$options = ['credentials' => $credentials];// Creates a new AutomaticImprovementsServiceClient.$automaticImprovementsServiceClient = new AutomaticImprovementsServiceClient($options);// Constructs the full resource name for the automatic improvements settings.$name = self::getAutomaticImprovementsName($config['accountId']);// Prepares the AutomaticImprovements object with all settings enabled.$automaticImprovements = new AutomaticImprovements(['name' => $name,'item_updates' => new AutomaticItemUpdates(['account_item_updates_settings' => new ItemUpdatesAccountLevelSettings(['allow_price_updates' => true,'allow_availability_updates' => true,'allow_strict_availability_updates' => true,'allow_condition_updates' => true])]),'image_improvements' => new AutomaticImageImprovements(['account_image_improvements_settings' => new ImageImprovementsAccountLevelSettings(['allow_automatic_image_improvements' => true])]),'shipping_improvements' => new AutomaticShippingImprovements(['allow_shipping_improvements' => true])]);// Creates a FieldMask to indicate that all paths provided in $automaticImprovements// should be updated. The "*" path means to replace all updatable fields.$fieldMask = new FieldMask(['paths' => ['*']]);// Creates the UpdateAutomaticImprovementsRequest.$request = new UpdateAutomaticImprovementsRequest(['automatic_improvements' => $automaticImprovements,'update_mask' => $fieldMask]);printf("Sending Update AutomaticImprovements request%s", PHP_EOL);try {// Makes the API call to update automatic improvements settings.$response = $automaticImprovementsServiceClient->updateAutomaticImprovements($request);printf("Updated AutomaticImprovements Name below%s", PHP_EOL);printf("%s%s", $response->getName(), PHP_EOL);} catch (ApiException $e) {printf("ApiException was thrown: %s%s", $e->getMessage(), PHP_EOL);}}/*** Helper to execute the sample.** @return void*/public function callSample(): void{$config = Config::generateConfig();self::updateAutomaticImprovementsSample($config);}}// Runs the script.$sample = new UpdateAutomaticImprovementsSample();$sample->callSample();
"""Updates the automatic improvements settings for a Merchant Center account."""fromexamples.authenticationimportconfigurationfromexamples.authenticationimportgenerate_user_credentialsfromgoogle.protobufimportfield_mask_pb2fromgoogle.shopping.merchant_accounts_v1importAutomaticImageImprovementsfromgoogle.shopping.merchant_accounts_v1importAutomaticImprovementsfromgoogle.shopping.merchant_accounts_v1importAutomaticImprovementsServiceClientfromgoogle.shopping.merchant_accounts_v1importAutomaticItemUpdatesfromgoogle.shopping.merchant_accounts_v1importAutomaticShippingImprovementsfromgoogle.shopping.merchant_accounts_v1importUpdateAutomaticImprovementsRequest# Fetches the Merchant Center account ID from the configuration._ACCOUNT_ID=configuration.Configuration().read_merchant_info()# The resource name for the AutomaticImprovements settings of the account.# Format: accounts/{account}/automaticImprovements_AUTOMATIC_IMPROVEMENTS_RESOURCE_NAME=(f"accounts/{_ACCOUNT_ID}/automaticImprovements")defupdate_automatic_improvements_settings():"""Updates automatic improvements settings for a Merchant Center account to enable all available automatic improvements."""# Generates OAuth 2.0 credentials for authenticating with the API.credentials=generate_user_credentials.main()# Creates a client for the AutomaticImprovementsService.client=AutomaticImprovementsServiceClient(credentials=credentials)# Prepares the AutomaticImprovements object with all improvements enabled.# The 'name' field specifies the AutomaticImprovements resource to update.automatic_improvements_config=AutomaticImprovements(name=_AUTOMATIC_IMPROVEMENTS_RESOURCE_NAME,item_updates=AutomaticItemUpdates(account_item_updates_settings=AutomaticItemUpdates.ItemUpdatesAccountLevelSettings(allow_price_updates=True,allow_availability_updates=True,allow_strict_availability_updates=True,allow_condition_updates=True,)),image_improvements=AutomaticImageImprovements(account_image_improvements_settings=AutomaticImageImprovements.ImageImprovementsAccountLevelSettings(allow_automatic_image_improvements=True)),shipping_improvements=AutomaticShippingImprovements(allow_shipping_improvements=True),)# Creates a field mask to specify which fields of the# AutomaticImprovements resource should be updated.# Using "*" indicates that all fields provided in the# automatic_improvements_config object should be updated.field_mask=field_mask_pb2.FieldMask(paths=["*"])# Creates the update request, including the configured# AutomaticImprovements object and the field mask.request=UpdateAutomaticImprovementsRequest(automatic_improvements=automatic_improvements_config,update_mask=field_mask,)# Sends the request to update automatic improvements and handles the response.try:print("Sending Update AutomaticImprovements request")response=client.update_automatic_improvements(request=request)print("Updated AutomaticImprovements Name below")print(response.name)exceptRuntimeErrorase:# Catches and prints any errors that occur during the API call.print(e)if__name__=="__main__":update_automatic_improvements_settings()
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-07 UTC."],[],[],null,[]]