Google Business Profile Scheduling API
Schedule Google Business Profile posts for a future time via API.
Google’s Local Posts API has no native scheduling — PostGate holds the post and calls Google’s API only when the target time arrives. Add an ISO 8601 scheduled_at to the same POST /api/posts request you’d use to publish immediately, or model recurring updates as a cron schedule under /api/schedules. Google-specific fields stay under post.options.google_business.
Google's own Local Posts API takes a post and publishes it — it has no native concept of "publish this later." Scheduling for Google Business Profile, like every platform without built-in scheduling, is something PostGate handles by holding the post and calling Google's API only once the target time arrives.
How do I schedule for a fixed time?
scheduled_at to the same request you'd use to publish immediately. Google-specific fields still go under post.options.google_business.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-promo-001" \
-d '{
"post": {
"body": "Weekend promo starts tomorrow — 20% off.",
"options": {
"google_business": { "topic_type": "STANDARD", "language_code": "en" }
}
},
"profiles": ["pro_google_business123"],
"scheduled_at": "2026-09-05T08:00:00Z"
}'How do I set up recurring updates?
curl -X POST https://postgate.studio/api/schedules \
-H "Authorization: Bearer $POSTGATE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Weekly GBP update",
"kind": "cron",
"expression": "0 9 * * 1",
"timezone": "America/Sao_Paulo",
"profile_group_id": "grp_acme123",
"template": {
"post": {
"body": "This week’s specials are up.",
"options": { "google_business": { "topic_type": "STANDARD", "language_code": "en" } }
},
"profiles": ["pro_google_business123"]
}
}'Can I draft for approval before it goes to a real location?
draft: true and publish on demand with POST /api/posts/{id}/publish rather than scheduling blind.A scheduled post depends on access staying valid
GET /api/profiles/{id}/health for anything scheduled with meaningful lead time.Frequently asked questions
Does the Google Business Profile API support scheduling posts natively?
No. Google’s own Local Posts API takes a post and publishes it — it has no native concept of “publish this later.” Scheduling for Google Business Profile, like every platform without built-in scheduling, is handled by PostGate holding the post and calling Google’s API only once the target time arrives.
Can I set up recurring posts for a Google Business Profile location?
Yes. A weekly hours change, a recurring event announcement, or a standing promo can be modeled as a cron schedule instead of one-off posts — for example expression 0 9 * * 1 with a timezone for every Monday morning. The schedule template reuses the exact post/profiles/media envelope of a normal publish request.
What happens if location access is revoked before a scheduled post fires?
The post fails at materialization rather than at creation. If manager access to the location is revoked, or the location is suspended between scheduling and the target time, the scheduled post won’t deliver — so check GET /api/profiles/{id}/health for anything scheduled with meaningful lead time.
Can I review a Google Business Profile post before it goes live?
Yes — create it with draft: true and publish on demand with POST /api/posts/{id}/publish. Because a Business Profile post is customer-facing on Search and Maps immediately once Google accepts it, many teams draft for approval rather than scheduling blind.
