イベントリファレンス
Listings APIの全26種類のWebhookイベントをリソース別にまとめ、各イベントの正確なフィールドとペイロードの例を示します。
26種類のイベントを、関連するRESTリソースごとにまとめています。このページのすべてのイベントは、単一のWebhook URLに配信されます。イベントごとのサブスクリプションはないため、eventで処理を分岐し、不要なイベントは無視してください。
以下で説明するlisting.submissionを除き、すべてのイベントが標準ペイロードを使用します。data内の任意フィールドが空の場合は、nullとして送信されず、省略されます。
索引
掲載情報
掲載情報のエンドポイントと併用します。特にGET /locations/{locationId}/listings/premiumは、このイベントが通知するサイテーションごとのsyncStatusとlistingUrlを返します。
listing.submission
発生条件: 1つのディレクトリサイトに対する1つの拠点のサイテーション送信が最終状態に達したときです。
最上位レベル:
data内:
{ "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"}拠点
拠点のライフサイクルのイベントは、createLocation、updateLocation、archiveLocationsと1対1で対応します。拠点単位のイベントであり、location_idは常に数字の文字列です。
profile.created
発生条件: 新しい拠点が作成されたときです。
{ "event": "profile.created", "timestamp": "2026-08-25T10:04:00Z", "account_id": 11073, "location_id": "901234", "data": { "source": "api" }}profile.updated
発生条件: 既存の拠点の詳細が編集されたときです。
デバウンス処理により、拠点ごとに60秒間につき1回だけ配信され、最初の編集時に配信されます。この期間内の編集に対する配信は抑制され、遅延して配信されるわけではありません。それらのイベントは配信されません。changed_fieldsは、この期間の開始となった編集を示す参考情報として扱い、完全な差分としては扱わないでください。
イベントはこの期間の開始時に届くため、到着時に拠点を再取得しても、最初の編集しか反映されていません。このイベントの配信は1回だけ試行され、再試行されないため、少なくとも60秒後の期間終了後に2回目の再取得を行うよう設定し、タイマーによる拠点データの定期的な照合も行ってください。イベントを受信できなかった場合の復旧を参照してください。
{ "event": "profile.updated", "timestamp": "2026-08-25T10:06:12Z", "account_id": 11073, "location_id": "901234", "data": { "source": "user", "changed_fields": ["name", "phone"] }}profile.deleted
発生条件: 拠点がアーカイブされたときです。これは論理削除です。物理削除はなく、アーカイブはcancelArchiveLocationsで取り消せますが、取り消し時にイベントは発生しません。
{ "event": "profile.deleted", "timestamp": "2026-08-25T10:20:44Z", "account_id": 11073, "location_id": "901234", "data": { "source": "user" }}接続済みアカウント
Google と Facebook の接続ライフサイクルと正常性に関するイベントで、接続済みアカウントのエンドポイントに対応します。対象範囲は拠点単位です。platformは常にgoogleまたはfacebookで、他のプロバイダーではこれらのイベントは発生しません。
connected_account_idは常にキーとして存在しますが、Google のオーナー確認に関する2つのイベントではnullになります。
connection.location_connected
トリガー: Google または Facebook の掲載情報が拠点に関連付けられたときです。
{ "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
トリガー: Google または Facebook の掲載情報と拠点の関連付けが解除されたときです。
{ "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
トリガー: 接続済みアカウントの認証情報が無効になったときです。誰かが再認可するまで、この接続では何も同期されません。
{ "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
トリガー: 接続済みアカウントから拠点の掲載情報にアクセスできなくなったときです。reauth_requiredとは異なり、認証情報は引き続き有効でも、その掲載情報へのアクセス権が削除された場合に発生します。
{ "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
トリガー: 拠点の Google Business Profile のオーナー確認が成功したときです。
{ "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
トリガー: Google Business Profile のオーナー確認が失敗の最終状態に達したときです。オーナー確認を開始する REST 呼び出しはありませんが、前述のとおりステータス自体は取得できます。
イベントが発生するのは最終状態のみです。VERIFIEDでは_verifiedイベントが発生し、SUSPENDEDまたはDUPLICATE(failure_type rejected)、およびERROR_WHILE_FETCHING(transient)ではこのイベントが発生します。進行中の状態(PENDING_VERIFICATION、UNDER_REVIEW、NOT_VERIFIED、NOT_CONNECTED)ではイベントが一切発生しないため、イベントがないことから状態を判断することはできません。オーナー確認の進行中は、拠点取得操作でgoogleVerificationStatusをポーリングしてください。
{ "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." }}レビュー
レビューと返信に関するイベントで、返信、返信の編集、返信のアーカイブを含むレビューのエンドポイントに対応します。
Socialカテゴリのレビューは除外され、一切配信されません。
interaction.review
トリガー: レビューが取り込まれたとき、または変更されたときです。
{ "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
トリガー: レビューへの返信が投稿、編集、またはアーカイブされたときです。interaction.reviewと同じ構造ですが、typeがResponseであることと、parent_idが返信先のレビューを指すことの2点が異なります。
interaction.reviewに記載されているその他のフィールドも、すべて同じ意味で含まれます。
{ "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" } }}投稿
投稿エンドポイントに対応する、Google Business Profile のローカル投稿です。拠点単位で、location_idは数値を表す文字列です。
4つのイベントは同じdata構造を共有し、任意フィールドが異なります。任意フィールドはすべて、空の場合は省略されます。
local_post.created
トリガー: 投稿アイテムが作成され、Google への送信キューに追加されたときです。まだ公開されていません。
{ "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
トリガー: Google が投稿を受け付け、公開されたときです。
{ "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
トリガー: Google が投稿を拒否したか、送信に失敗したときです。
{ "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
トリガー: 投稿アイテムが削除されたときです。
{ "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
Socialエンドポイントに対応する、ブランド単位のソーシャル投稿と接続のライフサイクルです。イベントは9つあり、投稿用が5つ、接続用が4つです。
account_idとtimestampは通常どおり含まれます。data内の ID は REST API が使用するものと同じ通常の UUID で、文字列として送信されます。
social_post.created
トリガー: ソーシャル投稿が作成されたときです。作成時のみで、既存の投稿を編集しても再発行されません。
{ "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
トリガー: 投稿が完全に公開されたときです。このイベントは、少なくとも1つのチャネルで公開され、どのチャネルでもエラーが発生していない、完全に成功した場合にのみ発行されます。一部のみ公開された場合はこのイベントは発行されず、代わりにsocial_post.failedが発行されます。
{ "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
トリガー: 公開に失敗したときです。これは配信の失敗であり、編集上の判断による却下とは異なります。最後の再試行時に発生するため、投稿に試行回数が残っている間は発行されません。
itemsにはエラーが発生したチャネルのみが含まれるため、2つのプラットフォームで公開され、3つ目で失敗した投稿の場合、このイベントには1つのアイテムが含まれます。
{ "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
トリガー: 承認ワークフローで投稿が却下されたときです。配信の失敗ではなく編集上の判断によるもので、投稿はプラットフォームに到達していません。
{ "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
トリガー: POST /social/posts/cancelまたは定期的なアーカイブ処理によって、投稿がアーカイブされたときです。実際に状態が変化した場合にのみ発生するため、すでにアーカイブされた投稿を再度アーカイブしても、イベントは発行されません。
{ "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
トリガー: 初回の接続、またはアーカイブされていたチャネルの再接続によって、ブランドのチャネルがアクティブになったときです。is_reconnectで両者を区別します。
{ "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
トリガー: disconnectの呼び出しによってチャネルが意図的に削除されたときです。チャネルが実際にアーカイブされた場合にのみ発行されるため、切断に失敗しても誤ったイベントは発行されません。
{ "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
トリガー: プラットフォームがトークンを無効化したか、整合性確認処理でチャネルにアクセスできなくなったことが検出され、チャネルとの接続が意図せず失われたときです。誰からも要求されていない点が、disconnectedとの違いです。
{ "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." }}レビュー分析
定期的なレビュー集計です。イベントは拠点ごと、期間ごとに1件です。
両方のイベントで、dataの構造は共通です。
期間中にアクティビティがない拠点ではイベントが生成されませんが、スナップショットが届かなかった拠点でも、受信側では同じ状態になります。スナップショットがないだけでは原因を特定できず、このイベント群では、問題がないと解釈できる可能性が最も低くなります。考えられる原因は、アクティビティがないこと、配信の失敗またはタイムアウト(試行は1回で、再試行はありません)、アカウントにWebhookの利用権限がない、URLが設定されていない、アカウントが未検証またはブロックされていることによる配信の停止、または、このイベント群で最も可能性が高い、1分あたりの上限によって短時間に集中した配信の一部がrate_limitedとして破棄されることです。
スナップショットがないことだけを根拠に、決して0を記録しないでください。同じ期間のGET /locations/{locationId}/review-analytics-overviewと照合し、その取得にも失敗した場合は、その期間を0ではなく取得不可として報告してください。
review_analytics.daily_snapshot
トリガー: 日次集計ジョブです。拠点ごとに1日1回実行されます。
{ "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
トリガー: 週次集計ジョブです。拠点ごとに週1回実行されます。periodは、集計対象の週の最初の日です。
{ "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 }}受信する可能性はあるものの、実装の前提にすべきではないイベント
プラットフォームは、レビューキャンペーン、ランキング、ソーシャル投稿のブースト、ソーシャル広告アカウントのステータス変更、AIによる投稿アイデア、Google Business Profileのオーナー権限に関するイベント群も生成します。これらにはListings APIで公開されているRESTエンドポイントがなく、このドキュメントでは説明しておらず、その構造について互換性は一切保証されません。URLは1つで、イベントごとの購読設定はないため、ハンドラーは認識できないeventを無視し、その場合も200を返す必要があります。