---
title: Google Review Webhooks
description: "How to receive Google Business Profile review notifications and match them to review requests."
---

Review Manager can subscribe to Google Business Profile review notifications through Google Cloud Pub/Sub. When Google publishes a new or updated review notification, Review Manager fetches the full review, stores it, and tries to match it to the project that requested the review.

## Settings

Open **Settings** in the admin panel and fill in the **Google Review Webhooks** section.

| Setting | Purpose |
| --- | --- |
| Business Profile account ID | The Google Business Profile account, with or without the `accounts/` prefix. This is filled automatically after Google OAuth succeeds, and can be edited if the wrong account is selected. |
| Pub/Sub topic | The full Google Cloud Pub/Sub topic name, such as `projects/example-project/topics/google-reviews`. |
| Webhook token | Optional shared token for the Pub/Sub push URL. |

Google OAuth client ID, client secret, and redirect URI remain environment configuration because they are application credentials.

## Google Cloud Setup

1. Create a Google Cloud Pub/Sub topic.
2. Grant `mybusiness-api-pubsub@system.gserviceaccount.com` publish permission on the topic.
3. Create a Pub/Sub push subscription that points to:

```text
https://your-domain.example/api/google/reviews/webhook
```

If a webhook token is configured, append it as a query string:

```text
https://your-domain.example/api/google/reviews/webhook?token=your-token
```

4. Authenticate Google Business Profile OAuth through `/google/redirect`. The callback stores the first accessible Business Profile account ID in application settings.
5. Open **Locations** in the admin panel.
6. Click **Register Google Review Webhook**.

The action registers `NEW_REVIEW` and `UPDATED_REVIEW` notifications for the configured account and Pub/Sub topic.

## Local Location Mapping

Each local location must have its Google Business Profile location resource saved in `google_place_id`, for example:

```text
locations/987654321
```

Google webhook notifications include the full resource name, such as `accounts/123456789/locations/987654321`. Review Manager accepts either local format when matching a notification to a location.

## Review Matching

After the full Google review is fetched, Review Manager scores possible review request matches. It favors:

- same local location
- review requests whose `/go/{hash}` links were clicked near the review creation time
- review requests sent shortly before the review
- completed review requests
- reviewer display name similarity to the project customer name
- reviewer/customer last-name matches

When a project is selected, the review receives `project_id` and its metadata stores the match score, matched review request ID when available, timing signals, and match timestamp.

## Backfill Behavior

Manual Google review imports use the same matcher. This keeps historical imports and real-time webhook imports consistent.

## References

- [Google real-time notification setup](https://developers.google.com/my-business/content/notification-setup)
- [Google Business Profile notification settings API](https://developers.google.com/my-business/reference/notifications/rest/v1/accounts/updateNotificationSetting)
- [Google Business Profile reviews get API](https://developers.google.com/my-business/reference/rest/v4/accounts.locations.reviews/get)
