Push-Benachrichtigungen für Änderungen des Produktstatus erhalten

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

Prüfen Sie vorab, ob Ihr Callback-URI gemäß den Anforderungen konfiguriert ist, die in der Übersicht über die Notifications-Unter-API beschrieben sind.

Änderungen des Produktstatus abonnieren

Wenn Sie Produktstatusänderungen 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, über das Sie Benachrichtigungen erhalten möchten.

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

Abonnement für alle verwalteten Konten abschließen

Wenn Sie mehrere Konten verwalten, z. B. ein erweitertes Konto mit untergeordneten Konten, können Sie Produktstatusänderungen 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, wird an Ihren Callback-URI eine Base64-codierte Nachricht gesendet. Die decodierte Nutzlast entspricht 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 ausgelassen, wenn ein Produkt gelöscht wird.
  • reportingContext: Die Werbe- oder Produkteintragsoberflä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 zu gewährleisten.

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