Ereignisreferenz

Alle 26 Webhook-Ereignisse der Listings API, nach Ressource gruppiert, jeweils mit den genauen Feldern und einer Beispiel-Payload.

26 Ereignisse, gruppiert nach der REST-Ressource, auf die sie sich beziehen. Jedes Ereignis auf dieser Seite wird an Ihre einzige Webhook-URL zugestellt. Es gibt keine Abonnements für einzelne Ereignisse. Verzweigen Sie daher anhand von event und ignorieren Sie, was Sie nicht benötigen.

Alle verwenden die Standard-Payload mit Ausnahme von listing.submission, das weiter unten gesondert beschrieben wird. Optionale Felder innerhalb von data werden bei leerem Inhalt weggelassen, statt als null gesendet zu werden.

Übersicht

EreignisRessourceWird ausgelöst, wenn
listing.submissionEinträgeDie Übermittlung eines Eintrags an eine Verzeichniswebsite abgeschlossen wird
profile.createdStandorteEin Standort erstellt wird
profile.updatedStandorteEin Standort bearbeitet wird
profile.deletedStandorteEin Standort archiviert wird
connection.location_connectedVerbundene KontenEin Google- oder Facebook-Eintrag verknüpft wird
connection.location_disconnectedVerbundene KontenDie Verknüpfung eines Eintrags aufgehoben wird
connection.reauth_requiredVerbundene KontenZugangsdaten ungültig geworden sind
connection.listing_inaccessibleVerbundene KontenDer Zugriff auf einen Eintrag verloren gegangen ist
connection.google_verification_verifiedVerbundene KontenDie Verifizierung bei Google erfolgreich war
connection.google_verification_failedVerbundene KontenDie Verifizierung bei Google fehlgeschlagen ist
interaction.reviewBewertungenEine Bewertung eingeht oder geändert wird
interaction.responseBewertungenEine Antwort veröffentlicht oder geändert wird
local_post.createdBeiträgeEin Beitrag erstellt wird
local_post.publishedBeiträgeEin Beitrag auf Google veröffentlicht wird
local_post.rejectedBeiträgeGoogle einen Beitrag abgelehnt hat
local_post.deletedBeiträgeEin Beitrag gelöscht wird
social_post.createdSocialEin Social-Media-Beitrag erstellt wird
social_post.publishedSocialEin Social-Media-Beitrag auf allen vorgesehenen Kanälen veröffentlicht wird
social_post.failedSocialDie Veröffentlichung auf mindestens einem Kanal fehlgeschlagen ist
social_post.rejectedSocialEin Freigabeworkflow den Beitrag abgelehnt hat
social_post.deletedSocialEin Social-Media-Beitrag archiviert wird
social_connection.connectedSocialEin Markenkanal verbunden oder erneut verbunden wird
social_connection.disconnectedSocialEin Markenkanal absichtlich entfernt wird
social_connection.archivedSocialDie Verbindung zu einem Markenkanal unbeabsichtigt verloren geht
review_analytics.daily_snapshotAnalysenDie tägliche Zusammenfassung der Bewertungen ausgeführt wird
review_analytics.weekly_snapshotAnalysenDie wöchentliche Zusammenfassung der Bewertungen ausgeführt wird

Einträge

Gehört zu den Endpunkten für Einträge, insbesondere zu GET /locations/{locationId}/listings/premium, der für jeden Eintrag die Werte syncStatus und listingUrl zurückgibt, die dieses Ereignis meldet.

listing.submission

Auslöser: Die Übermittlung eines Eintrags für einen Standort an eine Verzeichniswebsite erreicht einen Endzustand.

Oberste Ebene:

FeldTypBeschreibung
eventstringImmer listing.submission.
dataobjectSiehe unten.
statusstringsuccess, incomplete oder canceled.
live_linkstringDie URL des veröffentlichten Eintrags. Nur bei success und nur, wenn eine URL bekannt ist.
error_messagestringDer Grund, warum die Übermittlung nicht abgeschlossen werden konnte. Nur bei incomplete.

Innerhalb von data:

