Skip to main content
On a self-hosted PostQueen the Google Cloud project is yours. Google must first approve the project for the Business Profile APIs. Then you turn on four APIs, create a Web application OAuth client, and give PostQueen its client ID and secret. In Add Channel the tile is named Google My Business.

Before you start

PostQueen checks all three scopes when a channel connects. A missing one stops the connect.

Request API access

Until Google approves your project, its Business Profile API quota is 0 requests a minute, and nothing can be read or posted.
1

Create the project

In the Google Cloud console, choose Create project, enter a name and choose Create. Copy the Project number from the Project info card on the dashboard.
2

Send the access request

Open Google’s Business Profile API contact form and choose Application for Basic API Access. Enter the project number, and use an email address that is an owner or manager of the Business Profile.
3

Wait for the approval

Google reviews requests within 14 days. Once approved, the quota of the Business Profile APIs in your project shows 300 requests a minute instead of 0.

Create the client

1

Turn on the four APIs

Open APIs and services > Library and enable each of these:
  • Google My Business API: publishes the posts. Google shows it only to projects whose access request was approved.
  • My Business Account Management API: lists your Business Profile accounts when you connect.
  • My Business Business Information API: lists the locations in them.
  • Business Profile Performance API: the numbers on the Analytics page.
2

Set up Branding and Audience

Open Google Auth Platform. In Branding, enter the app name, a support email, your home page and privacy policy links, and your domain under Authorized domains. In Audience, choose External, unless everyone who will connect belongs to your Google Workspace, where Internal skips verification.While the app is in Testing, only the accounts under Test users can connect. Add yours with Add users.
3

Add the scopes

In Data access, choose Add or remove scopes, add the three scopes and save:
4

Create a Web application client

In Clients, choose Create client and pick Web application. Under Authorized redirect URIs, add:
Google accepts only https, except for localhost.The redirect URI is where the network sends the browser back after someone approves PostQueen. It is your FRONTEND_URL + /integrations/social/ + the network’s identifier, for example https://postqueen.example.com/integrations/social/pinterest.Most networks need exactly one URI, with no trailing slash. Two exceptions: TikTok Business needs the trailing slash (/integrations/social/tiktok-business/), and a Google web client that also serves Google Business Profile lists both /integrations/social/youtube and /integrations/social/gmb. Channel developer apps lists every network’s ending.
5

Copy the client ID and secret

Choose Create and copy the Client ID and Client secret from the dialog. Google shows the secret only now. If you lose it, add a new secret to the same client.

Set the variables

Add the two keys to your environment:
Sharing the YouTube client. If you leave both variables empty, PostQueen uses the YouTube client from YouTube setup instead. That client then needs the /integrations/social/gmb redirect URI, the business.manage scope, and the four APIs in its project, and the project needs the Business Profile API approval. Set both variables or neither: each empty one is replaced on its own, so setting only one mixes two clients.
Recreate the app container so it reads the new variables. A plain docker restart or docker compose restart keeps the old container and its old environment. In the folder that holds docker-compose.yaml, recreate only the postqueen service:
The database, Redis and Temporal keep running. Avoid docker compose down for a settings change: on a host that runs other Compose services in the same project, it stops them too. Then open PostQueen, go to Channels, choose Add Channel and pick this network. You are sent to its login to authorize PostQueen, and the channel appears in the Channels list once you accept.
The channel is in the Channels list with its avatar and name.
Add Channel does not check whether your variables are set. A missing or misspelled key shows up as a broken authorization page on the network’s side rather than a helpful message in PostQueen, so if the login page itself looks wrong, check the keys before anything else.
Pick Google My Business, sign in with Google and approve every permission, then choose the location. Every location in every account that Google user manages is listed. Unverified locations do not accept posts.

App review

  • Testing. Google gives an External app in Testing refresh tokens that expire after 7 days, so a channel connected then has to be reconnected every week. In Audience, choose Publish app to leave Testing.
  • Verification. Once published, people who connect see Google’s unverified-app screen until Google verifies the app in the Verification Center, and an unverified app that uses sensitive scopes is limited to 100 users. An install used only by you and your team can stay unverified.

Troubleshooting

Google shows it only once your access request is approved. Check the email address you used on the request form, or send the form again.
Google refused the request for quota. On a new project, the Business Profile quota is still 0 because the access request is not approved yet.
The Google account is not an owner or manager of the location, or an API is not enabled. Check the four APIs in step 1, and the account’s role on the Business Profile. A Google Workspace account also needs Business Profile turned on by its admin.
A scope is missing from Data access, or was declined on the consent screen. Add all three, then connect again and approve everything.
The redirect URI PostQueen sent is not on the client it used. It is exactly your FRONTEND_URL followed by /integrations/social/gmb. If GOOGLE_GMB_CLIENT_ID is empty, add it to the YouTube client instead.
Last modified on September 23, 2026