Ricevere notifiche push per le modifiche allo stato del prodotto

Puoi iscriverti alle notifiche di PRODUCT_STATUS_CHANGE per ricevere avvisi in tempo reale ogni volta che gli stati di approvazione dei prodotti cambiano nei tuoi account Merchant Center. Ad esempio, puoi rilevare quando un prodotto viene disapprovato in modo da poter risolvere potenziali problemi di qualità dei dati.

Prima di iniziare, assicurati che l'URI di callback sia configurato in base ai requisiti descritti nella panoramica della sub-API Notifications.

Iscriviti alle modifiche allo stato del prodotto

Per iscriverti alle modifiche dello stato del prodotto, invia una richiesta POST alla risorsa notificationsubscriptions con registeredEvent impostato su PRODUCT_STATUS_CHANGE.

Iscriviti per un account target specifico

La seguente richiesta di esempio consente di iscriversi alle modifiche dello stato dei prodotti per un account commerciante specifico:

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

Sostituisci quanto segue:

  • ACCOUNT_ID: l'identificatore dell'account proprietario della sottoscrizione che riceve le notifiche.
  • TARGETACCOUNT_ID: l'identificatore dell'account per il quale vuoi ricevere le notifiche.

Se il tuo account Merchant Center è un account autonomo senza account collegati, utilizza il tuo ID account per entrambe le variabili.

Iscriviti per tutti gli account gestiti

Se gestisci più account (ad esempio un account avanzato con subaccount), puoi iscriverti alle modifiche dello stato dei prodotti in tutti gli account gestiti impostando allManagedAccounts: true:

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

Le chiamate riuscite restituiscono un identificatore name per la tua sottoscrizione, incluso un ID sottoscrizione univoco:

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

Decodifica i payload delle modifiche allo stato dei prodotti

Quando si verifica una modifica dello stato del prodotto, l'URI di callback riceve un messaggio con codifica base64. Una volta decodificato, il payload è conforme 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"
}

Campi e regole del payload

  • oldValue e newValue: rappresentano lo stato precedente e quello aggiornato. I valori possibili sono approved, pending, disapproved o una stringa vuota ('').
    • Se oldValue viene omesso, il prodotto viene creato ex novo.
    • Se newValue viene omesso, il prodotto è stato eliminato.
  • expirationTime: indica quando scade l'offerta del prodotto. Questo campo viene omesso quando un prodotto viene eliminato.
  • reportingContext: la piattaforma di pubblicità o di schede senza costi in cui lo stato è cambiato. I valori supportati includono SHOPPING_ADS, LOCAL_INVENTORY_ADS, YOUTUBE_SHOPPING, YOUTUBE_CHECKOUT, YOUTUBE_AFFILIATE e FREE_LISTINGS_UCP_CHECKOUT di ReportingContextEnum.
  • eventTime: il timestamp della generazione dell'evento. Utilizza questo timestamp per garantire l'ordine corretto degli eventi.

Testa le notifiche di modifica dello stato del prodotto

Utilizza la seguente richiesta di esempio per verificare se l'endpoint di callback riceve, conferma e decodifica correttamente i messaggi di modifica dello stato del prodotto:

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

In risposta a questa chiamata, l'URI di callback deve restituire un codice di stato HTTP accettabile (ad esempio 200 OK). Il messaggio decodificato ha i seguenti contenuti:

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