This is the full version of the wizard in the dashboard. It takes about ten minutes, and costs nothing. You'll copy two things from Google (a client ID and a client secret) into JSONPad, and one URL from JSONPad into Google.
If you haven't read it yet, signing in with Google, GitHub and others explains how the whole flow works.
You can change your app's name, logo and links later under Branding.
It depends on the callback mode you choose in the JSONPad wizard. Straight back to your app is the default for Google, because it lets Google show your own domain on the consent screen.
https://myapp.com/auth/callback and http://localhost:5173/auth/callback. Google allows http://localhost with any port, so development works without a tunnel. Add each of them as a redirect URL on the identity group as well.https://api.jsonpad.io/identities/oauth/callback. Your app's pages then only need to be redirect URLs on the identity group, and you never touch the Google console again when you add an environment.The dashboard's Test sign-in always goes through JSONPad's callback URL, because it returns to the dashboard. If you're using "straight back to your app" mode and want to use it, add https://api.jsonpad.io/identities/oauth/callback to the authorized redirect URIs as well.
A new app's publishing status is Testing, which means only the test users you list under Audience can sign in (up to 100), and their sign-ins expire after a week. When you're ready, click Publish app there.
JSONPad only asks Google for the openid, email and profile scopes, which Google treats as non-sensitive, so publishing doesn't need Google to review your app. People may see an "unverified app" warning until you verify your brand under Branding, which needs a domain you own and a privacy policy.
Google shows the domain of the callback URL on its consent screen. In "through JSONPad" mode that's JSONPad's domain, not yours, and it can't be brand-verified as yours. If the consent screen should carry your own name and domain, use "straight back to your app" mode.
redirect_uri_mismatchThe URL JSONPad asked Google to return to isn't in Authorized redirect URIs. They're compared exactly: check the scheme, the port, a trailing slash and www. Changes in the Google console can take a few minutes to take effect.invalid_clientGoogle rejected the client ID or secret. Make sure both came from the same client, and that the client hasn't been deleted. If the secret was lost, add a new one in the console and save it in JSONPad.access_deniedThe person cancelled, or your app is in Testing and they aren't one of its test users.admin_policy_enforcedTheir Google Workspace administrator blocks apps like yours. They'll need the administrator to allow it.org_internalYour app's audience is Internal, so only accounts in your Workspace organization can sign in. Change it to External.This app isn't verifiedExpected until your brand is verified. People can still continue through Advanced.Google changes this console often. If a menu isn't where this page says it is, the wording in the console is usually close enough to find it.
2026-09-17