Administra la configuración de varios canales

La API de OmnichannelSettings es el punto de entrada para configurar tus programas de anuncios del inventario local (LIA) y fichas locales gratuitas (FLL).

Úsala para hacer lo siguiente de forma programática:

  • Administrar (crear y actualizar) la configuración omnicanal
  • Recuperar (obtener y enumerar) la configuración omnicanal
  • Solicita la verificación del inventario para los comercios aptos

Para obtener más información, consulta la descripción general de los anuncios del inventario local y las fichas locales gratuitas.

Requisitos previos

Debes tener lo siguiente:

Crea un parámetro de configuración omnicanal

Puedes usar el método omnichannelSettings.create para crear un parámetro de configuración omnicanal. El método create toma un recurso omnichannelSetting como entrada y, si se ejecuta correctamente, devuelve el parámetro de configuración omnicanal creado.

Cuando crees un objeto, debes completar tanto el campo regionCode como el campo LsfType:

  • OmnichannelSetting se basa en cada país. RegionCode define el país objetivo. Una vez que lo crees, no podrás cambiarlo. RegionCode debe seguir la regla de nomenclatura definida por el proyecto Common Locale Data Repository (CLDR).
  • LsfType se basa en la página del producto. Para obtener detalles, consulta LsfType.

Para obtener más detalles, consulta Cambia la experiencia en la página de producto para tus anuncios del inventario local.

No es necesario que completes todos los campos en la etapa de creación, sino que puedes configurarlos más adelante. Para actualizar un objeto omnichannelSetting existente, consulta Actualiza un parámetro de configuración omnicanal.

A continuación, se muestra una solicitud de ejemplo si eligieras MHLSF_BASIC y te inscribieras en inStock:

POST https://merchantapi.googleapis.com/accounts/v1/accounts/{ACCOUNT_ID}/omnichannelSettings

{
  "regionCode": "{REGION_CODE}",
  "lsfType: "MHLSF_BASIC",
  "inStock": {
      "uri": "{URI}"
  }
}

Reemplaza lo siguiente:

  • {ACCOUNT_ID}: Es el identificador único de tu cuenta de Merchant Center.
  • {REGION_CODE}: Es un código de región según lo define CLDR.
  • {URI}: Es un URI válido que se usa para la opinión determinada. Un URI no apto puede impedir la aprobación.

Después de que la solicitud se ejecute correctamente, deberías ver la siguiente respuesta:

{
  "name": "accounts/{ACCOUNT_ID}/omnichannelSettings/{omnichannel_setting}",
  "regionCode": "{REGION_CODE}",
  "lsfType: "MHLSF_BASIC",
  "inStock": {
      "uri": "{URI}",
      "state": "RUNNING"
  }
}

La inscripción de diferentes funciones de LIA/FLL con campos omnichannelSetting activa revisiones manuales que suelen demorar entre un par de horas y un par de días. Te recomendamos que verifiques los datos ingresados para evitar tiempos de espera innecesarios debido a datos no aptos.

Para ver el parámetro de configuración omnicanal que acabas de crear o verificar el estado de las revisiones, usa accounts.omnichannelSettings.get o accounts.omnichannelSettings.list y especifica el país.

Tipo de vidriera local (LSF)

Según la página de producto que planeas usar, elige un LsfType:

Tipo de página del producto LsfType Valor enumerado
Páginas de productos con información de disponibilidad en tienda Vidriera local alojada por el comercio (básica) MHLSF_BASIC
Páginas de productos específicas de la tienda con disponibilidad y precio Vidriera local alojada por el comercio (completa) MHLSF_FULL
Páginas de productos sin disponibilidad en la tienda Vidriera local alojada en Google (GHLSF) GHLSF

Si eliges los tipos de tienda local alojada por el comercio, también debes completar el campo URI para al menos uno de los tipos inStock o pickup.

InStock

Puedes usar InStock para proporcionar más información sobre tu página de producto.

Si eliges los tipos de LSF alojados por el comercio y especificas el campo URI en InStock, demuestras tu intención de publicar productos con disponibilidad en stock. Comenzaremos una revisión basada en el URI proporcionado.

