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
- Administra (crea y actualiza) la configuración de varios canales
- Cómo recuperar (obtener y enumerar) la configuración de varios canales
- Cómo solicitar la verificación del inventario para 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
una cuenta de Merchant Center
un Perfil de Negocio. Si no tienes una, puedes crearla. Consulta Cómo registrarse para tener un Perfil de Negocio.
Es un vínculo entre tu Perfil de Negocio y tu cuenta de Merchant Center. Para crear la vinculación, puedes usar la interfaz de usuario de Merchant Center o la API de Merchant Center (consulta Cómo vincular un Perfil de Negocio de Google).
Crea una configuración de varios canales
Puedes usar el método omnichannelSettings.create
para crear una configuración omnicanal. El método create toma un recurso omnichannelSetting
como entrada y muestra la configuración de omnicanal creada, si se realiza correctamente.
Cuando crees el objeto, debes completar regionCode
y LsfType
:
- OmnichannelSetting se establece por país.
RegionCode
define el país de segmentación. Una vez creado, no podrás cambiarlo.RegionCode
debe seguir la regla de nombres definida por el proyecto Common Locale Data Repository (CLDR). LsfType
se basa en tu página de productos. Para obtener detalles, consultaLsfType
.
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, pero puedes configurarlos más adelante. Para actualizar un omnichannelSetting
existente, consulta Cómo actualizar un parámetro de configuración de varios canales.
Esta es una solicitud de ejemplo si eligieras MHLSF_BASIC
y te inscribiste 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}
: El identificador único de tu cuenta de Merchant Center{REGION_CODE}
: Es un código de región según se define en 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, por lo general, requieren de unas horas a unos días. Te recomendamos que revises tus entradas para evitar tiempos de espera innecesarios debido a datos no aptos.
Para ver la configuración de varios canales que acabas de crear o verificar el estado de las opiniones, usa accounts.omnichannelSettings.get
o accounts.omnichannelSettings.list
y especifica el país.
Tipo de vidriera local (LSF)
Según la página del 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 básica alojada por el comerciante | MHLSF_BASIC |
Páginas de productos específicas de la tienda con disponibilidad y precio | Vidriera local alojada por el comerciante (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 comerciante, también debes completar el campo de URI para, al menos, uno de inStock
o pickup
.
InStock
Puedes usar el atributo En stock para proporcionar más información sobre tu página de productos.
Si eliges los tipos de LSF alojados por el comercio y especificas el campo URI en InStock, estás mostrando tu intención de publicar productos con disponibilidad en stock. Comenzaremos una revisión en función del 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 la 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 como retiro en tienda, significa que un cliente puede comprarlo en línea y retirarlo en la tienda. Cuando configuras el campo Pickup
, muestras tu intención de publicar productos con un ANS de retiro. Comenzaremos una revisión basada en
el URI proporcionado.
Esta es una solicitud de muestra que crea una 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 muestran 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 contenido 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 solicitar 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 apruebe tu página Acerca de.
Verificación del inventario
La verificación del inventario solo es obligatoria para los comercios de GHLSF
. No es compatible con 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á hacer clic en un botón del mensaje para verificar su
estado.
Una vez que hayas completado esta tarea, puedes 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 complete este proceso, Google validará la exactitud de la información proporcionada.
Obtén una 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
.
Esta es una solicitud de ejemplo:
GET https://merchantapi.googleapis.com/accounts/v1/accounts/{ACCOUNT_ID}/omnichannelSettings/{OMNICHANNEL_SETTING}
Reemplaza lo siguiente:
{ACCOUNT_ID}
: El identificador único de tu cuenta de Merchant Center{OMNICHANNEL_SETTING}
: Es el código de región de tu país de segmentación.
El estado ACTIVE
indica que la revisión recibió la aprobación.
Si el estado es FAILED
, llama a omnichannelSetting.update
para abordar los problemas y activar una nueva revisión.
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 su significado, consulta Cómo ver el estado de una configuración de varios canales.
Cómo enumerar 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 muestra 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 de varios canales
Para actualizar la configuración de un parámetro de configuración de varios canales existente, 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 no se incluye un atributo en la máscara de actualización, no se actualizará.
Si se incluye un atributo en la máscara de actualización, pero no se establece en la solicitud, se borrará.
En la siguiente muestra 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]
Solicita la verificación del inventario
omnichannelSettings.requestInventoryVerification
solo es relevante para los comercios de GHLSF
.
Antes de llamar a esta RPC, debes haber realizado lo siguiente:
- Sube tus datos de productos y de inventario.
- Verifica 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 consulta omnichannelSetting.inventoryVerification.state
. Si aparece 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 una configuración de varios canales.
Para verificar el estado de revisión de las opiniones de integración de LIA, busca en ReviewState
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 integración, excepto al proceso de verificación del inventario, y puede tener los siguientes valores:
ACTIVE
: Se aprobó.FAILED
: Se rechaza.RUNNING
: Aún está en proceso de revisión.ACTION_REQUIRED
: Solo existe en elInStock.state
para los comercios de GHLSF. Esto significa que debes solicitar la verificación del inventario para que se publiquen las 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ónSUSPENDED
: No aprobaste la verificación del inventario demasiadas veces (por lo general, 5) y debes esperar para poder volver a solicitarla.ACTION_REQUIRED
: Debes realizar acciones adicionales antes de solicitar la verificación del inventario.
Soluciona problemas relacionados con la API de OmnichannelSettings
En esta sección, se describe cómo solucionar problemas comunes.
Crea una configuración de varios canales
- Asegúrate de configurar
LsfType
yRegionCode
. - Si eliges
GHLSF
, proporciona unInStock
vacío en la solicitud. - Si eliges los tipos de LSF alojados por el comercio, proporciona al menos un URI en
InStock
oPickup
.
Actualiza un parámetro de configuración de varios canales
El método de actualización de este recurso requiere las siguientes reglas adicionales:
- No puedes modificar el código de región.
- No puedes realizar actualizaciones mientras la función de LIA/FLL está en ejecución o se aprobó.
- Cuando cambies de los tipos de LSF alojados por el comercio a
GHLSF
, siInStock
yPickup
se configuraron anteriormente, debes incluirlos en la máscara de actualización junto con la actualización deLsfType
.
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}
: El identificador único de tu cuenta de Merchant Center{REGION_CODE}
: Es un código de región según se define en CLDR.
Solicita la verificación del inventario
Si, a pesar de actualizar los feeds de productos o inventarios y confirmar el contacto, InventoryVerification.state
no es INACTIVE
, haz lo siguiente:
- Para comercios de Alemania, Austria y Suiza: Asegúrate de haber completado una revisión de la página Acerca de.
- Habrá una demora de aproximadamente 48 horas.
- En caso de fallas repetidas en la verificación del 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 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.