On n8n Cloud we provide Managed OAuth. Your users see a single connect button and sign in without creating their own OAuth app first. Anyone who prefers to bring their own app keeps the option to do so.
We are now opening Managed OAuth to our official community node creators. You register one OAuth app in your service, share the client ID and secret with us, and we make the connect button available to everyone using your node on Cloud.

Example Connect to <Service> button, When clicked it will automatically open the OAuth authorisation window.
Official community node creators are people who build a node for a service they own. If you own the service behind your node, you are eligible to share credentials for Managed OAuth.
This is an example of an OAuth credential file, This would typically be named something like YourServiceOAuth2Api.credentials.ts
import type { Icon, ICredentialType, INodeProperties } from 'n8n-workflow';
export class YourServiceOAuth2Api implements ICredentialType {
name = 'yourServiceOAuth2Api';
displayName = 'Your Service OAuth2 API';
extends = ['oAuth2Api'];
documentationUrl = '<https://github.com/your-repo/n8n-nodes-yourservice?tab=readme-ov-file#credentials>';
icon: Icon = {
light: 'file:icons/yourService.svg',
dark: 'file:icons/yourService.dark.svg',
};
properties: INodeProperties[] = [
{
displayName: 'Grant Type',
name: 'grantType',
type: 'hidden',
default: 'authorizationCode',
},
{
displayName: 'Authorization URL',
name: 'authUrl',
type: 'hidden',
default: '<https://auth.yourservice.com/oauth2/authorize>',
required: true,
},
{
displayName: 'Access Token URL',
name: 'accessTokenUrl',
type: 'hidden',
default: '<https://auth.yourservice.com/oauth2/token>',
required: true,
},
{
displayName: 'Scope',
name: 'scope',
type: 'hidden',
default: 'contacts:read contacts:write',
},
{
displayName: 'Auth URI Query Parameters',
name: 'authQueryParameters',
type: 'hidden',
default: '',
},
{
displayName: 'Authentication',
name: 'authentication',
type: 'hidden',
default: 'header',
},
];
}
You may notice that Client ID and Client Secret are missing, This is something that is automatically pulled from the extended oAuth2Api credential type.
Create the app in your service with these settings so we approve and deploy without delay:
Complete the provided form and include a test account to allow us to verify the connection.
Your client secret is redacted in the workflow and stored in a vault, along with any test credentials you provide. We do not keep the secret in plain text.