Skip to main content
On a self-hosted PostQueen the Twitch app is yours. You register it in the Twitch developer console and give PostQueen its client ID and secret. Twitch does not review apps.

Before you start

Scopes are not set on the app form: PostQueen asks for the three when a channel connects, and does not check which were granted. user:write:chat sends chat messages and moderator:manage:announcements sends announcements, so approve all three on Twitch’s screen.

Create the app

1

Turn on two-factor authentication

Twitch lets you register apps only once two-factor authentication is on. Verify your email, turn it on under Security and Privacy in your Twitch settings, then open the developer console.
2

Register the application

Open Applications and choose Register Your Application:
  • Name: a name no other Twitch app uses, such as PostQueen Example Inc.
  • OAuth Redirect URLs: your address from the next step. Choose Add after typing it.
  • Category: pick the closest one.
  • Client Type: Confidential. A public client gets no secret, and the type cannot be changed later.
Then choose Create.
3

Set the redirect URL

Use the address that matches how you run PostQueen:
Twitch accepts https addresses, and plain http 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.
4

Copy the client ID and a new secret

In Developer Applications, choose Manage on the app. Copy the Client ID, then choose New Secret and copy the secret. A new secret replaces the previous one, so update your environment whenever you make one.

Set the variables

Add the two keys to your environment:
PostQueen sends the client ID with every Twitch call, so a channel stops working if you clear it later. 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 Twitch, sign in, and approve the chat permissions. Posts go to the chat of the channel you signed in with.

Chat limits

In your own chat you can send 100 messages every 30 seconds, and one announcement every 2 seconds. PostQueen sends one Twitch message at a time and waits 2 seconds before each.

Troubleshooting

Twitch refused the redirect URL on the app form. Use an https address, or http://localhost for a local install, and make sure no empty URL row is left on the form.
The address PostQueen sent is not in OAuth Redirect URLs. It is exactly your FRONTEND_URL followed by /integrations/social/twitch.
The token lacks moderator:manage:announcements. PostQueen does not read Twitch’s answer to an announcement, so it is recorded as posted even when Twitch refused it. Reconnect the channel and approve every permission.
Last modified on September 23, 2026