Google Business
Google Business Profile OAuth connect, local posts, CTAs, events, offers, and scheduling on Aether.
Google Business Profile is supported in V1 for OAuth connect, local posts (STANDARD / EVENT / OFFER), and scheduling. Posts appear on Search and Maps. Reviews, location management, and location-level analytics are planned next.
Connect a location
- Generate a Connect Link with
"platform": "googlebusiness" - Send the
urlto your user — they authorize via Google OAuth - Aether redirects to a location picker; the user selects a verified location
- The profile appears via
GET /v1/profileswithplatformAccountIdasaccounts/{accountId}/locations/{locationId}
Self-hosted deployments
Set GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET on your API server (shared with YouTube). Register redirect URI {NEXT_PUBLIC_API_URL}/v1/oauth/callback/googlebusiness on your Google Cloud OAuth client.
Scope requested: https://www.googleapis.com/auth/business.manage.
Enable Google Business Profile APIs on the project (Account Management, Business Information, My Business, Performance). The location must be verified in Google Business Profile Manager before you can publish.
Content rules
| Rule | Limit |
|---|---|
| Summary text | Max 1,500 characters |
| Media | At most one JPG/PNG image |
| Video | Not supported |
| Topic types | STANDARD (default), EVENT, OFFER |
Publish a STANDARD update
{
"text": "New seasonal menu is live — stop by this weekend!",
"profileIds": ["prof_gbp123"],
"mediaUrls": ["https://cdn.example.com/menu.jpg"],
"overrides": {
"googlebusiness": {
"callToAction": {
"type": "LEARN_MORE",
"url": "https://example.com/menu"
}
}
}
}EVENT post
{
"text": "Join us for our grand opening weekend.",
"profileIds": ["prof_gbp123"],
"overrides": {
"googlebusiness": {
"topicType": "EVENT",
"event": {
"title": "Grand Opening",
"startAt": "2026-06-01T10:00:00.000Z",
"endAt": "2026-06-01T18:00:00.000Z"
},
"callToAction": {
"type": "SIGN_UP",
"url": "https://example.com/rsvp"
}
}
}
}OFFER post
{
"text": "Save 20% on your next visit with this coupon.",
"profileIds": ["prof_gbp123"],
"overrides": {
"googlebusiness": {
"topicType": "OFFER",
"offer": {
"couponCode": "SAVE20",
"redeemOnlineUrl": "https://example.com/redeem",
"termsConditions": "Valid while supplies last. One per customer."
}
}
}
}Platform overrides
| Field | Description |
|---|---|
topicType | STANDARD, EVENT, or OFFER |
callToAction | { type, url? } — types: LEARN_MORE, BOOK, ORDER, SHOP, SIGN_UP, CALL (url required except CALL) |
event | Required for EVENT: { title, startAt, endAt } (ISO 8601) |
offer | Optional for OFFER: { couponCode?, redeemOnlineUrl?, termsConditions? } |
languageCode | BCP 47 language code (default en) |
text / mediaUrls | Standard override fields |
Scheduling
Pass scheduledFor on POST /v1/posts as with any other platform. Aether's queue publishes the localPost when the schedule fires.
Limits & notes
- Per-post insights are unavailable (deprecated by Google). Location performance metrics will ship in a later release.
- One Aether
SocialProfilemaps to one GBP location. Connect multiple profiles to post to multiple locations. - Unverified locations are rejected at connect time with a clear error.