Si eliges el tipo GHLSF, debes proporcionar un campo InStock vacío en la solicitud. A diferencia de los tipos de LSF alojados por el comercio, para completar la integración, debes completar el proceso de verificación del inventario.

En esta muestra de código, se crea un omnichannelSetting con GHLSF:

package shopping.merchant.samples.accounts.v1;

// [START merchantapi_create_omnichannel_setting]
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.accounts.v1.AccountName;
import com.google.shopping.merchant.accounts.v1.CreateOmnichannelSettingRequest;
import com.google.shopping.merchant.accounts.v1.InStock;
import com.google.shopping.merchant.accounts.v1.OmnichannelSetting;
import com.google.shopping.merchant.accounts.v1.OmnichannelSetting.LsfType;
import com.google.shopping.merchant.accounts.v1.OmnichannelSettingsServiceClient;
import com.google.shopping.merchant.accounts.v1.OmnichannelSettingsServiceSettings;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;

/**
 *   This class demonstrates how to create an omnichannel setting for a given Merchant Center account
 *   in a given country
 */
public class CreateOmnichannelSettingSample {

  public static void createOmnichannelSetting(Config config, String regionCode) throws Exception {

    // Obtains OAuth token based on the user's configuration.
    GoogleCredentials credential = new Authenticator().authenticate();

    // Creates service settings using the retrieved credentials.
    OmnichannelSettingsServiceSettings omnichannelSettingsServiceSettings =
        OmnichannelSettingsServiceSettings.newBuilder()
            .setCredentialsProvider(FixedCredentialsProvider.create(credential))
            .build();

    // Calls the API and catches and prints any network failures/errors.
    try (OmnichannelSettingsServiceClient omnichannelSettingsServiceClient =
        OmnichannelSettingsServiceClient.create(omnichannelSettingsServiceSettings)) {
      String accountId = config.getAccountId().toString();
      String parent = AccountName.newBuilder().setAccount(accountId).build().toString();

      // Creates an omnichannel setting with GHLSF type in the given country.
      CreateOmnichannelSettingRequest request =
          CreateOmnichannelSettingRequest.newBuilder()
              .setParent(parent)
              .setOmnichannelSetting(
                  OmnichannelSetting.newBuilder()
                      .setRegionCode(regionCode)
                      .setLsfType(LsfType.GHLSF)
                      .setInStock(InStock.getDefaultInstance())
                      .build())
              .build();

      System.out.println("Sending create omnichannel setting request:");
      OmnichannelSetting response =
          omnichannelSettingsServiceClient.createOmnichannelSetting(request);

      System.out.println("Inserted Omnichannel Setting below:");
      System.out.println(response);
    } catch (Exception e) {
      System.out.println("An error has occurred: ");
      System.out.println(e);
    }
  }

  public static void main(String[] args) throws Exception {
    Config config = Config.load();

    // The country which you're targeting at.
    String regionCode = "{REGION_CODE}";

    createOmnichannelSetting(config, regionCode);
  }
}
// [END merchantapi_list_omnichannel_settings]

Retiro

Además de la disponibilidad en tienda, también puedes mejorar tus productos en tienda con la función de retiro, que solo es apta para los tipos de LSF alojados por el comercio.

Cuando un producto se marca para retiro, significa que un cliente puede comprarlo en línea y retirarlo en la tienda. Si configuras el campo Pickup, demuestras tu intención de publicar productos con un ANS de retiro. Comenzaremos una revisión basada en el URI proporcionado.

A continuación, se muestra una solicitud de ejemplo que crea un parámetro de configuración de omnichannel con Pickup:

POST https://merchantapi.googleapis.com/accounts/v1/accounts/{ACCOUNT_ID}/omnichannelSettings

{
  "regionCode": "{REGION_CODE}",
  "lsfType: "MHLSF_BASIC",
  "pickup": {
     "uri: "{URI}"
  }
}

En exhibición para pedido

