Connecting YouTube
YouTube is the only platform that needs your own OAuth credentials. In exchange, the publishing quota is yours alone and is never shared.
Why YouTube is different
For TikTok or Facebook we use a single application that the platform has approved. Not so for YouTube: Google meters its API quota per project, so a shared project would run dry as soon as a handful of customers published.
So each customer creates their own Google Cloud project and registers a Client ID and Client Secret here. It takes about ten minutes, once.
One credential set can serve several channels
You do not need a new project per YouTube channel. But remember the quota follows the credentials: three channels on one credential set share the same 6-videos-a-day ceiling. For a separate ceiling per channel, create a separate Google project.
Creating credentials in Google Cloud
This walkthrough is also built into the app: on the YouTube connect screen click How to get these and the dialog shows the exact two URLs to paste, each with a copy button.
- 1
Create a Google Cloud project
Open Google Cloud Console and create a new project, or pick an existing one if you already use Google Cloud for something else.
- 2
Configure the OAuth consent screen
- App information: app name and support email.
- Audience: choose
External. - Contact information: your email.
- Accept the terms and create.
- 3
Enable two APIs
YouTube Data API v3— for publishing.YouTube Analytics API— for reading figures.
- 4
Declare three scopes
Under Data access, add all three:
youtube.uploadyoutube.readonlyyt-analytics.readonly— without it the channel still publishes, but the Analytics page shows nothing but zeroes.
- 5
Create the OAuth client
- Application type:
Web application. - Authorized JavaScript origins and Authorized redirect URIs: paste exactly the two URLs the in-app guide shows. One wrong character and Google refuses with
redirect_uri_mismatch. - Click Create and keep the Client ID and Client secret.
- Application type:
Required: Publish app
Skip this and the channel dies after exactly 7 days
Go to the Audience section of the consent screen and click Publish app. Left in Testing mode, Google revokes access after seven days: the channel flips to Revoked, the schedule breaks, and you start over.
This is the number one cause of "my YouTube channel disconnected by itself". No extra Google review is involved — you just have to press the button.
Connecting the channel
- 1
Paste the two values
Channels → Add account → YouTube. Paste the Client ID and Client secret, then press Connect.
- 2
Authorise in the Google popup
Pick the Google account that manages the YouTube channel you want. If you see "Google hasn't verified this app", click Advanced → Go to … (unsafe). That is expected for a project you built for yourself, not a real security warning.
- 3
Reuse the credentials for more channels
Next time, instead of re-entering both values, pick the saved set under OAuth credentials for this channel. The channel table shows which credential set each channel runs on.
The 6-videos-a-day quota
Each Google project gets 10,000 quota units a day, and a video upload costs 1,600 — about 6 videos a day. The quota resets around 14:00–15:00 Vietnam time, not at midnight.
Quota follows the credentials, not the channel
Three YouTube channels on three different emails still share the same 10,000 units if they share one credential set. Nothing can read the remaining quota back into this system, so if you publish heavily, give each channel its own Google project. Beyond that, request a quota increase in Google Cloud Console.
Two language fields that get mixed up
YouTube has two separate language fields, and only one of them can be set through the API.
| Field | Where it appears | Can we set it? |
|---|---|---|
| Video language | YouTube Studio, the video language setting | No. This is the audio language field and the API cannot write it — change it by hand in Studio. |
| Title and description language | Attached to the post title and description | Yes, set from what you enter here. |
One more trap: the channel's default upload settings in YouTube Studio only apply to videos you upload by hand, never to videos published through the API. Everything you need must be set on the publishing screen here.
Common problems
| Symptom | Cause | Fix |
|---|---|---|
| The channel flips to "Revoked" after exactly one week | The Google Cloud app is still in Testing mode. | Press Publish app under Audience, then reconnect the channel. |
redirect_uri_mismatch | The URL in Authorized redirect URIs does not match exactly. | Reopen the in-app guide, copy the URL from there and paste it again. |
| A few videos publish, then a quota error | The project's 10,000 daily units are spent. | Wait until around 14:00–15:00 Vietnam time, use another credential set, or request more quota. |
| Analytics shows 0 views | The yt-analytics.readonly scope is missing, or YouTube Analytics API is not enabled. | Add the scope and the API in Google Cloud, then re-authorise the channel. |
Still stuck? See channel troubleshooting.
