Referensi peristiwa

Seluruh 26 peristiwa webhook Listings API, dikelompokkan menurut sumber daya, beserta field yang tepat dan contoh payload untuk masing-masing.

26 event, dikelompokkan berdasarkan resource REST yang terkait. Setiap event di halaman ini dikirim ke satu URL webhook Anda. Tidak ada langganan per event, jadi buat percabangan berdasarkan event dan abaikan yang tidak Anda perlukan.

Semuanya menggunakan payload standar kecuali listing.submission, yang dijelaskan di bawah. Field opsional di dalam data dihilangkan saat kosong, bukan dikirim sebagai null.

Indeks

EventResourceDipicu saat
listing.submissionProfil bisnisPengiriman sitasi ke situs direktori mencapai hasil akhir
profile.createdLokasiLokasi dibuat
profile.updatedLokasiLokasi diedit
profile.deletedLokasiLokasi diarsipkan
connection.location_connectedAkun terhubungProfil bisnis Google atau Facebook ditautkan
connection.location_disconnectedAkun terhubungTautan profil bisnis dilepas
connection.reauth_requiredAkun terhubungKredensial dinyatakan tidak valid
connection.listing_inaccessibleAkun terhubungAkses ke profil bisnis hilang
connection.google_verification_verifiedAkun terhubungVerifikasi Google berhasil
connection.google_verification_failedAkun terhubungVerifikasi Google gagal
interaction.reviewUlasanUlasan masuk atau berubah
interaction.responseUlasanBalasan dipublikasikan atau berubah
local_post.createdPostinganPostingan dibuat
local_post.publishedPostinganPostingan dipublikasikan di Google
local_post.rejectedPostinganGoogle menolak postingan
local_post.deletedPostinganPostingan dihapus
social_post.createdSocialPostingan media sosial dibuat
social_post.publishedSocialPostingan media sosial dipublikasikan di setiap kanal yang ditargetkan
social_post.failedSocialPublikasi gagal di setidaknya satu kanal
social_post.rejectedSocialAlur persetujuan menolak postingan
social_post.deletedSocialPostingan media sosial diarsipkan
social_connection.connectedSocialKanal merek dihubungkan atau dihubungkan kembali
social_connection.disconnectedSocialKanal merek sengaja dihapus
social_connection.archivedSocialKanal merek hilang tanpa disengaja
review_analytics.daily_snapshotAnalitikAgregasi ulasan harian dijalankan
review_analytics.weekly_snapshotAnalitikAgregasi ulasan mingguan dijalankan

Profil bisnis

Digunakan bersama endpoint Profil bisnis, khususnya GET /locations/{locationId}/listings/premium, yang mengembalikan syncStatus dan listingUrl per sitasi yang diberitahukan oleh event ini.

listing.submission

Pemicu: pengiriman sitasi untuk satu lokasi di satu situs direktori mencapai status akhir.

Tingkat teratas:

FieldTipeDeskripsi
eventstringSelalu listing.submission.
dataobjectLihat di bawah.
statusstringsuccess, incomplete, atau canceled.
live_linkstringURL profil bisnis yang sudah dipublikasikan. Hanya disertakan pada success, dan hanya jika URL diketahui.
error_messagestringAlasan pengiriman tidak dapat diselesaikan. Hanya disertakan pada incomplete.

Di dalam data:

FieldTipeDeskripsi
business_idintegerID numerik lokasi.
v4_business_idstringRepresentasi base64 dari Location:<id>, yaitu bentuk ID global.
location_idstringID global base64 yang sama, bukan string numerik.
site.idintegerID situs direktori.
site.namestringNama situs direktori, e.g. Yelp.
site.urlstringURL beranda situs direktori.
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"}

Lokasi

Siklus hidup lokasi, berkorespondensi 1:1 dengan createLocation, updateLocation, dan archiveLocations. Berlaku per lokasi: location_id selalu berupa string numerik.

profile.created

Pemicu: lokasi baru dibuat.

Field dataTipeDeskripsi
sourcestringPihak yang membuatnya: user, api, atau bulk_edit.
JSON
{  "event": "profile.created",  "timestamp": "2026-08-25T10:04:00Z",  "account_id": 11073,  "location_id": "901234",  "data": { "source": "api" }}

profile.updated

Pemicu: detail lokasi yang sudah ada diedit.

