Manage your email notification preferences for Merchant Center accounts
Stay organized with collectionsSave and categorize content based on your preferences.
This guide explains how to manage your email notification preferences of your
Merchant Center account for non-mandatory emails using Merchant API.
Your email preferences are specific to each Merchant Center account you have
access to. If you manage multiple accounts, you can set up different preferences
for each of them. The Merchant API lets you retrieve your current settings and
update them. For more information about managing email preferences through the
Merchant Center interface, seeChange your Merchant Center email
preferences.
The Merchant API only supports managing preferences for "News and tips" emails.
Special considerations
Authenticated user only: You can only get or update email preferences
for the user account that is authenticated for the API call. You must
specify this user's email address in the request path (for example,user@email.com) or use themealias.
Advanced accounts: If you are an advanced account user, your email
preferences are set at the advanced account level and apply to the advanced
account itself and all its sub-accounts. When using the API, advanced
account users should specify the advanced account ID to manage their
preferences.
Service accounts: Service accounts don't receive notifications even if
email preferences are set for them.
UNCONFIRMEDstate: TheUNCONFIRMEDopt-in state for an email
preference can only be set by the server. You cannot set a preference toUNCONFIRMEDusing the API. Attempting to set this preference results in an
error. TheUNCONFIRMEDstate indicates that a confirmation email has been
sent to a user who has opted in, but they haven't yet clicked the
confirmation link.
Check your Merchant Center email preferences
To see your current email notification settings for a specific Merchant Center
account, use theGetEmailPreferencesmethod. You'll need to provide your Merchant Center account ID and use the email
address for the user or use themealias to indicate the authenticated user.
This request retrieves theEmailPreferencesresource, which shows your opt-in status for available notification categories,
such asnews_and_tips.
GET https://merchantapi.googleapis.com/accounts/v1/accounts/{ACCOUNT_ID}/users/{EMAIL_ADDRESS}/emailPreferences
A successful request returns theEmailPreferencesresource showing your
current settings.
This code sample shows how to retrieve the email preferences for your Merchant
Center account.
Java
importcom.google.api.gax.core.FixedCredentialsProvider;importcom.google.auth.oauth2.GoogleCredentials;importcom.google.shopping.merchant.accounts.v1.EmailPreferences;importcom.google.shopping.merchant.accounts.v1.EmailPreferencesName;importcom.google.shopping.merchant.accounts.v1.EmailPreferencesServiceClient;importcom.google.shopping.merchant.accounts.v1.EmailPreferencesServiceSettings;importcom.google.shopping.merchant.accounts.v1.GetEmailPreferencesRequest;importshopping.merchant.samples.utils.Authenticator;importshopping.merchant.samples.utils.Config;/** This class demonstrates how to get the email preferences of a Merchant Center account. */publicclassGetEmailPreferencesSample{publicstaticvoidgetEmailPreferences(Configconfig,Stringemail)throwsException{// Obtains OAuth token based on the user's configuration.GoogleCredentialscredential=newAuthenticator().authenticate();// Creates service settings using the credentials retrieved above.EmailPreferencesServiceSettingsemailPreferencesServiceSettings=EmailPreferencesServiceSettings.newBuilder().setCredentialsProvider(FixedCredentialsProvider.create(credential)).build();// Creates EmailPreferences name to identify the EmailPreferences.Stringname=EmailPreferencesName.newBuilder().setAccount(config.getAccountId().toString()).setEmail(email).build().toString();// Calls the API and catches and prints any network failures/errors.try(EmailPreferencesServiceClientemailPreferencesServiceClient=EmailPreferencesServiceClient.create(emailPreferencesServiceSettings)){// The name has the format: accounts/{account}/users/{user}/emailPreferencesGetEmailPreferencesRequestrequest=GetEmailPreferencesRequest.newBuilder().setName(name).build();System.out.println("Sending get EmailPreferences request:");EmailPreferencesresponse=emailPreferencesServiceClient.getEmailPreferences(request);System.out.println("Retrieved EmailPreferences below");System.out.println(response);}catch(Exceptione){System.out.println(e);}}publicstaticvoidmain(String[]args)throwsException{Configconfig=Config.load();// The email address of this user. If you want to get the user information// Of the user making the Content API request, you can also use "me" instead// Of an email address.Stringemail="testUser@gmail.com";// String email = "me";getEmailPreferences(config,email);}}
use Google\ApiCore\ApiException;use Google\Shopping\Merchant\Accounts\V1\Client\EmailPreferencesServiceClient;use Google\Shopping\Merchant\Accounts\V1\GetEmailPreferencesRequest;/*** This class demonstrates how to get the email preferences of a Merchant Center account.*/class GetEmailPreferences{/*** Gets the email preferences of a Merchant Center account.** @param array $config* The configuration data used for authentication and getting the acccount ID.* @param string $email The email address of this user. If you want to get the user information* of the user making the Merchant API request, you can also use "me" instead* of an email address.** @return void*/public static function getEmailPreferencesSample($config, $email): void{// Gets the OAuth credentials to make the request.$credentials = Authentication::useServiceAccountOrTokenFile();// Creates options config containing credentials for the client to use.$options = ['credentials' => $credentials];// Creates a client.$emailPreferencesServiceClient = new EmailPreferencesServiceClient($options);// Creates EmailPreferences name to identify the EmailPreferences.// The name has the format: accounts/{account}/users/{user}/emailPreferences$name = "accounts/" . $config['accountId'] . "/users/" . $email . "/emailPreferences";// Calls the API and catches and prints any network failures/errors.try {$request = (new GetEmailPreferencesRequest())->setName($name);print "Sending get EmailPreferences request:\n";$response = $emailPreferencesServiceClient->getEmailPreferences($request);print "Retrieved EmailPreferences below\n";print_r($response);} catch (ApiException $e) {print $e->getMessage();}}/*** Helper to execute the sample.** @return void*/public function callSample(): void{$config = Config::generateConfig();// The email address of this user. If you want to get the user information// Of the user making the Merchant API request, you can also use "me" instead// Of an email address.// $email = "testUser@gmail.com";$email = "me";self::getEmailPreferencesSample($config, $email);}}// Run the script$sample = new GetEmailPreferences();$sample->callSample();
fromexamples.authenticationimportconfigurationfromexamples.authenticationimportgenerate_user_credentialsfromgoogle.shopping.merchant_accounts_v1importEmailPreferencesServiceClientfromgoogle.shopping.merchant_accounts_v1importGetEmailPreferencesRequest_ACCOUNT=configuration.Configuration().read_merchant_info()defget_email_preferences(email_address):"""Gets the email preferences of a Merchant Center account."""# Gets OAuth Credentials.credentials=generate_user_credentials.main()# Creates a client.client=EmailPreferencesServiceClient(credentials=credentials)# Creates EmailPreferences name to identify the EmailPreferences.name=("accounts/"+_ACCOUNT+"/users/"+email_address+"/emailPreferences")# Creates the request.request=GetEmailPreferencesRequest(name=name)# Makes the request and catches and prints any error messages.try:response=client.get_email_preferences(request=request)print("Retrieved EmailPreferences below")print(response)exceptRuntimeErrorase:print(e)if__name__=="__main__":# The email address of this user. If you want to get the user information# Of the user making the Content API request, you can also use "me" instead# Of an email address.# email = "testUser@gmail.com"email="me"get_email_preferences(email)
To change your email notification preferences, such as opting in or out of "News
and tips" emails, use theUpdateEmailPreferencesmethod.
In your request, you'll provide the Merchant Center account ID and use your
email address (or themealias) for the user email. The request body should
contain theEmailPreferencesobject with the selectedopt_in_statefor thenews_and_tipsfield. You must
also specifynews_and_tipsin theupdate_maskquery parameter to indicate
which preference you are changing.
This action updates the email preferences for the authenticated user for the
specified Merchant Center account. For example, settingnews_and_tipstoOPTED_OUTstops you from receiving "News and tips" emails for that account.
This code sample shows how to update the email preferences for your Merchant
Center account, for example to opt-in to "News and tips" emails.
Java
importcom.google.api.gax.core.FixedCredentialsProvider;importcom.google.auth.oauth2.GoogleCredentials;importcom.google.protobuf.FieldMask;importcom.google.shopping.merchant.accounts.v1.EmailPreferences;importcom.google.shopping.merchant.accounts.v1.EmailPreferences.OptInState;importcom.google.shopping.merchant.accounts.v1.EmailPreferencesName;importcom.google.shopping.merchant.accounts.v1.EmailPreferencesServiceClient;importcom.google.shopping.merchant.accounts.v1.EmailPreferencesServiceSettings;importcom.google.shopping.merchant.accounts.v1.UpdateEmailPreferencesRequest;importshopping.merchant.samples.utils.Authenticator;importshopping.merchant.samples.utils.Config;/*** This class demonstrates how to update a EmailPreferences to OPT_IN to News and Tips. This service* only permits retrieving and updating email preferences for the authenticated user.*/publicclassUpdateEmailPreferencesSample{publicstaticvoidupdateEmailPreferences(Configconfig,Stringemail)throwsException{GoogleCredentialscredential=newAuthenticator().authenticate();EmailPreferencesServiceSettingsemailPreferencesServiceSettings=EmailPreferencesServiceSettings.newBuilder().setCredentialsProvider(FixedCredentialsProvider.create(credential)).build();// Creates EmailPreferences name to identify EmailPreferences.Stringname=EmailPreferencesName.newBuilder().setAccount(config.getAccountId().toString()).setEmail(email).build().toString();// Create a EmailPreferences with the updated fields.EmailPreferencesemailPreferences=EmailPreferences.newBuilder().setName(name).setNewsAndTips(OptInState.OPTED_IN).build();FieldMaskfieldMask=FieldMask.newBuilder().addPaths("news_and_tips").build();try(EmailPreferencesServiceClientemailPreferencesServiceClient=EmailPreferencesServiceClient.create(emailPreferencesServiceSettings)){UpdateEmailPreferencesRequestrequest=UpdateEmailPreferencesRequest.newBuilder().setEmailPreferences(emailPreferences).setUpdateMask(fieldMask).build();System.out.println("Sending Update EmailPreferences request");EmailPreferencesresponse=emailPreferencesServiceClient.updateEmailPreferences(request);System.out.println("Updated EmailPreferences Name below");System.out.println(response.getName());}catch(Exceptione){System.out.println(e);}}publicstaticvoidmain(String[]args)throwsException{Configconfig=Config.load();// The email address of this user. If you want to get the user information// Of the user making the Content API request, you can also use "me" instead// Of an email address.// String email = "testUser@gmail.com";Stringemail="me";updateEmailPreferences(config,email);}}
use Google\ApiCore\ApiException;use Google\Protobuf\FieldMask;use Google\Shopping\Merchant\Accounts\V1\Client\EmailPreferencesServiceClient;use Google\Shopping\Merchant\Accounts\V1\EmailPreferences;use Google\Shopping\Merchant\Accounts\V1\EmailPreferences\OptInState;use Google\Shopping\Merchant\Accounts\V1\UpdateEmailPreferencesRequest;/*** This class demonstrates how to update a EmailPreferences to OPT_IN to News and Tips. This service* only permits retrieving and updating email preferences for the authenticated user.*/class UpdateEmailPreferences{/*** Updates email preferences to OPT_IN to News and Tips.** @param array $config* The configuration data used for authentication and getting the acccount ID.* @param string $email The email address of this user. If you want to get the user information* of the user making the Merchant API request, you can also use "me" instead* of an email address.** @return void*/public static function updateEmailPreferencesSample($config, $email): void{// Gets the OAuth credentials to make the request.$credentials = Authentication::useServiceAccountOrTokenFile();// Creates options config containing credentials for the client to use.$options = ['credentials' => $credentials];// Creates a client.$emailPreferencesServiceClient = new EmailPreferencesServiceClient($options);// Creates EmailPreferences name to identify the EmailPreferences.// The name has the format: accounts/{account}/users/{user}/emailPreferences$name = "accounts/" . $config['accountId'] . "/users/" . $email . "/emailPreferences";// Create a EmailPreferences with the updated fields.$emailPreferences = (new EmailPreferences())->setName($name)->setNewsAndTips(OptInState::OPTED_OUT);$fieldMask = (new FieldMask())->setPaths(['news_and_tips']);try {$request = (new UpdateEmailPreferencesRequest())->setEmailPreferences($emailPreferences)->setUpdateMask($fieldMask);print "Sending Update EmailPreferences request\n";$response = $emailPreferencesServiceClient->updateEmailPreferences($request);print "Updated EmailPreferences Name below\n";print $response->getName() . "\n";} catch (ApiException $e) {print $e->getMessage();}}/*** Helper to execute the sample.** @return void*/public function callSample(): void{$config = Config::generateConfig();// The email address of this user. If you want to get the user information// Of the user making the Merchant API request, you can also use "me" instead// Of an email address.// $email = "testUser@gmail.com";$email = "me";self::updateEmailPreferencesSample($config, $email);}}// Run the script$sample = new UpdateEmailPreferences();$sample->callSample();
fromexamples.authenticationimportconfigurationfromexamples.authenticationimportgenerate_user_credentialsfromgoogle.protobufimportfield_mask_pb2fromgoogle.shopping.merchant_accounts_v1importEmailPreferencesfromgoogle.shopping.merchant_accounts_v1importEmailPreferencesServiceClientfromgoogle.shopping.merchant_accounts_v1importUpdateEmailPreferencesRequestFieldMask=field_mask_pb2.FieldMask_ACCOUNT=configuration.Configuration().read_merchant_info()defupdate_email_preferences(email_address):"""Updates a EmailPreferences to OPT_IN to News and Tips."""# Gets OAuth Credentials.credentials=generate_user_credentials.main()# Creates a client.client=EmailPreferencesServiceClient(credentials=credentials)# Creates EmailPreferences name to identify EmailPreferences.name=("accounts/"+_ACCOUNT+"/users/"+email_address+"/emailPreferences")# Create a EmailPreferences with the updated fields.email_preferences=EmailPreferences(name=name,news_and_tips=EmailPreferences.OptInState.OPTED_IN)# Create field maskfield_mask=FieldMask(paths=["news_and_tips"])# Creates the request.request=UpdateEmailPreferencesRequest(email_preferences=email_preferences,update_mask=field_mask)# Makes the request and catches and prints any error messages.try:response=client.update_email_preferences(request=request)print("Updated EmailPreferences Name below")print(response.name)exceptRuntimeErrorase:print(e)if__name__=="__main__":# The email address of this user. If you want to get the user information# of the user making the Content API request, you can also use "me" instead# of an email address.# email = "testUser@gmail.com"email="me"update_email_preferences(email)
[[["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."],[[["\u003cp\u003eThis guide explains how to manage Merchant Center email notifications using the \u003ccode\u003eEmailPreferences\u003c/code\u003e resource and the Merchant API.\u003c/p\u003e\n"],["\u003cp\u003eYou can control which email notifications your account users receive by opting in or out for specific notification types.\u003c/p\u003e\n"],["\u003cp\u003eTo manage email notifications, you'll need the user's email address and the merchant ID.\u003c/p\u003e\n"],["\u003cp\u003eUse \u003ccode\u003eaccounts.v1beta.accounts.users.updateEmailPreference\u003c/code\u003e to update notification settings and \u003ccode\u003eaccounts.v1beta.accounts.users.getEmailPreferences\u003c/code\u003e to view existing settings.\u003c/p\u003e\n"]]],[],null,[]]