Con la función en exhibición para pedido, puedes mostrar productos que se exhiben en tu tienda física, pero que no están disponibles para comprarse de inmediato. Por ejemplo, muebles grandes:

  • Los clientes que busquen productos similares en Google verán estos anuncios con la anotación “en la tienda” en los resultados de la búsqueda.
  • Los clientes que exploren la tienda en una página de resultados de la Búsqueda de Google verán estos productos marcados como “disponibles para pedidos”.

Los usuarios pueden elegir tu anuncio del inventario local o tu ficha local gratuita para ver el artículo. Si desean comprar el artículo, pueden visitar tu tienda física, verlo y hacer un pedido con envío a domicilio o retiro en tienda.

Acerca de (Alemania, Austria y Suiza)

Si publicas anuncios en Austria y Alemania, y eliges GHLSF, debes enviar una página Acerca de.

Si publicas anuncios en Suiza, debes enviar una página "Acerca de" independientemente de LsfType.

Hasta que se verifique la URL de la página Acerca de, los comercios de GHLSF no podrán solicitarle a Google la verificación manual del inventario.

En el caso de todos los comercios de estos tres países, el servicio no habilita las funciones de FLL/LIA hasta que se aprueba la página Acerca de.

Verificación del inventario

La verificación del inventario solo se requiere para los comercios de GHLSF. No se admite para los tipos MHLSF.

Debes verificar tu contacto antes o después de agregar datos de productos y datos de inventario (ya sea con accounts.products.localInventories.insert o la interfaz de usuario de Merchant Center). Proporciona un contacto de verificación del inventario (nombre y dirección de correo electrónico) con el método create o update. El contacto recibirá un correo electrónico de Google y podrá verificar su estado haciendo clic en un botón del mensaje.

Una vez que hayas completado este paso, podrás solicitar la verificación del inventario. Para obtener más información, consulta Acerca de la verificación del inventario.

Puedes cambiar tu contacto durante el proceso de verificación o después de la verificación con omnichannelSetting.update.

Una vez que se completa este proceso, Google valida la exactitud de la información proporcionada.

Obtén un parámetro de configuración de varios canales

Para recuperar la configuración de omnichannelSetting en un país determinado o verificar el estado actual de tus opiniones, usa el método omnichannelSettings.get.

A continuación, se muestra una solicitud de ejemplo:

GET https://merchantapi.googleapis.com/accounts/v1/accounts/{ACCOUNT_ID}/omnichannelSettings/{OMNICHANNEL_SETTING}

Reemplaza lo siguiente:

  • {ACCOUNT_ID}: Es el identificador único de tu cuenta de Merchant Center.
  • {OMNICHANNEL_SETTING}: Es el código de región del país objetivo.

El estado ACTIVE indica que la revisión recibió la aprobación.

Si el estado es FAILED, soluciona los problemas y activa una nueva revisión llamando a omnichannelSetting.update.

El campo LFP de solo lectura muestra el estado de tu asociación de feeds locales. Para vincularte a la asociación, usa lfpProviders.linkLfpProvider.

Para obtener más información sobre cómo verificar los estados y sus significados, consulta Cómo ver el estado de un parámetro de configuración omnicanal.

Enumera la configuración de varios canales

Para recuperar toda la información de omnichannelSetting de tu cuenta, usa el método omnichannelSettings.list.

A continuación, se incluye un ejemplo de código:

package shopping.merchant.samples.accounts.v1;

// [START merchantapi_list_omnichannel_settings]
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.accounts.v1.AccountName;
import com.google.shopping.merchant.accounts.v1.ListOmnichannelSettingsRequest;
import com.google.shopping.merchant.accounts.v1.OmnichannelSetting;
import com.google.shopping.merchant.accounts.v1.OmnichannelSettingsServiceClient;
import com.google.shopping.merchant.accounts.v1.OmnichannelSettingsServiceClient.ListOmnichannelSettingsPagedResponse;
import com.google.shopping.merchant.accounts.v1.OmnichannelSettingsServiceSettings;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;

