Reference · Tools
Google Business Profile
Manage posts and reviews on Google Business Profile. Create, retrieve, update, and delete local posts; retrieve and reply to customer reviews.
The Google Business Profile node manages the public face of a location: create, retrieve, update and delete local posts, and retrieve or reply to customer reviews. A typical build is posting a weekly offer automatically and routing every new one-star review to Slack with a drafted reply waiting for approval.
- Node type
- Action
- Parameters
- 28
- Outputs
- Output, Error
- Credentials
- Google Business Profile OAuth2 API
Google Business Profile
Manage posts and reviews on Google Business Profile.
Overview
Google Business Profile tool manages local posts and customer reviews via the Google My Business API. Post operations: create (STANDARD/EVENT/OFFER/ALERT types with date/time/CTA fields), delete, get by resource name, get all with pagination, update with auto-generated updateMask. Review operations: get a review by resource name or ID, get all reviews with pagination, reply to a review, delete a reply. Uses three different API domains: mybusiness.googleapis.com/v4 for posts/reviews, mybusinessaccountmanagement.googleapis.com/v1 for accounts, mybusinessbusinessinformation.googleapis.com/v1 for locations.
Category: Marketing
Tool Name: google_business_profile
Version: 1
Appearance: Icon: lucide-Target | Color: #4285F4
Node Type
Action — processes input items and produces output
Input / Output
| Direction | Port(s) |
|---|---|
| Input | Input |
| Output | Output, Error |
Credentials
This tool requires Google Business Profile OAuth2 API credentials. See the Credentials Guide for setup instructions.
Resources
| Resource | Value |
|---|---|
| Post | post |
| Review | review |
Operations
Each resource has its own Operation list, and both reuse get and getAll. Pick the resource first, then the operation.
| Resource | Operation | Value | Description |
|---|---|---|---|
| Post | Create | create | Create a new post on Google Business Profile. |
| Post | Delete | delete | Delete an existing post. |
| Post | Get | get | Retrieve details of a specific post. |
| Post | Get Many | getAll | Retrieve multiple posts for a business location. |
| Post | Update | update | Update an existing post. |
| Review | Delete Reply | deleteReply | Delete a reply to a review. |
| Review | Get | get | Retrieve details of a specific review. |
| Review | Get Many | getAll | Retrieve multiple reviews for a business location. |
| Review | Reply | reply | Reply to a customer review. |
Parameters
Everything is addressed by Google resource name: an account is accounts/{accountId}, a location is accounts/{accountId}/locations/{locationId}, and a post is accounts/{accountId}/locations/{locationId}/localPosts/{postId}. Account, Location, Post, Review, Summary, Title and Reply all accept expressions.
All Operations
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Authentication | options | No | oAuth2 | Authentication method to use. |
Options: oAuth2 (OAuth2, recommended), serviceAccount | ||||
Google Account (credentialId) | credential | No | — | Connect or select your Google account. (shown when Authentication is oAuth2) |
| Service Account Email | string | Yes | — | The email address of the Google service account. (shown when Authentication is serviceAccount) |
Private Key (serviceAccountPrivateKey) | string | Yes | — | The private key from the service account JSON key file. Paste the whole PEM block, BEGIN and END lines included. (shown when Authentication is serviceAccount) |
| Max Concurrency | number | No | 5 | Maximum number of items to process concurrently (1–20). |
Post: Create
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Account | string | Yes | — | The Google Business Profile account resource name (e.g. accounts/0123456789). |
| Location | string | Yes | — | The specific location resource name (e.g. accounts/0123456789/locations/0123456789). |
Post Type (postType) | options | Yes | STANDARD | The type of post to create. It decides which of the fields below appear. |
Options: STANDARD (text and optional CTA), EVENT (title plus start/end date-time), OFFER (event, CTA and optional coupon), ALERT | ||||
| Summary | string | Yes | — | The main text of the post. |
| Title | string | Yes | — | The event or offer title. (shown when Post Type is EVENT, OFFER) |
Start Date and Time (startDateTime) | dateTime | Yes | — | The start date and time of the event (ISO 8601). Converted to Google nested date+time format. (shown when Post Type is EVENT) |
End Date and Time (endDateTime) | dateTime | Yes | — | The end date and time of the event (ISO 8601). Converted to Google nested date+time format. (shown when Post Type is EVENT) |
Start Date (startDate) | string | Yes | — | The start date of the offer (YYYY-MM-DD). (shown when Post Type is OFFER) |
End Date (endDate) | string | Yes | — | The end date of the offer (YYYY-MM-DD). (shown when Post Type is OFFER) |
Alert Type (alertType) | options | Yes | COVID_19 | The sub-type of the alert. (shown when Post Type is ALERT) |
Options: COVID_19 | ||||
Additional Options (additionalOptions) | collection | No | {} | Optional additional fields for the post. |
— Language (languageCode) | string | No | — | The language code of the post content. |
— Call to Action Type (callToActionType) | options | No | ACTION_TYPE_UNSPECIFIED | The type of call to action (not applicable to OFFER posts). |
Options: ACTION_TYPE_UNSPECIFIED, BOOK, CALL, LEARN_MORE, ORDER, SHOP, SIGN_UP | ||||
— Call to Action URL (callToActionUrl) | string | No | — | The URL that users are sent to when clicking through the promotion. |
— Coupon Code (couponCode) | string | No | — | The coupon code for the offer (OFFER posts only). |
— Redeem Online URL (redeemOnlineUrl) | string | No | — | Link to redeem the offer (OFFER posts only). |
— Terms and Conditions (termsConditions) | string | No | — | The terms and conditions of the offer (OFFER posts only). |
Post: Delete
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Account | string | Yes | — | The Google Business Profile account resource name. Used for context only; the post resource name is specified in Post below. |
Post (post) | string | Yes | — | The full post resource name in the format accounts/{accountId}/locations/{locationId}/localPosts/{postId}. |
Post: Get
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Account | string | Yes | — | The Google Business Profile account resource name. Used for context only; the post resource name is specified in Post below. |
Post (post) | string | Yes | — | The full post resource name in the format accounts/{accountId}/locations/{locationId}/localPosts/{postId}. |
Post: Get Many
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Account | string | Yes | — | The Google Business Profile account resource name (e.g. accounts/0123456789). |
| Location | string | Yes | — | The specific location resource name (e.g. accounts/0123456789/locations/0123456789). |
| Return All | boolean | No | false | Whether to return all results or limit to a maximum number. |
| Limit | number | No | 20 | Maximum number of results to return. (shown when Return All is false) |
Post: Update
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Account | string | Yes | — | The Google Business Profile account resource name. Used for context only; the post resource name is specified in Post below. |
Post (post) | string | Yes | — | The full post resource name in the format accounts/{accountId}/locations/{locationId}/localPosts/{postId}. |
Fields to Update (additionalFields) | collection | No | {} | The fields to update. An updateMask is auto-generated from the keys you provide, so only the fields you add are changed. |
— Summary (summary) | string | No | — | The main text of the post. |
— Language (languageCode) | string | No | — | The language code of the post content. |
— Call to Action Type (callToActionType) | options | No | ACTION_TYPE_UNSPECIFIED | The type of call to action. |
Options: ACTION_TYPE_UNSPECIFIED, BOOK, GET_OFFER (deprecated — use the OFFER post type instead), LEARN_MORE, ORDER, SHOP, SIGN_UP | ||||
— Call to Action URL (url) | string | No | — | The URL that users are sent to when clicking through the promotion. |
— Start Date and Time (startDateTime) | dateTime | No | — | The start date and time of the event. |
— End Date and Time (endDateTime) | dateTime | No | — | The end date and time of the event. |
— Title (title) | string | No | — | The event or offer title. |
— Start Date (startDate) | string | No | — | The start date of the offer. |
— End Date (endDate) | string | No | — | The end date of the offer. |
— Coupon Code (couponCode) | string | No | — | The coupon code for the offer. |
— Redeem Online URL (redeemOnlineUrl) | string | No | — | Link to redeem the offer. |
— Terms and Conditions (termsConditions) | string | No | — | The terms and conditions of the offer. |
Review: Get
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Account | string | Yes | — | The Google Business Profile account resource name. |
| Location | string | Yes | — | The specific location resource name. |
Review (review) | string | Yes | — | The full review resource name or the review ID portion after “reviews/”. |
Review: Get Many
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Account | string | Yes | — | The Google Business Profile account resource name. |
| Location | string | Yes | — | The specific location resource name. |
| Return All | boolean | No | false | Whether to return all results or limit to a maximum number. |
| Limit | number | No | 20 | Maximum number of results to return. (shown when Return All is false) |
Review: Reply
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Account | string | Yes | — | The Google Business Profile account resource name. |
| Location | string | Yes | — | The specific location resource name. |
Review (review) | string | Yes | — | The full review resource name or the review ID portion after “reviews/”. |
Reply (reply) | string | No | — | The body of the reply (up to 4096 characters). |
Review: Delete Reply
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Account | string | Yes | — | The Google Business Profile account resource name. |
| Location | string | Yes | — | The specific location resource name. |
Review (review) | string | Yes | — | The full review resource name or the review ID portion after “reviews/”. |
Output Data
Results are merged onto the input item’s JSON at the top level — the fields the item already carried survive, and a result field with the same name overwrites the item’s value. Binary data on the input item is not forwarded: if a downstream node needs a file from further upstream, branch around this node rather than through it.
| Operation | Output |
|---|---|
| Post Get Many, Review Get Many | One output item per post or review. With Return All on, the node keeps paging until Google runs out of records. |
| Post Create, Post Get, Post Update, Review Get, Review Reply | One output item carrying the returned post or review. |
| Post Delete, Review Delete Reply | One output item carrying success: true — Google answers these with no content. |
A listing that comes back empty still emits the input item unchanged, so an empty result reads as an item with no post or review fields on it rather than a missing item. Post Update with no fields selected also returns success: true without calling Google at all.
Usage Examples
- Create a standard post on a business location
- Create an event post with start and end date/time
- Create an offer post with coupon code
- Delete a post by its resource name
- Get a post by resource name
- List all posts for a business location
- Update a post summary or call-to-action
- Get a customer review by resource name
- List all reviews for a business location
- Reply to a customer review
- Delete a reply to a review
Example Configuration
Publish a standard post with a Learn More button:
{
"type": "google_business_profile",
"parameters": {
"resource": "post",
"operation": "create",
"account": "accounts/123456789",
"location": "accounts/123456789/locations/987654321",
"postType": "STANDARD",
"summary": "{{ $json.announcement }}",
"additionalOptions": {
"languageCode": "en-US",
"callToActionType": "LEARN_MORE",
"callToActionUrl": "https://example.com/news"
}
}
}
Publish an event post with a start and end time:
{
"type": "google_business_profile",
"parameters": {
"resource": "post",
"operation": "create",
"account": "accounts/123456789",
"location": "accounts/123456789/locations/987654321",
"postType": "EVENT",
"summary": "Join us for our grand opening celebration!",
"title": "Grand Opening Event",
"startDateTime": "2026-06-15T10:00:00Z",
"endDateTime": "2026-06-15T18:00:00Z",
"additionalOptions": {
"languageCode": "en-US",
"callToActionType": "LEARN_MORE",
"callToActionUrl": "https://example.com/event"
}
}
}
Publish an offer post with a coupon code:
{
"type": "google_business_profile",
"parameters": {
"resource": "post",
"operation": "create",
"account": "accounts/123456789",
"location": "accounts/123456789/locations/987654321",
"postType": "OFFER",
"summary": "Limited time offer - 20% off all items!",
"title": "Summer Sale",
"startDate": "2026-06-01",
"endDate": "2026-06-30",
"additionalOptions": {
"languageCode": "en-US",
"couponCode": "SUMMER20",
"redeemOnlineUrl": "https://example.com/redeem",
"termsConditions": "Valid until June 30. Cannot be combined with other offers."
}
}
}
Publish an alert post:
{
"type": "google_business_profile",
"parameters": {
"resource": "post",
"operation": "create",
"account": "accounts/123456789",
"location": "accounts/123456789/locations/987654321",
"postType": "ALERT",
"summary": "We are following all safety protocols for your protection.",
"alertType": "COVID_19",
"additionalOptions": {
"languageCode": "en-US"
}
}
}
Change a post’s text and call-to-action:
{
"type": "google_business_profile",
"parameters": {
"resource": "post",
"operation": "update",
"account": "accounts/123456789",
"post": "accounts/123456789/locations/987654321/localPosts/abc123",
"additionalFields": {
"summary": "Updated post content with new information",
"callToActionType": "ORDER",
"url": "https://example.com/order"
}
}
}
List a location’s posts, one item each:
{
"type": "google_business_profile",
"parameters": {
"resource": "post",
"operation": "getAll",
"account": "accounts/123456789",
"location": "accounts/123456789/locations/987654321",
"returnAll": false,
"limit": 10
}
}
Pull every review for a location:
{
"type": "google_business_profile",
"parameters": {
"resource": "review",
"operation": "getAll",
"account": "accounts/123456789",
"location": "accounts/123456789/locations/987654321",
"returnAll": true
}
}
Reply to the review an upstream node just produced:
{
"type": "google_business_profile",
"parameters": {
"resource": "review",
"operation": "reply",
"account": "accounts/123456789",
"location": "accounts/123456789/locations/987654321",
"review": "{{ $json.name }}",
"reply": "Thank you for your feedback! We're glad you enjoyed your visit."
}
}
Remove a reply:
{
"type": "google_business_profile",
"parameters": {
"resource": "review",
"operation": "deleteReply",
"account": "accounts/123456789",
"location": "accounts/123456789/locations/987654321",
"review": "xyz789"
}
}
Error Handling
| Mode | Behavior |
|---|---|
| stop | Halts workflow on first error |
| continue | Skips failed items, passes successful ones through |
| errorPort | Routes failed items to Error output port |
Tips
Create, update, delete posts and manage customer reviews on Google Business Profile.
- Location includes the account prefix. Enter the full
accounts/{accountId}/locations/{locationId}resource name; the node works out the relative path it needs. - Review accepts either form. Give the full review resource name or just the ID that follows
reviews/— both work. - Post Type changes the required fields. EVENT needs a title plus start and end date-time; OFFER needs a title plus start and end dates; ALERT needs an alert type. Switching type after filling the fields leaves the unused ones behind, and they are ignored.
- Update only touches what you list. The fields you add to Fields to Update are the only ones sent, and adding none returns success without calling Google.
- A review has one reply. Reply writes the reply text for that review, and Delete Reply removes it again.
- Two ways to authenticate. OAuth2 connects an account interactively; the service account option takes an email and PEM private key instead, which suits unattended runs.
Frequently asked questions
What format does the Location field expect?
The full resource name, `accounts/{accountId}/locations/{locationId}`. Include the account prefix and the node works out the relative path it needs from there.
Do I need the full review resource name?
Either works. You can give the complete review resource name or just the ID that follows `reviews/`, so you can pass through whichever form an upstream node produced.
Why are some of my post fields ignored?
Post Type decides which fields are required and which are used. EVENT needs a title with start and end date-times, OFFER needs a title with start and end dates, and ALERT needs an alert type. Switching type after filling fields leaves the unused ones behind, where they are ignored.
Does Update replace the whole post?
No — it only touches the fields you list. Anything you leave out keeps its current value, so you can adjust a single line of a post without resupplying all of it.
Build with the Google Business Profile node
Drop it into a workflow, wire it to an agent, or call it on a schedule. You'll need Google Business Profile OAuth2 API credentials first.
Open BusyBotLast updated . Spotted something wrong? Tell us.