> ## Documentation Index
> Fetch the complete documentation index at: https://docs.markifact.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Publish Post

> Publishes a post to one or more Business Profile locations: a standard update, an event, or an offer, with optional photo and call to action

Publishes a post to one or more Business Profile locations: a standard update, an event, or an offer, with optional photo and call to action. Supports publishing immediately or scheduling for later. For cases the standard fields do not cover, such as recurring event posts, alert posts, or several media items, pass raw LocalPost fields in advanced\_fields.

|                       |                                 |
| --------------------- | ------------------------------- |
| **App**               | Google Business Profile         |
| **Operation ID**      | `business_profile_publish_post` |
| **Type**              | Action                          |
| **Connection**        | `business_profile` (required)   |
| **Credits per run**   | 1                               |
| **Agent / MCP tool**  | Yes                             |
| **Requires approval** | Yes (write operation)           |

## Inputs

| Field                    | Type                                          | Required | Default | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| ------------------------ | --------------------------------------------- | -------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `accounts`               | array (also accepts a comma-separated string) | Yes      | -       | Select the Business Profile locations to publish the post to, ask the user for it if not provided. The same post is published to every selected location.                                                                                                                                                                                                                                                                                                                                                                 |
| `post_type`              | string or SelectableOption                    | Yes      | -       | Type of post. Available options: 'whats\_new' (standard update), 'event' (has a title and start/end times), 'offer' (an event plus optional coupon code, redeem link, and terms).                                                                                                                                                                                                                                                                                                                                         |
| `summary`                | string                                        | No       | -       | The post text, up to 1500 characters. Required for whats\_new posts, optional for event and offer posts.                                                                                                                                                                                                                                                                                                                                                                                                                  |
| `image_url`              | string                                        | No       | -       | Optional photo for the post. Accepts a direct image URL or a Google Drive share link with sharing set to 'Anyone with the link'. minimum 400x300 pixels.                                                                                                                                                                                                                                                                                                                                                                  |
| `cta_type`               | string or SelectableOption                    | No       | -       | Optional call to action button. Available options: 'BOOK', 'ORDER', 'SHOP', 'LEARN\_MORE', 'SIGN\_UP', 'CALL'. All except CALL need cta\_url; CALL uses the location's phone number. Ignored on offer posts; Google adds its own offer button.                                                                                                                                                                                                                                                                            |
| `cta_url`                | string                                        | No       | -       | URL the call to action button opens. Required for every cta\_type except CALL.                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| `event_title`            | string                                        | No       | -       | Title of the event or offer. Required for event and offer posts.                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `event_start`            | string                                        | No       | -       | When the event or offer starts, in the location's local time. Format 'YYYY-MM-DD HH:MM' or 'YYYY-MM-DD' for all day. Required for event and offer posts.                                                                                                                                                                                                                                                                                                                                                                  |
| `event_end`              | string                                        | No       | -       | When the event or offer ends, in the location's local time. Format 'YYYY-MM-DD HH:MM' or 'YYYY-MM-DD' for all day. Required for event and offer posts.                                                                                                                                                                                                                                                                                                                                                                    |
| `coupon_code`            | string                                        | No       | -       | Offer posts only: coupon code customers redeem.                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| `redeem_online_url`      | string                                        | No       | -       | Offer posts only: link where customers redeem the offer.                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| `terms_conditions`       | string                                        | No       | -       | Offer posts only: terms and conditions text.                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| `language_code`          | string                                        | No       | `en`    | BCP-47 language code of the post text. Default is 'en'.                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| `publish_mode`           | string or SelectableOption                    | No       | `now`   | Choose 'now' to publish immediately (default) or 'scheduled' to schedule for later.                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| `scheduled_publish_time` | string or integer or number                   | No       | -       | When to publish, required when publish\_mode is 'scheduled'. Accepts a unix timestamp in seconds, 'YYYY-MM-DD HH:MM' interpreted as UTC, or ISO 8601 with a timezone offset. Must be in the future.                                                                                                                                                                                                                                                                                                                       |
| `advanced_fields`        | object or string                              | No       | -       | Optional raw LocalPost fields, as an object or JSON string, for anything the fields above do not cover: recurring events via event.recurrenceInfo (dailyPattern, weeklyPattern with daysOfWeek, or monthlyPattern), several media items, or topicType "ALERT" with alertType. Merged over what the fields above build, keeping nested values that are not overridden, so event.recurrenceInfo adds to the event without dropping its title and schedule. Do not include name, state, createTime, updateTime or searchUrl. |

### SelectableOption

| Field   | Type   | Required | Default | Description |
| ------- | ------ | -------- | ------- | ----------- |
| `value` | string | Yes      | -       |             |
| `label` | string | Yes      | -       |             |

## Output

**Type**: `Dict`

Returns per-location results with the post name and Google search URL. Uses 1 credit per location. Does not raise on partial failures so multi-location workflows can continue; check failed\_count.

**Fields**: `success_count`, `failed_count`, `total_count`, `results`

**Example**:

```json theme={"dark"}
{
  "success_count": 2,
  "failed_count": 0,
  "total_count": 2,
  "results": [
    {
      "location_id": "123",
      "location_name": "My Store Downtown",
      "success": true,
      "post_name": "accounts/1/locations/123/localPosts/456",
      "post_url": "https://local.google.com/place?id=...",
      "state": "LIVE"
    }
  ]
}
```
