Recibe notificaciones push sobre los cambios en el estado de los productos

Puedes suscribirte a las notificaciones de PRODUCT_STATUS_CHANGE para recibir alertas en tiempo real cada vez que cambien los estados de aprobación de los productos en tus cuentas de Merchant Center. Por ejemplo, puedes detectar cuándo se rechaza un producto para que puedas corregir posibles problemas de calidad de los datos.

Antes de comenzar, asegúrate de que el URI de devolución de llamada esté configurado según los requisitos que se describen en la Descripción general de la sub-API de notificaciones.

Suscríbete a los cambios en el estado de los productos

Para suscribirte a los cambios de estado de los productos, envía una solicitud POST al recurso notificationsubscriptions con registeredEvent establecido en PRODUCT_STATUS_CHANGE.

Cómo suscribirse a una cuenta de destino específica

En la siguiente solicitud de ejemplo, se suscriben los cambios de estado de los productos para una cuenta de comerciante específica:

POST https://merchantapi.googleapis.com/notifications/v1/accounts/{ACCOUNT_ID}/notificationsubscriptions/
{
  "registeredEvent": "PRODUCT_STATUS_CHANGE",
  "targetAccount": "accounts/{TARGETACCOUNT_ID}",
  "callBackUri": "https://example.com/callback"
}

Reemplaza lo siguiente:

  • ACCOUNT_ID: Es el identificador de la cuenta propietaria de la suscripción y que recibe notificaciones.
  • TARGETACCOUNT_ID: Es el identificador de la cuenta sobre la que deseas recibir notificaciones.

Si tu cuenta de Merchant Center es una cuenta independiente y no tiene cuentas vinculadas, usa tu propio ID de cuenta para ambas variables.

Suscribirse para todas las cuentas administradas

Si administras varias cuentas (como una cuenta avanzada con cuentas secundarias), puedes suscribirte a los cambios de estado de los productos en todas las cuentas administradas configurando allManagedAccounts: true:

POST https://merchantapi.googleapis.com/notifications/v1/accounts/{ACCOUNT_ID}/notificationsubscriptions/
{
  "registeredEvent": "PRODUCT_STATUS_CHANGE",
  "allManagedAccounts": true,
  "callBackUri": "https://example.com/callback"
}

Las llamadas exitosas devuelven un identificador name para tu suscripción, incluido un ID de suscripción único:

{
  "name":"accounts/{ACCOUNT_ID}/notificationsubscriptions/{SUBSCRIPTION_ID}",
  "registeredEvent": "PRODUCT_STATUS_CHANGE",
  "allManagedAccounts": true,
  "callBackUri": "https://example.com/callback"
}

Decodifica las cargas útiles de los cambios de estado de los productos

Cuando se produce un cambio en el estado del producto, tu URI de devolución de llamada recibe un mensaje codificado en Base64. Cuando se decodifica, la carga útil se ajusta al formato ProductStatusChangeMessage:

{
  "account": "accounts/{TARGETACCOUNT_ID}",
  "managingAccount": "accounts/{ACCOUNT_ID}",
  "resourceType": "PRODUCT",
  "attribute": "STATUS",
  "changes": [{
    "oldValue": "approved",
    "newValue": "disapproved",
    "regionCode": "US",
    "reportingContext": "SHOPPING_ADS"
  }, {
    "oldValue": "approved",
    "newValue": "disapproved",
    "regionCode": "JP",
    "reportingContext": "SHOPPING_ADS"
  },{
    "oldValue": "approved",
    "newValue": "disapproved",
    "regionCode": "GE",
    "reportingContext": "SHOPPING_ADS"
  }],
  "resourceId": "ONLINE~en~US~1234",
  "resource": "accounts/{TARGETACCOUNT_ID}/products/ONLINE~en~US~1234",
  "expirationTime": "2024-10-22T02:43:47.461464Z",
  "eventTime": "2024-03-21T02:43:47.461464Z"
}

Campos y reglas de carga útil

  • oldValue y newValue: Representan el estado anterior y el actualizado. Los valores posibles son approved, pending, disapproved o una cadena vacía ('').
    • Si se omite oldValue, se crea el producto.
    • Si se omite newValue, significa que se borró el producto.
  • expirationTime: Indica cuándo vence la oferta del producto. Este campo se omite cuando se borra un producto.
  • reportingContext: Es la plataforma de publicidad o de ficha gratuita en la que cambió el estado. Los valores admitidos incluyen SHOPPING_ADS, LOCAL_INVENTORY_ADS, YOUTUBE_SHOPPING, YOUTUBE_CHECKOUT, YOUTUBE_AFFILIATE y FREE_LISTINGS_UCP_CHECKOUT de ReportingContextEnum.
  • eventTime: Es la marca de tiempo en la que se generó el evento. Usa esta marca de tiempo para garantizar el orden correcto de los eventos.

Prueba las notificaciones de cambios en el estado de los productos

Usa la siguiente solicitud de muestra para probar si tu extremo de devolución de llamada recibe, confirma y decodifica correctamente los mensajes de cambio de estado del producto:

curl --request POST \
'https://{YOUR_CALLBACK_URI}' \
--header 'Content-Type: application/json' \
--header 'Accept: text/plain' \
--data '{"message":{"data": "ewogICJhY2NvdW50IjogImFjY291bnRzLzEyMzQiLAogICJtYW5hZ2luZ0FjY291bnQiOiAiYWNjb3VudHMvNTY3OCIsCiAgInJlc291cmNlVHlwZSI6ICJQUk9EVUNUIiwKICAiYXR0cmlidXRlIjogIlNUQVRVUyIsCiAgImNoYW5nZXMiOiBbewogICAgIm9sZFZhbHVlIjogImFwcHJvdmVkIiwKICAgICJyZWdpb25Db2RlIjogIlVTIiwKICAgICJyZXBvcnRpbmdDb250ZXh0IjogIlNIT1BQSU5HX0FEUyIKICB9XSwKICAicmVzb3VyY2VJZCI6ICJPTkxJTkV+ZW5+VVN+MDAwMDAwMDAwMDAwIiwKICAicmVzb3VyY2UiOiAiYWNjb3VudHMvMTIzNC9wcm9kdWN0cy9PTkxJTkV+ZW5+VVN+MDAwMDAwMDAwMDAwIiwKICAiZXhwaXJhdGlvblRpbWUiOiAiMjAyNC0xMC0yMlQwMjo0Mzo0Ny40NjE0NjRaIiwKICAiZXZlbnRUaW1lIjogIjIwMjQtMDMtMjFUMDI6NDM6NDcuNDYxNDY0WiIKfQ=="}}'

En respuesta a esta llamada, tu URI de devolución de llamada debería mostrar un código de estado HTTP aceptable (como 200 OK). El mensaje decodificado tiene el siguiente contenido:

{
  "account": "accounts/1234",
  "managingAccount": "accounts/5678",
  "resourceType": "PRODUCT",
  "attribute": "STATUS",
  "changes": [{
    "oldValue": "approved",
    "regionCode": "US",
    "reportingContext": "SHOPPING_ADS"
  }],
  "resourceId": "ONLINE~en~US~000000000000",
  "resource": "accounts/1234/products/ONLINE~en~US~000000000000",
  "expirationTime": "2024-10-22T02:43:47.461464Z",
  "eventTime": "2024-03-21T02:43:47.461464Z"
}