Manage your email notification preferences for Merchant Center accounts

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, see Change 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 the me alias.
  • 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.
  • UNCONFIRMED state: The UNCONFIRMED opt-in state for an email preference can only be set by the server. You cannot set a preference to UNCONFIRMED using the API. Attempting to set this preference results in an error. The UNCONFIRMED state 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 the GetEmailPreferences method. You'll need to provide your Merchant Center account ID and use the email address for the user or use the me alias to indicate the authenticated user.

This request retrieves the EmailPreferences resource, which shows your opt-in status for available notification categories, such as news_and_tips .

  GET https://merchantapi.googleapis.com/accounts/v1/accounts/ {ACCOUNT_ID} 
/users/ {EMAIL_ADDRESS} 
/emailPreferences 
 

A successful request returns the EmailPreferences resource showing your current settings.

Sample Response:

  { 
  
 "name" 
 : 
  
 "accounts/ {ACCOUNT_ID} 
/users/ {EMAIL_ADDRESS} 
/emailPreferences" 
 , 
  
 "news_and_tips" 
 : 
  
 "OPTED_IN" 
 } 
 

This code sample shows how to retrieve the email preferences for your Merchant Center account.

Java

  import 
  
 com.google.api.gax.core.FixedCredentialsProvider 
 ; 
 import 
  
 com.google.auth.oauth2.GoogleCredentials 
 ; 
 import 
  
 com.google.shopping.merchant.accounts.v1.EmailPreferences 
 ; 
 import 
  
 com.google.shopping.merchant.accounts.v1.EmailPreferencesName 
 ; 
 import 
  
 com.google.shopping.merchant.accounts.v1.EmailPreferencesServiceClient 
 ; 
 import 
  
 com.google.shopping.merchant.accounts.v1.EmailPreferencesServiceSettings 
 ; 
 import 
  
 com.google.shopping.merchant.accounts.v1.GetEmailPreferencesRequest 
 ; 
 import 
  
 shopping.merchant.samples.utils.Authenticator 
 ; 
 import 
  
 shopping.merchant.samples.utils.Config 
 ; 
 /** This class demonstrates how to get the email preferences of a Merchant Center account. */ 
 public 
  
 class 
 GetEmailPreferencesSample 
  
 { 
  
 public 
  
 static 
  
 void 
  
 getEmailPreferences 
 ( 
 Config 
  
 config 
 , 
  
 String 
  
 email 
 ) 
  
 throws 
  
 Exception 
  
 { 
  
 // Obtains OAuth token based on the user's configuration. 
  
 GoogleCredentials 
  
 credential 
  
 = 
  
 new 
  
 Authenticator 
 (). 
 authenticate 
 (); 
  
 // Creates service settings using the credentials retrieved above. 
  
 EmailPreferencesServiceSettings 
  
 emailPreferencesServiceSettings 
  
 = 
  
 EmailPreferencesServiceSettings 
 . 
 newBuilder 
 () 
  
 . 
 setCredentialsProvider 
 ( 
 FixedCredentialsProvider 
 . 
 create 
 ( 
 credential 
 )) 
  
 . 
 build 
 (); 
  
 // Creates EmailPreferences name to identify the EmailPreferences. 
  
 String 
  
 name 
  
 = 
  
 EmailPreferencesName 
 . 
 newBuilder 
 () 
  
 . 
 setAccount 
 ( 
 config 
 . 
 getAccountId 
 (). 
 toString 
 ()) 
  
 . 
 setEmail 
 ( 
 email 
 ) 
  
 . 
 build 
 () 
  
 . 
 toString 
 (); 
  
 // Calls the API and catches and prints any network failures/errors. 
  
 try 
  
 ( 
 EmailPreferencesServiceClient 
  
 emailPreferencesServiceClient 
  
 = 
  
 EmailPreferencesServiceClient 
 . 
 create 
 ( 
 emailPreferencesServiceSettings 
 )) 
  
 { 
  
 // The name has the format: accounts/{account}/users/{user}/emailPreferences 
  
 GetEmailPreferencesRequest 
  
 request 
  
 = 
  
 GetEmailPreferencesRequest 
 . 
 newBuilder 
 (). 
 setName 
 ( 
 name 
 ). 
 build 
 (); 
  
 System 
 . 
 out 
 . 
 println 
 ( 
 "Sending get EmailPreferences request:" 
 ); 
  
 EmailPreferences 
  
 response 
  
 = 
  
 emailPreferencesServiceClient 
 . 
 getEmailPreferences 
 ( 
 request 
 ); 
  
 System 
 . 
 out 
 . 
 println 
 ( 
 "Retrieved EmailPreferences below" 
 ); 
  
 System 
 . 
 out 
 . 
 println 
 ( 
 response 
 ); 
  
 } 
  
 catch 
  
 ( 
 Exception 
  
 e 
 ) 
  
 { 
  
 System 
 . 
 out 
 . 
 println 
 ( 
 e 
 ); 
  
 } 
  
 } 
  
 public 
  
 static 
  
 void 
  
 main 
 ( 
 String 
 [] 
  
 args 
 ) 
  
 throws 
  
 Exception 
  
 { 
  
 Config 
  
 config 
  
 = 
  
 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" 
 ; 
  
 // String email = "me"; 
  
 getEmailPreferences 
 ( 
 config 
 , 
  
 email 
 ); 
  
 } 
 } 
  
 

