Push-Benachrichtigungen für Änderungen des Produktstatus erhalten

Sie können PRODUCT_STATUS_CHANGE-Benachrichtigungen abonnieren, um in Echtzeit benachrichtigt zu werden, wenn sich der Freigabestatus von Produkten in Ihren Merchant Center-Konten ändert. Sie können beispielsweise erkennen, wenn ein Produkt abgelehnt wird, und potenzielle Probleme mit der Datenqualität beheben.

Prüfen Sie vor Beginn, ob Ihr Callback-URI gemäß den Anforderungen in der Übersicht über die Benachrichtigungs-Sub-API konfiguriert ist.

Änderungen des Produktstatus abonnieren

Wenn Sie Änderungen am Produktstatus abonnieren möchten, senden Sie eine POST-Anfrage an die Ressource notificationsubscriptions, wobei registeredEvent auf PRODUCT_STATUS_CHANGE festgelegt ist.

Für ein bestimmtes Zielkonto abonnieren

Mit der folgenden Beispielanfrage werden Produktstatusänderungen für ein bestimmtes Händlerkonto abonniert:

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

Ersetzen Sie Folgendes:

  • ACCOUNT_ID: Die Kennung des Kontos, dem das Abo gehört und das Benachrichtigungen erhält.
  • TARGETACCOUNT_ID: Die Kennung des Kontos, zu dem Sie Benachrichtigungen erhalten möchten.

Wenn Ihr Merchant Center-Konto ein eigenständiges Konto ohne verknüpfte Konten ist, verwenden Sie für beide Variablen Ihre eigene Konto-ID.

Für alle verwalteten Konten abonnieren

Wenn Sie mehrere Konten verwalten (z. B. ein erweitertes Konto mit Unterkonten), können Sie Änderungen am Produktstatus für alle verwalteten Konten abonnieren, indem Sie allManagedAccounts: true festlegen:

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

Bei erfolgreichen Aufrufen wird eine name-Kennung für Ihr Abo zurückgegeben, einschließlich einer eindeutigen Abo-ID:

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

Nutzlasten für Produktstatusänderungen decodieren

Wenn sich der Produktstatus ändert, empfängt Ihr Callback-URI eine Base64-codierte Nachricht. Nach der Decodierung entspricht die Nutzlast dem Format 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"
}

Nutzlastfelder und -regeln

  • oldValue und newValue: Stellen den vorherigen und den aktualisierten Status dar. Mögliche Werte sind approved, pending, disapproved oder ein leerer String ('').
    • Wenn oldValue weggelassen wird, wird das Produkt neu erstellt.
    • Wenn newValue weggelassen wird, wurde das Produkt gelöscht.
  • expirationTime: Gibt an, wann das Produktangebot abläuft. Dieses Feld wird weggelassen, wenn ein Produkt gelöscht wird.
  • reportingContext: Die Werbe- oder Produkteintragsfläche, auf der sich der Status geändert hat. Unterstützte Werte sind SHOPPING_ADS, LOCAL_INVENTORY_ADS, YOUTUBE_SHOPPING, YOUTUBE_CHECKOUT, YOUTUBE_AFFILIATE und FREE_LISTINGS_UCP_CHECKOUT aus ReportingContextEnum.
  • eventTime: Der Zeitstempel, der angibt, wann das Ereignis generiert wurde. Verwenden Sie diesen Zeitstempel, um die richtige Reihenfolge der Ereignisse sicherzustellen.

Benachrichtigungen zu Änderungen des Produktstatus testen

Verwenden Sie die folgende Beispielanfrage, um zu testen, ob Ihr Callback-Endpunkt Nachrichten zu Produktstatusänderungen korrekt empfängt, bestätigt und decodiert:

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

Als Antwort auf diesen Aufruf sollte Ihr Callback-URI einen akzeptablen HTTP-Statuscode (z. B. 200 OK) zurückgeben. Die decodierte Nachricht hat folgenden Inhalt:

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