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 cambie el estado de aprobación de los productos en tus cuentas de Merchant Center. Por ejemplo, puedes detectar cuando se rechaza un producto para solucionar posibles problemas de calidad de los datos.

Antes de comenzar, asegúrate de que tu 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 Notifications.

Suscríbete a los cambios en el estado del producto

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.

Suscríbete a una cuenta objetivo específica

En la siguiente solicitud de ejemplo, se realiza la suscripción a los cambios de estado del producto 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.

Suscríbete para todas las cuentas administradas

Si administras varias cuentas (por ejemplo, una cuenta avanzada con subcuentas), puedes suscribirte a los cambios de estado del producto en todas las cuentas administradas configurando allManagedAccounts: true de la siguiente manera:

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"
}

Cómo decodificar cargas útiles de cambios en el estado del producto

Cuando se produce un cambio en el estado de un 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 estado actualizado. Los valores posibles son approved, pending, disapproved o una cadena vacía ('').
    • Si se omite oldValue, el producto se crea recientemente.
    • 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 del producto

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 debe devolver 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"
}