/**
 *   This class demonstrates how to get the list of omnichannel settings for a given Merchant Center
 *   account
 */
public class ListOmnichannelSettingsSample {

  public static void omnichannelSettings(Config config) throws Exception {

    // Obtains OAuth token based on the user's configuration.
    GoogleCredentials credential = new Authenticator().authenticate();

    // Creates service settings using the retrieved credentials.
    OmnichannelSettingsServiceSettings omnichannelSettingsServiceSettings =
        OmnichannelSettingsServiceSettings.newBuilder()
            .setCredentialsProvider(FixedCredentialsProvider.create(credential))
            .build();

    String accountId = config.getAccountId().toString();
    String parent = AccountName.newBuilder().setAccount(accountId).build().toString();

    // Calls the API and catches and prints any network failures/errors.
    try (OmnichannelSettingsServiceClient omnichannelSettingsServiceClient =
        OmnichannelSettingsServiceClient.create(omnichannelSettingsServiceSettings)) {
      ListOmnichannelSettingsRequest request =
          ListOmnichannelSettingsRequest.newBuilder().setParent(parent).build();

      System.out.println("Sending list omnichannel setting request:");
      ListOmnichannelSettingsPagedResponse response =
          omnichannelSettingsServiceClient.listOmnichannelSettings(request);

      int count = 0;

      // Iterates over all the entries in the response.
      for (OmnichannelSetting omnichannelSetting : response.iterateAll()) {
        System.out.println(omnichannelSetting);
        count++;
      }
      System.out.println(String.format("The following count of elements were returned: %d", count));
    } catch (Exception e) {
      System.out.println("An error has occurred: ");
      System.out.println(e);
    }
  }

  public static void main(String[] args) throws Exception {
    Config config = Config.load();

    omnichannelSettings(config);
  }
}
// [END merchantapi_list_omnichannel_settings]

Actualiza un parámetro de configuración omnicanal

Para actualizar la configuración de un parámetro existente del canal múltiple, usa el método omnichannelSettings.update.

Para actualizar, debes agregar el componente que deseas a la máscara de actualización y completar los campos correspondientes en el campo omnichannelSetting de la solicitud de actualización. Puedes actualizar cualquiera de los siguientes elementos:

  • lsfType
  • inStock
  • pickup
  • odo
  • about
  • inventoryVerification

Si un atributo no se incluye en la máscara de actualización, no se actualizará.

Si un atributo se incluye en la máscara de actualización, pero no se configura en la solicitud, se borrará.

En el siguiente ejemplo de código, se muestra cómo actualizar el campo de verificación del inventario.

package shopping.merchant.samples.accounts.v1;

// [START merchantapi_update_omnichannel_setting]
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.InventoryVerification;
import com.google.shopping.merchant.accounts.v1.OmnichannelSetting;
import com.google.shopping.merchant.accounts.v1.OmnichannelSettingName;
import com.google.shopping.merchant.accounts.v1.OmnichannelSettingsServiceClient;
import com.google.shopping.merchant.accounts.v1.OmnichannelSettingsServiceSettings;
import com.google.shopping.merchant.accounts.v1.UpdateOmnichannelSettingRequest;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;

/**
 *   This class demonstrates how to update an omnichannel setting for a given Merchant Center account
 *   in a given country
 */
public class UpdateOmnichannelSettingSample {

