Question about SSO via custom hooks and SUL compliance

Hi n8n community!

First off, huge thanks to the team at n8n for building such a great product.

I have a question around licensing and compliance under the Sustainable Use License.

We’re currently evaluating n8n for internal, non-commercial use across a few teams. At the moment, the only enterprise-level feature we’re interested in is SSO.

While exploring the docs, we noticed that it’s possible to expose custom routes using the “custom hooks” feature:
https://docs.n8n.io/embed/configuration/#available-hooks

This got us thinking about whether it would be acceptable to implement our own SSO mechanism from scratch (e.g., OIDC-based), using these hooks in a self-hosted setup — without modifying or reusing any of n8n’s enterprise code.

So the core question is:

Would implementing SSO in this way be considered a violation of the license, given that SSO is an enterprise-only feature?

We want to make sure we’re fully compliant, even for internal use.

For additional context:

  • This would be a from-scratch implementation, not derived from n8n’s codebase

  • Usage is internal only (non-commercial)

  • We may consider an enterprise license in the future, but for now our use cases are relatively small, so we’d prefer to start with the community edition and scale if needed

Would really appreciate any clarification or guidance from the team or others who may have looked into this.

Thanks in advance :folded_hands:

hello @coreanesque

Can’t say anything about your question, but the configuration you pointed to is related to the special license type - Embed, which is designed for commercial use. And I’m assuming it will cost more than the Enterprise tier :slight_smile:

Thank you for the comment!

What I see is that External Backend Hooks isn’t included in the official 'excluded features’ list. Community edition features | n8n Docs

Besides, hooks like n8n.ready just works out-of-the-box without requiring an active license key when configurating the EXTERNAL_HOOK_FILES environment variable, If it requires a license, it should ignore the environment variable or display warning on the console. such as:

if (mains > 1) {
	if (!process.env.N8N_LICENSE_ACTIVATION_KEY && !process.env.N8N_LICENSE_CERT) {
		throw new Error(
			'N8N_LICENSE_ACTIVATION_KEY or N8N_LICENSE_CERT is required for multi-main instances',
		);
	}
	env.N8N_MULTI_MAIN_SETUP_ENABLED = 'true';
}

While the documentation for External Backend Hooks is located under the n8n Embed section, this appears to be because they are primarily used by developers building custom platforms. Technically, they remain a Community Edition feature because they are part of the core engine, require no license key to activate, and are not restricted in the self-hosted code. They are ‘advanced’ features, but not ‘paid’ features.

Would love a quick confirmation from the n8n team if I’ve got that right!

I would appreciate it if the n8n team could provide a response.

Hey @coreanesque, great question and thanks for being so thorough in how you’ve framed it.

From what I can tell, your approach sounds reasonable. You’re building something from scratch using an unlicensed, ungated feature (external hooks), without touching or deriving from any enterprise code. For reference, others in the community have already implemented similar solutions: n8n-oidc and n8n-community-sso both take this kind of approach.

That said, we’d recommend reaching out to [email protected] for an official confirmation before you build on top of it as they’ll be able to give you a definitive answer on the compliance question.

  • Jon

@Jon_James Thanks, I really appreciate the detailed response and guidance.

I did reach out to the licensing team via email about a week ago already, but I haven’t received a response yet. Do you happen to know if there’s any way to help expedite getting an answer from their side?

Thanks again for your help!