FeldTypBeschreibung
business_idintegerDie numerische ID des Standorts.
v4_business_idstringBase64-Kodierung von Location:<id>, der globalen ID-Form.
location_idstringDieselbe Base64-kodierte globale ID, keine Zeichenfolge aus Ziffern.
site.idintegerDie ID der Verzeichniswebsite.
site.namestringDer Name der Verzeichniswebsite, e.g. Yelp.
site.urlstringDie URL der Startseite der Verzeichniswebsite.
JSON
{  "event": "listing.submission",  "data": {    "business_id": 279381,    "v4_business_id": "TG9jYXRpb246Mjc5Mzgx",    "location_id": "TG9jYXRpb246Mjc5Mzgx",    "site": {      "id": 42,      "name": "Yelp",      "url": "https://www.yelp.com"    }  },  "status": "success",  "live_link": "https://www.yelp.com/biz/acme-dental-downtown"}

Standorte

Standortlebenszyklus, mit einer 1:1-Zuordnung zu createLocation, updateLocation und archiveLocations. Auf einen Standort beschränkt: location_id ist immer eine Zeichenfolge aus Ziffern.

profile.created

Auslöser: Ein neuer Standort wird erstellt.

Feld in dataTypBeschreibung
sourcestringWer den Standort erstellt hat: user, api oder bulk_edit.
JSON
{  "event": "profile.created",  "timestamp": "2026-08-25T10:04:00Z",  "account_id": 11073,  "location_id": "901234",  "data": { "source": "api" }}

profile.updated

Auslöser: Die Angaben zu einem bestehenden Standort werden bearbeitet.

Auf eine Zustellung pro Standort innerhalb von 60 Sekunden begrenzt, jeweils beim ersten Auftreten. Weitere Änderungen innerhalb dieses Zeitfensters werden zusammengefasst und nicht verzögert zugestellt. Sie werden nie zugestellt. Betrachten Sie changed_fields als Hinweis auf die Änderung, die das Zeitfenster ausgelöst hat, und nicht als vollständige Änderungsübersicht.

Das Ereignis trifft zu Beginn des Zeitfensters ein. Wenn Sie den Standort bei Eingang erneut abrufen, sehen Sie daher nur diese erste Änderung. Planen Sie einen zweiten Abruf nach Ablauf des Zeitfensters, also mindestens 60 Sekunden später, und gleichen Sie Standorte zusätzlich in regelmäßigen Zeitabständen ab, da für dieses Ereignis nur ein Zustellversuch ohne Wiederholung erfolgt. Siehe Nachholen eines verpassten Ereignisses.

Feld in dataTypBeschreibung
sourcestringuser, api oder bulk_edit.
changed_fieldsarray of stringNamen der geänderten Standortfelder, e.g. name, phone, address1. Wird weggelassen, wenn leer.
JSON
{  "event": "profile.updated",  "timestamp": "2026-08-25T10:06:12Z",  "account_id": 11073,  "location_id": "901234",  "data": {    "source": "user",    "changed_fields": ["name", "phone"]  }}

profile.deleted

Auslöser: Ein Standort wird archiviert. Dies ist eine logische Löschung. Eine endgültige Löschung ist nicht möglich, und die Archivierung kann mit cancelArchiveLocations rückgängig gemacht werden, wobei kein Ereignis ausgelöst wird.

Feld in dataTypBeschreibung
sourcestringuser, api oder bulk_edit.
JSON
{  "event": "profile.deleted",  "timestamp": "2026-08-25T10:20:44Z",  "account_id": 11073,  "location_id": "901234",  "data": { "source": "user" }}

Verbundene Konten

Lebenszyklus und Zustand der Verbindungen zu Google und Facebook, ergänzend zu den Endpunkten für verbundene Konten. Auf einzelne Standorte beschränkt. platform ist immer google oder facebook; andere Anbieter senden diese Ereignisse nicht.

connected_account_id ist als Schlüssel immer vorhanden, hat bei den beiden Google-Verifizierungsereignissen jedoch den Wert null.

connection.location_connected

Auslöser: Ein Google- oder Facebook-Eintrag wird mit einem Standort verknüpft.

Feld dataTypBeschreibung
platformstringgoogle oder facebook.
connected_account_idstringDas verbundene Konto, das verknüpft wurde.
JSON
{  "event": "connection.location_connected",  "timestamp": "2026-08-25T14:32:10Z",  "account_id": 11073,  "location_id": "279381",  "data": {    "platform": "google",    "connected_account_id": "ba03bc4b-9f8c-4d3b-8e93-9628034c63cc"  }}

connection.location_disconnected

Auslöser: Die Verknüpfung eines Google- oder Facebook-Eintrags mit einem Standort wird aufgehoben.

Feld dataTypBeschreibung
platformstringgoogle oder facebook.
connected_account_idstringDas verbundene Konto, dessen Verknüpfung aufgehoben wurde.
JSON
{  "event": "connection.location_disconnected",  "timestamp": "2026-08-25T14:35:02Z",  "account_id": 11073,  "location_id": "279381",  "data": {    "platform": "google",    "connected_account_id": "ba03bc4b-9f8c-4d3b-8e93-9628034c63cc"  }}

connection.reauth_required

Auslöser: Die Zugangsdaten des verbundenen Kontos wurden ungültig gemacht. Über diese Verbindung wird nichts synchronisiert, bis jemand sie erneut autorisiert.

Feld dataTypBeschreibung
platformstringgoogle oder facebook.
connected_account_idstringDas verbundene Konto, das erneut autorisiert werden muss.
reasonstringFür Menschen lesbare Beschreibung. Wird weggelassen, wenn die Quelle keine bereitstellt.
JSON
{  "event": "connection.reauth_required",  "timestamp": "2026-08-25T14:40:18Z",  "account_id": 11073,  "location_id": "279381",  "data": {    "platform": "google",    "connected_account_id": "ba03bc4b-9f8c-4d3b-8e93-9628034c63cc",    "reason": "Google credentials are invalid. Please reconnect."  }}

connection.listing_inaccessible

Auslöser: Das verbundene Konto kann nicht mehr auf den Eintrag des Standorts zugreifen. Im Unterschied zu reauth_required können die Zugangsdaten weiterhin uneingeschränkt gültig sein, aber der Zugriff auf diesen bestimmten Eintrag wurde entzogen.

Feld dataTypBeschreibung
platformstringgoogle oder facebook.
connected_account_idstringDas verbundene Konto, das den Zugriff verloren hat.
reasonstringFür Menschen lesbare Beschreibung. Wird weggelassen, wenn die Quelle keine bereitstellt.
JSON
{  "event": "connection.listing_inaccessible",  "timestamp": "2026-08-25T14:42:55Z",  "account_id": 11073,  "location_id": "279381",  "data": {    "platform": "facebook",    "connected_account_id": "cf12de77-2211-4a09-b7c1-0a6f3b2e91aa",    "reason": "No longer has access to this listing."  }}

connection.google_verification_verified

Auslöser: Das Google Business Profile eines Standorts wird erfolgreich verifiziert.

Feld dataTypBeschreibung
platformstringImmer google.
connected_account_idnullBei Verifizierungsereignissen immer null.
JSON
{  "event": "connection.google_verification_verified",  "timestamp": "2026-08-25T14:50:00Z",  "account_id": 11073,  "location_id": "279381",  "data": {    "platform": "google",    "connected_account_id": null  }}

connection.google_verification_failed

Auslöser: Die Verifizierung eines Google Business Profile endet mit einem endgültigen Fehler. Kein REST-Aufruf startet eine solche Verifizierung; der Status selbst kann wie oben beschrieben ausgelesen werden.

Nur Endzustände lösen ein Ereignis aus: VERIFIED löst das Ereignis _verified aus, und SUSPENDED oder DUPLICATE (failure_type rejected) sowie ERROR_WHILE_FETCHING (transient) lösen dieses Ereignis aus. Die Zwischenzustände (PENDING_VERIFICATION, UNDER_REVIEW, NOT_VERIFIED, NOT_CONNECTED) lösen keinerlei Ereignis aus, daher lässt das Ausbleiben eines Ereignisses keinen Rückschluss zu. Fragen Sie googleVerificationStatus während einer laufenden Verifizierung regelmäßig über einen Standortabruf ab.

Feld dataTypBeschreibung
platformstringImmer google.
connected_account_idnullBei Verifizierungsereignissen immer null.
failure_typestringrejected bei einem gesperrten oder doppelten Profil; transient, wenn die Daten von Google nicht ausgelesen werden konnten. Ein erneuter Versuch ist nur bei transient sinnvoll.
reasonstringFür Menschen lesbare Beschreibung. Wird weggelassen, wenn die Quelle keine bereitstellt.
JSON
{  "event": "connection.google_verification_failed",  "timestamp": "2026-08-25T14:52:31Z",  "account_id": 11073,  "location_id": "279381",  "data": {    "platform": "google",    "connected_account_id": null,    "failure_type": "rejected",    "reason": "This profile is suspended."  }}

Bewertungen

Bewertungen und Antworten, ergänzend zu den Endpunkten für Bewertungen, einschließlich Antworten, Antwort bearbeiten und Antwort archivieren.

Bewertungen der Kategorie Social werden herausgefiltert und niemals zugestellt.

interaction.review

Auslöser: Eine Bewertung wird eingelesen oder geändert.

Feld data.interactionTypBeschreibung
idstringUUID der Interaktion. Sie identifiziert die Bewertung, nicht diese Änderung: Bei jeder Änderung der Bewertung wird dieselbe ID erneut übermittelt. Verwenden Sie sie als Schlüssel für Ihren Datensatz; verwenden Sie sie niemals, um eine spätere Zustellung zu unterdrücken. Siehe Duplikate und Reihenfolge.
typestringReview.
contentstringDer Bewertungstext. Kann null sein.
ratingnumberSternebewertung. Kann bei Quellen ohne Sternebewertung null sein.
titlestringTitel der Bewertung, sofern die Quelle einen bereitstellt.
author_namestringAnzeigename der Person, die die Bewertung verfasst hat.
author_avatarstringAvatar-URL der Person, die die Bewertung verfasst hat.
datestringDatum im ISO-8601-Format, an dem die Bewertung bei der Quelle veröffentlicht wurde.
sourcestringHerkunft, e.g. google.com, facebook.com.
permalinkstringLink zur Bewertung bei der Quelle.
categorystringKategorie der Interaktion. Social wird vor der Zustellung herausgefiltert.
interaction_statusstringWorkflow-Status der Interaktion.
parent_idstringBei einer Bewertung immer null.
interaction_request_idstringDie Anfrage, zu der diese Interaktion gehört. Kann null sein.
JSON
{  "event": "interaction.review",  "timestamp": "2026-08-25T09:12:44Z",  "account_id": 11073,  "location_id": "279381",  "data": {    "interaction": {      "id": "6f8a1d20-3e11-4a55-9f7d-2b0c9e5a4471",      "type": "Review",      "content": "Friendly staff and no waiting.",      "rating": 5,      "title": null,      "author_name": "Dana R.",      "author_avatar": "https://lh3.googleusercontent.com/a/example",      "date": "2026-08-25T08:58:02Z",      "source": "google.com",      "permalink": "https://maps.google.com/example-review",      "category": "Review",      "interaction_status": "unread",      "parent_id": null,      "interaction_request_id": "3c1e9b74-88a2-4d0e-9c31-77a1f0be5d92"    }  }}

interaction.response

Auslöser: Eine Antwort auf eine Bewertung wird veröffentlicht, bearbeitet oder archiviert. Dieselbe Struktur wie interaction.review, mit zwei Unterschieden: type hat den Wert Response, und parent_id verweist auf die Bewertung, auf die geantwortet wird.

Feld data.interactionTypBeschreibung
typestringResponse.
parent_idstringUUID der Bewertung, auf die sich diese Antwort bezieht.
contentstringDer Antworttext.
ratingnumberBei einer Antwort immer null.

Alle anderen unter interaction.review aufgeführten Felder sind mit derselben Bedeutung vorhanden.

JSON
{  "event": "interaction.response",  "timestamp": "2026-08-25T09:30:07Z",  "account_id": 11073,  "location_id": "279381",  "data": {    "interaction": {      "id": "b2d7c095-5f43-4e21-8a10-6d9c3f77e208",      "type": "Response",      "content": "Thanks Dana, see you next time!",      "rating": null,      "author_name": "Acme Dental Downtown",      "date": "2026-08-25T09:29:55Z",      "source": "google.com",      "permalink": "https://maps.google.com/example-review",      "category": "Review",      "interaction_status": "responded",      "parent_id": "6f8a1d20-3e11-4a55-9f7d-2b0c9e5a4471",      "interaction_request_id": "3c1e9b74-88a2-4d0e-9c31-77a1f0be5d92"    }  }}

Beiträge

Lokale Beiträge in Google Business Profile, ergänzend zu den Posts-Endpunkten. Auf einen Standort beschränkt, location_id ist eine numerische Zeichenfolge.

Die vier Ereignisse verwenden dieselbe data-Struktur; die optionalen Felder unterscheiden sich. Alle optionalen Felder werden weggelassen, wenn sie leer sind.

data-FeldTypBeschreibung
post_idintegerDer Beitrag, zu dem dieses Element gehört, angegeben durch die id, die Sie von den Endpunkten zum Erstellen zurückerhalten.
post_item_idintegerDas Element für den jeweiligen Standort. Ein Beitrag für 20 Standorte erzeugt 20 Elemente, und Ereignisse werden pro Element ausgelöst.
post_typestringSTANDARD, EVENT oder OFFER.
post_external_idstringDer von Google vergebene Ressourcenname des Beitrags. Fehlt, bis Google den Beitrag akzeptiert.
published_urlstringEine im Browser aufrufbare URL. Sie fehlt normalerweise: Google gibt sie nicht zuverlässig zurück; verwenden Sie post_external_id für die Zuordnung.
rejection_reasonstringNur bei local_post.rejected.

local_post.created

Auslöser: Ein Beitragselement wird erstellt und für die Übermittlung an Google in die Warteschlange gestellt. Es ist noch nicht veröffentlicht.

JSON
{  "event": "local_post.created",  "timestamp": "2026-08-25T11:02:00Z",  "account_id": 11073,  "location_id": "279381",  "data": {    "post_id": 88421,    "post_item_id": 5512309,    "post_type": "STANDARD"  }}

local_post.published

Auslöser: Google hat den Beitrag akzeptiert und er ist veröffentlicht.

JSON
{  "event": "local_post.published",  "timestamp": "2026-08-25T11:06:41Z",  "account_id": 11073,  "location_id": "279381",  "data": {    "post_id": 88421,    "post_item_id": 5512309,    "post_type": "STANDARD",    "post_external_id": "accounts/123/locations/456/localPosts/789"  }}

local_post.rejected

Auslöser: Google hat den Beitrag abgelehnt oder die Übermittlung ist fehlgeschlagen.

JSON
{  "event": "local_post.rejected",  "timestamp": "2026-08-25T11:07:15Z",  "account_id": 11073,  "location_id": "279381",  "data": {    "post_id": 88421,    "post_item_id": 5512310,    "post_type": "OFFER",    "rejection_reason": "Rejected"  }}

local_post.deleted

Auslöser: Das Beitragselement wird gelöscht.

JSON
{  "event": "local_post.deleted",  "timestamp": "2026-08-25T15:40:09Z",  "account_id": 11073,  "location_id": "279381",  "data": {    "post_id": 88421,    "post_item_id": 5512309,    "post_type": "STANDARD",    "post_external_id": "accounts/123/locations/456/localPosts/789"  }}

Social

Veröffentlichungen in sozialen Medien auf Markenebene und Lebenszyklus von Verbindungen, ergänzend zu den Social-Endpunkten. Neun Ereignisse: fünf für Beiträge, vier für Verbindungen.

account_id und timestamp sind wie gewohnt vorhanden. Die IDs innerhalb von data sind dieselben einfachen UUIDs, die auch die REST API verwendet, und werden als Zeichenfolgen gesendet.

social_post.created

Auslöser: Ein Beitrag für soziale Medien wird erstellt. Nur beim Erstellen — eine Bearbeitung eines bestehenden Beitrags löst das Ereignis nicht erneut aus.

data-FeldTypBeschreibung
post_idstringDie UUID des Beitrags, dieselbe socialPostId, die create zurückgibt.
social_profile_idstringDie Marke, zu der der Beitrag gehört. null, wenn dem Beitrag keine Marke zugeordnet ist.
statusstringDer Status des Beitrags beim Erstellen.
created_byintegerDer Benutzer, der ihn erstellt hat.
platform_idsarray of integerInterne IDs der Plattformen, für die der Beitrag bestimmt ist.
JSON
{  "event": "social_post.created",  "timestamp": "2026-09-28T14:02:11Z",  "account_id": 62570,  "location_id": null,  "data": {    "post_id": "c47a1e58-2b93-4f10-a6d7-58e0c9b12345",    "social_profile_id": "6f2c9a41-7b0e-4d55-9a2f-3c8e1d47b902",    "status": "scheduled",    "created_by": 40122,    "platform_ids": [1, 2, 4]  }}

social_post.published

Auslöser: Der Beitrag wurde vollständig veröffentlicht. Dieses Ereignis wird nur bei vollständigem Erfolg ausgelöst: Mindestens ein Kanal hat den Beitrag veröffentlicht und bei keinem Kanal ist ein Fehler aufgetreten. Eine teilweise Veröffentlichung löst es nicht aus — in diesem Fall wird stattdessen social_post.failed ausgelöst.

data-FeldTypBeschreibung
post_idstringDie UUID des Beitrags.
social_profile_idstringDie Marke, zu der der Beitrag gehört.
statusstringDer Status des Beitrags.
published_onstringZeitpunkt der Veröffentlichung des Beitrags im ISO-8601-Format. null, falls nicht erfasst.
itemsarray of objectEin Eintrag pro Kanal; die Felder sind unten aufgeführt.
items[].platformstringPlattformname, e.g. instagram.
items[].social_platform_idintegerInterne Plattform-ID.
items[].connected_account_idstringDie UUID der Verbindung, über die der Beitrag veröffentlicht wurde.
items[].published_urlstringDie öffentlich erreichbare URL des veröffentlichten Elements.
items[].vendor_post_idstringDie von der Plattform vergebene ID des veröffentlichten Elements.
items[].statusstringDer Status dieses Kanals.
JSON
{  "event": "social_post.published",  "timestamp": "2026-10-02T13:30:07Z",  "account_id": 62570,  "location_id": null,  "data": {    "post_id": "c47a1e58-2b93-4f10-a6d7-58e0c9b12345",    "social_profile_id": "6f2c9a41-7b0e-4d55-9a2f-3c8e1d47b902",    "status": "published",    "published_on": "2026-10-02T13:30:04",    "items": [      {        "platform": "instagram",        "social_platform_id": 2,        "connected_account_id": "b81d5b3c-4a90-4f6a-9c11-71e0dd2fa4a7",        "published_url": "https://www.instagram.com/p/CxYz1234abc/",        "vendor_post_id": "18029384756012345",        "status": "success"      }    ]  }}

social_post.failed

Auslöser: Die Veröffentlichung ist fehlgeschlagen. Dies ist ein Fehler bei der Übermittlung, keine redaktionelle Ablehnung. Das Ereignis wird beim letzten Wiederholungsversuch ausgelöst, also nicht, solange für den Beitrag noch Versuche übrig sind.

items enthält nur die Kanäle, bei denen ein Fehler aufgetreten ist, sodass ein Beitrag, der auf zwei Plattformen veröffentlicht wurde und auf einer dritten fehlgeschlagen ist, hier mit einem Element ankommt.

data-FeldTypBeschreibung
post_idstringDie UUID des Beitrags.
social_profile_idstringDie Marke, zu der der Beitrag gehört.
statusstringDer Status des Beitrags.
itemsarray of objectEin Eintrag pro Kanal mit fehlgeschlagener Veröffentlichung; die Felder sind unten aufgeführt.
items[].platformstringPlattformname.
items[].social_platform_idintegerInterne Plattform-ID.
items[].statusstringDer Status dieses Kanals.
items[].reasonstringKurze Begründung, auf 300 Zeichen gekürzt. Kann null sein.
items[].vendor_errorstringEine längenbegrenzte, zur sicheren Anzeige für Benutzer geeignete Meldung, die aus dem Fehler der Plattform abgeleitet wird. Niemals die unveränderten Nutzdaten der Plattform. Kann null sein.
JSON
{  "event": "social_post.failed",  "timestamp": "2026-10-02T13:34:55Z",  "account_id": 62570,  "location_id": null,  "data": {    "post_id": "c47a1e58-2b93-4f10-a6d7-58e0c9b12345",    "social_profile_id": "6f2c9a41-7b0e-4d55-9a2f-3c8e1d47b902",    "status": "failed",    "items": [      {        "platform": "linkedin",        "social_platform_id": 4,        "status": "error",        "reason": "Authorization expired",        "vendor_error": "The access token is no longer valid."      }    ]  }}

social_post.rejected

Auslöser: Ein Freigabeprozess hat den Beitrag abgelehnt. Es handelt sich um eine redaktionelle Ablehnung, nicht um einen Übermittlungsfehler: Der Beitrag hat keine Plattform erreicht.

data-FeldTypBeschreibung
post_idstringDie UUID des Beitrags.
social_profile_idstringDie Marke, zu der der Beitrag gehört.
statusstringDer Status des Beitrags.
rejection_reasonstringDer Kommentar der prüfenden Person. null, wenn sie keinen hinterlassen hat.
JSON
{  "event": "social_post.rejected",  "timestamp": "2026-09-29T09:11:03Z",  "account_id": 62570,  "location_id": null,  "data": {    "post_id": "e08b2d97-6f14-4c22-b7a5-9d3e1f6c4a70",    "social_profile_id": "6f2c9a41-7b0e-4d55-9a2f-3c8e1d47b902",    "status": "rejected",    "rejection_reason": "Please use the updated product name."  }}

social_post.deleted

Auslöser: Der Beitrag wurde archiviert, entweder über POST /social/posts/cancel oder durch den geplanten Archivierungslauf. Das Ereignis wird nur bei einem tatsächlichen Statuswechsel ausgelöst, sodass das erneute Archivieren eines bereits archivierten Beitrags kein Ereignis auslöst.

data-FeldTypBeschreibung
post_idstringDie UUID des Beitrags.
social_profile_idstringDie Marke, zu der der Beitrag gehört.
statusstringDer Status des Beitrags.
archived_atstringZeitpunkt der Archivierung des Beitrags im ISO-8601-Format. null, falls nicht erfasst.
JSON
{  "event": "social_post.deleted",  "timestamp": "2026-09-30T16:20:41Z",  "account_id": 62570,  "location_id": null,  "data": {    "post_id": "e08b2d97-6f14-4c22-b7a5-9d3e1f6c4a70",    "social_profile_id": "6f2c9a41-7b0e-4d55-9a2f-3c8e1d47b902",    "status": "archived",    "archived_at": "2026-09-30T16:20:39"  }}

social_connection.connected

Auslöser: Ein Markenkanal wurde aktiv, entweder durch eine erstmalige Verbindung oder durch die erneute Verbindung eines zuvor archivierten Kanals. is_reconnect unterscheidet die beiden Fälle.

data-FeldTypBeschreibung
social_profile_idstringDie Marke, der der Kanal zugeordnet ist.
connected_account_idstringDie UUID der Verbindung, also id, die von der Verbindungsliste zurückgegeben wird.
platformstringPlattformname, e.g. instagram.
display_namestringDer Anzeigename des Kanals. Kann null sein.
is_reconnectbooleanfalse bei einer erstmaligen Verbindung, true, wenn ein zuvor archivierter Kanal wieder aktiv wurde.
listing_connected_account_idstringNur vorhanden, wenn der Kanal auch mit einem verbundenen Konto in Listings verknüpft ist. Andernfalls weggelassen.
JSON
{  "event": "social_connection.connected",  "timestamp": "2026-09-27T11:05:22Z",  "account_id": 62570,  "location_id": null,  "data": {    "social_profile_id": "6f2c9a41-7b0e-4d55-9a2f-3c8e1d47b902",    "connected_account_id": "b81d5b3c-4a90-4f6a-9c11-71e0dd2fa4a7",    "platform": "instagram",    "display_name": "Jenny Home",    "is_reconnect": false  }}

social_connection.disconnected

Auslöser: Der Kanal wurde bewusst durch einen disconnect-Aufruf entfernt. Das Ereignis wird nur ausgelöst, wenn der Kanal tatsächlich archiviert wurde, sodass ein fehlgeschlagener disconnect-Aufruf kein falsches Ereignis erzeugt.

data-FeldTypBeschreibung
social_profile_idstringDie Marke, der der Kanal zugeordnet war.
connected_account_idstringDie UUID der Verbindung.
platformstringPlattformname.
display_namestringDer Anzeigename des Kanals. Kann null sein.
JSON
{  "event": "social_connection.disconnected",  "timestamp": "2026-10-04T08:47:10Z",  "account_id": 62570,  "location_id": null,  "data": {    "social_profile_id": "6f2c9a41-7b0e-4d55-9a2f-3c8e1d47b902",    "connected_account_id": "b81d5b3c-4a90-4f6a-9c11-71e0dd2fa4a7",    "platform": "instagram",    "display_name": "Jenny Home"  }}

social_connection.archived

Auslöser: Die Verbindung zum Kanal ging unbeabsichtigt verloren — die Plattform hat das Token ungültig gemacht oder ein Abgleich hat ergeben, dass der Kanal nicht mehr erreichbar ist. Niemand hat dies veranlasst, was dieses Ereignis von disconnected unterscheidet.

data-FeldTypBeschreibung
social_profile_idstringDie Marke, der der Kanal zugeordnet war.
connected_account_idstringDie UUID der Verbindung.
platformstringPlattformname.
display_namestringDer Anzeigename des Kanals. Kann null sein.
reasonstringDer Grund für den Verlust der Verbindung. Kann null sein.
JSON
{  "event": "social_connection.archived",  "timestamp": "2026-10-06T02:15:33Z",  "account_id": 62570,  "location_id": null,  "data": {    "social_profile_id": "6f2c9a41-7b0e-4d55-9a2f-3c8e1d47b902",    "connected_account_id": "2d4e6f80-1c33-4b7a-8e05-9a1b2c3d4e5f",    "platform": "facebook",    "display_name": "Jenny Home & Co.",    "reason": "Access token has been invalidated by the platform."  }}

Bewertungsanalysen

Zeitgesteuerte Zusammenfassungen von Bewertungen, ein Ereignis pro Standort und Zeitraum.

Beide Ereignisse verwenden dieselbe data-Struktur:

data-FeldTypBeschreibung
periodstringBeginn des Zeitraums, YYYY-MM-DD.
granularitystringdaily oder weekly.
total_reviewsintegerGesamtzahl aller bisher für den Standort eingegangenen Bewertungen.
new_reviews_in_periodintegerIn diesem Zeitraum eingegangene Bewertungen.
average_ratingnumberDurchschnittliche Bewertung für diesen Zeitraum mit 4 Nachkommastellen. 0.0, wenn es keine Bewertungen gab.
previous_average_ratingnumberDurchschnittliche Bewertung für den vorherigen Zeitraum. 0.0, wenn keine Daten für den vorherigen Zeitraum vorliegen.

Für einen Standort ohne Aktivität im Zeitraum wird nichts gesendet, aber auch für einen Standort, dessen Momentaufnahme nie angekommen ist, erhalten Sie nichts. Eine fehlende Momentaufnahme ist mehrdeutig, und bei dieser Ereignisgruppe ist die unproblematische Erklärung am wenigsten wahrscheinlich. Mögliche Ursachen sind: keine Aktivität; eine fehlgeschlagene oder wegen Zeitüberschreitung abgebrochene Zustellung (es gibt einen Versuch und keine Wiederholung); eine unterbundene Zustellung, weil das Konto keine Berechtigung für Webhooks hat, keine URL konfiguriert ist oder das Konto nicht verifiziert oder gesperrt ist; oder, hier am wahrscheinlichsten, das Limit pro Minute, durch das ein Teil des Anfrageschubs als rate_limited verworfen wird.

Erfassen Sie niemals eine Null allein aufgrund einer fehlenden Momentaufnahme. Gleichen Sie die Daten mit GET /locations/{locationId}/review-analytics-overview für denselben Zeitraum ab, und wenn auch dieser Lesezugriff fehlschlägt, weisen Sie den Zeitraum als nicht verfügbar statt mit dem Wert Null aus.

review_analytics.daily_snapshot

Auslöser: der tägliche Zusammenfassungsjob, einmal pro Standort und Tag.

JSON
{  "event": "review_analytics.daily_snapshot",  "timestamp": "2026-08-25T02:00:00Z",  "account_id": 11073,  "location_id": "279381",  "data": {    "period": "2026-08-24",    "granularity": "daily",    "total_reviews": 1240,    "new_reviews_in_period": 3,    "average_rating": 4.6667,    "previous_average_rating": 5.0  }}

review_analytics.weekly_snapshot

Auslöser: der wöchentliche Zusammenfassungsjob, einmal pro Standort und Woche. period ist der erste Tag der zusammengefassten Woche.

JSON
{  "event": "review_analytics.weekly_snapshot",  "timestamp": "2026-08-24T02:00:00Z",  "account_id": 11073,  "location_id": "279381",  "data": {    "period": "2026-08-17",    "granularity": "weekly",    "total_reviews": 1237,    "new_reviews_in_period": 18,    "average_rating": 4.6123,    "previous_average_rating": 4.5901  }}

Ereignisse, die Sie möglicherweise erhalten, auf die Sie sich aber nicht stützen sollten

Die Plattform sendet weitere Ereignisgruppen: Bewertungskampagnen, Rankings, Hervorhebungen von Social-Media-Beiträgen, Statusänderungen von Social-Media-Werbekonten, KI-Beitragsideen und Inhaberschaft von Google Business Profile. Für diese gibt es keinen veröffentlichten REST-Endpunkt in der Listings API, sie sind hier nicht dokumentiert, und für ihre Strukturen gilt keine Kompatibilitätsgarantie. Da es nur eine URL und keine ereignisspezifischen Abonnements gibt, sollte Ihr Handler jeden unbekannten event-Wert ignorieren und dennoch 200 zurückgeben.