Post to Google Business Profile
post_to_google_businessPublish posts to Google Business Profile with text, optional photo, and call-to-action button. Supports standard, event, offer, and alert types; confirms with user before immediate publication.
Instructions
Publish a Post to the brand’s Google Business Profile — the panel that appears on Google Search and Maps for the business. Text, optionally ONE PHOTO, and a call-to-action button. Google’s Posts API accepts NO VIDEO, so pass a still image. This PUBLISHES immediately and publicly on the business listing — show the user the exact text, photo and button and get an explicit yes BEFORE calling. If the account manages several listings, call list_business_locations first and pass locationId. EVENT and OFFER posts both REQUIRE a title and a start date (Google’s rule). On an OFFER, Google IGNORES the button’s link — pass redeemOnlineUrl instead. A CALL button dials the number on the listing and takes no link. Needs Google Business Profile connected (Settings ▸ Connectors ▸ Google Business Profile).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| hook | No | WHAT ANGLE THIS POST IS BUILT ON — the single most valuable field here, and the only moment it can ever be recorded. post_performance groups on it to answer "which hooks work", and it needs 5 posts sharing ONE hook before it will call anything a winner, so REUSE THE SAME WORDING across a campaign instead of rephrasing it every time. Best of all, pass a hook id from list_hooks (e.g. "direct_callout", "mid_problem", "before_after") — those fold onto a stable key however they are spelled, so a whole brand accumulates evidence on one row. Your own wording is fine too; it just only groups when you repeat it exactly. Omitting it means this post can never vote on which hook works. | |
| link | No | the URL the button opens — not for CALL, and ignored on an OFFER | |
| title | No | headline — REQUIRED for EVENT and OFFER | |
| endDate | No | YYYY-MM-DD, defaults to startDate | |
| subject | No | WHAT THIS POST IS ABOUT — the product, feature, offer or theme (e.g. "winter coat", "free trial", "founder story"). The second grouping axis in post_performance. Same rule as hook: reuse the exact wording so posts about one subject land in one group. | |
| summary | No | the body text of the Post | |
| imageUrl | No | a Hermoso render image URL (or an upload_file url) to show on the Post | |
| startDate | No | YYYY-MM-DD — REQUIRED for EVENT and OFFER | |
| topicType | No | default STANDARD | |
| actionType | No | the button on the Post | |
| couponCode | No | OFFER only | |
| locationId | No | which listing, e.g. 'locations/123' from list_business_locations — only needed when the account manages more than one | |
| languageCode | No | BCP-47 language of the Post, default 'en' | |
| redeemOnlineUrl | No | OFFER only — this is the link Google actually uses on an offer | |
| termsConditions | No | OFFER only |