  public static void updateOmnichannelSettings(
      Config config, String regionCode, String contact, String email) throws Exception {

    // Obtains OAuth token based on the user's configuration.
    GoogleCredentials credential = new Authenticator().authenticate();

    // Creates service settings using the retrieved credentials.
    OmnichannelSettingsServiceSettings omnichannelSettingsServiceSettings =
        OmnichannelSettingsServiceSettings.newBuilder()
            .setCredentialsProvider(FixedCredentialsProvider.create(credential))
            .build();

    // Calls the API and catches and prints any network failures/errors.
    try (OmnichannelSettingsServiceClient omnichannelSettingsServiceClient =
        OmnichannelSettingsServiceClient.create(omnichannelSettingsServiceSettings)) {
      String accountId = config.getAccountId().toString();
      String name =
          OmnichannelSettingName.newBuilder()
              .setAccount(accountId)
              .setOmnichannelSetting(regionCode)
              .build()
              .toString();

      OmnichannelSetting omnichannelSetting =
          OmnichannelSetting.newBuilder()
              .setName(name)
              .setInventoryVerification(
                  InventoryVerification.newBuilder()
                      .setContact(contact)
                      .setContactEmail(email)
                      .build())
              .build();
      FieldMask fieldMask = FieldMask.newBuilder().addPaths("inventory_verification").build();
      UpdateOmnichannelSettingRequest request =
          UpdateOmnichannelSettingRequest.newBuilder()
              .setOmnichannelSetting(omnichannelSetting)
              .setUpdateMask(fieldMask)
              .build();

      System.out.println("Sending update omnichannel setting request:");
      OmnichannelSetting response =
          omnichannelSettingsServiceClient.updateOmnichannelSetting(request);

      System.out.println("Updated Omnichannel Setting below:");
      System.out.println(response);
    } catch (Exception e) {
      System.out.println("An error has occurred: ");
      System.out.println(e);
    }
  }

  public static void main(String[] args) throws Exception {
    Config config = Config.load();

    // The country which you're targeting at.
    String regionCode = "{REGION_CODE}";
    // The name of the inventory verification contact you want to update.
    String contact = "{NAME}";
    // The address of the inventory verification email you want to update.
    String email = "{EMAIL}";

    updateOmnichannelSettings(config, regionCode, contact, email);
  }
}
// [END merchantapi_update_omnichannel_setting]

Cómo solicitar la verificación del inventario

omnichannelSettings.requestInventoryVerification solo es pertinente para los comercios de GHLSF.

Antes de llamar a este RPC, debes haber realizado lo siguiente:

  • Sube tus datos de productos y de inventario.
  • Verificar un contacto de verificación del inventario
  • En el caso de los comercios de Alemania, Austria o Suiza, completa una revisión de la página About.

Para determinar si cumples con los requisitos, llama a omnichannelSettings.get y verifica omnichannelSetting.inventoryVerification.state. Si se muestra INACTIVE, puedes llamar a omnichannelSettings.requestInventoryVerification.

package shopping.merchant.samples.accounts.v1;

// [START merchantapi_request_inventory_verification]
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.accounts.v1.OmnichannelSettingName;
import com.google.shopping.merchant.accounts.v1.OmnichannelSettingsServiceClient;
import com.google.shopping.merchant.accounts.v1.OmnichannelSettingsServiceSettings;
import com.google.shopping.merchant.accounts.v1.RequestInventoryVerificationRequest;
import com.google.shopping.merchant.accounts.v1.RequestInventoryVerificationResponse;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;

/**
 *   This class demonstrates how to request inventory verification for a given Merchant Center account
 *   in a given country
 */
public class RequestInventoryVerificationSample {

  public static void requestInventoryVerification(Config config, String regionCode)
      throws Exception {

    // Obtains OAuth token based on the user's configuration.
    GoogleCredentials credential = new Authenticator().authenticate();

    // Creates service settings using the retrieved credentials.
    OmnichannelSettingsServiceSettings omnichannelSettingsServiceSettings =
        OmnichannelSettingsServiceSettings.newBuilder()
            .setCredentialsProvider(FixedCredentialsProvider.create(credential))
            .build();

    // Calls the API and catches and prints any network failures/errors.
    try (OmnichannelSettingsServiceClient omnichannelSettingsServiceClient =
        OmnichannelSettingsServiceClient.create(omnichannelSettingsServiceSettings)) {
      String accountId = config.getAccountId().toString();
      String name =
          OmnichannelSettingName.newBuilder()
              .setAccount(accountId)
              .setOmnichannelSetting(regionCode)
              .build()
              .toString();
      RequestInventoryVerificationRequest request =
          RequestInventoryVerificationRequest.newBuilder().setName(name).build();

      System.out.println("Sending request inventory verification request:");
      RequestInventoryVerificationResponse response =
          omnichannelSettingsServiceClient.requestInventoryVerification(request);

      System.out.println("Omnichannel Setting after inventory verification request below:");
      System.out.println(response);
    } catch (Exception e) {
      System.out.println("An error has occurred: ");
      System.out.println(e);
    }
  }