Dibatasi dengan debounce menjadi satu pengiriman per lokasi setiap 60 detik, dengan pengiriman pada awal interval. Pengeditan dalam interval tersebut digabungkan, bukan ditunda. Event untuk pengeditan tersebut tidak pernah dikirim. Perlakukan changed_fields sebagai petunjuk tentang pengeditan yang memulai interval, bukan sebagai daftar lengkap perubahan.

Event tiba pada awal interval, sehingga pembacaan ulang lokasi saat event tiba hanya menampilkan pengeditan pertama tersebut. Jadwalkan pembacaan ulang kedua setelah interval berakhir, setidaknya 60 detik kemudian, dan lakukan juga rekonsiliasi lokasi secara berkala, karena pengiriman event ini hanya dicoba satu kali tanpa percobaan ulang. Lihat pemulihan setelah event terlewat.

Field dataTipeDeskripsi
sourcestringuser, api, atau bulk_edit.
changed_fieldsarray of stringNama field lokasi yang berubah, e.g. name, phone, address1. Dihilangkan saat kosong.
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

Pemicu: lokasi diarsipkan. Ini merupakan penghapusan sementara. Tidak ada penghapusan permanen, dan pengarsipan dapat dibatalkan dengan cancelArchiveLocations, yang tidak memicu event.

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

Akun terhubung

Siklus koneksi Google dan Facebook serta kondisinya, beserta endpoint Akun Terhubung. Cakupannya per lokasi. platform selalu bernilai google atau facebook; penyedia lain tidak menghasilkan peristiwa ini.

connected_account_id selalu ada sebagai kunci, tetapi bernilai null pada kedua peristiwa verifikasi Google.

connection.location_connected

Pemicu: profil bisnis Google atau Facebook ditautkan ke lokasi.

Field dataTipeDeskripsi
platformstringgoogle atau facebook.
connected_account_idstringAkun terhubung yang ditautkan.
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

Pemicu: tautan profil bisnis Google atau Facebook ke lokasi dilepas.

Field dataTipeDeskripsi
platformstringgoogle atau facebook.
connected_account_idstringAkun terhubung yang tautannya dilepas.
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

Pemicu: kredensial akun terhubung dinyatakan tidak valid. Tidak ada data yang akan disinkronkan melalui koneksi ini sampai seseorang memberikan otorisasi ulang.

Field dataTipeDeskripsi
platformstringgoogle atau facebook.
connected_account_idstringAkun terhubung yang memerlukan otorisasi ulang.
reasonstringDeskripsi yang dapat dibaca manusia. Tidak disertakan jika sumber tidak menyediakannya.
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

Pemicu: akun terhubung tidak lagi dapat mengakses profil bisnis lokasi tersebut. Berbeda dengan reauth_required: kredensial mungkin masih sepenuhnya valid, tetapi akses ke profil bisnis tertentu itu telah dicabut.

Field dataTipeDeskripsi
platformstringgoogle atau facebook.
connected_account_idstringAkun terhubung yang kehilangan akses.
reasonstringDeskripsi yang dapat dibaca manusia. Tidak disertakan jika sumber tidak menyediakannya.
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

Pemicu: Google Business Profile suatu lokasi lolos verifikasi.

Field dataTipeDeskripsi
platformstringSelalu bernilai google.
connected_account_idnullSelalu bernilai null pada peristiwa verifikasi.
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

Pemicu: verifikasi Google Business Profile berakhir dengan kegagalan. Tidak ada panggilan REST yang memulai verifikasi; statusnya sendiri dapat dibaca, seperti dijelaskan di atas.

Hanya status akhir yang menghasilkan peristiwa: VERIFIED memicu peristiwa _verified, sedangkan SUSPENDED atau DUPLICATE (failure_type rejected) dan ERROR_WHILE_FETCHING (transient) memicu peristiwa ini. Status yang menunjukkan proses masih berlangsung (PENDING_VERIFICATION, UNDER_REVIEW, NOT_VERIFIED, NOT_CONNECTED) sama sekali tidak menghasilkan peristiwa, sehingga tidak adanya peristiwa bukanlah suatu indikasi. Baca googleVerificationStatus secara berkala melalui pembacaan lokasi selama verifikasi berlangsung.