PHP

  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();  
 
 

Python

  from 
  
 examples.authentication 
  
 import 
 configuration 
 from 
  
 examples.authentication 
  
 import 
 generate_user_credentials 
 from 
  
 google.shopping.merchant_accounts_v1 
  
 import 
 EmailPreferencesServiceClient 
 from 
  
 google.shopping.merchant_accounts_v1 
  
 import 
 GetEmailPreferencesRequest 
 _ACCOUNT 
 = 
 configuration 
 . 
 Configuration 
 () 
 . 
 read_merchant_info 
 () 
 def 
  
 get_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 
 ) 
 except 
 RuntimeError 
 as 
 e 
 : 
 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 
 ) 
  
 

cURL

  curl --location \ 
 'https://merchantapi.googleapis.com/accounts/v1/accounts/ {ACCOUNT_ID} 
/users/ {EMAIL_ADDRESS} 
/emailPreferences' \ 
 --header 'Authorization: Bearer <API_TOKEN>' 
 

Change your Merchant Center email preferences

To change your email notification preferences, such as opting in or out of "News and tips" emails, use the UpdateEmailPreferences method.

In your request, you'll provide the Merchant Center account ID and use your email address (or the me alias) for the user email. The request body should contain the EmailPreferences object with the selected opt_in_state for the news_and_tips field. You must also specify news_and_tips in the update_mask query 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, setting news_and_tips to OPTED_OUT stops you from receiving "News and tips" emails for that account.

  PATCH https://merchantapi.googleapis.com/accounts/v1/accounts/ {ACCOUNT_ID} 
/users/ {EMAIL_ADDRESS} 
/emailPreferences?update_mask=news_and_tips 
 

Sample request payload (to opt out of "News and tips"):

  { 
  
 "name" 
 : 
  
 "accounts/ {ACCOUNT_ID} 
/users/ {EMAIL_ADDRESS} 
/emailPreferences" 
 , 
  
 "news_and_tips" 
 : 
  
 "OPTED_OUT" 
 } 
 

A successful request returns the updated EmailPreferences resource.

