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

# Google My Business Settings

> Provider settings for Google My Business posts

Google My Business (GMB) posts appear on your Google Business Profile. There are three shapes, and `topicType` picks which one: a standard update, an event, or an offer.

Creating the OAuth app and connecting a channel: [Google My Business setup guide](/installation/providers/google-my-business).

## Settings Schema

```json theme={"system"}
{
  "__type": "gmb",
  "topicType": "STANDARD",
  "callToActionType": "LEARN_MORE",
  "callToActionUrl": "https://example.com",
  "eventTitle": "Event Name",
  "eventStartDate": "2024-12-14",
  "eventEndDate": "2024-12-15",
  "eventStartTime": "09:00",
  "eventEndTime": "17:00",
  "offerCouponCode": "SAVE20",
  "offerRedeemUrl": "https://example.com/redeem",
  "offerTerms": "Terms and conditions apply"
}
```

## Properties

| Property           | Type   | Required | Description                                |
| ------------------ | ------ | -------- | ------------------------------------------ |
| `__type`           | string | ✅        | Must be `"gmb"`                            |
| `topicType`        | string | ❌        | Post type: `STANDARD`, `EVENT`, or `OFFER` |
| `callToActionType` | string | ❌        | CTA button type                            |
| `callToActionUrl`  | string | ❌        | URL for the CTA button                     |
| `eventTitle`       | string | ❌        | Event name (required for EVENT type)       |
| `eventStartDate`   | string | ❌        | Event start date                           |
| `eventEndDate`     | string | ❌        | Event end date                             |
| `eventStartTime`   | string | ❌        | Event start time                           |
| `eventEndTime`     | string | ❌        | Event end time                             |
| `offerCouponCode`  | string | ❌        | Coupon code (for OFFER type)               |
| `offerRedeemUrl`   | string | ❌        | Redemption URL                             |
| `offerTerms`       | string | ❌        | Offer terms and conditions                 |

<Warning>
  `callToActionUrl` is genuinely optional. Set `callToActionType` without it and the request still succeeds, with the button quietly left off the post.
</Warning>

### Call-to-Action Types

| Value        | Button       |
| ------------ | ------------ |
| `NONE`       | No button    |
| `BOOK`       | Book now     |
| `ORDER`      | Order online |
| `SHOP`       | Shop now     |
| `LEARN_MORE` | Learn more   |
| `SIGN_UP`    | Sign up      |
| `GET_OFFER`  | Get offer    |
| `CALL`       | Call         |

<Info>
  Event posts require date and time information.
</Info>

## Examples

<Tabs>
  <Tab title="Standard">
    ```json theme={"system"}
    {
      "settings": {
        "__type": "gmb",
        "topicType": "STANDARD",
        "callToActionType": "LEARN_MORE",
        "callToActionUrl": "https://example.com/news"
      }
    }
    ```
  </Tab>

  <Tab title="Event">
    ```json theme={"system"}
    {
      "settings": {
        "__type": "gmb",
        "topicType": "EVENT",
        "eventTitle": "Grand Opening",
        "eventStartDate": "2024-12-20",
        "eventEndDate": "2024-12-20",
        "eventStartTime": "10:00",
        "eventEndTime": "18:00",
        "callToActionType": "BOOK",
        "callToActionUrl": "https://example.com/rsvp"
      }
    }
    ```
  </Tab>

  <Tab title="Offer">
    ```json theme={"system"}
    {
      "settings": {
        "__type": "gmb",
        "topicType": "OFFER",
        "callToActionType": "GET_OFFER",
        "callToActionUrl": "https://example.com/offer",
        "offerCouponCode": "HOLIDAY20",
        "offerRedeemUrl": "https://example.com/redeem",
        "offerTerms": "Valid until December 31, 2024. Cannot be combined with other offers."
      }
    }
    ```
  </Tab>
</Tabs>

<Note>
  Offer posts can include coupon codes, which gives you something to track against.
</Note>

## Full Example

```json theme={"system"}
{
  "type": "schedule",
  "date": "2024-12-14T10:00:00.000Z",
  "shortLink": false,
  "tags": [],
  "posts": [
    {
      "integration": {
        "id": "your-gmb-integration-id"
      },
      "value": [
        {
          "content": "🎉 Big Holiday Sale! Get 20% off all products this weekend only. Visit us in-store or shop online!",
          "image": [
            {
              "id": "img-id",
              "path": "https://uploads.postqueen.ai/sale-banner.jpg"
            }
          ]
        }
      ],
      "settings": {
        "__type": "gmb",
        "topicType": "OFFER",
        "callToActionType": "GET_OFFER",
        "callToActionUrl": "https://example.com/holiday-sale",
        "offerCouponCode": "HOLIDAY20",
        "offerTerms": "Valid December 14-15, 2024. In-store and online."
      }
    }
  ]
}
```

<Check>
  Once the post publishes, it appears on your Google Business Profile in Search and in Maps.
</Check>

<Tip>
  Images are highly recommended for better engagement.
</Tip>

## Next steps

<CardGroup cols={2}>
  <Card title="Connect the channel" icon="plug" href="/providers/google-my-business">
    Create the OAuth app and link your Business Profile.
  </Card>

  <Card title="Schedule the post" icon="paper-plane" href="/public-api/posts/create">
    The create endpoint, field by field, with a worked request.
  </Card>

  <Card title="Upload the image" icon="image" href="/public-api/uploads/upload-file">
    Get media onto a public URL before you reference it.
  </Card>

  <Card title="Find your integration id" icon="list" href="/public-api/integrations/list">
    Every connected channel, with the id this request needs.
  </Card>
</CardGroup>