Field dataTipeDeskripsi
platformstringSelalu bernilai google.
connected_account_idnullSelalu bernilai null pada peristiwa verifikasi.
failure_typestringrejected untuk profil yang ditangguhkan atau merupakan duplikat; transient ketika data Google tidak dapat dibaca. Percobaan ulang hanya layak dilakukan untuk transient.
reasonstringDeskripsi yang dapat dibaca manusia. Tidak disertakan jika sumber tidak menyediakannya.
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."  }}

Ulasan

Ulasan dan tanggapan, beserta endpoint Ulasan termasuk beri tanggapan, edit tanggapan dan arsipkan tanggapan.

Ulasan dalam kategori Social disaring dan tidak pernah dikirimkan.

interaction.review

Pemicu: ulasan diterima ke dalam sistem atau berubah.

Field data.interactionTipeDeskripsi
idstringUUID interaksi. UUID ini mengidentifikasi ulasan, bukan perubahan ini: id yang sama diterima kembali setiap kali ulasan berubah. Gunakan UUID ini sebagai kunci baris Anda; jangan pernah menggunakannya untuk mengabaikan pengiriman berikutnya. Lihat duplikat dan urutan.
typestringReview.
contentstringIsi ulasan. Dapat bernilai null.
ratingnumberPeringkat bintang. Dapat bernilai null untuk sumber yang tidak memilikinya.
titlestringJudul ulasan, jika sumber menyediakannya.
author_namestringNama tampilan pemberi ulasan.
author_avatarstringURL avatar pemberi ulasan.
datestringTanggal ulasan dipublikasikan di sumbernya, dalam format ISO-8601.
sourcestringSumber asalnya, e.g. google.com, facebook.com.
permalinkstringTautan ke ulasan di sumbernya.
categorystringKategori interaksi. Social disaring sebelum pengiriman.
interaction_statusstringStatus alur kerja interaksi.
parent_idstringSelalu bernilai null untuk ulasan.
interaction_request_idstringPermintaan yang terkait dengan interaksi ini. Dapat bernilai null.
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

Pemicu: tanggapan terhadap ulasan dipublikasikan, diedit, atau diarsipkan. Strukturnya sama dengan interaction.review, dengan dua perbedaan: type bernilai Response, dan parent_id merujuk pada ulasan yang ditanggapi.

Field data.interactionTipeDeskripsi
typestringResponse.
parent_idstringUUID ulasan yang ditanggapi.
contentstringTeks tanggapan.
ratingnumberSelalu bernilai null pada tanggapan.

Semua field lain yang tercantum di bawah interaction.review disertakan dengan makna yang sama.

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

Postingan

Postingan lokal Google Business Profile, bersama endpoint Postingan. Cakupannya per lokasi, dan location_id berupa string numerik.

Keempat peristiwa menggunakan struktur data yang sama; field opsionalnya berbeda. Semua field opsional dihilangkan jika kosong.

Field dataTipeDeskripsi
post_idintegerPostingan yang memiliki item ini, yaitu id yang dikembalikan oleh endpoint pembuatan.
post_item_idintegerItem per lokasi. Postingan ke 20 lokasi menghasilkan 20 item, dan peristiwa berlaku per item.
post_typestringSTANDARD, EVENT, atau OFFER.
post_external_idstringNama resource yang ditetapkan Google untuk postingan tersebut. Tidak disertakan sampai Google menerimanya.
published_urlstringURL yang dapat dibuka di browser. Biasanya tidak disertakan: Google tidak selalu mengembalikannya; gunakan post_external_id untuk mencocokkan data.
rejection_reasonstringHanya pada local_post.rejected.

local_post.created

Pemicu: item postingan dibuat dan masuk antrean untuk dikirim ke Google. Postingan tersebut belum tayang.

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

Pemicu: Google menerima postingan dan postingan tersebut sudah tayang.

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

Pemicu: Google menolak postingan, atau pengirimannya gagal.

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

Pemicu: item postingan dihapus.

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

Publikasi media sosial dan siklus koneksi pada tingkat merek, bersama endpoint Social. Sembilan peristiwa: lima untuk postingan, empat untuk koneksi.

account_id dan timestamp disertakan seperti biasa. ID di dalam data berupa UUID biasa yang sama dengan yang digunakan REST API, dikirim sebagai string.

social_post.created

Pemicu: postingan sosial dibuat. Hanya saat pembuatan — pengeditan postingan yang sudah ada tidak menghasilkan peristiwa ini lagi.

Field dataTipeDeskripsi
post_idstringUUID postingan, yaitu socialPostId yang sama dengan yang dikembalikan oleh pembuatan.
social_profile_idstringMerek yang memiliki postingan tersebut. Bernilai null jika postingan tidak memiliki merek.
statusstringStatus postingan saat dibuat.
created_byintegerPengguna yang membuatnya.
platform_idsarray berisi integerID internal platform yang menjadi tujuan postingan.
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

Pemicu: postingan berhasil tayang sepenuhnya. Peristiwa ini dihasilkan hanya jika publikasi berhasil sepenuhnya: setidaknya satu saluran berhasil memublikasikan dan tidak ada saluran yang mengalami error. Publikasi yang hanya berhasil sebagian tidak menghasilkan peristiwa ini — kondisi tersebut menghasilkan social_post.failed sebagai gantinya.

Field dataTipeDeskripsi
post_idstringUUID postingan.
social_profile_idstringMerek yang memiliki postingan tersebut.
statusstringStatus postingan.
published_onstringWaktu postingan mulai tayang dalam format ISO-8601. Bernilai null jika tidak tercatat.
itemsarray berisi objectSatu entri per saluran; field dijelaskan di bawah.
items[].platformstringNama platform, e.g. instagram.
items[].social_platform_idintegerID internal platform.
items[].connected_account_idstringUUID koneksi yang memublikasikannya.
items[].published_urlstringURL aktif item yang telah dipublikasikan.
items[].vendor_post_idstringID yang ditetapkan platform untuk item yang telah dipublikasikan.
items[].statusstringStatus saluran tersebut.
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

Pemicu: publikasi gagal. Ini adalah kegagalan pengiriman, berbeda dari penolakan editorial. Peristiwa ini dipicu pada percobaan ulang terakhir, sehingga tidak dihasilkan selama postingan masih memiliki sisa percobaan.

items memuat hanya saluran yang mengalami error, sehingga postingan yang berhasil dipublikasikan di dua platform dan gagal di platform ketiga akan diterima di sini dengan satu item.

Field dataTipeDeskripsi
post_idstringUUID postingan.
social_profile_idstringMerek yang memiliki postingan tersebut.
statusstringStatus postingan.
itemsarray berisi objectSatu entri per saluran yang gagal; field dijelaskan di bawah.
items[].platformstringNama platform.
items[].social_platform_idintegerID internal platform.
items[].statusstringStatus saluran tersebut.
items[].reasonstringAlasan singkat, dipotong hingga 300 karakter. Dapat bernilai null.
items[].vendor_errorstringPesan dengan panjang terbatas yang aman ditampilkan kepada pengguna, disusun dari error platform. Tidak pernah berupa payload mentah dari platform. Dapat bernilai null.
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

Pemicu: alur kerja persetujuan menolak postingan. Penolakan ini bersifat editorial, bukan kegagalan pengiriman: postingan tidak pernah sampai ke platform.

Field dataTipeDeskripsi
post_idstringUUID postingan.
social_profile_idstringMerek yang memiliki postingan tersebut.
statusstringStatus postingan.
rejection_reasonstringKomentar peninjau. Bernilai null jika peninjau tidak memberikan komentar.
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

Pemicu: postingan diarsipkan, baik melalui POST /social/posts/cancel maupun oleh proses pengarsipan terjadwal. Peristiwa ini hanya dipicu ketika status benar-benar berubah, sehingga mengarsipkan kembali postingan yang sudah diarsipkan tidak menghasilkan peristiwa apa pun.

Field dataTipeDeskripsi
post_idstringUUID postingan.
social_profile_idstringMerek yang memiliki postingan tersebut.
statusstringStatus postingan.
archived_atstringWaktu postingan diarsipkan dalam format ISO-8601. Bernilai null jika tidak tercatat.
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

Pemicu: saluran merek menjadi aktif, baik saat pertama kali terhubung maupun saat saluran yang sebelumnya diarsipkan dihubungkan kembali. is_reconnect membedakan keduanya.

Field dataTipeDeskripsi
social_profile_idstringMerek yang terkait dengan saluran tersebut.
connected_account_idstringUUID koneksi, yaitu id yang dikembalikan oleh daftar koneksi.
platformstringNama platform, e.g. instagram.
display_namestringNama tampilan saluran. Dapat bernilai null.
is_reconnectbooleanBernilai false saat pertama kali terhubung, dan true ketika saluran yang sebelumnya diarsipkan kembali aktif.
listing_connected_account_idstringDisertakan hanya jika saluran juga ditautkan ke akun terhubung Listings. Jika tidak, field ini dihilangkan.
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

Pemicu: saluran sengaja dihapus melalui pemanggilan pemutusan koneksi. Peristiwa ini hanya dihasilkan ketika saluran benar-benar diarsipkan, sehingga pemutusan koneksi yang gagal tidak menghasilkan peristiwa yang keliru.

Field dataTipeDeskripsi
social_profile_idstringMerek yang sebelumnya terkait dengan saluran tersebut.
connected_account_idstringUUID koneksi.
platformstringNama platform.
display_namestringNama tampilan saluran. Dapat bernilai null.
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

Pemicu: koneksi saluran terputus tanpa dikehendaki — platform membatalkan validitas token, atau proses rekonsiliasi mendapati bahwa saluran tidak lagi dapat dijangkau. Tidak ada yang meminta pemutusan ini, dan hal itulah yang membedakannya dari disconnected.

Field dataTipeDeskripsi
social_profile_idstringMerek yang sebelumnya terkait dengan saluran tersebut.
connected_account_idstringUUID koneksi.
platformstringNama platform.
display_namestringNama tampilan saluran. Dapat bernilai null.
reasonstringAlasan koneksi saluran terputus. Dapat bernilai null.
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."  }}

Analitik ulasan

Rekap ulasan terjadwal, satu event per lokasi per periode.

Kedua event menggunakan struktur data yang sama:

Field dataTipeDeskripsi
periodstringAwal periode, YYYY-MM-DD.
granularitystringdaily atau weekly.
total_reviewsintegerJumlah ulasan sepanjang waktu untuk lokasi tersebut.
new_reviews_in_periodintegerUlasan yang diterima selama periode ini.
average_ratingnumberNilai rata-rata untuk periode ini, dengan 4 angka di belakang koma. Bernilai 0.0 jika tidak ada ulasan.
previous_average_ratingnumberNilai rata-rata untuk periode sebelumnya. Bernilai 0.0 jika tidak ada data sebelumnya.

Lokasi tanpa aktivitas dalam periode tersebut tidak menghasilkan event, tetapi Anda juga tidak menerima event dari lokasi yang snapshot-nya gagal sampai. Tidak diterimanya snapshot dapat memiliki beberapa arti, dan untuk kelompok event ini, kemungkinan bahwa hal itu tidak menandakan masalah justru paling kecil. Penyebabnya bisa berupa: tidak ada aktivitas; pengiriman gagal atau melewati batas waktu (hanya ada satu percobaan dan tidak ada percobaan ulang); pengiriman dinonaktifkan karena akun tidak memiliki hak akses webhook, tidak memiliki URL yang dikonfigurasi, belum diverifikasi, atau diblokir; atau, yang paling mungkin dalam kasus ini, batas per menit menyebabkan sebagian event dalam lonjakan dibuang sebagai rate_limited.

Jangan pernah mencatat nilai nol hanya karena snapshot tidak diterima. Cocokkan dengan GET /locations/{locationId}/review-analytics-overview untuk periode yang sama, dan jika pembacaan tersebut juga gagal, laporkan periode tersebut sebagai tidak tersedia, bukan sebagai nol.

review_analytics.daily_snapshot

Pemicu: proses rekap harian, sekali per lokasi per hari.

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

Pemicu: proses rekap mingguan, sekali per lokasi per minggu. period adalah hari pertama dalam minggu yang dirangkum.

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

Event yang mungkin Anda terima tetapi tidak boleh dijadikan dasar implementasi

Platform menghasilkan kelompok event lain: kampanye ulasan, peringkat, promosi berbayar postingan media sosial, perubahan status akun iklan media sosial, ide postingan AI, dan kepemilikan Google Business Profile. Kelompok event tersebut tidak memiliki endpoint REST yang dipublikasikan dalam Listings API, tidak didokumentasikan di sini, dan strukturnya tidak tercakup dalam jaminan kompatibilitas apa pun. Karena hanya ada satu URL dan tidak ada langganan per event, handler Anda harus mengabaikan setiap event yang tidak dikenalinya dan tetap mengembalikan 200.