Sample response:

  { 
  
 "name" 
 : 
  
 "accounts/ {ACCOUNT_ID} 
/users/ {EMAIL_ADDRESS} 
/emailPreferences" 
 , 
  
 "news_and_tips" 
 : 
  
 "OPTED_OUT" 
 } 
 

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

  import 
  
 com.google.api.gax.core.FixedCredentialsProvider 
 ; 
 import 
  
 com.google.auth.oauth2.GoogleCredentials 
 ; 
 import 
  
 com.google.protobuf.FieldMask 
 ; 
 import 
  
 com.google.shopping.merchant.accounts.v1.EmailPreferences 
 ; 
 import 
  
 com.google.shopping.merchant.accounts.v1.EmailPreferences.OptInState 
 ; 
 import 
  
 com.google.shopping.merchant.accounts.v1.EmailPreferencesName 
 ; 
 import 
  
 com.google.shopping.merchant.accounts.v1.EmailPreferencesServiceClient 
 ; 
 import 
  
 com.google.shopping.merchant.accounts.v1.EmailPreferencesServiceSettings 
 ; 
 import 
  
 com.google.shopping.merchant.accounts.v1.UpdateEmailPreferencesRequest 
 ; 
 import 
  
 shopping.merchant.samples.utils.Authenticator 
 ; 
 import 
  
 shopping.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. 
 */ 
 public 
  
 class 
 UpdateEmailPreferencesSample 
  
 { 
  
 public 
  
 static 
  
 void 
  
 updateEmailPreferences 
 ( 
 Config 
  
 config 
 , 
  
 String 
  
 email 
 ) 
  
 throws 
  
 Exception 
  
 { 
  
 GoogleCredentials 
  
 credential 
  
 = 
  
 new 
  
 Authenticator 
 (). 
 authenticate 
 (); 
  
 EmailPreferencesServiceSettings 
  
 emailPreferencesServiceSettings 
  
 = 
  
 EmailPreferencesServiceSettings 
 . 
 newBuilder 
 () 
  
 . 
 setCredentialsProvider 
 ( 
 FixedCredentialsProvider 
 . 
 create 
 ( 
 credential 
 )) 
  
 . 
 build 
 (); 
  
 // Creates EmailPreferences name to identify EmailPreferences. 
  
 String 
  
 name 
  
 = 
  
 EmailPreferencesName 
 . 
 newBuilder 
 () 
  
 . 
 setAccount 
 ( 
 config 
 . 
 getAccountId 
 (). 
 toString 
 ()) 
  
 . 
 setEmail 
 ( 
 email 
 ) 
  
 . 
 build 
 () 
  
 . 
 toString 
 (); 
  
 // Create a EmailPreferences with the updated fields. 
  
 EmailPreferences 
  
 emailPreferences 
  
 = 
  
 EmailPreferences 
 . 
 newBuilder 
 (). 
 setName 
 ( 
 name 
 ). 
 setNewsAndTips 
 ( 
 OptInState 
 . 
 OPTED_IN 
 ). 
 build 
 (); 
  
 FieldMask 
  
 fieldMask 
  
 = 
  
 FieldMask 
 . 
 newBuilder 
 (). 
 addPaths 
 ( 
 "news_and_tips" 
 ). 
 build 
 (); 
  
 try 
  
 ( 
 EmailPreferencesServiceClient 
  
 emailPreferencesServiceClient 
  
 = 
  
 EmailPreferencesServiceClient 
 . 
 create 
 ( 
 emailPreferencesServiceSettings 
 )) 
  
 { 
  
 UpdateEmailPreferencesRequest 
  
 request 
  
 = 
  
 UpdateEmailPreferencesRequest 
 . 
 newBuilder 
 () 
  
 . 
 setEmailPreferences 
 ( 
 emailPreferences 
 ) 
  
 . 
 setUpdateMask 
 ( 
 fieldMask 
 ) 
  
 . 
 build 
 (); 
  
 System 
 . 
 out 
 . 
 println 
 ( 
 "Sending Update EmailPreferences request" 
 ); 
  
 EmailPreferences 
  
 response 
  
 = 
  
 emailPreferencesServiceClient 
 . 
 updateEmailPreferences 
 ( 
 request 
 ); 
  
 System 
 . 
 out 
 . 
 println 
 ( 
 "Updated EmailPreferences Name below" 
 ); 
  
 System 
 . 
 out 
 . 
 println 
 ( 
 response 
 . 
 getName 
 ()); 
  
 } 
  
 catch 
  
 ( 
 Exception 
  
 e 
 ) 
  
 { 
  
 System 
 . 
 out 
 . 
 println 
 ( 
 e 
 ); 
  
 } 
  
 } 
  
 public 
  
 static 
  
 void 
  
 main 
 ( 
 String 
 [] 
  
 args 
 ) 
  
 throws 
  
 Exception 
  
 { 
  
 Config 
  
 config 
  
 = 
  
 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"; 
  
 String 
  
 email 
  
 = 
  
 "me" 
 ; 
  
 updateEmailPreferences 
 ( 
 config 
 , 
  
 email 
 ); 
  
 } 
 } 
  
 

PHP

  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();  
 
 

Python

  from 
  
 examples.authentication 
  
 import 
 configuration 
 from 
  
 examples.authentication 
  
 import 
 generate_user_credentials 
 from 
  
 google.protobuf 
  
 import 
 field_mask_pb2 
 from 
  
 google.shopping.merchant_accounts_v1 
  
 import 
 EmailPreferences 
 from 
  
 google.shopping.merchant_accounts_v1 
  
 import 
 EmailPreferencesServiceClient 
 from 
  
 google.shopping.merchant_accounts_v1 
  
 import 
 UpdateEmailPreferencesRequest 
 FieldMask 
 = 
 field_mask_pb2 
 . 
 FieldMask 
 _ACCOUNT 
 = 
 configuration 
 . 
 Configuration 
 () 
 . 
 read_merchant_info 
 () 
 def 
  
 update_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 mask 
 field_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 
 ) 
 except 
 RuntimeError 
 as 
 e 
 : 
 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 
 ) 
  
 

cURL

  curl --location --request PATCH \ 
 'https://merchantapi.googleapis.com/accounts/v1/accounts/ {ACCOUNT_ID} 
/users/ {EMAIL_ADDRESS} 
/emailPreferences?update_mask=news_and_tips' \ 
 --header 'Content-Type: application/json' \ 
 --header 'Authorization: Bearer <API_TOKEN>' \ 
 --data '{ 
 "name": "accounts/ {ACCOUNT_ID} 
/users/ {EMAIL_ADDRESS} 
/emailPreferences", 
 "news_and_tips": "OPTED_IN" 
 }' 
 
Design a Mobile Site
View Site in Mobile | Classic
Share by: