Skip to main content
On a self-hosted PostQueen the Meta app is yours. One app, logged in through Facebook Login for Business, serves two tiles in Add Channel: Facebook Page and Instagram (Facebook Business). This page creates that app. Instagram (Standalone) and Threads each need a separate Meta app: see Instagram setup and Threads setup.

Before you start

PostQueen checks every permission it asks for when a Page connects. A missing one stops the connect.

Create the app

1

Start a new app

Open Create an app in Meta for Developers. Enter the app name and a contact email, then choose Next.
2

Choose Other, not a use case

On the use case step, do not pick any of the listed use cases. Scroll to Looking for something else?, select Other and choose Next.
Meta's Add use cases step, with Other selected under Looking for something else?
An app created through a use case such as Facebook Login cannot request the permissions PostQueen needs, and adding the use case later does not fix it. Facebook’s consent screen then fails with Invalid Scopes. If you see that, create a new app through Other.
3

Pick the Business type

Select Business as the app type and choose Next. Connect your business portfolio now or later, then choose Create app.
4

Add Facebook Login for Business

In the app dashboard, choose Add Product, find Facebook Login for Business and choose Set up.
5

Add the redirect URIs

Open Facebook Login for Business > Settings. Under Client OAuth settings, add the redirect URIs to Valid OAuth Redirect URIs and save.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.
Both tiles send FRONTEND_URL as it is, so the URIs stay plain, http included. Add the /instagram line only if you connect Instagram (Facebook Business).
6

Check the permissions

Open App Review > Permissions and Features and check that these are listed:
  • Facebook Page: pages_show_list, business_management, pages_manage_posts, pages_manage_engagement, pages_read_engagement, pages_read_user_content and read_insights.
  • Instagram (Facebook Business) adds instagram_basic, instagram_content_publish, instagram_manage_comments and instagram_manage_insights.
While the app is in development, people with a role on it can grant all of them.Do not add Instagram (Standalone) permissions (instagram_business_*) or Threads permissions (threads_*) to this app: they belong to separate apps. Do not request messaging, ads or pages_manage_metadata permissions either: PostQueen does not use them.
PostQueen uses pages_manage_engagement to publish follow-up comments under Page posts. App Review accepts it only together with pages_read_user_content, so request both in the same submission. PostQueen does not read other people’s comments or posts.
7

Set the callback URLs

When someone removes your app on Facebook, or asks for their data to be deleted, Meta calls your server. PostQueen answers both calls: removing the app flags that person’s channels for reconnection, and a deletion request deletes their channels and those channels’ posts.
  • In App settings > Basic, under User data deletion, choose the data deletion callback URL and enter NEXT_PUBLIC_BACKEND_URL + /integrations/facebook/platform-deletion.
  • In Facebook Login for Business > Settings, set Deauthorize callback URL to NEXT_PUBLIC_BACKEND_URL + /integrations/facebook/platform-deauthorize.
With the backend at https://postqueen.example.com/api, the first is https://postqueen.example.com/api/integrations/facebook/platform-deletion. One pair of URLs covers both tiles on this app. Meta only calls a public https address, so skip this step on a local install.
8

Copy the App ID and App secret

Open App settings > Basic and copy the App ID and the App secret (choose Show).

Set the variables

Add the two keys to your environment:
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 Facebook Page, log in with Facebook and share the Page. In Select Page, pick one or more Pages and choose Save. Pages you manage through Business Manager are listed too.

App review

A new app starts in Development mode:
  • Only people with a role on the app (administrator, developer or tester) can connect their Pages. Add people under App roles > Roles.
  • Posts the app publishes are visible only to people with a role on the app until you switch it to Live. Everyone else sees nothing, or sees a post without its image.
To publish to Pages you own or manage, Standard Access is enough: switch App Mode to Live at the top of the dashboard. Meta asks for the display name, a contact email, a privacy policy URL and a terms of service URL in App settings > Basic first. To let anyone else connect their Pages, request Advanced Access for each permission in App Review > Permissions and Features, and verify your business portfolio. Meta asks for a description and a screen recording of how the app uses each permission. Request only the permissions in step 6.

Troubleshooting

The redirect URI PostQueen sent is not in Valid OAuth Redirect URIs. Add it exactly as in step 5, with the scheme and port your FRONTEND_URL uses.
A permission was declined on the consent screen, or is missing from the app. Check the list in step 6, then connect again and approve everything.
The Page was not shared during the login. Reconnect the channel and include the Page when Facebook asks which Pages to share.
The app is still in Development mode. Switch App Mode to Live.
Last modified on September 27, 2026