How to Post to Google Business Profile via API
The request flow for publishing to a Google Business Profile location programmatically.
To post to Google Business Profile via API: register your product’s origin, create a hosted connection URL for platform google_business, have an owner or manager of the location authorize via Google OAuth, then send POST /api/posts with topic_type STANDARD under post.options.google_business and read back per-target status. Accounts with only viewer access fail connection validation.
Google Business Profile — the product formerly named Google My Business — lets a location publish short updates that appear directly in Search and Maps results. Publishing to it through PostGate follows the same connect-then-post pattern as every other platform, with one access requirement worth understanding before you start: the connecting account has to actually manage the location.
What do you need before you start?
Step 1: register your product’s origin
curl -X POST https://postgate.studio/api/connect-origins \
-H "Authorization: Bearer $POSTGATE_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "origin": "https://app.example.com", "label": "Production SaaS" }'Step 2: connect the location via OAuth
platform: "google_business" and redirect the customer's browser to it. They authenticate with Google, pick the specific location if their account manages more than one, and grant access.curl -X POST https://postgate.studio/api/profiles/connect \
-H "Authorization: Bearer $POSTGATE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"platform": "google_business",
"profile_group_id": "grp_acme123",
"return_url": "https://app.example.com/settings/social"
}'Step 3: read the redirect result
return_url with connected=1&connection_platform=google_business. If the account lacks manager access to the location, or the location isn't yet verified with Google, expect connection_error instead — this is the single most common first-connection failure for this platform.Step 4: publish a local post
post.options.google_business. A basic update uses topic_type: "STANDARD".curl -X POST "https://postgate.studio/api/posts?profile_group_id=grp_acme123" \
-H "Authorization: Bearer $POSTGATE_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: gbp-launch-001" \
-d '{
"post": {
"body": "We just opened our second location.",
"options": {
"google_business": { "topic_type": "STANDARD", "language_code": "en" }
}
},
"profiles": ["pro_google_business123"],
"media": ["https://cdn.example.com/storefront.jpg"]
}'Step 5: confirm delivery
published target status confirms Google accepted it, not that it's already visible everywhere.curl https://postgate.studio/api/posts/post_01JXYZ \
-H "Authorization: Bearer $POSTGATE_API_KEY"Frequently asked questions
What Google account access is needed to post to a Business Profile?
Owner or manager access to an open (not suspended or duplicate-flagged) Business Profile location. An account with only viewer access cannot be used — it will authorize the OAuth grant, but the profile connection will fail validation.
Why did my Google Business Profile connection fail?
The single most common first-connection failure for this platform is an account lacking manager access to the location, or a location that isn’t yet verified with Google. Both come back as connection_error on your return_url instead of connected=1&connection_platform=google_business.
Why isn’t my published post visible in Search and Maps yet?
Google Business Profile posts can take longer to appear live in Search and Maps than the API acknowledgment does. A published target status confirms Google accepted the post — not that it’s already visible everywhere.
What if the Google account manages more than one location?
During the OAuth flow the customer authenticates with Google and picks the specific location to connect if their account manages more than one — the connected profile then represents that location for publishing.
