n8n-io/n8n · error · UserError

No importable properties found. Please check the --include f

Error message

No importable properties found. Please check the --include flag.

What it means

Thrown by filterCredentialProperties when `--include` is provided but NONE of the listed properties are importable. Importable properties are enumerated in isCredentialPropertyImportable (credentials.ts:448-467): createdAt, updatedAt, id, name, data, type, isManaged, isGlobal, isResolvable, resolvableAllowFallback, resolverId, usageScope.

Source

Thrown at packages/cli/src/commands/import/credentials.ts:433

		const unknownProperties = properties.filter((property) => !knownProperties.has(property));
		if (unknownProperties.length === 0) return;

		this.logger.warn(
			`Ignoring unknown properties from ${flagName}: ${unknownProperties.join(', ')}`,
		);
	}

	private filterCredentialProperties(
		credential: Partial<CredentialsEntity>,
		include?: string[],
		exclude?: string[],
	): Partial<CredentialsEntity> {
		if (include?.length) {
			const includeProperties = include.filter((property) =>
				this.isCredentialPropertyImportable(property),
			);
			if (includeProperties.length === 0) {
				throw new UserError('No importable properties found. Please check the --include flag.');
			}
			return pick(credential, includeProperties);
		}

		if (exclude?.length) {
			const excludeProperties = exclude.filter((property) =>
				this.isCredentialPropertyImportable(property),
			);
			return omit(credential, excludeProperties);
		}

		return credential;
	}

	private isCredentialPropertyImportable(
		property: string,
	): property is ImportableCredentialProperty {
		const importableProperties = {

View on GitHub (pinned to 5ac6606e81)

Solutions

  1. Use only importable property names from: createdAt, updatedAt, id, name, data, type, isManaged, isGlobal, isResolvable, resolvableAllowFallback, resolverId, usageScope.
  2. Drop `--include` to import all importable properties.

Example fix

// before
n8n import:credentials --input=f.json --include=webhookUrl,secret
// after
n8n import:credentials --input=f.json --include=id,name,type,data
Defensive patterns

Strategy: validation

Validate before calling

const IMPORTABLE = new Set(['createdAt','updatedAt','id','name','data','type','isManaged','isGlobal','isResolvable','resolvableAllowFallback','resolverId','usageScope']);
function validateInclude(include?: string[]) {
  if (include && !include.some(p => IMPORTABLE.has(p))) {
    throw new Error(`--include must contain at least one of: ${[...IMPORTABLE].join(', ')}`);
  }
}
validateInclude(include);

Type guard

const IMPORTABLE = new Set(['createdAt','updatedAt','id','name','data','type','isManaged','isGlobal','isResolvable','resolvableAllowFallback','resolverId','usageScope']);
const isImportableProperty = (p: string): p is ImportableCredentialProperty => IMPORTABLE.has(p);

Prevention

When it happens

Trigger: `n8n import:credentials --input=f.json --include=foo,bar,baz` where none of foo/bar/baz are in the importable set. The filter at credentials.ts:429-431 yields zero importable properties.

Common situations: Typing property names; using internal/legacy field names not in the allowlist; confusion with workflow properties.

Related errors


AI-assisted analysis of n8n-io/n8n@5ac6606e81 (2026-08-12). Data as JSON: /api/errors/6d35fab8c02aac43. Report an issue: GitHub.