Administra las notificaciones por correo electrónico de Merchant Center

En esta guía, se explica cómo usar el recurso EmailPreferences para administrar tus notificaciones por correo electrónico de Merchant Center y ver qué tipos de correos electrónicos recibe el users de tu cuenta. Para obtener la lista completa de los tipos de notificaciones por correo electrónico, consulta la referencia de EmailPreferences.

Solo puedes usar la API de Merchant para administrar las notificaciones por correo electrónico de las cuentas en las que te agregan como usuario.

Para ver o actualizar las notificaciones por correo electrónico, necesitas los siguientes valores:

  • Es la dirección de correo electrónico del usuario que recibe los correos electrónicos. Puedes encontrar su dirección de correo electrónico en el campo name del recurso User.
  • El ID de comerciante de la cuenta sobre la que quieres comenzar a recibir o dejar de recibir correos electrónicos Si la cuenta del comercio es una cuenta avanzada y el usuario tiene acceso a ella, usa el ID del comercio de la cuenta avanzada.

Cómo habilitar o inhabilitar las notificaciones

Para actualizar la configuración de notificaciones por correo electrónico de una cuenta de comerciante específica, llama a accounts.v1beta.accounts.users.updateEmailPreferences con el ACCOUNT_ID de la cuenta y la dirección de correo electrónico del usuario.

Usa los siguientes valores para controlar las notificaciones por correo electrónico que recibe el usuario:

  • OPTED_IN: Recibir notificaciones por correo electrónico de la cuenta
  • OPTED_OUT: No recibir notificaciones por correo electrónico de la cuenta.

A continuación, se muestra una solicitud de ejemplo para inhabilitar las notificaciones por correo electrónico de una cuenta de comerciante específica:

PATCH https://merchantapi.googleapis.com/accounts/v1beta/accounts/ACCOUNT_ID/users/EMAIL_ADDRESS/emailPreferences

{
  "newsAndTips": "OPTED_OUT"
}

Para recuperar las preferencias de correo electrónico de un usuario en particular, puedes usar el método google.shopping.merchant.accounts.v1beta.UpdateEmailPreferencesRequest, como se muestra en el siguiente ejemplo.

Java

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

Cómo ver las notificaciones existentes

Para ver la configuración actual de las notificaciones por correo electrónico de un usuario específico, llama a accounts.v1beta.accounts.users.getEmailPreferences.

Esta es una solicitud de muestra, en la que ACCOUNT_ID es el ID del comercio de la cuenta sobre la que se envían las notificaciones por correo electrónico y EMAIL_ADDRESS es la dirección de correo electrónico del usuario que recibe los correos electrónicos.

GET https://merchantapi.googleapis.com/accounts/v1beta/accounts/ACCOUNT_ID/users/EMAIL_ADDRESS/emailPreferences

Esta es una respuesta de ejemplo de una llamada correcta:

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

Para recuperar las preferencias de correo electrónico de un usuario en particular, puedes usar el paquete google.shopping.merchant.accounts.v1beta.GetEmailPreferencesRequest, como se muestra en el siguiente ejemplo.

Java

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

Para obtener más información sobre las notificaciones por correo electrónico, consulta Cómo cambiar las preferencias de correo electrónico de Merchant Center.