  public static void main(String[] args) throws Exception {
    Config config = Config.load();

    // The country which you're targeting at.
    String regionCode = "{REGION_CODE}";

    requestInventoryVerification(config, regionCode);
  }
}
// [END merchantapi_request_inventory_verification]

Consulta el estado de un parámetro de configuración omnicanal.

Para verificar el estado de las revisiones de incorporación de las LIAs, consulta ReviewState para ver los atributos correspondientes de omnichannelSetting que muestran los métodos omnichannelSettings.get o omnichannelSettings.list.

El campo ReviewState se aplica a todas las revisiones de incorporación, excepto al proceso de verificación del inventario, y puede tener los siguientes valores:

  • ACTIVE: Se aprobó.
  • FAILED: Se rechazó.
  • RUNNING: Aún está en revisión.
  • ACTION_REQUIRED: Solo existe en InStock.state para los comercios de GHLSF. Esto significa que debes solicitar la verificación del inventario para que se publiquen los LIA.

InventoryVerification.State tiene los siguientes valores:

  • SUCCEEDED: Se aprobó.
  • INACTIVE: Ya puedes solicitar la verificación del inventario.
  • RUNNING: Está en proceso de revisión
  • SUSPENDED: No superaste la verificación del inventario demasiadas veces (por lo general, 5) y debes esperar antes de poder volver a solicitarla.
  • ACTION_REQUIRED: Debes realizar acciones adicionales antes de solicitar la verificación del inventario.

En esta sección, se describe cómo solucionar problemas comunes.

Crea un parámetro de configuración omnicanal

  • Asegúrate de configurar LsfType y RegionCode.
  • Si eliges GHLSF, proporciona un InStock vacío en la solicitud.
  • Si eliges tipos de LSF alojados por el comercio, proporciona al menos un URI en InStock o Pickup.

Actualiza un parámetro de configuración omnicanal

El método de actualización para este recurso requiere las siguientes reglas adicionales:

  • No puedes modificar el código de región.
  • No puedes realizar actualizaciones mientras se ejecuta o se aprobó la función de LIA/FLL.
  • Cuando cambies de tipos de LSF alojados por el comercio a GHLSF, si InStock y Pickup se configuraron anteriormente, debes incluirlos en la máscara de actualización junto con la actualización de LsfType.

Por ejemplo, si aplicaste MHLSF_BASIC y Pickup antes y se rechazaron, puedes cambiar a GHLSF enviando una solicitud como esta:

PATCH https://merchantapi.googleapis.com/accounts/v1/accounts/{ACCOUNT_ID}/omnichannelSettings/{REGION_CODE}?update_mask=lsf_type,in_stock,pickup

{
  "lsfType: "GHLSF",
  "inStock": {},
}

Reemplaza lo siguiente:

  • {ACCOUNT_ID}: Es el identificador único de tu cuenta de Merchant Center.
  • {REGION_CODE}: Es un código de región según se define en CLDR.

Cómo solicitar la verificación del inventario

Si, a pesar de actualizar los feeds de productos o de inventario y confirmar el contacto, InventoryVerification.state es diferente de INACTIVE, haz lo siguiente:

  • Para los comercios de Alemania, Austria y Suiza: Asegúrate de haber completado la revisión de la página Acerca de.
  • Habrá una demora de aproximadamente 48 horas.
  • En caso de que se produzcan fallas repetidas en la verificación de inventario (más de cinco), el servicio aplica un período de inactividad de treinta días antes de permitir otra solicitud. Comunícate con el equipo de Atención al cliente de Google si quieres solicitarlo antes.

Más información

Para obtener más detalles, consulta el Centro de ayuda de los anuncios del inventario local y las fichas locales gratuitas.