Documentation Index
Fetch the complete documentation index at: https://info.bundle.social/llms.txt
Use this file to discover all available pages before exploring further.
Google Business Profile (formerly Google My Business) lets you post updates that appear in Google Search and Maps. It’s not social media in the traditional sense, but it’s great for local businesses.
Location, profile, and Maps data
Besides posts, you can read and update Business Profile data for the team’s selected location (hours, attributes, services, food menus, action links, profile media). These use /api/v1/misc/google-business with the same API key as the rest of the public API.
Reviews stay on a separate flow: Google Business Reviews.
Feature availability by category and location
Google Business capabilities are not identical for every profile. Some fields or endpoints can be unavailable depending on category, country/region, and location-level eligibility.
- Attributes differ by category and region. Build updates from available definitions first.
- Service list is only available for eligible categories/locations.
- Food menus are available mostly for restaurant-like categories and can be disabled for a specific location.
- Place action links and allowed
placeActionType values can vary by profile setup and category.
- Profile media categories and moderation behavior can vary by profile type.
Recommended flow for most integrations: GET/list first, then send PATCH/POST with values confirmed by Google for that exact location.
Supported Content Types
- Standard Posts: Regular text updates with optional image.
- Events: Time-bound events with a title and date range.
- Offers: Promotional offers with coupon codes and terms.
- Alerts: Special alerts (currently only
COVID_19).
- Reviews & Replies: Import reviews asynchronously, then manage owner replies.
Quirks & Gotchas
Location Selection Required
After connecting your Google account, you must select a business location. This is similar to selecting a Facebook Page or LinkedIn Company Page.
Post Types
Google Business supports different post types via the topicType field:
STANDARD: Regular updates (default).
EVENT: Time-bound events with a title and date range.
OFFER: Promotional offers with coupon codes and terms.
ALERT: Special alerts (currently only COVID_19).
Call to Action
You can add a CTA button to your posts:
BOOK, ORDER, SHOP, LEARN_MORE, SIGN_UP, CALL
- Requires a
callToActionUrl for most types.
| Constraint | Value |
|---|
| Files | 0-1 image only (no video) |
| Image max size | 5 MB |
| Image min resolution | 250x250 |
| Text | Max 1,500 characters |
See Platform Limits for details.
Text & Field Limits
| Field | Limit |
|---|
text | Max 1,500 characters |
eventTitle | Max 58 characters |
offerCouponCode | Max 58 characters |
offerTermsConditions | Max 1,500 characters |
Google Reviews
Google Reviews run on a separate async flow (similar to Post History Import). You start an import job, poll status, then fetch imported reviews and manage replies.
- Start import + poll status (
PENDING -> FETCHING_REVIEWS -> COMPLETED)
- Handle temporary pauses with
RATE_LIMITED and automatic resume
- List imported reviews with pagination and capacity info
- Create/update/delete owner replies via API
Full guide: Google Business Reviews
Post Options
| Field | Type | Description |
|---|
text | string | Post content. Max 1,500 characters. |
uploadIds | string[] | Media attachments (images only). |
topicType | enum | Post type: STANDARD, EVENT, OFFER, ALERT. Default: STANDARD. |
languageCode | string | Language code (e.g., en, en-US). Default: en. |
callToActionType | enum | CTA button: BOOK, ORDER, SHOP, LEARN_MORE, SIGN_UP, CALL. |
callToActionUrl | string | URL for the CTA button. |
Event-Specific Fields
| Field | Type | Description |
|---|
eventTitle | string | Event title. Max 58 characters. |
eventStartDate | date | Event start date. |
eventEndDate | date | Event end date. |
Offer-Specific Fields
| Field | Type | Description |
|---|
offerCouponCode | string | Coupon code. Max 58 characters. |
offerRedeemOnlineUrl | string | URL to redeem the offer online. |
offerTermsConditions | string | Terms and conditions. Max 1,500 characters. |
Analytics
For general analytics concepts (refresh rates, data retention, what “Returns 0” means), see the Analytics Overview.
Google Business provides basic analytics for your business location. Don’t expect Instagram-level data here.
Profile Analytics
Period: Rolling window.
| Metric | Description | Note |
|---|
impressions | Profile views | How many times your profile was viewed |
views | Profile views | Same as impressions |
followers | - | Returns 0 (not applicable) |
Post Analytics
Period: Lifetime.
| Metric | Description | Note |
|---|
impressions | Post views | |
views | Post views | Same as impressions |
likes | - | Returns 0 (not tracked by Google) |
comments | - | Returns 0 (not tracked by Google) |
Examples
Standard Post
await bundle.post.create({
socialAccountTypes: ["GOOGLE_BUSINESS"],
data: {
GOOGLE_BUSINESS: {
text: "We're open for the holidays! Visit us today.",
callToActionType: "LEARN_MORE",
callToActionUrl: "https://example.com/holiday-hours"
}
}
});
Event Post
await bundle.post.create({
socialAccountTypes: ["GOOGLE_BUSINESS"],
data: {
GOOGLE_BUSINESS: {
topicType: "EVENT",
text: "Join us for our grand opening celebration!",
eventTitle: "Grand Opening",
eventStartDate: "2026-02-01T10:00:00Z",
eventEndDate: "2026-02-01T18:00:00Z",
callToActionType: "BOOK",
callToActionUrl: "https://example.com/rsvp"
}
}
});
Offer Post
await bundle.post.create({
socialAccountTypes: ["GOOGLE_BUSINESS"],
data: {
GOOGLE_BUSINESS: {
topicType: "OFFER",
text: "Get 20% off your first order!",
offerCouponCode: "WELCOME20",
offerRedeemOnlineUrl: "https://example.com/shop",
offerTermsConditions: "Valid for new customers only. Expires Feb 28, 2026."
}
}
});