# Table of Contents - [Unknown](#unknown) - [Unknown](#unknown) - [Build | n8n Docs](#build-n8n-docs) - [Nodes | n8n Docs](#nodes-n8n-docs) - [Contribute to n8n | Contribute | n8n Docs](#contribute-to-n8n-contribute-n8n-docs) - [Unknown](#unknown) - [Keyboard shortcuts | Build | n8n Docs](#keyboard-shortcuts-build-n8n-docs) - [Code in n8n | Build | n8n Docs](#code-in-n8n-build-n8n-docs) - [Manage workflows | Build | n8n Docs](#manage-workflows-build-n8n-docs) - [Unknown](#unknown) - [Sustainable use license | Privacy and security | n8n Docs](#sustainable-use-license-privacy-and-security-n8n-docs) - [Built-in nodes | Nodes | n8n Docs](#built-in-nodes-nodes-n8n-docs) - [Work with data | Build | n8n Docs](#work-with-data-build-n8n-docs) - [Ways of building workflows | Build | n8n Docs](#ways-of-building-workflows-build-n8n-docs) - [Custom API actions for existing nodes | Nodes | n8n Docs](#custom-api-actions-for-existing-nodes-nodes-n8n-docs) - [Community nodes | Nodes | n8n Docs](#community-nodes-nodes-n8n-docs) - [Integrate AI | Build | n8n Docs](#integrate-ai-build-n8n-docs) - [Installation and management | Nodes | n8n Docs](#installation-and-management-nodes-n8n-docs) - [Node types | Nodes | n8n Docs](#node-types-nodes-n8n-docs) - [Using community nodes | Nodes | n8n Docs](#using-community-nodes-nodes-n8n-docs) - [Overview | Connect | n8n Docs](#overview-connect-n8n-docs) - [HTTP Request | Nodes | n8n Docs](#http-request-nodes-n8n-docs) - [Privacy | Privacy and security | n8n Docs](#privacy-privacy-and-security-n8n-docs) - [Flow logic | Build | n8n Docs](#flow-logic-build-n8n-docs) - [Trigger nodes | Nodes | n8n Docs](#trigger-nodes-nodes-n8n-docs) - [Unknown](#unknown) - [Credentials | Nodes | n8n Docs](#credentials-nodes-n8n-docs) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Tag workflows | Build | n8n Docs](#tag-workflows-build-n8n-docs) - [n8n CLI | Connect | n8n Docs](#n8n-cli-connect-n8n-docs) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [What you can do | Privacy and security | n8n Docs](#what-you-can-do-privacy-and-security-n8n-docs) - [Unknown](#unknown) - [Use the command line | Deploy | n8n Docs](#use-the-command-line-deploy-n8n-docs) - [Models | Connect | n8n Docs](#models-connect-n8n-docs) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [n8n Docs](#n8n-docs) - [n8n Docs](#n8n-docs) - [Track usage with Insights | Administer | n8n Docs](#track-usage-with-insights-administer-n8n-docs) - [Deploy with the AI starter kit | Deploy | n8n Docs](#deploy-with-the-ai-starter-kit-deploy-n8n-docs) - [Share credentials securely | Administer | n8n Docs](#share-credentials-securely-administer-n8n-docs) - [Use external secret stores | Administer | n8n Docs](#use-external-secret-stores-administer-n8n-docs) - [Use metrics to measure quality | Build | n8n Docs](#use-metrics-to-measure-quality-build-n8n-docs) - [Manage your license | Deploy | n8n Docs](#manage-your-license-deploy-n8n-docs) - [Store and search data with vectors | Build | n8n Docs](#store-and-search-data-with-vectors-build-n8n-docs) - [Environment variable installation | Nodes | n8n Docs](#environment-variable-installation-nodes-n8n-docs) - [Configuration examples | Deploy | n8n Docs](#configuration-examples-deploy-n8n-docs) - [Deploy to Hetzner | Deploy | n8n Docs](#deploy-to-hetzner-deploy-n8n-docs) - [Customize executions data | Build | n8n Docs](#customize-executions-data-build-n8n-docs) - [Change instance owner email | Deploy | n8n Docs](#change-instance-owner-email-deploy-n8n-docs) - [View all executions | Build | n8n Docs](#view-all-executions-build-n8n-docs) - [Understand the architecture | Deploy | n8n Docs](#understand-the-architecture-deploy-n8n-docs) - [Deploy as an OEM integration | Deploy | n8n Docs](#deploy-as-an-oem-integration-deploy-n8n-docs) - [Codex files | Connect | n8n Docs](#codex-files-connect-n8n-docs) - [Item linking errors | Build | n8n Docs](#item-linking-errors-build-n8n-docs) - [Debug executions | Build | n8n Docs](#debug-executions-build-n8n-docs) - [Preserving linking in the Code node | Build | n8n Docs](#preserving-linking-in-the-code-node-build-n8n-docs) - [Deploy to Google Cloud Run | Deploy | n8n Docs](#deploy-to-google-cloud-run-deploy-n8n-docs) - [Base files | Connect | n8n Docs](#base-files-connect-n8n-docs) - [View executions for a single workflow | Build | n8n Docs](#view-executions-for-a-single-workflow-build-n8n-docs) - [Set up task runners | Deploy | n8n Docs](#set-up-task-runners-deploy-n8n-docs) - [Item linking | Connect | n8n Docs](#item-linking-connect-n8n-docs) - [Versioning | Connect | n8n Docs](#versioning-connect-n8n-docs) - [Deploy to Azure | Deploy | n8n Docs](#deploy-to-azure-deploy-n8n-docs) - [Credentials files | Connect | n8n Docs](#credentials-files-connect-n8n-docs) - [Deploy to AWS | Deploy | n8n Docs](#deploy-to-aws-deploy-n8n-docs) - [Deploy to Google Kubernetes | Deploy | n8n Docs](#deploy-to-google-kubernetes-deploy-n8n-docs) - [Use Docker Compose | Deploy | n8n Docs](#use-docker-compose-deploy-n8n-docs) - [HTTP request helpers | Connect | n8n Docs](#http-request-helpers-connect-n8n-docs) - [N8n Package | Connect | n8n Docs](#n8n-package-connect-n8n-docs) - [Folders | Connect | n8n Docs](#folders-connect-n8n-docs) - [Tutorial: Build a declarative-style node | Connect | n8n Docs](#tutorial-build-a-declarative-style-node-connect-n8n-docs) - [Community edition features | Deploy | n8n Docs](#community-edition-features-deploy-n8n-docs) - [Retrieve relevant context | Build | n8n Docs](#retrieve-relevant-context-build-n8n-docs) - [Verify user emails | Deploy | n8n Docs](#verify-user-emails-deploy-n8n-docs) - [Set up SSL | Deploy | n8n Docs](#set-up-ssl-deploy-n8n-docs) - [Control telemetry | Deploy | n8n Docs](#control-telemetry-deploy-n8n-docs) - [Harden task runners | Deploy | n8n Docs](#harden-task-runners-deploy-n8n-docs) - [Disable the public API | Deploy | n8n Docs](#disable-the-public-api-deploy-n8n-docs) - [Configure SSO | Deploy | n8n Docs](#configure-sso-deploy-n8n-docs) - [Security | Deploy | n8n Docs](#security-deploy-n8n-docs) - [Manage settings using environment variables | Deploy | n8n Docs](#manage-settings-using-environment-variables-deploy-n8n-docs) - [Block specific nodes | Deploy | n8n Docs](#block-specific-nodes-deploy-n8n-docs) - [Rotate encryption keys | Deploy | n8n Docs](#rotate-encryption-keys-deploy-n8n-docs) - [Enable SSRF protection | Deploy | n8n Docs](#enable-ssrf-protection-deploy-n8n-docs) - [Error handling | Connect | n8n Docs](#error-handling-connect-n8n-docs) - [Scaling | Deploy | n8n Docs](#scaling-deploy-n8n-docs) - [Accessing linked items in the Code node | Build | n8n Docs](#accessing-linked-items-in-the-code-node-build-n8n-docs) - [Decrypt OAuth 2.0 tokens with JWE | Deploy | n8n Docs](#decrypt-oauth-2-0-tokens-with-jwe-deploy-n8n-docs) - [Manage security policies | Deploy | n8n Docs](#manage-security-policies-deploy-n8n-docs) - [Enable queue mode | Deploy | n8n Docs](#enable-queue-mode-deploy-n8n-docs) - [Code node | Build | n8n Docs](#code-node-build-n8n-docs) - [Fix memory issues | Deploy | n8n Docs](#fix-memory-issues-deploy-n8n-docs) - [Redact execution data | Deploy | n8n Docs](#redact-execution-data-deploy-n8n-docs) - [Set up source control | Administer | n8n Docs](#set-up-source-control-administer-n8n-docs) - [How memory works | Build | n8n Docs](#how-memory-works-build-n8n-docs) - [Row operations | Nodes | n8n Docs](#row-operations-nodes-n8n-docs) - [Microsoft Agent 365 Trigger | Nodes | n8n Docs](#microsoft-agent-365-trigger-nodes-n8n-docs) - [Common issues | Nodes | n8n Docs](#common-issues-nodes-n8n-docs) - [AI Agent | Nodes | n8n Docs](#ai-agent-nodes-n8n-docs) - [Table operations | Nodes | n8n Docs](#table-operations-nodes-n8n-docs) - [Workflow development | Nodes | n8n Docs](#workflow-development-nodes-n8n-docs) - [Common issues | Nodes | n8n Docs](#common-issues-nodes-n8n-docs) - [Common issues | Nodes | n8n Docs](#common-issues-nodes-n8n-docs) --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/welcome.md). # n8n Docs n8n is a fair-code licensed workflow automation tool that combines AI capabilities with business process automation.
Cover image
:server: Get set up on n8n/files/cew5tUoowk0ECeg4Sn7Q
:draw-square: Build your first automation/pages/zUKRppskKg9LhFTtXLPj/files/jsSOd2oDuEAGpUNhiGlY
:stamp: Get inspiration for what to automate/files/qnZMSRNOlw7AxMBtjXwi
:lightbulb-gear: Understand key concepts/files/VkcOOhTRPQBjR6UUdVEy
Anthropic Claude DesktopAdd the n8n connector to Claude Desktop/spaces/r7wKI4I1BgdBCuq5Cvcx/pages/vxNjlVsE3bD1WgNAUOnO#connecting-claude-desktop-to-n8n-mcp-server/files/xmdd04HkxvE0QDJ5HV8G
Anthropic Claude Code
claude mcp add --transport http n8n-mcp https:///mcp-server/http
/spaces/r7wKI4I1BgdBCuq5Cvcx/pages/vxNjlVsE3bD1WgNAUOnO#connecting-claude-code-to-n8n-mcp-server/files/dd7B4dyNfwmfOPJTNbQS
Open AI Codex
codex mcp add n8n-mcp --url https:///mcp-server/http
/spaces/r7wKI4I1BgdBCuq5Cvcx/pages/vxNjlVsE3bD1WgNAUOnO#connecting-codex-cli-to-n8n-mcp-server/files/Ct6O3FmZIzVLSJLgogne
--- # Unknown \# n8n Docs ## Get started - \[n8n Docs\](https://docs.n8n.io/welcome.md) - \[Choose how to use n8n\](https://docs.n8n.io/choose-how-to-use-n8n.md): Choose between our Cloud service, or self-hosting options. Learn more about licenses and n8n payment plans. - \[Build your first workflow\](https://docs.n8n.io/build-your-first-workflow.md): Create your first workflow in n8n and learn some key concepts. - \[Learning paths\](https://docs.n8n.io/learning-paths.md): Interactive courses to learn n8n through hands-on exercises, quizzes, and real workflow building. - \[Key concept glossary\](https://docs.n8n.io/key-concept-glossary.md): A glossary of terms commonly used when working with n8n and related software. ## Deploy - \[Deploy\](https://docs.n8n.io/deploy/readme.md) - \[Use n8n Cloud\](https://docs.n8n.io/deploy/use-n8n-cloud.md) - \[Start your free trial\](https://docs.n8n.io/deploy/use-n8n-cloud/start-your-free-trial.md): Explanation on how the n8n Cloud trial works and the features included - \[Use the admin dashboard\](https://docs.n8n.io/deploy/use-n8n-cloud/use-the-admin-dashboard.md): How to access the Cloud admin dashboard. - \[Update your version\](https://docs.n8n.io/deploy/use-n8n-cloud/update-your-version.md): How to update your n8n version on Cloud. - \[Configure Cloud\](https://docs.n8n.io/deploy/use-n8n-cloud/configure-cloud.md) - \[Set your timezone\](https://docs.n8n.io/deploy/use-n8n-cloud/configure-cloud/set-your-timezone.md): How to set your timezone on n8n Cloud. - \[Find your IP addresses\](https://docs.n8n.io/deploy/use-n8n-cloud/configure-cloud/find-your-ip-addresses.md) - \[Manage your data\](https://docs.n8n.io/deploy/use-n8n-cloud/configure-cloud/manage-your-data.md): How to manage your data on Cloud. - \[Change instance ownership or username\](https://docs.n8n.io/deploy/use-n8n-cloud/configure-cloud/change-instance-ownership-or-username.md) - \[Understand concurrency\](https://docs.n8n.io/deploy/use-n8n-cloud/understand-concurrency.md) - \[Download workflows\](https://docs.n8n.io/deploy/use-n8n-cloud/download-workflows.md): How to download workflows from n8n Cloud with the admin dashboard. - \[Host n8n\](https://docs.n8n.io/deploy/host-n8n.md): Access n8n hosting documentation and guides. Find comprehensive resources to help you set up and manage your self-hosted n8n instances. - \[Install options\](https://docs.n8n.io/deploy/host-n8n/install-options.md) - \[Install with npm\](https://docs.n8n.io/deploy/host-n8n/install-options/install-with-npm.md) - \[Install with Docker\](https://docs.n8n.io/deploy/host-n8n/install-options/install-with-docker.md) - \[Use a cloud provider\](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider.md) - \[Deploy to Digital Ocean\](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-digital-ocean.md) - \[Deploy to Heroku\](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-heroku.md) - \[Deploy to Hetzner\](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-hetzner.md) - \[Deploy to AWS\](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-aws.md) - \[Deploy to Azure\](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-azure.md) - \[Deploy to Google Cloud Run\](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-google-cloud-run.md) - \[Deploy to Google Kubernetes\](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-google-kubernetes.md) - \[Deploy to OpenShift Local (CRC)\](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-openshift-local-crc.md) - \[Use Docker Compose\](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/use-docker-compose.md): Install and run n8n using Docker Compose - \[Configure n8n\](https://docs.n8n.io/deploy/host-n8n/configure-n8n.md) - \[Basic configuration\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration.md): How to set environment variables for n8n. - \[Use environment variables\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables.md): An overview of configuration environment variables for self-hosted n8n. - \[Ask n8n AI\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/ai-assistant.md): Environment variables to configure Ask n8n AI. - \[Binary data\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/binary-data.md): Customize binary data storage modes and paths with environment variables for your self-hosted n8n instance. - \[Credentials\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/credentials.md): Manage default credentials and override them through environment variables your self-hosted n8n instance. - \[Database\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/database.md): Set up and configure databases with environment variables for your self-hosted n8n instance. - \[Deployment\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/deployment.md): Configure deployment options and application accessibility with environment variables for your self-hosted n8n instance. - \[Endpoints\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/endpoints.md): Customize the application's API and webhook endpoints with environment variables for your self-hosted n8n instance. - \[Executions\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/executions.md): Environment variables to configure settings related to workflow executions. - \[Expression engine\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/expression-engine.md): Configure the expression evaluation engine and its V8 isolate pool for your self-hosted n8n instance. - \[External data storage\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/external-data-storage.md): Environment variables to configure external data storage for your self-hosted n8n instance. - \[External hooks\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/external-hooks.md): Environment variables to integrate external hooks into your self-hosted n8n instance. - \[External secrets\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/external-secrets.md): Configure the interval for checking updates to external secrets in self-hosted n8n instance. - \[Insights\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/insights.md): Configure insights metrics collection with environment variables for your self-hosted n8n instance. - \[Logs\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/logs.md): Environment variables to configure logging and diagnostic data. - \[License\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/license.md): Environment variables to configure license settings in n8n, including options to hide the usage page, manage license activation and auto-renewal settings, and specify the server URL for license retrie - \[Nodes\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/nodes.md): Environment variables to configure nodes management and node-specific limits in self-hosted n8n. - \[OpenTelemetry\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/opentelemetry.md): Configure OpenTelemetry tracing with environment variables for your self-hosted n8n instance. - \[Queue mode\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/queue-mode.md): Environment variables to configure queue mode on your self-hosted n8n instance. - \[Security\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/security.md): Configure authentication and environment variable access in self-hosted n8n instance. - \[Source control\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/source-control.md): Environment variable to set the default SSH key type for source control setup. - \[SSO\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/sso.md): Configure single sign-on for self-hosted n8n using environment variables. - \[SSRF protection\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/ssrf-protection.md): Configure SSRF protection for your self-hosted n8n instance. - \[Task runners\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/task-runners.md): Environment variables to confgure task runners your self-hosted n8n instance. - \[Timezone and localization\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/timezone-and-localization.md): Set the timezone and default language locale for self-hosted n8n instance. - \[User management and 2FA\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/user-management-and-2fa.md): Environment variables to set up user management and emails. - \[Workflows\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/workflows.md): Environment variables to configure workflows in n8n, including default naming, onboarding flow preferences, tag management, and caller policy settings. - \[Workflow history\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/workflow-history.md): Environment variables to configure workflow history in n8n. - \[Configuration examples\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/configuration-examples.md): An overview containing different configuration examples. - \[Isolate n8n\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/configuration-examples/isolate-n8n.md): Prevent your n8n instance from connecting with n8n's servers. - \[Configure the Base URL\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/configuration-examples/configure-the-base-url.md): Configure the Base URL environment variable to define the front end's access path to the back end's REST API for n8n. - \[Configure custom SSL certificate authorities\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/configuration-examples/configure-custom-ssl-certificate-authorities.md): Customize the n8n container to work with self signed certificates when connecting to services. - \[Set a custom encryption key\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/configuration-examples/set-a-custom-encryption-key.md): Set a custom encryption key for n8n to securely encrypt credentials. - \[Configure workflow timeouts\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/configuration-examples/configure-workflow-timeouts.md): Set execution timeouts to determine how long workflows can run. - \[Specify custom nodes location\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/configuration-examples/specify-custom-nodes-location.md): Add folders and specify paths for your custom nodes. - \[Enable modules in Code node\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/configuration-examples/enable-modules-in-code-node.md): Allow the use of both built-in and external modules within the Code node. - \[Set the timezone\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/configuration-examples/set-the-timezone.md): Change the default timezone for your self-hosted n8n instance. - \[Specify user folder path\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/configuration-examples/specify-user-folder-path.md): Specify location of the folder that stores user-specific data. - \[Configure webhook URLs with reverse proxy\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/configuration-examples/configure-webhook-urls-with-reverse-proxy.md): Customize n8n webhook URLs for compatibility with reverse proxy setups. - \[Enable Prometheus metrics\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/configuration-examples/enable-prometheus-metrics.md): Enable Prometheus metrics endpoint. - \[Pre-configure Microsoft OAuth credentials\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/configuration-examples/pre-configure-microsoft-oauth-credentials.md): Use credential overwrites to pre-configure Microsoft OAuth2 credentials in n8n so users can connect without their own app registration. - \[Configure a custom workflow templates library\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/configuration-examples/configure-a-custom-workflow-templates-library.md): Set up a custom workflow template library for your self-hosted n8n instance. - \[Choose n8n's database\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/choose-n8ns-database.md) - \[External hooks\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/external-hooks.md): Use external hooks to execute custom code whenever n8n runs a specific operation. - \[Use the command line\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line.md): Commands available in the Server CLI, the built-in n8n command-line interface. - \[User management\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/user-management.md): Configure self-hosted n8n for user management - \[Change instance owner email\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/change-instance-owner-email.md): Change the owner email address for a self-hosted n8n instance using the UI or environment variables. - \[Manage settings using environment variables\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/manage-settings-using-environment-variables.md): Configure a self-hosted n8n instance owner, SSO, security policy, log streaming, MCP, and community packages from environment variables. - \[Set up task runners\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/set-up-task-runners.md): How to configure task runners to execute tasks using internal or external runner processes. - \[Manage your license\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/manage-your-license.md): How to activate your license key. - \[Security\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security.md) - \[Manage security policies\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/manage-security-policies.md): Manage instance-wide security policies including MFA enforcement and personal space controls. - \[Set up SSL\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/set-up-ssl.md): Set up SSL for your self-hosted n8n instance. - \[Configure SSO\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/configure-sso.md): Set up SAML or OIDC Single Sign-On for your self-hosted n8n instance. - \[Run security audits\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/run-security-audits.md): Run a security audit on your n8n instance. - \[Disable the public API\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/disable-the-public-api.md): Disable the n8n public REST API to prevent others from using it. - \[Control telemetry\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/control-telemetry.md): Opt out of data telemetry collection on your n8n instance. - \[Block specific nodes\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/block-specific-nodes.md): Prevent your n8n users from accessing specific nodes. - \[Harden task runners\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/harden-task-runners.md): Harden task runners for better isolation for your self-hosted n8n instance. - \[Verify user emails\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/verify-user-emails.md): Require all new accounts to be verified by email. - \[Enable SSRF protection\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/enable-ssrf-protection.md): Protect your self-hosted n8n instance from Server-Side Request Forgery (SSRF) attacks. - \[Rotate encryption keys\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/rotate-encryption-keys.md): Enable and rotate the data encryption key that protects credentials and other sensitive data on your self-hosted n8n instance. - \[Decrypt OAuth 2.0 tokens with JWE\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/decrypt-oauth-20-tokens-with-jwe.md): Enable JWE-encrypted OAuth 2.0 tokens on your n8n instance so your identity provider can encrypt access and ID tokens that only your instance can decrypt. - \[Redact execution data\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/redact-execution-data.md): Control the visibility of execution data in workflows to protect sensitive information and meet compliance requirements. - \[Scaling\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling.md) - \[Measure performance\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/measure-performance.md): n8n performance and resource consumption benchmarking. - \[Enable queue mode\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/enable-queue-mode.md) - \[Control concurrency\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/control-concurrency.md) - \[Manage execution data\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/manage-execution-data.md) - \[Handle binary data\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/handle-binary-data.md): How to handle large files without degrading n8n's performance. - \[Use external storage\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/use-external-storage.md): External storage of binary data and execution data for your n8n instance. - \[Fix memory issues\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/fix-memory-issues.md) - \[Keep n8n running\](https://docs.n8n.io/deploy/host-n8n/keep-n8n-running.md) - \[Set up logging\](https://docs.n8n.io/deploy/host-n8n/keep-n8n-running/set-up-logging.md) - \[Monitor n8n\](https://docs.n8n.io/deploy/host-n8n/keep-n8n-running/monitor-n8n.md): Get metrics for a health check - \[Visualize metrics with Grafana\](https://docs.n8n.io/deploy/host-n8n/keep-n8n-running/visualize-metrics-with-grafana.md) - \[Update n8n\](https://docs.n8n.io/deploy/host-n8n/keep-n8n-running/update-n8n.md): Best practices for updating your self-hosted n8n - \[Trace executions with OpenTelemetry\](https://docs.n8n.io/deploy/host-n8n/keep-n8n-running/trace-executions-with-opentelemetry.md): Send workflow and node execution traces from n8n to an OpenTelemetry collector. - \[Understand the architecture\](https://docs.n8n.io/deploy/host-n8n/understand-the-architecture.md) - \[How n8n works\](https://docs.n8n.io/deploy/host-n8n/understand-the-architecture/how-n8n-works.md): Understand n8n's architecture - \[Understand the database\](https://docs.n8n.io/deploy/host-n8n/understand-the-architecture/understand-the-database.md): Understand the n8n database structure - \[Deploy as an OEM integration\](https://docs.n8n.io/deploy/host-n8n/deploy-as-an-oem-integration.md): Overview of OEM deployment - surfacing n8n's interface inside your own product's UI under an OEM agreement. - \[Prerequisites\](https://docs.n8n.io/deploy/host-n8n/deploy-as-an-oem-integration/prerequisites.md): Infrastructure sizing guidance and deployment best practices for an OEM deployment of n8n. - \[Manage workflows\](https://docs.n8n.io/deploy/host-n8n/deploy-as-an-oem-integration/manage-workflows.md): Patterns for managing workflows across multiple users or organizations in an n8n OEM deployment. - \[Set up token exchange\](https://docs.n8n.io/deploy/host-n8n/deploy-as-an-oem-integration/set-up-token-exchange.md): Use OAuth 2.0 Token Exchange to authenticate users and act on their behalf inside an embedded n8n instance, through iframe SSO and delegated API access. - \[Deploy with the AI starter kit\](https://docs.n8n.io/deploy/host-n8n/deploy-with-the-ai-starter-kit.md): Use n8n's curated self-hosted AI Starter Kit to get a list of AI elements to quickly start building AI workflows. - \[Community edition features\](https://docs.n8n.io/deploy/host-n8n/community-edition-features.md): Differences in available features between the Community edition and other paid plans. ## Build - \[Build\](https://docs.n8n.io/build/readme.md) - \[Understand workflows\](https://docs.n8n.io/build/understand-workflows.md): Learn about the key components of automation in n8n. - \[Workflow components\](https://docs.n8n.io/build/understand-workflows/workflow-components.md): Learn about the building blocks of workflows. - \[Work with nodes\](https://docs.n8n.io/build/understand-workflows/workflow-components/work-with-nodes.md): A node is an entry point for retrieving data, a function to process data, or an exit for sending data. - \[Connect nodes together\](https://docs.n8n.io/build/understand-workflows/workflow-components/connect-nodes-together.md): A connection establishes a link between nodes to route data through the workflow. - \[Canvas Groups\](https://docs.n8n.io/build/understand-workflows/workflow-components/canvas-groups.md): Group related nodes together on the canvas to keep large workflows readable. - \[Add notes and documentation\](https://docs.n8n.io/build/understand-workflows/workflow-components/add-notes-and-documentation.md): Annotate your workflows using sticky notes. - \[Find your workflow ID\](https://docs.n8n.io/build/understand-workflows/workflow-components/find-your-workflow-id.md): Find your workflow ID. - \[Understand executions\](https://docs.n8n.io/build/understand-workflows/understand-executions.md): An execution is a single run of a workflow. - \[Types of executions\](https://docs.n8n.io/build/understand-workflows/understand-executions/types-of-executions.md): How manual, partial, and automatic workflow executions differ. - \[Understand dirty nodes\](https://docs.n8n.io/build/understand-workflows/understand-executions/understand-dirty-nodes.md): What dirty nodes are and how they affect workflow execution. - \[Debug executions\](https://docs.n8n.io/build/understand-workflows/understand-executions/debug-executions.md): How to copy execution data into your current workflow in order to debug previous executions. - \[View executions for a single workflow\](https://docs.n8n.io/build/understand-workflows/understand-executions/view-executions-for-a-single-workflow.md): View and filter all executions for the workflow currently open on the canvas. - \[View all executions\](https://docs.n8n.io/build/understand-workflows/understand-executions/view-all-executions.md): View and filter all executions for all workflows. - \[Customize executions data\](https://docs.n8n.io/build/understand-workflows/understand-executions/customize-executions-data.md): Add custom data to your workflow executions using the Code node. You can then filter executions by this data. - \[Stream real-time responses\](https://docs.n8n.io/build/understand-workflows/understand-executions/stream-real-time-responses.md): Build a workflow with streaming responses - \[Create and run workflows\](https://docs.n8n.io/build/understand-workflows/create-and-run-workflows.md): Create, run, and publish workflows. - \[Save and publish workflows\](https://docs.n8n.io/build/understand-workflows/save-and-publish-workflows.md): Save, publish, unpublish, and name workflow versions. - \[Create and edit credentials\](https://docs.n8n.io/build/understand-workflows/create-and-edit-credentials.md): Creating and editing credentials. - \[Ways of building workflows\](https://docs.n8n.io/build/ways-of-building-workflows.md) - \[Use AI Assistant (Preview)\](https://docs.n8n.io/build/ways-of-building-workflows/ai-assistant-preview.md): Use the AI Assistant to create, edit, test, and troubleshoot n8n workflows from a chat. - \[Use n8n MCP server\](https://docs.n8n.io/build/ways-of-building-workflows/connect-to-n8n-mcp-server.md): Connect, authenticate, and integrate MCP clients to build and execute n8n workflows programmatically - \[Use templates\](https://docs.n8n.io/build/ways-of-building-workflows/use-templates.md): Use workflow templates - \[Use AI Workflow Builder\](https://docs.n8n.io/build/ways-of-building-workflows/ai-workflow-builder.md): Create, refine, and debug workflows using natural language descriptions of your goals. - \[Use Ask n8n AI\](https://docs.n8n.io/build/ways-of-building-workflows/use-the-ai-assistant.md) - \[Use Chat Hub\](https://docs.n8n.io/build/ways-of-building-workflows/chat-hub.md) - \[Manage workflows\](https://docs.n8n.io/build/manage-workflows.md) - \[Configure workflow settings\](https://docs.n8n.io/build/manage-workflows/configure-workflow-settings.md): Manage settings for an individual workflow. - \[Tag workflows\](https://docs.n8n.io/build/manage-workflows/tag-workflows.md): Use tags to label workflows, making it easier to browse your workflows. - \[View change history\](https://docs.n8n.io/build/manage-workflows/view-change-history.md): View and restore previous versions of your workflow. - \[Export and import\](https://docs.n8n.io/build/manage-workflows/export-and-import.md): Different ways to export and import workflows in n8n. - \[n8n Packages\](https://docs.n8n.io/build/manage-workflows/n8n-packages.md): How you can export and import content from your n8n instance with n8n packages - \[Share with others\](https://docs.n8n.io/build/manage-workflows/share-with-others.md): Share workflows between users. - \[Flow logic\](https://docs.n8n.io/build/flow-logic.md): How to represent logic in n8n workflows. - \[Split with conditionals\](https://docs.n8n.io/build/flow-logic/split-with-conditionals.md): Split workflows into multiple paths using If and Switch - \[Merge data\](https://docs.n8n.io/build/flow-logic/merge-data.md): Merge data streams in you n8n workflows. - \[Loop\](https://docs.n8n.io/build/flow-logic/loop.md) - \[Wait\](https://docs.n8n.io/build/flow-logic/wait.md): How to make your workflow execution wait. - \[Break workflows into smaller parts\](https://docs.n8n.io/build/flow-logic/break-workflows-into-smaller-parts.md): Call workflows from other workflows, and split large workflows into smaller components. - \[Convert to sub-workflows\](https://docs.n8n.io/build/flow-logic/convert-to-sub-workflows.md): Select nodes in your workflow and convert them into a sub-workflow. - \[Handle errors gracefully\](https://docs.n8n.io/build/flow-logic/handle-errors-gracefully.md): How to handle execution errors. - \[Understand execution order\](https://docs.n8n.io/build/flow-logic/understand-execution-order.md): How n8n decides the node execution order in multi-branch workflows. - \[Work with data\](https://docs.n8n.io/build/work-with-data.md) - \[Overview\](https://docs.n8n.io/build/work-with-data/overview.md) - \[Understand n8n's data structure\](https://docs.n8n.io/build/work-with-data/understand-n8ns-data-structure.md) - \[Expressions versus data nodes\](https://docs.n8n.io/build/work-with-data/expressions-versus-data-nodes.md) - \[Reference data\](https://docs.n8n.io/build/work-with-data/reference-data.md) - \[Use the UI mapper\](https://docs.n8n.io/build/work-with-data/reference-data/use-the-ui-mapper.md) - \[Reference previous nodes\](https://docs.n8n.io/build/work-with-data/reference-data/reference-previous-nodes.md): Methods for working with the input of the current node and the output of previous nodes. - \[Link data items\](https://docs.n8n.io/build/work-with-data/reference-data/link-data-items.md) - \[How items link through workflows\](https://docs.n8n.io/build/work-with-data/reference-data/link-data-items/how-items-link-through-workflows.md) - \[Accessing linked items in the Code node\](https://docs.n8n.io/build/work-with-data/reference-data/link-data-items/accessing-linked-items-in-the-code-node.md): How to use \\\`("\\").itemMatching(currentNodeinputIndex)\\\` - \[Preserving linking in the Code node\](https://docs.n8n.io/build/work-with-data/reference-data/link-data-items/preserving-linking-in-the-code-node.md) - \[Item linking errors\](https://docs.n8n.io/build/work-with-data/reference-data/link-data-items/item-linking-errors.md) - \[Item linking for node creators\](https://docs.n8n.io/build/work-with-data/reference-data/link-data-items/item-linking-for-node-creators.md) - \[Transform data\](https://docs.n8n.io/build/work-with-data/transform-data.md) - \[Approaches for transforming data\](https://docs.n8n.io/build/work-with-data/transform-data/approaches-for-transforming-data.md) - \[Expressions for data transformation\](https://docs.n8n.io/build/work-with-data/transform-data/expressions-for-data-transformation.md) - \[Expression reference\](https://docs.n8n.io/build/work-with-data/transform-data/expression-reference.md) - \[Array\](https://docs.n8n.io/build/work-with-data/transform-data/expression-reference/array.md) - \[Binaryfile\](https://docs.n8n.io/build/work-with-data/transform-data/expression-reference/binaryfile.md) - \[Boolean\](https://docs.n8n.io/build/work-with-data/transform-data/expression-reference/boolean.md) - \[Customdata\](https://docs.n8n.io/build/work-with-data/transform-data/expression-reference/customdata.md) - \[Date\](https://docs.n8n.io/build/work-with-data/transform-data/expression-reference/date.md) - \[Datetime\](https://docs.n8n.io/build/work-with-data/transform-data/expression-reference/datetime.md) - \[Execdata\](https://docs.n8n.io/build/work-with-data/transform-data/expression-reference/execdata.md) - \[Httpresponse\](https://docs.n8n.io/build/work-with-data/transform-data/expression-reference/httpresponse.md) - \[Item\](https://docs.n8n.io/build/work-with-data/transform-data/expression-reference/item.md) - \[Nodeinputdata\](https://docs.n8n.io/build/work-with-data/transform-data/expression-reference/nodeinputdata.md) - \[Nodeoutputdata\](https://docs.n8n.io/build/work-with-data/transform-data/expression-reference/nodeoutputdata.md) - \[Number\](https://docs.n8n.io/build/work-with-data/transform-data/expression-reference/number.md) - \[Object\](https://docs.n8n.io/build/work-with-data/transform-data/expression-reference/object.md) - \[Prevnodedata\](https://docs.n8n.io/build/work-with-data/transform-data/expression-reference/prevnodedata.md) - \[Root\](https://docs.n8n.io/build/work-with-data/transform-data/expression-reference/root.md) - \[String\](https://docs.n8n.io/build/work-with-data/transform-data/expression-reference/string.md) - \[Workflowdata\](https://docs.n8n.io/build/work-with-data/transform-data/expression-reference/workflowdata.md) - \[Filter out unwanted data\](https://docs.n8n.io/build/work-with-data/filter-out-unwanted-data.md) - \[Pin and mock data\](https://docs.n8n.io/build/work-with-data/pin-and-mock-data.md): Ways to mock and pin data in your n8n workflow during development. - \[Handle special data types\](https://docs.n8n.io/build/work-with-data/handle-special-data-types.md) - \[Work with files and images\](https://docs.n8n.io/build/work-with-data/handle-special-data-types/work-with-files-and-images.md): Understand and use binary data in n8n. - \[Work with dates and times\](https://docs.n8n.io/build/work-with-data/handle-special-data-types/work-with-dates-and-times.md): Use Luxon to work with date and time in n8n. - \[Query JSON data\](https://docs.n8n.io/build/work-with-data/handle-special-data-types/query-json-data.md): n8n supports the JMESPath library, to simplify working with JSON formatted data. - \[Data tables\](https://docs.n8n.io/build/work-with-data/data-tables.md): Structured tabular data management for workflows within project boundaries - \[Code in n8n\](https://docs.n8n.io/build/code-in-n8n.md): Access documentation and guides on using code and expressions in n8n and other developer resources. - \[Using the Code node\](https://docs.n8n.io/build/code-in-n8n/using-the-code-node.md) - \[Get coding help from AI\](https://docs.n8n.io/build/code-in-n8n/get-coding-help-from-ai.md): Use GPT to generate code in the Code node. - \[Use built-in shortcuts\](https://docs.n8n.io/build/code-in-n8n/use-built-in-shortcuts.md): n8n's built-in custom methods and variables. - \[JMESPath\](https://docs.n8n.io/build/code-in-n8n/use-built-in-shortcuts/jmespath.md): A method for working with the JMESPath library in n8n. - \[HTTP node\](https://docs.n8n.io/build/code-in-n8n/use-built-in-shortcuts/http-node.md): n8n provides these methods to make it easier to perform common tasks in expressions. - \[LangChain Code node\](https://docs.n8n.io/build/code-in-n8n/use-built-in-shortcuts/langchain-code-node.md): n8n provides these methods to make it easier to perform common tasks in the LangChain Code node. - \[n8n metadata\](https://docs.n8n.io/build/code-in-n8n/use-built-in-shortcuts/n8n-metadata.md): Methods for working with n8n metadata. - \[Define custom variables\](https://docs.n8n.io/build/code-in-n8n/define-custom-variables.md): Custom variables allow you to store and reuse values in n8n workflows. - \[Cookbook\](https://docs.n8n.io/build/code-in-n8n/cookbook.md) - \[Built-in methods and variables examples\](https://docs.n8n.io/build/code-in-n8n/cookbook/built-in-methods-and-variables-examples.md) - \[execution\](https://docs.n8n.io/build/code-in-n8n/cookbook/built-in-methods-and-variables-examples/execution.md) - \[getWorkflowStaticData\](https://docs.n8n.io/build/code-in-n8n/cookbook/built-in-methods-and-variables-examples/getworkflowstaticdata.md) - \[(node-name).all\](https://docs.n8n.io/build/code-in-n8n/cookbook/built-in-methods-and-variables-examples/node-name-.all.md) - \[vars\](https://docs.n8n.io/build/code-in-n8n/cookbook/built-in-methods-and-variables-examples/vars.md): Access your environment's custom variables. - \[Code node\](https://docs.n8n.io/build/code-in-n8n/cookbook/code-node.md): Code examples you can use in the Code node. - \[Get number of items returned by last node\](https://docs.n8n.io/build/code-in-n8n/cookbook/code-node/get-number-of-items-returned-by-last-node.md) - \[Get the binary data buffer\](https://docs.n8n.io/build/code-in-n8n/cookbook/code-node/get-the-binary-data-buffer.md) - \[Output to the browser console\](https://docs.n8n.io/build/code-in-n8n/cookbook/code-node/output-to-the-browser-console.md): How to use console.log() or print() - \[HTTP Request node\](https://docs.n8n.io/build/code-in-n8n/cookbook/http-request-node.md) - \[Pagination\](https://docs.n8n.io/build/code-in-n8n/cookbook/http-request-node/pagination.md): Pagination examples for the HTTP Request node. - \[Integrate AI\](https://docs.n8n.io/build/integrate-ai.md) - \[Understand AI components\](https://docs.n8n.io/build/integrate-ai/understand-ai-components.md) - \[What chains do\](https://docs.n8n.io/build/integrate-ai/understand-ai-components/what-chains-do.md): Understand chains in the context of AI. Learn about chains in n8n. - \[What agents do\](https://docs.n8n.io/build/integrate-ai/understand-ai-components/what-agents-do.md): Understand agents in the context of AI. Learn how n8n provides agents. - \[How memory works\](https://docs.n8n.io/build/integrate-ai/understand-ai-components/how-memory-works.md): Understand memory in the context of AI. Learn what's special about memory in n8n. - \[How tools work\](https://docs.n8n.io/build/integrate-ai/understand-ai-components/how-tools-work.md): Understand tools in the context of AI. Learn what's special about tools in n8n. - \[Store and search data with vectors\](https://docs.n8n.io/build/integrate-ai/understand-ai-components/store-and-search-data-with-vectors.md): Understand vector databases. Learn how n8n provides vector databases, along with the key components to work with them, including embeddings, retrievers, and document loaders. - \[Retrieve relevant context\](https://docs.n8n.io/build/integrate-ai/understand-ai-components/retrieve-relevant-context.md): With Retrieval-Augmented Generation (RAG), you can give your models access to context-specific resources to help generate relevant answers. Learn how it works and how to use RAG in n8n. - \[Agents vs chains\](https://docs.n8n.io/build/integrate-ai/understand-ai-components/agents-vs-chains.md): A workflow example that demonstrates key differences between agents and chains. - \[Test and improve AI workflows\](https://docs.n8n.io/build/integrate-ai/test-and-improve-ai-workflows.md) - \[Understand why to test\](https://docs.n8n.io/build/integrate-ai/test-and-improve-ai-workflows/understand-why-to-test.md): Use n8n evaluations to build reliable AI workflows. Build confidence in your LLM-powered workflows by comparing the output from known test cases. - \[Run quick evaluations\](https://docs.n8n.io/build/integrate-ai/test-and-improve-ai-workflows/run-quick-evaluations.md): Use light evaluations during development to build reliable LLM-based workflows by checking the results of executing against known test cases. - \[Use metrics to measure quality\](https://docs.n8n.io/build/integrate-ai/test-and-improve-ai-workflows/use-metrics-to-measure-quality.md): Use metric-based evaluations to measure, score, and improve production AI-based workflow performance over time. - \[Fix common issues\](https://docs.n8n.io/build/integrate-ai/test-and-improve-ai-workflows/fix-common-issues.md): Details of how to set up specific use cases and address common issues with workflow evaluations. - \[AI examples\](https://docs.n8n.io/build/integrate-ai/ai-examples.md): Example workflows and use cases for building AI functionality using n8n. - \[Use Google Sheets as a data source\](https://docs.n8n.io/build/integrate-ai/ai-examples/use-google-sheets-as-a-data-source.md): Use the n8n workflow tool to load data from Google Sheets into your AI workflow. - \[Call APIs\](https://docs.n8n.io/build/integrate-ai/ai-examples/call-apis.md): Use the n8n workflow tool to load data from an API using the HTTP Request node into your AI workflow. - \[Use website content\](https://docs.n8n.io/build/integrate-ai/ai-examples/use-website-content.md): Scrape a website, load the data into Pinecone, then query it using a chat workflow. - \[Human-in-the-loop for tools\](https://docs.n8n.io/build/integrate-ai/ai-examples/human-in-the-loop-for-tools.md): Learn how to require human approval before an AI Agent executes specific tools in n8n. - \[Set a human fallback for AI workflows\](https://docs.n8n.io/build/integrate-ai/ai-examples/set-a-human-fallback-for-ai-workflows.md): Have a workflow that triggers a human answer when the AI can't help. - \[Use AI for parameters\](https://docs.n8n.io/build/integrate-ai/ai-examples/use-ai-for-parameters.md): Understand how n8n's \\\`$fromAI()\\\` function works and how to use it to dynamically populate parameters for AI app tools, or use the built-in automation to complete them instead. - \[Keyboard shortcuts\](https://docs.n8n.io/build/keyboard-shortcuts.md): Keyboard shortcuts available in n8n. ## Nodes - \[Nodes\](https://docs.n8n.io/integrations/readme.md): Access n8n integrations documentation and guides. Find comprehensive resources to help you master app integrations using different types of nodes to improve your automation workflows. - \[Built-in nodes\](https://docs.n8n.io/integrations/builtin.md) - \[Node types\](https://docs.n8n.io/integrations/builtin/node-types.md) - \[Core nodes\](https://docs.n8n.io/integrations/builtin/core-nodes.md) - \[Activation Trigger\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.activationtrigger.md): Learn how to use the Activation Trigger node in n8n. Follow technical documentation to integrate Activation Trigger node into your workflows. - \[Aggregate\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.aggregate.md): Documentation for the Aggregate node in n8n, a workflow automation platform. Includes guidance on usage, and links to examples. - \[AI Transform\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.aitransform.md): Documentation for the AI Transform node in n8n, a workflow automation platform. Includes guidance on usage, and links to examples. - \[Code\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code.md): Documentation for the Code node in n8n, a workflow automation platform. Includes guidance on usage, and links to examples. - \[Keyboard shortcuts\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code/keyboard-shortcuts.md): A list of the keyboard shortcuts, for multiple platforms, which are supported by the Code node editor. - \[Common issues\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code/common-issues.md): Documentation for common issues and questions in the Code node in n8n, a workflow automation platform. Includes details of the issue and suggested solutions. - \[Compare Datasets\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.comparedatasets.md): Documentation for the Compare Datasets node in n8n, a workflow automation platform. Includes guidance on usage, and links to examples. - \[Compression\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.compression.md): Documentation for the Compression node in n8n, a workflow automation platform. Includes guidance on usage, and links to examples. - \[Chat Trigger\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-langchain.chattrigger.md): Learn how to use the Chat Trigger node in n8n. Follow technical documentation to integrate Chat Trigger node into your workflows. - \[Common issues\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-langchain.chattrigger/common-issues.md): Documentation for common issues and questions in the Chat Trigger node in n8n, a workflow automation platform. Includes details of the issue and suggested solutions. - \[Convert to File\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.converttofile.md): Documentation for the Convert to File node in n8n, a workflow automation platform. Includes guidance on usage, and links to examples. - \[Crypto\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.crypto.md): Documentation for the Crypto node in n8n, a workflow automation platform. Includes guidance on usage, and links to examples. - \[Data Table\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datatable.md): Documentation for the data table node in n8n, a workflow automation platform. Includes guidance on usage, and links to examples. - \[Row operations\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datatable/rows.md): Reference documentation for Data Table node row operations, including delete, get, insert, update, and upsert. - \[Table operations\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datatable/tables.md): Reference documentation for Data Table node table operations, including create, delete, list, and update. - \[Date & Time\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datetime.md): Documentation for the Date & Time node in n8n, a workflow automation platform. Includes guidance on usage, and links to examples. - \[Debug Helper\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.debughelper.md): Documentation for the Debug Helper node in n8n, a workflow automation platform. Includes guidance on usage, and links to examples. - \[Edit Fields (Set)\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.set.md): Documentation for the Edit Fields node in n8n, a workflow automation platform. Includes guidance on usage, and links to examples. - \[Edit Image\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.editimage.md): Documentation for the Edit Image node in n8n, a workflow automation platform. Includes guidance on usage, and links to examples. - \[Email Trigger (IMAP)\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.emailimap.md): Learn how to use the Email Trigger (IMAP) Trigger node in n8n. Follow technical documentation to integrate Email Trigger (IMAP) Trigger node into your workflows. - \[Error Trigger\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.errortrigger.md): Learn how to use the Error Trigger node in n8n. Follow technical documentation to integrate Error Trigger node into your workflows. - \[Evaluation\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.evaluation.md): Documentation for the Evaluation node in n8n, a workflow automation platform. Includes guidance on usage and links to examples. - \[Evaluation Trigger\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.evaluationtrigger.md): Learn how to use the Evaluation Trigger node in n8n. Follow technical documentation to integrate Evaluation Trigger node into your workflows. - \[Execute Command\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executecommand.md): Documentation for the Execute Command node in n8n, a workflow automation platform. Includes guidance on usage, and links to examples. - \[Common issues\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executecommand/common-issues.md): Documentation for common issues and questions in the Execute Command node in n8n, a workflow automation platform. Includes details of the issue and suggested solutions. - \[Execute Sub-workflow\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executeworkflow.md): Documentation for the Execute Sub-workflow node in n8n, a workflow automation platform. Includes guidance on usage, and links to examples. - \[Execute Sub-workflow Trigger\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executeworkflowtrigger.md): Learn how to use the Execute Sub-workflow Trigger node in n8n. Follow technical documentation to integrate Execute Sub-workflow Trigger node into your workflows. - \[Execution Data\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executiondata.md): Documentation for the Execution Data node in n8n, a workflow automation platform. Includes guidance on usage, and links to examples. - \[Extract From File\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.extractfromfile.md): Documentation for the Extract From File node in n8n, a workflow automation platform. Includes guidance on usage, and links to examples. - \[Filter\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.filter.md): Documentation for the Filter node in n8n, a workflow automation platform. Includes guidance on usage, and links to examples. - \[FTP\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.ftp.md): Documentation for the FTP node in n8n, a workflow automation platform. Includes guidance on usage, and links to examples. - \[Git\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.git.md): Documentation for the Git node in n8n, a workflow automation platform. Includes guidance on usage, and links to examples. - \[GraphQL\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.graphql.md): Documentation for the GraphQL node in n8n, a workflow automation platform. Includes guidance on usage, and links to examples. - \[Guardrails\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-langchain.guardrails.md): Documentation for the Guardrails node in n8n, a workflow automation platform. Includes guidance on usage, and links to examples. - \[HTML\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.html.md): Documentation for the HTML node in n8n, a workflow automation platform. Includes guidance on usage, and links to examples. - \[HTTP Request\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest.md): Learn how to use the HTTP Request node in n8n. Follow technical documentation to integrate HTTP Request node into your workflows. - \[Common Issues\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/common-issues.md): Documentation for common issues and questions in the HTTP Request node in n8n, a workflow automation platform. Includes details of the issue and suggested solutions. - \[If\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.if.md): Documentation for the If node in n8n, a workflow automation platform. Includes guidance on usage, and links to examples. - \[JWT\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.jwt.md): Documentation for the JWT node in n8n, a workflow automation platform. Includes guidance on usage, and links to examples. - \[LDAP\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.ldap.md): Documentation for the LDAP node in n8n, a workflow automation platform. Includes guidance on usage, and links to examples. - \[Limit\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.limit.md): Documentation for the Limit node in n8n, a workflow automation platform. Includes guidance on usage, and links to examples. - \[Local File Trigger\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.localfiletrigger.md): Learn how to use the Local File Trigger node in n8n. Follow technical documentation to integrate Local File Trigger node into your workflows. - \[Loop Over Items (Split in Batches)\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.splitinbatches.md): Documentation for the Loop Over Items node in n8n, a workflow automation platform. Includes guidance on usage, and links to examples. - \[Manual Trigger\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.manualworkflowtrigger.md): Learn how to use the Manual Trigger node in n8n. Follow technical documentation to integrate Manual Trigger node into your workflows. - \[Markdown\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.markdown.md): Documentation for the Markdown node in n8n, a workflow automation platform. Includes guidance on usage, and links to examples. - \[MCP Client\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-langchain.mcpclient.md): Learn how to use the MCP Client node in n8n. Follow technical documentation to integrate MCP Client node into your workflows. - \[MCP Server Trigger\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-langchain.mcptrigger.md): Learn how to use the MCP Server Trigger node in n8n. Follow technical documentation to integrate the MCP Server Trigger node into your workflows. - \[Merge\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.merge.md): Documentation for the Merge node in n8n, a workflow automation platform. Includes guidance on usage, and links to examples. - \[n8n\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.n8n.md): Documentation for the n8n node in n8n, a workflow automation platform. Includes guidance on usage, and links to examples. - \[n8n Form\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.form.md): Documentation for the n8n Form node in n8n, a workflow automation platform. Includes guidance on usage and links to examples. - \[n8n Form\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.formtrigger.md): Learn how to use the n8n Form Trigger node in n8n. Follow technical documentation to integrate n8n Form Trigger node into your workflows. - \[n8n Trigger\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.n8ntrigger.md): Learn how to use the n8n Trigger node in n8n. Follow technical documentation to integrate n8n Trigger node into your workflows. - \[No Operation, do nothing\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.noop.md): Documentation for the No Operation, do nothing node in n8n, a workflow automation platform. Includes guidance on usage, and links to examples. - \[Read/Write Files from Disk\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.readwritefile.md): Documentation for the Read/Write Files from Disk node in n8n, a workflow automation platform. Includes guidance on usage, and links to examples. - \[Remove Duplicates\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.removeduplicates.md): Documentation for the Remove Duplicates node in n8n, a workflow automation platform. Includes guidance on usage and links to examples. - \[Templates and examples\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.removeduplicates/templates-and-examples.md): Documentation for templates and examples in the Remove Duplicates node in n8n, a workflow automation platform. Includes templates using the node and examples of how to use it. - \[Rename Keys\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.renamekeys.md): Documentation for the Rename Keys node in n8n, a workflow automation platform. Includes guidance on usage, and links to examples. - \[Chat\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-langchain.chat.md): Learn how to use the Chat node in n8n. Follow technical documentation to integrate the Chat node into your workflows. - \[Respond to Webhook\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.respondtowebhook.md): Documentation for the Respond to Webhook node in n8n, a workflow automation platform. Includes guidance on usage, and links to examples. - \[RSS Read\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.rssfeedread.md): Documentation for the RSS Read node in n8n, a workflow automation platform. Includes guidance on usage, and links to examples. - \[RSS Feed Trigger\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.rssfeedreadtrigger.md): Learn how to use the RSS Feed Trigger node in n8n. Follow technical documentation to integrate RSS Feed Trigger node into your workflows. - \[Schedule Trigger\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.scheduletrigger.md): Learn how to use the Schedule Trigger node in n8n. Follow technical documentation to integrate Schedule Trigger node into your workflows. - \[Common issues\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.scheduletrigger/common-issues.md): Documentation for common issues and questions in the Schedule Trigger node in n8n, a workflow automation platform. Includes details of the issue and suggested solutions. - \[Send Email\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.sendemail.md): Documentation for the Send Email node in n8n, a workflow automation platform. Includes guidance on usage, and links to examples. - \[Sort\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.sort.md): Documentation for the Sort node in n8n, a workflow automation platform. Includes guidance on usage, and links to examples. - \[Split Out\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.splitout.md): Documentation for the Split Out node in n8n, a workflow automation platform. Includes guidance on usage, and links to examples. - \[SSE Trigger\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.ssetrigger.md): Learn how to use the SSE Trigger node in n8n. Follow technical documentation to integrate SSE Trigger node into your workflows. - \[SSH\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.ssh.md): Documentation for the SSH node in n8n, a workflow automation platform. Includes guidance on usage, and links to examples. - \[Stop And Error\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.stopanderror.md): Documentation for the Stop And Error node in n8n, a workflow automation platform. Includes guidance on usage, and links to examples. - \[Summarize\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.summarize.md): Documentation for the Summarize node in n8n, a workflow automation platform. Includes guidance on usage, and links to examples. - \[Switch\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.switch.md): Documentation for the Switch node in n8n, a workflow automation platform. Includes guidance on usage, and links to examples. - \[TOTP\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.totp.md): Documentation for the TOTP node in n8n, a workflow automation platform. Includes guidance on usage, and links to examples. - \[Wait\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.wait.md): Documentation for the Wait node in n8n, a workflow automation platform. Includes guidance on usage, and links to examples. - \[Webhook\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook.md): Learn how to use the Webhook node in n8n. Follow technical documentation to integrate Webhook node into your workflows. - \[Workflow development\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook/workflow-development.md): Learn how to build, test, and use the Webhook node in your workflows in n8n. - \[Common issues\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook/common-issues.md): Documentation for common issues and questions in the Webhook node in n8n, a workflow automation platform. Includes details of the issues and suggested solutions. - \[Workflow Trigger\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.workflowtrigger.md): Learn how to use the Workflow Trigger node in n8n. Follow technical documentation to integrate Workflow Trigger node into your workflows. - \[XML\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.xml.md): Documentation for the XML node in n8n, a workflow automation platform. Includes guidance on usage, and links to examples. - \[App nodes\](https://docs.n8n.io/integrations/builtin/app-nodes.md) - \[Action Network\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.actionnetwork.md): Learn how to use the Action Network node in n8n. Follow technical documentation to integrate Action Network node into your workflows. - \[ActiveCampaign\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.activecampaign.md): Learn how to use the ActiveCampaign node in n8n. Follow technical documentation to integrate ActiveCampaign node into your workflows. - \[Adalo\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.adalo.md): Learn how to use the Adalo node in n8n. Follow technical documentation to integrate Adalo node into your workflows. - \[Affinity\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.affinity.md): Learn how to use the Affinity node in n8n. Follow technical documentation to integrate Affinity node into your workflows. - \[Agile CRM\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.agilecrm.md): Learn how to use the Agile CRM node in n8n. Follow technical documentation to integrate Agile CRM node into your workflows. - \[Airtable\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.airtable.md): Learn how to use the Airtable node in n8n. Follow technical documentation to integrate Airtable node into your workflows. - \[Common issues\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.airtable/common-issues.md): Documentation for common issues and questions in the Airtable node in n8n, a workflow automation platform. Includes details of the issue and suggested solutions. - \[Airtop\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.airtop.md): Learn how to use the Airtop node in n8n. Follow technical documentation to integrate Airtop node into your workflows. - \[Qwen Cloud\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-langchain.alibabacloud.md): Interact with models available on Qwen Cloud. This page explains how to use the node in n8n workflows to generate text completions, analyze or generate images, and create videos from text - \[AMQP Sender\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.amqp.md): Learn how to use the AMQP Sender node in n8n. Follow technical documentation to integrate AMQP Sender node into your workflows. - \[Anthropic\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-langchain.anthropic.md): Learn how to use the Anthropic node in n8n. Follow technical documentation to integrate Anthropic node into your workflows. - \[APITemplate.io\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.apitemplateio.md): Learn how to use the APITemplate.io node in n8n. Follow technical documentation to integrate APITemplate.io node into your workflows. - \[Asana\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.asana.md): Learn how to use the Asana node in n8n. Follow technical documentation to integrate Asana node into your workflows. - \[Autopilot\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.autopilot.md): Learn how to use the Autopilot node in n8n. Follow technical documentation to integrate Autopilot node into your workflows. - \[AWS Certificate Manager\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.awscertificatemanager.md): Learn how to use the AWS Certificate Manager node in n8n. Follow technical documentation to integrate AAWS Certificage Manager node into your workflows. - \[AWS Cognito\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.awscognito.md): Learn how to use the AWS Cognito node in n8n. Follow technical documentation to integrate AWS Cognito node into your workflows. - \[AWS Comprehend\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.awscomprehend.md): Learn how to use the AWS Comprehend node in n8n. Follow technical documentation to integrate AWS Comprehend node into your workflows. - \[AWS DynamoDB\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.awsdynamodb.md): Learn how to use the AWS DynamoDB node in n8n. Follow technical documentation to integrate AWS DynamoDB node into your workflows. - \[AWS Elastic Load Balancing\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.awselb.md): Learn how to use the AWS Elastic Load Balancing node in n8n. Follow technical documentation to integrate AWS Elastic Load Balancing node into your workflows. - \[AWS IAM\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.awsiam.md): Learn how to use the AWS IAM node in n8n. Follow technical documentation to integrate AWS IAM node into your workflows. - \[AWS Lambda\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.awslambda.md): Learn how to use the AWS Lambda node in n8n. Follow technical documentation to integrate AWS Lambda node into your workflows. - \[AWS Rekognition\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.awsrekognition.md): Learn how to use the AWS Rekognition node in n8n. Follow technical documentation to integrate AWS Rekognition node into your workflows. - \[AWS S3\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.awss3.md): Learn how to use the AWS S3 node in n8n. Follow technical documentation to integrate AWS S3 node into your workflows. - \[AWS SES\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.awsses.md): Learn how to use the AWS SES node in n8n. Follow technical documentation to integrate AWS SES node into your workflows. - \[AWS SNS\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.awssns.md): Learn how to use the AWS SNS node in n8n. Follow technical documentation to integrate AWS SNS node into your workflows. - \[AWS SQS\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.awssqs.md): Learn how to use the AWS SQS node in n8n. Follow technical documentation to integrate AWS SQS node into your workflows. - \[AWS Textract\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.awstextract.md): Learn how to use the AWS Textract node in n8n. Follow technical documentation to integrate AWS Textract node into your workflows. - \[AWS Transcribe\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.awstranscribe.md): Learn how to use the AWS Transcribe node in n8n. Follow technical documentation to integrate AWS Transcribe node into your workflows. - \[Azure Cosmos DB\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.azurecosmosdb.md): Learn how to use the Azure Cosmos DB node in n8n. Follow technical documentation to integrate Azure Cosmos DB node into your workflows. - \[Azure Storage\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.azurestorage.md): Learn how to use the Azure Storage node in n8n. Follow technical documentation to integrate Azure Storage node into your workflows. - \[BambooHR\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.bamboohr.md): Learn how to use the BambooHR node in n8n. Follow technical documentation to integrate BambooHR node into your workflows. - \[Bannerbear\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.bannerbear.md): Learn how to use the Bannerbear node in n8n. Follow technical documentation to integrate Bannerbear node into your workflows. - \[Baserow\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.baserow.md): Learn how to use the Baserow node in n8n. Follow technical documentation to integrate Baserow node into your workflows. - \[Beeminder\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.beeminder.md): Learn how to use the Beeminder node in n8n. Follow technical documentation to integrate Beeminder node into your workflows. - \[Bitly\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.bitly.md): Learn how to use the Bitly node in n8n. Follow technical documentation to integrate Bitly node into your workflows. - \[Bitwarden\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.bitwarden.md): Learn how to use the Bitwarden node in n8n. Follow technical documentation to integrate Bitwarden node into your workflows. - \[Box\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.box.md): Learn how to use the Box node in n8n. Follow technical documentation to integrate Box node into your workflows. - \[Brandfetch\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.brandfetch.md): Learn how to use the Brandfetch node in n8n. Follow technical documentation to integrate Brandfetch node into your workflows. - \[Brevo\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.brevo.md): Learn how to use the Brevo node in n8n. Follow technical documentation to integrate Brevo node into your workflows. - \[Bubble\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.bubble.md): Learn how to use the Bubble node in n8n. Follow technical documentation to integrate Bubble node into your workflows. - \[Chargebee\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.chargebee.md): Learn how to use the Chargebee node in n8n. Follow technical documentation to integrate Chargebee node into your workflows. - \[CircleCI\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.circleci.md): Learn how to use the CircleCI node in n8n. Follow technical documentation to integrate CircleCI node into your workflows. - \[Webex by Cisco\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.ciscowebex.md): Learn how to use the Webex by Cisco node in n8n. Follow technical documentation to integrate Webex by Cisco node into your workflows. - \[Clearbit\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.clearbit.md): Learn how to use the Clearbit node in n8n. Follow technical documentation to integrate Clearbit node into your workflows. - \[ClickUp\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.clickup.md): Learn how to use the ClickUp node in n8n. Follow technical documentation to integrate ClickUp node into your workflows. - \[Clockify\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.clockify.md): Learn how to use the Clockify node in n8n. Follow technical documentation to integrate Clockify node into your workflows. - \[Cloudflare\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.cloudflare.md): Learn how to use the Cloudflare node in n8n. Follow technical documentation to integrate Cloudflare node into your workflows. - \[Cockpit\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.cockpit.md): Learn how to use the Cockpit node in n8n. Follow technical documentation to integrate Cockpit node into your workflows. - \[Coda\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.coda.md): Learn how to use the Coda node in n8n. Follow technical documentation to integrate Coda node into your workflows. - \[CoinGecko\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.coingecko.md): Learn how to use the CoinGecko node in n8n. Follow technical documentation to integrate CoinGecko node into your workflows. - \[Contentful\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.contentful.md): Learn how to use the Contentful node in n8n. Follow technical documentation to integrate Contentful node into your workflows. - \[ConvertKit\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.convertkit.md): Learn how to use the ConvertKit node in n8n. Follow technical documentation to integrate ConvertKit node into your workflows. - \[Copper\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.copper.md): Learn how to use the Copper node in n8n. Follow technical documentation to integrate Copper node into your workflows. - \[Cortex\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.cortex.md): Learn how to use the Cortex node in n8n. Follow technical documentation to integrate Cortex node into your workflows. - \[CrateDB\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.cratedb.md): Learn how to use the CrateDB node in n8n. Follow technical documentation to integrate CrateDB node into your workflows. - \[crowd.dev\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.crowddev.md): Learn how to use the crowd.dev node in n8n. Follow technical documentation to integrate crowd.dev node into your workflows. - \[Customer.io\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.customerio.md): Learn how to use the Customer.io node in n8n. Follow technical documentation to integrate Customer.io node into your workflows. - \[Databricks\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.databricks.md): Learn how to use the Databricks node in n8n. Follow technical documentation to integrate Databricks node into your workflows. - \[DeepL\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.deepl.md): Learn how to use the DeepL node in n8n. Follow technical documentation to integrate DeepL node into your workflows. - \[Demio\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.demio.md): Learn how to use the Demio node in n8n. Follow technical documentation to integrate Demio node into your workflows. - \[DHL\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.dhl.md): Learn how to use the DHL node in n8n. Follow technical documentation to integrate DHL node into your workflows. - \[Discord\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.discord.md): Learn how to use the Discord node in n8n. Follow technical documentation to integrate Discord node into your workflows. - \[Common issues\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.discord/common-issues.md): Documentation for common issues and questions in the Discord node in n8n, a workflow automation platform. Includes details of the issue and suggested solutions. - \[Discourse\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.discourse.md): Learn how to use the Discourse node in n8n. Follow technical documentation to integrate Discourse node into your workflows. - \[Disqus\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.disqus.md): Learn how to use the Disqus node in n8n. Follow technical documentation to integrate Disqus node into your workflows. - \[Drift\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.drift.md): Learn how to use the Drift node in n8n. Follow technical documentation to integrate Drift node into your workflows. - \[Dropbox\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.dropbox.md): Learn how to use the Dropbox node in n8n. Follow technical documentation to integrate Dropbox node into your workflows. - \[Dropcontact\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.dropcontact.md): Learn how to use the Dropcontact node in n8n. Follow technical documentation to integrate Dropcontact node into your workflows. - \[E-goi\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.egoi.md): Learn how to use the E=goi node in n8n. Follow technical documentation to integrate E=goi node into your workflows. - \[Elasticsearch\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.elasticsearch.md): Learn how to use the Elasticsearch node in n8n. Follow technical documentation to integrate Elasticsearch node into your workflows. - \[Elastic Security\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.elasticsecurity.md): Learn how to use the Elastic Security node in n8n. Follow technical documentation to integrate Elastic Security node into your workflows. - \[Emelia\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.emelia.md): Learn how to use the Emelia node in n8n. Follow technical documentation to integrate Emelia node into your workflows. - \[ERPNext\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.erpnext.md): Learn how to use the ERPNext node in n8n. Follow technical documentation to integrate ERPNext node into your workflows. - \[Facebook Graph API\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.facebookgraphapi.md): Learn how to use the Facebook Graph API node in n8n. Follow technical documentation to integrate Facebook Graph API node into your workflows. - \[FileMaker\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.filemaker.md): Learn how to use the FileMaker node in n8n. Follow technical documentation to integrate FileMaker node into your workflows. - \[Flow\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.flow.md): Learn how to use the Flow node in n8n. Follow technical documentation to integrate Flow node into your workflows. - \[Freshdesk\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.freshdesk.md): Learn how to use the Freshdesk node in n8n. Follow technical documentation to integrate Freshdesk node into your workflows. - \[Freshservice\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.freshservice.md): Learn how to use the Freshservice node in n8n. Follow technical documentation to integrate Freshservice node into your workflows. - \[Freshworks CRM\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.freshworkscrm.md): Learn how to use the Freshworks CRM node in n8n. Follow technical documentation to integrate Freshworks CRM node into your workflows. - \[GetResponse\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.getresponse.md): Learn how to use the GetResponse node in n8n. Follow technical documentation to integrate GetResponse node into your workflows. - \[Ghost\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.ghost.md): Learn how to use the Ghost node in n8n. Follow technical documentation to integrate Ghost node into your workflows. - \[GitHub\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.github.md): Learn how to use the GitHub node in n8n. Follow technical documentation to integrate GitHub node into your workflows. - \[GitLab\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.gitlab.md): Learn how to use the GitLab node in n8n. Follow technical documentation to integrate GitLab node into your workflows. - \[Gmail\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.gmail.md): Learn how to use the Gmail node in n8n. Follow technical documentation to integrate Gmail node into your workflows. - \[Draft Operations\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.gmail/draft-operations.md): Learn how to use the Draft Operations of the Gmail node in n8n. Follow technical documentation to integrate Draft Operations into your workflows. - \[Label Operations\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.gmail/label-operations.md): Learn how to use the Label Operations of the Gmail node in n8n. Follow technical documentation to integrate Label Operations into your workflows. - \[Message Operations\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.gmail/message-operations.md): Learn how to use the Message Operations of the Gmail node in n8n. Follow technical documentation to integrate Message Operations into your workflows. - \[Thread Operations\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.gmail/thread-operations.md): Learn how to use the Thread Operations of the Gmail node in n8n. Follow technical documentation to integrate Thread Operations into your workflows. - \[Common issues\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.gmail/common-issues.md): Documentation for common issues and questions in the Gmail node in n8n, a workflow automation platform. Includes details of the issue and suggested solutions. - \[Gong\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.gong.md): Learn how to use the Gong node in n8n. Follow technical documentation to integrate Gong node into your workflows. - \[Google Ads\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googleads.md): Learn how to use the Google Ads node in n8n. Follow technical documentation to integrate Google Ads node into your workflows. - \[Google Analytics\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googleanalytics.md): Learn how to use the Google Analytics node in n8n. Follow technical documentation to integrate Google Analytics node into your workflows. - \[Google BigQuery\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googlebigquery.md): Learn how to use the Google BigQuery node in n8n. Follow technical documentation to integrate Google BigQuery node into your workflows. - \[Google Books\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googlebooks.md): Learn how to use the Google Books node in n8n. Follow technical documentation to integrate Google Books node into your workflows. - \[Google Business Profile\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googlebusinessprofile.md): Learn how to use the Google Business Profile node in n8n. Follow technical documentation to integrate Google Business Profile node into your workflows. - \[Google Calendar\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googlecalendar.md): Learn how to use the Google Calendar node in n8n. Follow technical documentation to integrate Google Calendar node into your workflows. - \[Calendar operations\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googlecalendar/calendar-operations.md): Documentation for the Calendar operations in Google Calendar node in n8n, a workflow automation platform. Includes details of operations and configuration, and links to examples and credentials inform - \[Event operations\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googlecalendar/event-operations.md): Documentation for the Event operations in Google Calendar node in n8n, a workflow automation platform. Includes details of operations and configuration, and links to examples and credentials informati - \[Google Chat\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googlechat.md): Learn how to use the Google Chat node in n8n. Follow technical documentation to integrate Google Chat node into your workflows. - \[Google Cloud Firestore\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googlecloudfirestore.md): Learn how to use the Google Cloud Firestore node in n8n. Follow technical documentation to integrate Google Cloud Firestore node into your workflows. - \[Google Cloud Natural Language\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googlecloudnaturallanguage.md): Learn how to use the Google Cloud Natural Language node in n8n. Follow technical documentation to integrate Google Cloud Natural Language node into your workflows. - \[Google Cloud Realtime Database\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googlecloudrealtimedatabase.md): Learn how to use the Google Cloud Realtime Database node in n8n. Follow technical documentation to integrate Google Cloud Realtime Database node into your workflows. - \[Google Cloud Storage\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googlecloudstorage.md): Learn how to use the Google Cloud Storage node in n8n. Follow technical documentation to integrate Google Cloud Storage node into your workflows. - \[Google Contacts\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googlecontacts.md): Learn how to use the Google Contacts node in n8n. Follow technical documentation to integrate Google Contacts node into your workflows. - \[Google Docs\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googledocs.md): Learn how to use the Google Docs node in n8n. Follow technical documentation to integrate Google Docs node into your workflows. - \[Google Drive\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googledrive.md): Learn how to use the Google Drive node in n8n. Follow technical documentation to integrate Google Drive node into your workflows. - \[File operations\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googledrive/file-operations.md): Documentation for the File operations in Google Drive node in n8n, a workflow automation platform. Includes details of operations and configuration, and links to examples and credentials information. - \[File and Folder operations\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googledrive/file-folder-operations.md): Documentation for the File and Folder operations in Google Drive node in n8n, a workflow automation platform. Includes details of operations and configuration, and links to examples and credentials in - \[Folder operations\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googledrive/folder-operations.md): Documentation for the Folder operations in Google Drive node in n8n, a workflow automation platform. Includes details of operations and configuration, and links to examples and credentials information - \[Shared Drive operations\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googledrive/shared-drive-operations.md): Documentation for the Shared Drive operations in Google Drive node in n8n, a workflow automation platform. Includes details of operations and configuration, and links to examples and credentials infor - \[Common issues\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googledrive/common-issues.md): Documentation for common questions and solutions in the Google Drive node in n8n, a workflow automation platform. Includes details of the issue and suggested resolutions. - \[Google Gemini\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-langchain.googlegemini.md): Learn how to use the Google Gemini node in n8n. Follow technical documentation to integrate Google Gemini node into your workflows. - \[Google Perspective\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googleperspective.md): Learn how to use the Google Perspective node in n8n. Follow technical documentation to integrate Google Perspective node into your workflows. - \[Google Sheets\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googlesheets.md): Documentation for the Google Sheets node in n8n, a workflow automation platform. Includes details of operations and configuration, and links to examples and credentials information. - \[Document operations\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googlesheets/document-operations.md): Documentation for the Document operations in Google Sheets node in n8n, a workflow automation platform. Includes details of operations and configuration, and links to examples and credentials informat - \[Sheet Within Document operations\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googlesheets/sheet-operations.md): Documentation for the Sheet operations in Google Sheets node in n8n, a workflow automation platform. Includes details of operations and configuration, and links to examples and credentials information - \[Common issues\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googlesheets/common-issues.md): Documentation for common questions and solutions in the Google Sheets node in n8n, a workflow automation platform. Includes details of the issue and suggested resolutions. - \[Google Slides\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googleslides.md): Learn how to use the Google Slides node in n8n. Follow technical documentation to integrate Google Slides node into your workflows. - \[Google Tasks\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googletasks.md): Learn how to use the Google Tasks node in n8n. Follow technical documentation to integrate Google Tasks node into your workflows. - \[Google Translate\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googletranslate.md): Learn how to use the Google Translate node in n8n. Follow technical documentation to integrate Google Translate node into your workflows. - \[Google Workspace Admin\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.gsuiteadmin.md): Learn how to use the Google Workspace Admin node in n8n. Follow technical documentation to integrate Google Workspace Admin node into your workflows. - \[Gotify\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.gotify.md): Learn how to use the Gotify node in n8n. Follow technical documentation to integrate Gotify node into your workflows. - \[GoToWebinar\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.gotowebinar.md): Learn how to use the GoToWebinar node in n8n. Follow technical documentation to integrate GoToWebinar node into your workflows. - \[Grafana\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.grafana.md): Learn how to use the Grafana node in n8n. Follow technical documentation to integrate Grafana node into your workflows. - \[Grist\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.grist.md): Learn how to use the Grist node in n8n. Follow technical documentation to integrate Grist node into your workflows. - \[Hacker News\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.hackernews.md): Learn how to use the Hacker News node in n8n. Follow technical documentation to integrate Hacker News node into your workflows. - \[HaloPSA\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.halopsa.md): Learn how to use the HaloPSA node in n8n. Follow technical documentation to integrate HaloPSA node into your workflows. - \[Harvest\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.harvest.md): Learn how to use the Harvest node in n8n. Follow technical documentation to integrate Harvest node into your workflows. - \[Help Scout\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.helpscout.md): Learn how to use the Help Scout node in n8n. Follow technical documentation to integrate Help Scout node into your workflows. - \[HighLevel\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.highlevel.md): Learn how to use the HighLevel node in n8n. Follow technical documentation to integrate HighLevel node into your workflows. - \[Home Assistant\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.homeassistant.md): Learn how to use the Home Assistant node in n8n. Follow technical documentation to integrate Home Assistant node into your workflows. - \[HubSpot\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.hubspot.md): Learn how to use the HubSpot node in n8n. Follow technical documentation to integrate HubSpot node into your workflows. - \[Humantic AI\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.humanticai.md): Learn how to use the Humantic AI node in n8n. Follow technical documentation to integrate Humantic AI node into your workflows. - \[Hunter\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.hunter.md): Learn how to use the Hunter node in n8n. Follow technical documentation to integrate Hunter node into your workflows. - \[Intercom\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.intercom.md): Learn how to use the Intercom node in n8n. Follow technical documentation to integrate Intercom node into your workflows. - \[Invoice Ninja\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.invoiceninja.md): Learn how to use the Invoice Ninja node in n8n. Follow technical documentation to integrate Invoice Ninja node into your workflows. - \[Iterable\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.iterable.md): Learn how to use the Iterable node in n8n. Follow technical documentation to integrate Iterable node into your workflows. - \[Jenkins\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.jenkins.md): Learn how to use the Jenkins node in n8n. Follow technical documentation to integrate Jenkins node into your workflows. - \[Jina AI\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.jinaai.md): Learn how to use the Jina AI node in n8n. Follow technical documentation to integrate Jina AI node into your workflows. - \[Jira Software\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.jira.md): Learn how to use the Jira Software node in n8n. Follow technical documentation to integrate Jira Software node into your workflows. - \[Kafka\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.kafka.md): Learn how to use the Kafka node in n8n. Follow technical documentation to integrate Kafka node into your workflows. - \[Keap\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.keap.md): Learn how to use the Keap node in n8n. Follow technical documentation to integrate Keap node into your workflows. - \[Kitemaker\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.kitemaker.md): Learn how to use the Kitemaker node in n8n. Follow technical documentation to integrate Kitemaker node into your workflows. - \[KoboToolbox\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.kobotoolbox.md): Learn how to use the KoboToolbox node in n8n. Follow technical documentation to integrate KoboToolbox node into your workflows. - \[Lemlist\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.lemlist.md): Learn how to use the Lemlist node in n8n. Follow technical documentation to integrate Lemlist node into your workflows. - \[Line\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.line.md): Learn how to use the Line node in n8n. Follow technical documentation to integrate Line node into your workflows. - \[Linear\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.linear.md): Learn how to use the Linear node in n8n. Follow technical documentation to integrate Linear node into your workflows. - \[LingvaNex\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.lingvanex.md): Learn how to use the LingvaNex node in n8n. Follow technical documentation to integrate LingvaNex node into your workflows. - \[LinkedIn\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.linkedin.md): Learn how to use the LinkedIn node in n8n. Follow technical documentation to integrate LinkedIn node into your workflows. - \[LoneScale\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.lonescale.md): Learn how to use the LoneScale node in n8n. Follow technical documentation to integrate LoneScale node into your workflows. - \[Magento 2\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.magento2.md): Learn how to use the Magento 2 node in n8n. Follow technical documentation to integrate Magento 2 node into your workflows. - \[Mailcheck\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.mailcheck.md): Learn how to use the Mailcheck node in n8n. Follow technical documentation to integrate Mailcheck node into your workflows. - \[Mailchimp\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.mailchimp.md): Learn how to use the Mailchimp node in n8n. Follow technical documentation to integrate Mailchimp node into your workflows. - \[MailerLite\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.mailerlite.md): Learn how to use the MailerLite node in n8n. Follow technical documentation to integrate MailerLite node into your workflows. - \[Mailgun\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.mailgun.md): Learn how to use the Mailgun node in n8n. Follow technical documentation to integrate Mailgun node into your workflows. - \[Mailjet\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.mailjet.md): Learn how to use the Mailjet node in n8n. Follow technical documentation to integrate Mailjet node into your workflows. - \[Mandrill\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.mandrill.md): Learn how to use the Mandrill node in n8n. Follow technical documentation to integrate Mandrill node into your workflows. - \[marketstack\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.marketstack.md): Learn how to use the marketstack node in n8n. Follow technical documentation to integrate marketstack node into your workflows. - \[Matrix\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.matrix.md): Learn how to use the Matrix node in n8n. Follow technical documentation to integrate Matrix node into your workflows. - \[Mattermost\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.mattermost.md): Learn how to use the Mattermost node in n8n. Follow technical documentation to integrate Mattermost node into your workflows. - \[Mautic\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.mautic.md): Learn how to use the Mautic node in n8n. Follow technical documentation to integrate Mautic node into your workflows. - \[Medium\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.medium.md): Learn how to use the Medium node in n8n. Follow technical documentation to integrate Medium node into your workflows. - \[MessageBird\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.messagebird.md): Learn how to use the MessageBird node in n8n. Follow technical documentation to integrate MessageBird node into your workflows. - \[Metabase\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.metabase.md): Learn how to use the Metabase node in n8n. Follow technical documentation to integrate Metabase node into your workflows. - \[Microsoft Dynamics CRM\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.microsoftdynamicscrm.md): Learn how to use the Microsoft Dynamics CRM node in n8n. Follow technical documentation to integrate Microsoft Dynamics CRM node into your workflows. - \[Microsoft Entra ID\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.microsoftentra.md): Learn how to use the Microsoft Entra ID node in n8n. Follow technical documentation to integrate Microsoft Entra ID node into your workflows. - \[Microsoft Excel 365\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.microsoftexcel.md): Learn how to use the Microsoft Excel node in n8n. Follow technical documentation to integrate Microsoft Excel node into your workflows. - \[Microsoft Graph Security\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.microsoftgraphsecurity.md): Learn how to use the Microsoft Graph Security node in n8n. Follow technical documentation to integrate Microsoft Graph Security node into your workflows. - \[Microsoft OneDrive\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.microsoftonedrive.md): Learn how to use the Microsoft OneDrive node in n8n. Follow technical documentation to integrate Microsoft OneDrive node into your workflows. - \[Microsoft Outlook\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.microsoftoutlook.md): Learn how to use the Microsoft Outlook node in n8n. Follow technical documentation to integrate Microsoft Outlook node into your workflows. - \[Microsoft SharePoint\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.microsoftsharepoint.md): Learn how to use the Microsoft SharePoint node in n8n. Follow technical documentation to integrate Microsoft SharePoint node into your workflows. - \[Microsoft SQL\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.microsoftsql.md): Learn how to use the Microsoft SQL node in n8n. Follow technical documentation to integrate Microsoft SQL node into your workflows. - \[Microsoft Teams\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.microsoftteams.md): Learn how to use the Microsoft Teams node in n8n. Follow technical documentation to integrate Microsoft Teams node into your workflows. - \[Microsoft To Do\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.microsofttodo.md): Learn how to use the Microsoft To Do node in n8n. Follow technical documentation to integrate Microsoft To Do node into your workflows. - \[Mindee\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.mindee.md): Learn how to use the Mindee node in n8n. Follow technical documentation to integrate Mindee node into your workflows. - \[MISP\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.misp.md): Learn how to use the MISP node in n8n. Follow technical documentation to integrate MISP node into your workflows. - \[Mistral AI\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.mistralai.md): Learn how to use the Mistral AI node in n8n. Follow technical documentation to integrate Mistral AI node into your workflows. - \[MiniMax\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-langchain.minimax.md): The MiniMax node lets you interact with MiniMax AI models from n8n. This documentation explains how to integrate MiniMax into your n8n workflows to generate images, produce speech from text, generate - \[Mocean\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.mocean.md): Learn how to use the Mocean node in n8n. Follow technical documentation to integrate Mocean node into your workflows. - \[monday.com\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.mondaycom.md): Learn how to use the monday.com node in n8n. Follow technical documentation to integrate monday.com node into your workflows. - \[MongoDB\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.mongodb.md): Learn how to use the MongoDB node in n8n. Follow technical documentation to integrate MongoDB node into your workflows. - \[Monica CRM\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.monicacrm.md): Learn how to use the Monica CRM node in n8n. Follow technical documentation to integrate Monica CRM node into your workflows. - \[Moonshot Kimi\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-langchain.moonshot.md): The Moonshot Kimi node lets you interact with Moonshot Kimi AI models from n8n. This documentation explains how to send messages to models, attach images, and analyze images using the node's operation - \[MQTT\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.mqtt.md): Learn how to use the MQTT node in n8n. Follow technical documentation to integrate MQTT node into your workflows. - \[MSG91\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.msg91.md): Learn how to use the MSG91 node in n8n. Follow technical documentation to integrate MSG91 node into your workflows. - \[MySQL\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.mysql.md): Learn how to use the MySQL node in n8n. Follow technical documentation to integrate MySQL node into your workflows. - \[Common issues\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.mysql/common-issues.md): Documentation for common issues and questions in the MySQL node in n8n, a workflow automation platform. Includes details of the issue and suggested solutions. - \[Customer Datastore (n8n Training)\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.n8ntrainingcustomerdatastore.md): Learn how to use the Customer Datastore (n8n Training) node in n8n. Follow technical documentation to integrate Customer Datastore (n8n Training) node into your workflows. - \[Customer Messenger (n8n Training)\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.n8ntrainingcustomermessenger.md): Learn how to use the Customer Messenger (n8n Training) node in n8n. Follow technical documentation to integrate Customer Messenger (n8n Training) node into your workflows. - \[NASA\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.nasa.md): Learn how to use the NASA node in n8n. Follow technical documentation to integrate NASA node into your workflows. - \[Netlify\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.netlify.md): Learn how to use the Netlify node in n8n. Follow technical documentation to integrate Netlify node into your workflows. - \[Netscaler ADC\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.netscaleradc.md): Learn how to use the Netscaler ADC node in n8n. Follow technical documentation to integrate Netscaler ADC node into your workflows. - \[Nextcloud\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.nextcloud.md): Learn how to use the Nextcloud node in n8n. Follow technical documentation to integrate Nextcloud node into your workflows. - \[NocoDB\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.nocodb.md): Learn how to use the NocoDB node in n8n. Follow technical documentation to integrate NocoDB node into your workflows. - \[Notion\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.notion.md): Learn how to use the Notion node in n8n. Follow technical documentation to integrate Notion node into your workflows. - \[Common issues\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.notion/common-issues.md): Documentation for common issues and questions in the Notion node in n8n, a workflow automation platform. Includes details of the issue and suggested solutions. - \[npm\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.npm.md): Learn how to use the npm node in n8n. Follow technical documentation to integrate npm node into your workflows. - \[Odoo\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.odoo.md): Learn how to use the Odoo node in n8n. Follow technical documentation to integrate Odoo node into your workflows. - \[Okta\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.okta.md): Learn how to use the Okta node in n8n. Follow technical documentation to integrate Okta node into your workflows. - \[One Simple API\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.onesimpleapi.md): Learn how to use the One Simple API node in n8n. Follow technical documentation to integrate One Simple API node into your workflows. - \[Onfleet\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.onfleet.md): Learn how to use the Onfleet node in n8n. Follow technical documentation to integrate Onfleet node into your workflows. - \[OpenAI\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-langchain.openai.md): Learn how to use the OpenAI node in n8n. Follow technical documentation to integrate OpenAI node into your workflows. - \[Assistant operations\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-langchain.openai/assistant-operations.md): Documentation for the Assistant operations in OpenAI node in n8n, a workflow automation platform. Includes details of operations and configuration, and links to examples and credentials information. - \[Audio operations\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-langchain.openai/audio-operations.md): Documentation for the Audio operations in OpenAI node in n8n, a workflow automation platform. Includes details of operations and configuration, and links to examples and credentials information. - \[Conversation operations\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-langchain.openai/conversation-operations.md): Documentation for the Conversation operations in OpenAI node in n8n, a workflow automation platform. Includes details of operations and configuration, and links to examples and credentials information - \[File operations\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-langchain.openai/file-operations.md): Documentation for the File operations in OpenAI node in n8n, a workflow automation platform. Includes details of operations and configuration, and links to examples and credentials information. - \[Image operations\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-langchain.openai/image-operations.md): Documentation for the Image operations in OpenAI node in n8n, a workflow automation platform. Includes details of operations and configuration, and links to examples and credentials information. - \[Text operations\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-langchain.openai/text-operations.md): Documentation for the Text operations in OpenAI node in n8n, a workflow automation platform. Includes details of operations and configuration, and links to examples and credentials information. - \[Video operations\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-langchain.openai/video-operations.md): Documentation for the Video operations in OpenAI node in n8n, a workflow automation platform. Includes details of operations and configuration, and links to examples and credentials information. - \[Common issues\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-langchain.openai/common-issues.md): Documentation for common issues and questions in the OpenAI node in n8n, a workflow automation platform. Includes details of the issue and suggested solutions. - \[OpenThesaurus\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.openthesaurus.md): Learn how to use the OpenThesaurus node in n8n. Follow technical documentation to integrate OpenThesaurus node into your workflows. - \[OpenWeatherMap\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.openweathermap.md): Learn how to use the OpenWeatherMap node in n8n. Follow technical documentation to integrate OpenWeatherMap node into your workflows. - \[Oracle Database\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.oracledb.md): Learn how to use the Oracle Database node in n8n. Follow technical documentation to integrate Oracle Database node into your workflows. - \[Oura\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.oura.md): Learn how to use the Oura node in n8n. Follow technical documentation to integrate Oura node into your workflows. - \[Paddle\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.paddle.md): Learn how to use the Paddle node in n8n. Follow technical documentation to integrate Paddle node into your workflows. - \[PagerDuty\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.pagerduty.md): Learn how to use the PagerDuty node in n8n. Follow technical documentation to integrate PagerDuty node into your workflows. - \[PayPal\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.paypal.md): Learn how to use the PayPal node in n8n. Follow technical documentation to integrate PayPal node into your workflows. - \[Peekalink\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.peekalink.md): Learn how to use the Peekalink node in n8n. Follow technical documentation to integrate Peekalink node into your workflows. - \[Perplexity\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-langchain.perplexity.md): Learn how to use the Perplexity node in n8n. Follow technical documentation to integrate Perplexity node into your workflows. - \[PhantomBuster\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.phantombuster.md): Learn how to use the PhantomBuster node in n8n. Follow technical documentation to integrate PhantomBuster node into your workflows. - \[Philips Hue\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.philipshue.md): Learn how to use the Philips Hue node in n8n. Follow technical documentation to integrate Philips Hue node into your workflows. - \[Pipedrive\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.pipedrive.md): Learn how to use the Pipedrive node in n8n. Follow technical documentation to integrate Pipedrive node into your workflows. - \[Plivo\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.plivo.md): Learn how to use the Plivo node in n8n. Follow technical documentation to integrate Plivo node into your workflows. - \[PostBin\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.postbin.md): Learn how to use the PostBin node in n8n. Follow technical documentation to integrate PostBin node into your workflows. - \[Postgres\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.postgres.md): Learn how to use the Postgres node in n8n. Follow technical documentation to integrate Postgres node into your workflows. - \[Common issues\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.postgres/common-issues.md): Documentation for common issues and questions in the Postgres node in n8n, a workflow automation platform. Includes details of the issue and suggested solutions. - \[PostHog\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.posthog.md): Learn how to use the PostHog node in n8n. Follow technical documentation to integrate PostHog node into your workflows. - \[ProfitWell\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.profitwell.md): Learn how to use the ProfitWell node in n8n. Follow technical documentation to integrate ProfitWell node into your workflows. - \[Pushbullet\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.pushbullet.md): Learn how to use the Pushbullet node in n8n. Follow technical documentation to integrate Pushbullet node into your workflows. - \[Pushcut\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.pushcut.md): Learn how to use the Pushcut node in n8n. Follow technical documentation to integrate Pushcut node into your workflows. - \[Pushover\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.pushover.md): Learn how to use the Pushover node in n8n. Follow technical documentation to integrate Pushover node into your workflows. - \[QuestDB\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.questdb.md): Learn how to use the QuestDB node in n8n. Follow technical documentation to integrate QuestDB node into your workflows. - \[Quick Base\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.quickbase.md): Learn how to use the Quick Base node in n8n. Follow technical documentation to integrate Quick Base node into your workflows. - \[QuickBooks Online\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.quickbooks.md): Learn how to use the QuickBooks Online node in n8n. Follow technical documentation to integrate QuickBooks Online node into your workflows. - \[QuickChart\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.quickchart.md): Learn how to use the QuickChart node in n8n. Follow technical documentation to integrate QuickChart node into your workflows. - \[RabbitMQ\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.rabbitmq.md): Learn how to use the RabbitMQ node in n8n. Follow technical documentation to integrate RabbitMQ node into your workflows. - \[Raindrop\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.raindrop.md): Learn how to use the Raindrop node in n8n. Follow technical documentation to integrate Raindrop node into your workflows. - \[Reddit\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.reddit.md): Learn how to use the Reddit node in n8n. Follow technical documentation to integrate Reddit node into your workflows. - \[Redis\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.redis.md): Learn how to use the Redis node in n8n. Follow technical documentation to integrate Redis node into your workflows. - \[Rocket.Chat\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.rocketchat.md): Learn how to use the Rocket.Chat node in n8n. Follow technical documentation to integrate Rocket.Chat node into your workflows. - \[Rundeck\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.rundeck.md): Learn how to use the Rundeck node in n8n. Follow technical documentation to integrate Rundeck node into your workflows. - \[S3\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.s3.md): Learn how to use the S3 node in n8n. Follow technical documentation to integrate S3 node into your workflows. - \[Salesforce\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.salesforce.md): Learn how to use the Salesforce node in n8n. Follow technical documentation to integrate Salesforce node into your workflows. - \[Salesmate\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.salesmate.md): Learn how to use the Salesmate node in n8n. Follow technical documentation to integrate Salesmate node into your workflows. - \[SeaTable\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.seatable.md): Learn how to use the SeaTable node in n8n. Follow technical documentation to integrate SeaTable node into your workflows. - \[SecurityScorecard\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.securityscorecard.md): Learn how to use the SecurityScorecard node in n8n. Follow technical documentation to integrate SecurityScorecard node into your workflows. - \[Segment\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.segment.md): Learn how to use the Segment node in n8n. Follow technical documentation to integrate Segment node into your workflows. - \[SendGrid\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.sendgrid.md): Learn how to use the SendGrid node in n8n. Follow technical documentation to integrate SendGrid node into your workflows. - \[Sendy\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.sendy.md): Learn how to use the Sendy node in n8n. Follow technical documentation to integrate Sendy node into your workflows. - \[Sentry.io\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.sentryio.md): Learn how to use the Sentry.io node in n8n. Follow technical documentation to integrate Sentry.io node into your workflows. - \[ServiceNow\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.servicenow.md): Learn how to use the ServiceNow node in n8n. Follow technical documentation to integrate ServiceNow node into your workflows. - \[seven\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.sms77.md): Learn how to use the seven node in n8n. Follow technical documentation to integrate seven node into your workflows. - \[Shopify\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.shopify.md): Learn how to use the Shopify node in n8n. Follow technical documentation to integrate Shopify node into your workflows. - \[SIGNL4\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.signl4.md): Learn how to use the SIGNL4 node in n8n. Follow technical documentation to integrate SIGNL4 node into your workflows. - \[Slack\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.slack.md): Learn how to use the Slack node in n8n. Follow technical documentation to integrate Slack node into your workflows. - \[Snowflake\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.snowflake.md): Learn how to use the Snowflake node in n8n. Follow technical documentation to integrate Snowflake node into your workflows. - \[Splunk\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.splunk.md): Learn how to use the Splunk node in n8n. Follow technical documentation to integrate Splunk node into your workflows. - \[Spotify\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.spotify.md): Learn how to use the Spotify node in n8n. Follow technical documentation to integrate Spotify node into your workflows. - \[Stackby\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.stackby.md): Learn how to use the Stackby node in n8n. Follow technical documentation to integrate Stackby node into your workflows. - \[Storyblok\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.storyblok.md): Learn how to use the Storyblok node in n8n. Follow technical documentation to integrate Storyblok node into your workflows. - \[Strapi\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.strapi.md): Learn how to use the Strapi node in n8n. Follow technical documentation to integrate Strapi node into your workflows. - \[Strava\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.strava.md): Learn how to use the Strava node in n8n. Follow technical documentation to integrate Strava node into your workflows. - \[Stripe\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.stripe.md): Learn how to use the Stripe node in n8n. Follow technical documentation to integrate Stripe node into your workflows. - \[Supabase\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.supabase.md): Learn how to use the Supabase node in n8n. Follow technical documentation to integrate Supabase node into your workflows. - \[Common issues\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.supabase/common-issues.md): Documentation for common issues and questions in the Supabase node in n8n, a workflow automation platform. Includes details of the issue and suggested solutions. - \[SyncroMSP\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.syncromsp.md): Learn how to use the SyncroMSP node in n8n. Follow technical documentation to integrate SyncroMSP node into your workflows. - \[Taiga\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.taiga.md): Learn how to use the Taiga node in n8n. Follow technical documentation to integrate Taiga node into your workflows. - \[Tapfiliate\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.tapfiliate.md): Learn how to use the Tapfiliate node in n8n. Follow technical documentation to integrate Tapfiliate node into your workflows. - \[Telegram\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.telegram.md): Documentation for the Telegram node in n8n, a workflow automation platform. Includes details of operations and configuration, and links to examples and credentials information. - \[Chat operations\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.telegram/chat-operations.md): Documentation for the Chat operations in the Telegram node in n8n, a workflow automation platform. Includes details to configure all Chat operations. - \[Callback operations\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.telegram/callback-operations.md): Documentation for the Callback operations in the Telegram node in n8n, a workflow automation platform. Includes details to configure all Callback operations. - \[File operations\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.telegram/file-operations.md): Documentation for the File operations in the Telegram node in n8n, a workflow automation platform. Includes details to configure all File operations. - \[Message operations\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.telegram/message-operations.md): Documentation for the Message operations in the Telegram node in n8n, a workflow automation platform. Includes details to configure all Message operations. - \[Cmmon issues\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.telegram/common-issues.md): Documentation for common issues and questions in the Telegram node in n8n, a workflow automation platform. Includes details of the issue and suggested solutions. - \[TheHive\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.thehive.md): Learn how to use the TheHive node in n8n. Follow technical documentation to integrate TheHive node into your workflows. - \[TheHive 5\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.thehive5.md): Learn how to use the TheHive 5 node in n8n. Follow technical documentation to integrate TheHive 5 node into your workflows. - \[TimescaleDB\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.timescaledb.md): Learn how to use the TimescaleDB node in n8n. Follow technical documentation to integrate TimescaleDB node into your workflows. - \[Todoist\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.todoist.md): Learn how to use the Todoist node in n8n. Follow technical documentation to integrate Todoist node into your workflows. - \[Travis CI\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.travisci.md): Learn how to use the Travis CI node in n8n. Follow technical documentation to integrate Travis CI node into your workflows. - \[Trello\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.trello.md): Learn how to use the Trello node in n8n. Follow technical documentation to integrate Trello node into your workflows. - \[Twake\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.twake.md): Learn how to use the Twake node in n8n. Follow technical documentation to integrate Twake node into your workflows. - \[Twilio\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.twilio.md): Learn how to use the Twilio node in n8n. Follow technical documentation to integrate Twilio node into your workflows. - \[Twist\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.twist.md): Learn how to use the Twist node in n8n. Follow technical documentation to integrate Twist node into your workflows. - \[Unleashed Software\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.unleashedsoftware.md): Learn how to use the Unleashed Software node in n8n. Follow technical documentation to integrate Unleashed Software node into your workflows. - \[UpLead\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.uplead.md): Learn how to use the UpLead node in n8n. Follow technical documentation to integrate UpLead node into your workflows. - \[uProc\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.uproc.md): Learn how to use the uProc node in n8n. Follow technical documentation to integrate uProc node into your workflows. - \[UptimeRobot\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.uptimerobot.md): Learn how to use the UptimeRobot node in n8n. Follow technical documentation to integrate UptimeRobot node into your workflows. - \[urlscan.io\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.urlscanio.md): Learn how to use the urlscan.io node in n8n. Follow technical documentation to integrate urlscan.io node into your workflows. - \[Venafi TLS Protect Cloud\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.venafitlsprotectcloud.md): Learn how to use the Venafi TLS Protect Cloud node in n8n. Follow technical documentation to integrate Venafi TLS Protect Cloud node into your workflows. - \[Venafi TLS Protect Datacenter\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.venafitlsprotectdatacenter.md): Learn how to use the Venafi TLS Protect Datacenter node in n8n. Follow technical documentation to integrate Venafi TLS Protect Datacenter node into your workflows. - \[Vero\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.vero.md): Learn how to use the Vero node in n8n. Follow technical documentation to integrate Vero node into your workflows. - \[Vonage\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.vonage.md): Learn how to use the Vonage node in n8n. Follow technical documentation to integrate Vonage node into your workflows. - \[Webflow\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.webflow.md): Learn how to use the Webflow node in n8n. Follow technical documentation to integrate Webflow node into your workflows. - \[Wekan\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.wekan.md): Learn how to use the Wekan node in n8n. Follow technical documentation to integrate Wekan node into your workflows. - \[WhatsApp Business Cloud\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.whatsapp.md): Learn how to use the WhatsApp Business Cloud node in n8n. Follow technical documentation to integrate WhatsApp Business Cloud node into your workflows. - \[Common issues\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.whatsapp/common-issues.md): Documentation for common issues and questions in the WhatsApp Business Cloud node in n8n, a workflow automation platform. Includes details of the issue and suggested solutions. - \[Wise\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.wise.md): Learn how to use the Wise node in n8n. Follow technical documentation to integrate Wise node into your workflows. - \[WooCommerce\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.woocommerce.md): Learn how to use the WooCommerce node in n8n. Follow technical documentation to integrate WooCommerce node into your workflows. - \[WordPress\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.wordpress.md): Learn how to use the WordPress node in n8n. Follow technical documentation to integrate WordPress node into your workflows. - \[X (Formerly Twitter)\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.twitter.md): Learn how to use the X (Formerly Twitter) node in n8n. Follow technical documentation to integrate X (Formerly Twitter) node into your workflows. - \[Xero\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.xero.md): Learn how to use the Xero node in n8n. Follow technical documentation to integrate Xero node into your workflows. - \[Yourls\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.yourls.md): Learn how to use the Yourls node in n8n. Follow technical documentation to integrate Yourls node into your workflows. - \[YouTube\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.youtube.md): Learn how to use the YouTube node in n8n. Follow technical documentation to integrate YouTube node into your workflows. - \[Zammad\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.zammad.md): Learn how to use the Zammad node in n8n. Follow technical documentation to integrate Zammad node into your workflows. - \[Zendesk\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.zendesk.md): Learn how to use the Zendesk node in n8n. Follow technical documentation to integrate Zendesk node into your workflows. - \[Zoho CRM\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.zohocrm.md): Learn how to use the Zoho CRM node in n8n. Follow technical documentation to integrate Zoho CRM node into your workflows. - \[Zoom\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.zoom.md): Learn how to use the Zoom node in n8n. Follow technical documentation to integrate Zoom node into your workflows. - \[Zulip\](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.zulip.md): Learn how to use the Zulip node in n8n. Follow technical documentation to integrate Zulip node into your workflows. - \[Trigger nodes\](https://docs.n8n.io/integrations/builtin/trigger-nodes.md) - \[ActiveCampaign Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.activecampaigntrigger.md): Learn how to use the ActiveCampaign Trigger node in n8n. Follow technical documentation to integrate ActiveCampaign Trigger node into your workflows. - \[Acuity Scheduling Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.acuityschedulingtrigger.md): Learn how to use the Acuity Scheduling Trigger node in n8n. Follow technical documentation to integrate Acuity Scheduling Trigger node into your workflows. - \[Affinity Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.affinitytrigger.md): Learn how to use the Affinity Trigger node in n8n. Follow technical documentation to integrate Affinity Trigger node into your workflows. - \[Airtable Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.airtabletrigger.md): Learn how to use the Airtable Trigger node in n8n. Follow technical documentation to integrate Airtable Trigger node into your workflows. - \[AMQP Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.amqptrigger.md): Learn how to use the AMQP Trigger node in n8n. Follow technical documentation to integrate AMQP Trigger node into your workflows. - \[Asana Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.asanatrigger.md): Learn how to use the Asana Trigger node in n8n. Follow technical documentation to integrate Asana Trigger node into your workflows. - \[Autopilot Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.autopilottrigger.md): Learn how to use the Autopilot Trigger node in n8n. Follow technical documentation to integrate Autopilot Trigger node into your workflows. - \[AWS SNS Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.awssnstrigger.md): Learn how to use the AWS SNS Trigger node in n8n. Follow technical documentation to integrate AWS SNS Trigger node into your workflows. - \[Bitbucket Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.bitbuckettrigger.md): Learn how to use the Bitbucket Trigger node in n8n. Follow technical documentation to integrate Bitbucket Trigger node into your workflows. - \[Box Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.boxtrigger.md): Learn how to use the Box Trigger node in n8n. Follow technical documentation to integrate Box Trigger node into your workflows. - \[Brevo Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.brevotrigger.md): Learn how to use the Brevo Trigger node in n8n. Follow technical documentation to integrate Brevo Trigger node into your workflows. - \[Calendly Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.calendlytrigger.md): Learn how to use the Calendly Trigger node in n8n. Follow technical documentation to integrate Calendly Trigger node into your workflows. - \[Cal Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.caltrigger.md): Learn how to use the Cal Trigger node in n8n. Follow technical documentation to integrate Cal Trigger node into your workflows. - \[Chargebee Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.chargebeetrigger.md): Learn how to use the Chargebee Trigger node in n8n. Follow technical documentation to integrate Chargebee Trigger node into your workflows. - \[ClickUp Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.clickuptrigger.md): Learn how to use the ClickUp Trigger node in n8n. Follow technical documentation to integrate ClickUp Trigger node into your workflows. - \[Clockify Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.clockifytrigger.md): Learn how to use the Clockify Trigger node in n8n. Follow technical documentation to integrate Clockify Trigger node into your workflows. - \[ConvertKit Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.convertkittrigger.md): Learn how to use the ConvertKit Trigger node in n8n. Follow technical documentation to integrate ConvertKit Trigger node into your workflows. - \[Copper Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.coppertrigger.md): Learn how to use the Copper Trigger node in n8n. Follow technical documentation to integrate Copper Trigger node into your workflows. - \[crowd.dev Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.crowddevtrigger.md): Learn how to use the crowd.dev Trigger node in n8n. Follow technical documentation to integrate crowd.dev Trigger node into your workflows. - \[Customer.io Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.customeriotrigger.md): Learn how to use the Customer.io Trigger node in n8n. Follow technical documentation to integrate Customer.io Trigger node into your workflows. - \[Emelia Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.emeliatrigger.md): Learn how to use the Emelia Trigger node in n8n. Follow technical documentation to integrate Emelia Trigger node into your workflows. - \[Eventbrite Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.eventbritetrigger.md): Learn how to use the Eventbrite Trigger node in n8n. Follow technical documentation to integrate Eventbrite Trigger node into your workflows. - \[Facebook Lead Ads Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.facebookleadadstrigger.md): Learn how to use the Facebook Lead Ads Trigger node in n8n. Follow technical documentation to integrate Facebook Lead Ads Trigger node into your workflows. - \[Facebook Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.facebooktrigger.md): Learn how to use the Facebook Trigger node in n8n. Follow technical documentation to integrate Facebook Trigger node into your workflows. - \[Ad Account\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.facebooktrigger/ad-account.md): Learn how to use the Ad Account object of the Facebook Trigger node in n8n. Follow technical documentation to integrate the Facebook Trigger node's Ad Account object into your workflows. - \[Application\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.facebooktrigger/application.md): Learn how to use the Application object of the Facebook Trigger node in n8n. Follow technical documentation to integrate the Facebook Trigger node's Application object into your workflows. - \[Certificate Transparency\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.facebooktrigger/certificate-transparency.md): Learn how to use the Certificate Transparency object of the Facebook Trigger node in n8n. Follow technical documentation to integrate the Facebook Trigger node's Certificate Transparency object into y - \[Group\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.facebooktrigger/group.md): Learn how to use the Group object of the Facebook Trigger node in n8n. Follow technical documentation to integrate the Facebook Trigger node's Group object into your workflows. - \[Instagram\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.facebooktrigger/instagram.md): Learn how to use the Instagram object of the Facebook Trigger node in n8n. Follow technical documentation to integrate the Facebook Trigger node's Instagram object into your workflows. - \[Link\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.facebooktrigger/link.md): Learn how to use the Link object of the Facebook Trigger node in n8n. Follow technical documentation to integrate the Facebook Trigger node's Link object into your workflows. - \[Page\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.facebooktrigger/page.md): Learn how to use the Page object of the Facebook Trigger node in n8n. Follow technical documentation to integrate the Facebook Trigger node's Page object into your workflows. - \[Permissions\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.facebooktrigger/permissions.md): Learn how to use the Permissions object of the Facebook Trigger node in n8n. Follow technical documentation to integrate the Facebook Trigger node's Permissions object into your workflows. - \[User\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.facebooktrigger/user.md): Learn how to use the User object of the Facebook Trigger node in n8n. Follow technical documentation to integrate the Facebook Trigger node's User object into your workflows. - \[WhatsApp Business Account\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.facebooktrigger/whatsapp.md): Learn how to use the WhatsApp Business Account object of the Facebook Trigger node in n8n. Follow technical documentation to integrate the Facebook Trigger node's WhatsApp Business Account object into - \[Workplace Security\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.facebooktrigger/workplace-security.md): Learn how to use the Workplace Security object of the Facebook Trigger node in n8n. Follow technical documentation to integrate the Facebook Trigger node's Workplace Security object into your workflow - \[Figma Trigger (Beta)\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.figmatrigger.md): Learn how to use the Figma Trigger node in n8n. Follow technical documentation to integrate Figma Trigger node into your workflows. - \[Flow Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.flowtrigger.md): Learn how to use the Flow Trigger node in n8n. Follow technical documentation to integrate Flow Trigger node into your workflows. - \[Form.io Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.formiotrigger.md): Learn how to use the Form.io Trigger node in n8n. Follow technical documentation to integrate Form.io Trigger node into your workflows. - \[Formstack Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.formstacktrigger.md): Learn how to use the Formstack Trigger node in n8n. Follow technical documentation to integrate Formstack Trigger node into your workflows. - \[GetResponse Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.getresponsetrigger.md): Learn how to use the GetResponse Trigger node in n8n. Follow technical documentation to integrate GetResponse Trigger node into your workflows. - \[GitHub Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.githubtrigger.md): Learn how to use the GitHub Trigger node in n8n. Follow technical documentation to integrate GitHub Trigger node into your workflows. - \[GitLab Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.gitlabtrigger.md): Learn how to use the GitLab Trigger node in n8n. Follow technical documentation to integrate GitLab Trigger node into your workflows. - \[Gmail Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.gmailtrigger.md): Learn how to use the Gmail Trigger node in n8n. Follow technical documentation to integrate Gmail Trigger node into your workflows. - \[Poll mode options\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.gmailtrigger/poll-mode-options.md): Learn about the poll mode options available to the Gmail Trigger node in n8n and how to configure them. - \[Common issues\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.gmailtrigger/common-issues.md): Documentation for common issues and questions in the Gmail Trigger node in n8n, a workflow automation platform. Includes details of the issue and suggested solutions. - \[Google Calendar Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.googlecalendartrigger.md): Learn how to use the Google Calendar Trigger node in n8n. Follow technical documentation to integrate Google Calendar Trigger node into your workflows. - \[Google Drive Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.googledrivetrigger.md): Learn how to use the Google Drive Trigger node in n8n. Follow technical documentation to integrate Google Drive Trigger node into your workflows. - \[Common issues\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.googledrivetrigger/common-issues.md): Documentation for common issues and questions in the Google Drive Trigger node in n8n, a workflow automation platform. Includes details of the issue and suggested solutions. - \[Google Business Profile Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.googlebusinessprofiletrigger.md): Learn how to use the Google Business Profile Trigger node in n8n. Follow technical documentation to integrate Google Business Profile Trigger node into your workflows. - \[Google Sheets Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.googlesheetstrigger.md): Learn how to use the Google Sheets Trigger node in n8n. Follow technical documentation to integrate Google Sheets Trigger node into your workflows. - \[Common issues\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.googlesheetstrigger/common-issues.md): Documentation for common issues and questions in the Google Sheets Trigger node in n8n, a workflow automation platform. Includes details of the issue and suggested solutions. - \[Gumroad Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.gumroadtrigger.md): Learn how to use the Gumroad Trigger node in n8n. Follow technical documentation to integrate Gumroad Trigger node into your workflows. - \[Help Scout Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.helpscouttrigger.md): Learn how to use the Help Scout Trigger node in n8n. Follow technical documentation to integrate Help Scout Trigger node into your workflows. - \[HubSpot Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.hubspottrigger.md): Learn how to use the HubSpot Trigger node in n8n. Follow technical documentation to integrate HubSpot Trigger node into your workflows. - \[Invoice Ninja Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.invoiceninjatrigger.md): Learn how to use the Invoice Ninja Trigger node in n8n. Follow technical documentation to integrate Invoice Ninja Trigger node into your workflows. - \[Jira Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.jiratrigger.md): Learn how to use the Jira Trigger node in n8n. Follow technical documentation to integrate Jira Trigger node into your workflows. - \[Jotform Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.jotformtrigger.md): Learn how to use the Jotform Trigger node in n8n. Follow technical documentation to integrate Jotform Trigger node into your workflows. - \[Kafka Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.kafkatrigger.md): Learn how to use the Kafka Trigger node in n8n. Follow technical documentation to integrate Kafka Trigger node into your workflows. - \[Keap Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.keaptrigger.md): Learn how to use the Keap Trigger node in n8n. Follow technical documentation to integrate Keap Trigger node into your workflows. - \[KoboToolbox Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.kobotoolboxtrigger.md): Learn how to use the KoboToolbox Trigger node in n8n. Follow technical documentation to integrate KoboToolbox Trigger node into your workflows. - \[Lemlist Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.lemlisttrigger.md): Learn how to use the Lemlist Trigger node in n8n. Follow technical documentation to integrate Lemlist Trigger node into your workflows. - \[Linear Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.lineartrigger.md): Learn how to use the Linear Trigger node in n8n. Follow technical documentation to integrate Linear Trigger node into your workflows. - \[LoneScale Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.lonescaletrigger.md): Learn how to use the LoneScale Trigger node in n8n. Follow technical documentation to integrate LoneScale Trigger node into your workflows. - \[Mailchimp Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.mailchimptrigger.md): Learn how to use the Mailchimp Trigger node in n8n. Follow technical documentation to integrate Mailchimp Trigger node into your workflows. - \[MailerLite Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.mailerlitetrigger.md): Learn how to use the MailerLite Trigger node in n8n. Follow technical documentation to integrate MailerLite Trigger node into your workflows. - \[Mailjet Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.mailjettrigger.md): Learn how to use the Mailjet Trigger node in n8n. Follow technical documentation to integrate Mailjet Trigger node into your workflows. - \[Mautic Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.mautictrigger.md): Learn how to use the Mautic Trigger node in n8n. Follow technical documentation to integrate Mautic Trigger node into your workflows. - \[Microsoft OneDrive Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.microsoftonedrivetrigger.md): Learn how to use the Microsoft OneDrive Trigger node in n8n. Follow technical documentation to integrate Microsoft OneDrive Trigger node into your workflows. - \[Microsoft Outlook Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.microsoftoutlooktrigger.md): Learn how to use the Microsoft Outlook Trigger node in n8n. Follow technical documentation to integrate Microsoft Outlook Trigger node into your workflows. - \[Microsoft Teams Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.microsoftteamstrigger.md): Learn how to use the Microsoft Teams Trigger node in n8n. Follow technical documentation to integrate Microsoft Teams Trigger node into your workflows. - \[MQTT Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.mqtttrigger.md): Learn how to use the MQTT Trigger node in n8n. Follow technical documentation to integrate MQTT Trigger node into your workflows. - \[Netlify Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.netlifytrigger.md): Learn how to use the Netlify Trigger node in n8n. Follow technical documentation to integrate Netlify Trigger node into your workflows. - \[Notion Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.notiontrigger.md): Learn how to use the Notion Trigger node in n8n. Follow technical documentation to integrate Notion Trigger node into your workflows. - \[Onfleet Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.onfleettrigger.md): Learn how to use the Onfleet Trigger node in n8n. Follow technical documentation to integrate Onfleet Trigger node into your workflows. - \[PayPal Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.paypaltrigger.md): Learn how to use the PayPal Trigger node in n8n. Follow technical documentation to integrate PayPal Trigger node into your workflows. - \[Pipedrive Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.pipedrivetrigger.md): Learn how to use the Pipedrive Trigger node in n8n. Follow technical documentation to integrate Pipedrive Trigger node into your workflows. - \[Postgres Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.postgrestrigger.md): Learn how to use the Postgres Trigger node in n8n. Follow technical documentation to integrate Postgres Trigger node into your workflows. - \[Postmark Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.postmarktrigger.md): Learn how to use the Postmark Trigger node in n8n. Follow technical documentation to integrate Postmark Trigger node into your workflows. - \[Pushcut Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.pushcuttrigger.md): Learn how to use the Pushcut Trigger node in n8n. Follow technical documentation to integrate Pushcut Trigger node into your workflows. - \[RabbitMQ Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.rabbitmqtrigger.md): Learn how to use the RabbitMQ Trigger node in n8n. Follow technical documentation to integrate RabbitMQ Trigger node into your workflows. - \[Redis Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.redistrigger.md): Learn how to use the Redis Trigger node in n8n. Follow technical documentation to integrate Redis Trigger node into your workflows. - \[Salesforce Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.salesforcetrigger.md): Learn how to use the Salesforce Trigger node in n8n. Follow technical documentation to integrate Salesforce Trigger node into your workflows. - \[SeaTable Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.seatabletrigger.md): Learn how to use the SeaTable Trigger node in n8n. Follow technical documentation to integrate SeaTable Trigger node into your workflows. - \[Shopify Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.shopifytrigger.md): Learn how to use the Shopify Trigger node in n8n. Follow technical documentation to integrate Shopify Trigger node into your workflows. - \[Slack Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.slacktrigger.md): Learn how to use the Slack Trigger node in n8n. Follow technical documentation to integrate Slack Trigger node into your workflows. - \[Strava Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.stravatrigger.md): Learn how to use the Strava Trigger node in n8n. Follow technical documentation to integrate Strava Trigger node into your workflows. - \[Stripe Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.stripetrigger.md): Learn how to use the Stripe Trigger node in n8n. Follow technical documentation to integrate Stripe Trigger node into your workflows. - \[SurveyMonkey Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.surveymonkeytrigger.md): Learn how to use the SurveyMonkey Trigger node in n8n. Follow technical documentation to integrate SurveyMonkey Trigger node into your workflows. - \[Taiga Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.taigatrigger.md): Learn how to use the Taiga Trigger node in n8n. Follow technical documentation to integrate Taiga Trigger node into your workflows. - \[Telegram Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.telegramtrigger.md): Learn how to use the Telegram Trigger node in n8n. Follow technical documentation to integrate Telegram Trigger node into your workflows. - \[Common issues\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.telegramtrigger/common-issues.md): Documentation for common issues and questions in the Telegram Trigger node in n8n, a workflow automation platform. Includes details of the issue and suggested solutions. - \[TheHive 5 Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.thehive5trigger.md): Learn how to use the TheHive 5 Trigger node in n8n. Follow technical documentation to integrate TheHive 5 Trigger node into your workflows. - \[TheHive Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.thehivetrigger.md): Learn how to use the TheHive Trigger node in n8n. Follow technical documentation to integrate TheHive Trigger node into your workflows. - \[Toggl Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.toggltrigger.md): Learn how to use the Toggl Trigger node in n8n. Follow technical documentation to integrate Toggl Trigger node into your workflows. - \[Trello Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.trellotrigger.md): Learn how to use the Trello Trigger node in n8n. Follow technical documentation to integrate Trello Trigger node into your workflows. - \[Twilio Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.twiliotrigger.md): Learn how to use the Twilio Trigger node in n8n. Follow technical documentation to integrate Twilio Trigger node into your workflows. - \[Typeform Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.typeformtrigger.md): Learn how to use the Typeform Trigger node in n8n. Follow technical documentation to integrate Typeform Trigger node into your workflows. - \[Venafi TLS Protect Cloud Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.venafitlsprotectcloudtrigger.md): Learn how to use the Venafi TLS Protect Cloud Trigger node in n8n. Follow technical documentation to integrate Venafi TLS Protect Cloud Trigger node into your workflows. - \[Webex by Cisco Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.ciscowebextrigger.md): Learn how to use the Webex by Cisco Trigger node in n8n. Follow technical documentation to integrate Webex by Cisco Trigger node into your workflows. - \[Webflow Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.webflowtrigger.md): Learn how to use the Webflow Trigger node in n8n. Follow technical documentation to integrate Webflow Trigger node into your workflows. - \[WhatsApp Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.whatsapptrigger.md): Learn how to use the WhatsApp Trigger node in n8n. Follow technical documentation to integrate WhatsApp Trigger node into your workflows. - \[Wise Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.wisetrigger.md): Learn how to use the Wise Trigger node in n8n. Follow technical documentation to integrate Wise Trigger node into your workflows. - \[WooCommerce Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.woocommercetrigger.md): Learn how to use the WooCommerce Trigger node in n8n. Follow technical documentation to integrate WooCommerce Trigger node into your workflows. - \[Workable Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.workabletrigger.md): Learn how to use the Workable Trigger node in n8n. Follow technical documentation to integrate Workable Trigger node into your workflows. - \[Wufoo Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.wufootrigger.md): Learn how to use the Wufoo Trigger node in n8n. Follow technical documentation to integrate Wufoo Trigger node into your workflows. - \[Zendesk Trigger\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.zendesktrigger.md): Learn how to use the Zendesk Trigger node in n8n. Follow technical documentation to integrate Zendesk Trigger node into your workflows. - \[Cluster nodes\](https://docs.n8n.io/integrations/builtin/cluster-nodes.md): Understand cluster nodes in n8n, and browse the cluster nodes library. - \[Root nodes\](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes.md): Understand root nodes in n8n, and browse the root nodes library. - \[AI Agent\](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent.md): Learn how to use the AI Agent node in n8n. Follow technical documentation to integrate AI Agent node into your workflows. - \[Conversational Agent\](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/conversational-agent.md): Learn how to use the Conversational Agent of the AI Agent node in n8n. Follow technical documentation to integrate the Conversational Agent into your workflows. - \[OpenAI Functions Agent\](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/openai-functions-agent.md): Learn how to use the OpenAI Functions Agent of the AI Agent node in n8n. Follow technical documentation to integrate the OpenAI Functions Agent into your workflows. - \[Plan and Execute Agent\](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/plan-execute-agent.md): Learn how to use the Plan and Execute Agent of the AI Agent node in n8n. Follow technical documentation to integrate the Plan and Execute Agent into your workflows. - \[ReAct Agent\](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/react-agent.md): Learn how to use the ReAct Agent of the AI Agent node in n8n. Follow technical documentation to integrate the ReAct Agent into your workflows. - \[SQL Agent\](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/sql-agent.md): Learn how to use the SQL Agent of the AI Agent node in n8n. Follow technical documentation to integrate the SQL Agent into your workflows. - \[Tools Agent\](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/tools-agent.md): Learn how to use the Tools Agent of the AI Agent node in n8n. Follow technical documentation to integrate the Tools Agent into your workflows. - \[Common issues\](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/common-issues.md): Documentation for common issues and questions in the AI Agent node in n8n, a workflow automation platform. Includes details of the issue and suggested solutions. - \[Basic LLM Chain\](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.chainllm.md): Learn how to use the Basic LLM Chain node in n8n. Follow technical documentation to integrate Basic LLM Chain node into your workflows. - \[Question and Answer Chain\](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.chainretrievalqa.md): Learn how to use the Question and Answer Chain node in n8n. Follow technical documentation to integrate Question and Answer Chain node into your workflows. - \[Common issues\](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.chainretrievalqa/common-issues.md): Documentation for common issues and questions in the Question and Answer Chain node in n8n, a workflow automation platform. Includes details of the issue and suggested solutions. - \[Summarization Chain\](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.chainsummarization.md): Learn how to use the Summarize Chain node in n8n. Follow technical documentation to integrate Summarize Chain node into your workflows. - \[Information Extractor\](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.information-extractor.md): Learn how to use the Information Extractor node in n8n. Follow technical documentation to integrate Information Extractor node into your workflows. - \[Text Classifier\](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.text-classifier.md): Learn how to use the Text Classifier node in n8n. Follow technical documentation to integrate Text Classifier node into your workflows. - \[Sentiment Analysis\](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.sentimentanalysis.md): Learn how to use the Sentiment Analysis node in n8n. Follow technical documentation to integrate Sentiment Analysis node into your workflows. - \[LangChain Code\](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.code.md): Learn how to use the LangChain Code node in n8n. Follow technical documentation to integrate LangChain Code node into your workflows. - \[Microsoft Agent 365 Trigger\](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.microsoftagent365trigger.md): Learn how to use the Microsoft Agent 365 Trigger node in n8n. Follow technical documentation to integrate Microsoft Agent 365 Trigger node into your workflows. - \[Azure AI Search Vector Store\](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.vectorstoreazureaisearch.md): Learn how to use the Azure AI Search Vector Store node in n8n. Follow technical documentation to integrate Azure AI Search Vector Store node into your workflows. - \[Simple Vector Store\](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.vectorstoreinmemory.md): Learn how to use the Simple Vector Store node in n8n. Follow technical documentation to integrate Simple Vector Store node into your workflows. - \[Milvus Vector Store\](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.vectorstoremilvus.md): Learn how to use the Milvus Vector Store node in n8n. Follow technical documentation to integrate Milvus Vector Store node into your workflows. - \[MongoDB Atlas Vector Store\](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.vectorstoremongodbatlas.md): Learn how to use the MongoDB Atlas Vector Store node in n8n. Follow technical documentation to integrate MongoDB Atlas Vector Store node into your workflows. - \[PGVector Vector Store\](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.vectorstorepgvector.md): Learn how to use the PGVector Vector Store node in n8n. Follow technical documentation to integrate PGVector Vector Store node into your workflows. - \[Oracle Database Vector Store\](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.vectorstoreoracledb.md): Learn how to use the Oracle Database Vector Store node in n8n. Follow technical documentation to integrate Oracle Database Vector Store node into your workflows. - \[Chroma Vector Store\](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.vectorstorechroma.md): Learn how to use the Chroma Vector Store node in n8n. Follow technical documentation to integrate Chroma Vector Store node into your workflows. - \[Pinecone Vector Store\](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.vectorstorepinecone.md): Learn how to use the Pinecone Vector Store node in n8n. Follow technical documentation to integrate Pinecone Vector Store node into your workflows. - \[Qdrant Vector Store\](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.vectorstoreqdrant.md): Learn how to use the Qdrant Vector Store node in n8n. Follow technical documentation to integrate Qdrant Vector Store node into your workflows. - \[Redis Vector Store\](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.vectorstoreredis.md): Learn how to use the Redis Vector Store node in n8n. Follow technical documentation to integrate Redis Vector Store node into your workflows. - \[Supabase Vector Store\](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.vectorstoresupabase.md): Learn how to use the Supabase Vector Store node in n8n. Follow technical documentation to integrate Supabase Vector Store node into your workflows. - \[Weaviate Vector Store\](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.vectorstoreweaviate.md): Learn how to use the Weaviate Vector Store node in n8n. Follow technical documentation to integrate Weaviate Vector Store node into your workflows. - \[Zep Vector Store\](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.vectorstorezep.md): Learn how to use the Zep Vector Store node in n8n. Follow technical documentation to integrate Zep Vector Store node into your workflows. - \[Sub-nodes\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes.md): Understand sub-nodes in n8n, and browse the sub-nodes library. - \[Default Data Loader\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.documentdefaultdataloader.md): Learn how to use the Default Data Loader node in n8n. Follow technical documentation to integrate Default Data Loader node into your workflows. - \[GitHub Document Loader\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.documentgithubloader.md): Learn how to use the GitHub Document Loader node in n8n. Follow technical documentation to integrate GitHub Document Loader node into your workflows. - \[Embeddings AWS Bedrock\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.embeddingsawsbedrock.md): Learn how to use the Embeddings AWS Bedrock node in n8n. Follow technical documentation to integrate Embeddings AWS Bedrock node into your workflows. - \[Embeddings Azure OpenAI\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.embeddingsazureopenai.md): Learn how to use the Embeddings Azure OpenAI node in n8n. Follow technical documentation to integrate Embeddings Azure OpenAI node into your workflows. - \[Embeddings Cohere\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.embeddingscohere.md): Learn how to use the Embeddings Cohere node in n8n. Follow technical documentation to integrate Embeddings Cohere node into your workflows. - \[Embeddings Google Gemini\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.embeddingsgooglegemini.md): Learn how to use the Embeddings Google Gemini node in n8n. Follow technical documentation to integrate Embeddings Google Gemini node into your workflows. - \[Embeddings Google PaLM\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.embeddingsgooglepalm.md): Learn how to use the Embeddings Google PaLM node in n8n. Follow technical documentation to integrate Embeddings Google PaLM node into your workflows. - \[Embeddings Google Vertex\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.embeddingsgooglevertex.md): Learn how to use the Embeddings Google Vertex node in n8n. Follow technical documentation to integrate Embeddings Google Gemini node into your workflows. - \[Embeddings HuggingFace Inference\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.embeddingshuggingfaceinference.md): Learn how to use the Embeddings HuggingFace Inference node in n8n. Follow technical documentation to integrate Embeddings HuggingFace Inference node into your workflows. - \[Embeddings Lemonade\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.embeddingslemonade.md): Learn how to use the Embeddings Lemonade node in n8n. Follow technical documentation to integrate Embeddings Lemonade node into your workflows. - \[Embeddings Mistral Cloud\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.embeddingsmistralcloud.md): Learn how to use the Embeddings Mistral Cloud node in n8n. Follow technical documentation to integrate Embeddings Mistral Cloud node into your workflows. - \[Embeddings Ollama\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.embeddingsollama.md): Learn how to use the Embeddings Ollama node in n8n. Follow technical documentation to integrate Embeddings Ollama node into your workflows. - \[Embeddings OpenAI\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.embeddingsopenai.md): Learn how to use the Embeddings OpenAI node in n8n. Follow technical documentation to integrate Embeddings OpenAI node into your workflows. - \[Embeddings Oracle Database\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.embeddingsoracledb.md): Learn how to use the Embeddings Oracle Database node in n8n. Follow technical documentation to integrate Embeddings Oracle Database node into your workflows. - \[Qwen Cloud Chat Model\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatalibabacloud.md): The Qwen Cloud Chat Model node sends prompts to conversational models available on Qwen Cloud (for advanced AI chains). This page explains how to configure the node in n8n workflows and covers common - \[Anthropic Chat Model\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatanthropic.md): Learn how to use the Anthropic Chat Model node in n8n. Follow technical documentation to integrate Anthropic Chat Model node into your workflows. - \[AWS Bedrock Chat Model\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatawsbedrock.md): Learn how to use the AWS Bedrock Chat Model node in n8n. Follow technical documentation to integrate AWS Bedrock Chat Model node into your workflows. - \[Azure OpenAI Chat Model\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatazureopenai.md): Learn how to use the Azure OpenAI Chat Model node in n8n. Follow technical documentation to integrate Azure OpenAI Chat Model node into your workflows. - \[Cohere Chat Model\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatcohere.md): Learn how to use the Cohere Chat Model node in n8n. Follow technical documentation to integrate Cohere Chat Model node into your workflows. - \[DeepSeek Chat Model\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatdeepseek.md): Learn how to use the DeepSeek Chat Model node in n8n. Follow technical documentation to integrate DeepSeek Chat Model node into your workflows. - \[Google Gemini Chat Model\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatgooglegemini.md): Learn how to use the Google Gemini Chat Model node in n8n. Follow technical documentation to integrate Google Gemini Chat Model node into your workflows. - \[Google Vertex Chat Model\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatgooglevertex.md): Learn how to use the Google Vertex Chat Model node in n8n. Follow technical documentation to integrate Google Vertex Chat Model node into your workflows. - \[Groq Chat Model\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatgroq.md): Learn how to use the Groq Chat Model node in n8n. Follow technical documentation to integrate Groq Chat Model node into your workflows. - \[Lemonade Chat Model\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatlemonade.md): Learn how to use the Lemonade Chat Model node in n8n. Follow technical documentation to integrate Lemonade Chat Model node into your workflows. - \[MiniMax Chat Model\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatminimax.md): Learn how to use the MiniMax Chat Model node in n8n. Follow technical documentation to integrate MiniMax Chat Model node into your workflows. - \[Mistral Cloud Chat Model\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatmistralcloud.md): Learn how to use the Mistral Cloud Chat Model node in n8n. Follow technical documentation to integrate Mistral Cloud Chat Model node into your workflows. - \[Moonshot Kimi Chat Model node\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatmoonshot.md): Integrate the Moonshot Kimi Chat Model into n8n workflows to generate chat responses for AI chains. Common uses include generating conversational replies, integrating with LangChain-style workflows, a - \[NVIDIA Nemotron Chat Model\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatnvidia.md): Learn how to use the NVIDIA Nemotron Chat Model node in n8n. Follow technical documentation to integrate NVIDIA Nemotron Chat Model node into your workflows. - \[Ollama Chat Model\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatollama.md): Learn how to use the Ollama Chat Model node in n8n. Follow technical documentation to integrate Ollama Chat Model node into your workflows. - \[Common issues\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatollama/common-issues.md): Documentation for common issues and questions in the Ollama Chat Model node in n8n, a workflow automation platform. Includes details of the issue and suggested solutions. - \[OpenAI Chat Model\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatopenai.md): Learn how to use the OpenAI Chat Model node in n8n. Follow technical documentation to integrate OpenAI Chat Model node into your workflows. - \[Common issues\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatopenai/common-issues.md): Documentation for common issues and questions in the OpenAI Chat Model node in n8n, a workflow automation platform. Includes details of the issue and suggested solutions. - \[OpenRouter Chat Model\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatopenrouter.md): Learn how to use the OpenRouter Chat Model node in n8n. Follow technical documentation to integrate OpenRouter Chat Model node into your workflows. - \[Vercel AI Gateway Chat Model\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatvercel.md): Learn how to use the Vercel AI Gateway Chat Model node in n8n. Follow technical documentation to integrate Vercel AI Gateway Chat Model node into your workflows. - \[xAI Grok Chat Model\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatxaigrok.md): Learn how to use the xAI Grok Chat Model node in n8n. Follow technical documentation to integrate xAI Grok Chat Model node into your workflows. - \[Cohere Model\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmcohere.md): Learn how to use the Cohere Model node in n8n. Follow technical documentation to integrate Cohere Model node into your workflows. - \[Lemonade Model\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmlemonade.md): Learn how to use the Lemonade Model node in n8n. Follow technical documentation to integrate Lemonade Model node into your workflows. - \[Ollama Model\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmollama.md): Learn how to use the Ollama Model node in n8n. Follow technical documentation to integrate Ollama Model node into your workflows. - \[Common issues\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmollama/common-issues.md): Documentation for common issues and questions in the Ollama Model node in n8n, a workflow automation platform. Includes details of the issue and suggested solutions. - \[Hugging Face Inference Model\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmopenhuggingfaceinference.md): Learn how to use the Hugging Face Inference Model node in n8n. Follow technical documentation to integrate Hugging Face Inference Model node into your workflows. - \[Chat Memory Manager\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memorymanager.md): Learn how to use the Chat Memory Manager node in n8n. Follow technical documentation to integrate Chat Memory Manager node into your workflows. - \[Simple Memory\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memorybufferwindow.md): Learn how to use the Simple Memory node in n8n. Follow technical documentation to integrate Simple Memory node into your workflows. - \[Common issues\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memorybufferwindow/common-issues.md): Documentation for common issues and questions in the Simple Memory node in n8n, a workflow automation platform. Includes details of the issue and suggested solutions. - \[Motorhead\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memorymotorhead.md): Learn how to use the Motorhead node in n8n. Follow technical documentation to integrate Motorhead node into your workflows. - \[MongoDB Chat Memory\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memorymongochat.md): Learn how to use the MongoDB Chat Memory node in n8n. Follow technical documentation to integrate MongoDB Chat Memory node into your workflows. - \[Redis Chat Memory\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memoryredischat.md): Learn how to use the Redis Chat Memory node in n8n. Follow technical documentation to integrate Redis Chat Memory node into your workflows. - \[Postgres Chat Memory\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memorypostgreschat.md): Learn how to use the Postgres Chat Memory node in n8n. Follow technical documentation to integrate Postgres Chat Memory node into your workflows. - \[Xata\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memoryxata.md): Learn how to use the Xata node in n8n. Follow technical documentation to integrate Xata node into your workflows. - \[Zep\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memoryzep.md): Learn how to use the Zep node in n8n. Follow technical documentation to integrate Zep node into your workflows. - \[Auto-fixing Output Parser\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.outputparserautofixing.md): Learn how to use the Auto-fixing Output Parser node in n8n. Follow technical documentation to integrate Auto-fixing Output Parser node into your workflows. - \[Item List Output Parser\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.outputparseritemlist.md): Learn how to use the Item List Output Parser node in n8n. Follow technical documentation to integrate Item List Output Parser node into your workflows. - \[Structured Output Parser\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.outputparserstructured.md): Learn how to use the Structured Output Parser node in n8n. Follow technical documentation to integrate Structured Output Parser node into your workflows. - \[Common issues\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.outputparserstructured/common-issues.md): Documentation for common issues and questions in the Structured Output Parser node in n8n, a workflow automation platform. Includes details of the issue and suggested solutions. - \[Contextual Compression Retriever\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.retrievercontextualcompression.md): Learn how to use the Contextual Compression Retriever node in n8n. Follow technical documentation to integrate Contextual Compression Retriever node into your workflows. - \[MultiQuery Retriever\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.retrievermultiquery.md): Learn how to use the MultiQuery Retriever node in n8n. Follow technical documentation to integrate MultiQuery Retriever node into your workflows. - \[Vector Store Retriever\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.retrievervectorstore.md): Learn how to use the Vector Store Retriever node in n8n. Follow technical documentation to integrate Vector Store Retriever node into your workflows. - \[Workflow Retriever\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.retrieverworkflow.md): Learn how to use the Workflow Retriever node in n8n. Follow technical documentation to integrate Workflow Retriever node into your workflows. - \[Character Text Splitter\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.textsplittercharactertextsplitter.md): Learn how to use the Character Text Splitter node in n8n. Follow technical documentation to integrate Character Text Splitter node into your workflows. - \[Recursive Character Text Splitter\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.textsplitterrecursivecharactertextsplitter.md): Learn how to use the Recursive Character Text Splitter node in n8n. Follow technical documentation to integrate Recursive Character Text Splitter node into your workflows. - \[Token Splitter\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.textsplittertokensplitter.md): Learn how to use the Token Splitter node in n8n. Follow technical documentation to integrate Token Splitter node into your workflows. - \[AI Agent Tool\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolaiagent.md): Learn how to use the AI Agent Tool node in n8n. Follow technical documentation to integrate the AI Agent Tool node into your workflows. - \[Calculator\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolcalculator.md): Learn how to use the Calculator node in n8n. Follow technical documentation to integrate Calculator node into your workflows. - \[Custom Code Tool\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolcode.md): Learn how to use the Custom Code Tool node in n8n. Follow technical documentation to integrate Custom Code Tool node into your workflows. - \[MCP Client Tool\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolmcp.md): Learn how to use the MCP Client Tool node in n8n. Follow technical documentation to integrate MCP Client Tool node into your workflows. - \[SearXNG Tool\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolsearxng.md): Learn how to use the SearXNG Tool node in n8n. Follow technical documentation to integrate SearXNG Tool node into your workflows. - \[SerpApi (Google Search)\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolserpapi.md): Learn how to use the SerpApi (Google Search) node in n8n. Follow technical documentation to integrate SerpApi (Google Search) node into your workflows. - \[Think Tool\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolthink.md): Learn how to use the Think Tool node in n8n. Follow technical documentation to integrate the Tool Think node into your workflows. - \[Vector Store Question Answer Tool\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolvectorstore.md): Learn how to use the Vector Store Question Answer Tool node in n8n. Follow technical documentation to integrate Vector Store Question Answer Tool node into your workflows. - \[Wikipedia\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolwikipedia.md): Learn how to use the Wikipedia node in n8n. Follow technical documentation to integrate Wikipedia node into your workflows. - \[Wolfram|Alpha tool\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolwolframalpha.md): Learn how to use the Wolfram|Alpha tool node in n8n. Follow technical documentation to integrate Wolfram|Alpha tool node into your workflows. - \[Call n8n Workflow Tool\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolworkflow.md): Learn how to use the Call n8n Workflow Tool node in n8n. Follow technical documentation to integrate Call n8n Workflow Tool node into your workflows. - \[Reranker Cohere\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.rerankercohere.md): Learn how to use the Reranker Cohere node in n8n. Follow technical documentation to integrate Cohere reranking into your workflows. - \[Model Selector\](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.modelselector.md): Learn how to use the Model Selector node in n8n. Follow technical documentation to integrate Model Selector node into your workflows. - \[Credentials\](https://docs.n8n.io/integrations/builtin/credentials.md) - \[Action Network credentials\](https://docs.n8n.io/integrations/builtin/credentials/actionnetwork.md): Documentation for Action Network credentials. Use these credentials to authenticate Action Network in n8n, a workflow automation platform. - \[ActiveCampaign credentials\](https://docs.n8n.io/integrations/builtin/credentials/activecampaign.md): Documentation for ActiveCampaign credentials. Use these credentials to authenticate ActiveCampaign in n8n, a workflow automation platform. - \[Acuity Scheduling credentials\](https://docs.n8n.io/integrations/builtin/credentials/acuityscheduling.md): Documentation for Acuity Scheduling credentials. Use these credentials to authenticate Acuity Scheduling in n8n, a workflow automation platform. - \[Adalo credentials\](https://docs.n8n.io/integrations/builtin/credentials/adalo.md): Documentation for Adalo credentials. Use these credentials to authenticate Adalo in n8n, a workflow automation platform. - \[Affinity credentials\](https://docs.n8n.io/integrations/builtin/credentials/affinity.md): Documentation for the Affinity credentials. Use these credentials to authenticate Affinity in n8n, a workflow automation platform. - \[Agile CRM credentials\](https://docs.n8n.io/integrations/builtin/credentials/agilecrm.md): Documentation for Agile CRM credentials. Use these credentials to authenticate Agile CRM in n8n, a workflow automation platform. - \[Airtable credentials\](https://docs.n8n.io/integrations/builtin/credentials/airtable.md): Documentation for Airtable credentials. Use these credentials to authenticate Airtable in n8n, a workflow automation platform. - \[Airtop credentials\](https://docs.n8n.io/integrations/builtin/credentials/airtop.md): Documentation for the Airtop credentials. Use these credentials to authenticate Airtop in n8n, a workflow automation platform. - \[Qwen Cloud credentials\](https://docs.n8n.io/integrations/builtin/credentials/alibaba.md): Documentation for Qwen Cloud credentials. Use these credentials to authenticate Qwen Cloud in n8n, a workflow automation platform. - \[AlienVault credentials\](https://docs.n8n.io/integrations/builtin/credentials/alienvault.md): Documentation for the AlienVault credentials. Use these credentials to authenticate AlienVault in n8n, a workflow automation platform. - \[AMQP credentials\](https://docs.n8n.io/integrations/builtin/credentials/amqp.md): Documentation for AMQP credentials. Use these credentials to authenticate AMQP in n8n, a workflow automation platform. - \[Anthropic credentials\](https://docs.n8n.io/integrations/builtin/credentials/anthropic.md): Documentation for the Anthropic credentials. Use these credentials to authenticate Anthropic in n8n, a workflow automation platform. - \[APITemplate.io credentials\](https://docs.n8n.io/integrations/builtin/credentials/apitemplateio.md): Documentation for APITemplate.io credentials. Use these credentials to authenticate APITemplate.io in n8n, a workflow automation platform. - \[Asana credentials\](https://docs.n8n.io/integrations/builtin/credentials/asana.md): Documentation for Asana credentials. Use these credentials to authenticate Asana in n8n, a workflow automation platform. - \[Auth0 Management credentials\](https://docs.n8n.io/integrations/builtin/credentials/auth0management.md): Documentation for the Auth0 Management credentials. Use these credentials to authenticate Auth0 Management in n8n, a workflow automation platform. - \[Autopilot credentials\](https://docs.n8n.io/integrations/builtin/credentials/autopilot.md): Documentation for Autopilot credentials. Use these credentials to authenticate Autopilot in n8n, a workflow automation platform. - \[AWS credentials\](https://docs.n8n.io/integrations/builtin/credentials/aws.md): Documentation for AWS credentials. Use these credentials to authenticate AWS in n8n, a workflow automation platform. - \[Azure OpenAI credentials\](https://docs.n8n.io/integrations/builtin/credentials/azureopenai.md): Documentation for Azure OpenAI credentials. Use these credentials to authenticate OpenAI in n8n, a workflow automation platform. - \[Azure Cosmos DB credentials\](https://docs.n8n.io/integrations/builtin/credentials/azurecosmosdb.md): Documentation for the Azure Cosmos DB credentials. Use these credentials to authenticate Azure Cosmos DB in n8n, a workflow automation platform. - \[Azure AI Search credentials\](https://docs.n8n.io/integrations/builtin/credentials/azureaisearch.md): Documentation for Azure AI Search credentials. Use these credentials to authenticate Azure AI Search in n8n, a workflow automation platform. - \[Azure Storage credentials\](https://docs.n8n.io/integrations/builtin/credentials/azurestorage.md): Documentation for the Azure Storage credentials. Use these credentials to authenticate Azure Storage in n8n, a workflow automation platform. - \[BambooHR credentials\](https://docs.n8n.io/integrations/builtin/credentials/bamboohr.md): Documentation for BambooHR credentials. Use these credentials to authenticate BambooHR in n8n, a workflow automation platform. - \[Bannerbear credentials\](https://docs.n8n.io/integrations/builtin/credentials/bannerbear.md): Documentation for Bannerbear credentials. Use these credentials to authenticate Bannerbear in n8n, a workflow automation platform. - \[Baserow credentials\](https://docs.n8n.io/integrations/builtin/credentials/baserow.md): Documentation for Baserow credentials. Use these credentials to authenticate Baserow in n8n, a workflow automation platform. - \[Beeminder credentials\](https://docs.n8n.io/integrations/builtin/credentials/beeminder.md): Documentation for Beeminder credentials. Use these credentials to authenticate Beeminder in n8n, a workflow automation platform. - \[Bitbucket credentials\](https://docs.n8n.io/integrations/builtin/credentials/bitbucket.md): Documentation for Bitbucket credentials. Use these credentials to authenticate Bitbucket in n8n, a workflow automation platform. - \[Bitly credentials\](https://docs.n8n.io/integrations/builtin/credentials/bitly.md): Documentation for Bitly credentials. Use these credentials to authenticate Bitly in n8n, a workflow automation platform. - \[Bitwarden credentials\](https://docs.n8n.io/integrations/builtin/credentials/bitwarden.md): Documentation for Bitwarden credentials. Use these credentials to authenticate Bitwarden in n8n, a workflow automation platform. - \[Box credentials\](https://docs.n8n.io/integrations/builtin/credentials/box.md): Documentation for Box credentials. Use these credentials to authenticate Box in n8n, a workflow automation platform. - \[Brandfetch credentials\](https://docs.n8n.io/integrations/builtin/credentials/brandfetch.md): Documentation for Brandfetch credentials. Use these credentials to authenticate Brandfetch in n8n, a workflow automation platform. - \[Brave Search credentials\](https://docs.n8n.io/integrations/builtin/credentials/bravesearch.md): Documentation for the Brave Search credentials. Use these credentials to authenticate Brave Search in n8n, a workflow automation platform. - \[Brevo credentials\](https://docs.n8n.io/integrations/builtin/credentials/brevo.md): Documentation for Brevo credentials. Use these credentials to authenticate Brevo in n8n, a workflow automation platform. - \[Bubble credentials\](https://docs.n8n.io/integrations/builtin/credentials/bubble.md): Documentation for Bubble credentials. Use these credentials to authenticate Bubble in n8n, a workflow automation platform. - \[Cal.com credentials\](https://docs.n8n.io/integrations/builtin/credentials/cal.md): Documentation for Cal.com credentials. Use these credentials to authenticate Cal.com in n8n, a workflow automation platform. - \[Calendly credentials\](https://docs.n8n.io/integrations/builtin/credentials/calendly.md): Documentation for Calendly credentials. Use these credentials to authenticate Calendly in n8n, a workflow automation platform. - \[Carbon Black credentials\](https://docs.n8n.io/integrations/builtin/credentials/carbonblack.md): Documentation for the Carbon Black credentials. Use these credentials to authenticate Carbon Black in n8n, a workflow automation platform. - \[Chargebee credentials\](https://docs.n8n.io/integrations/builtin/credentials/chargebee.md): Documentation for Chargebee credentials. Use these credentials to authenticate Chargebee in n8n, a workflow automation platform. - \[CircleCI credentials\](https://docs.n8n.io/integrations/builtin/credentials/circleci.md): Documentation for CircleCI credentials. Use these credentials to authenticate CircleCI in n8n, a workflow automation platform. - \[Cisco Meraki credentials\](https://docs.n8n.io/integrations/builtin/credentials/ciscomeraki.md): Documentation for the Cisco Meraki credentials. Use these credentials to authenticate Cisco Meraki in n8n, a workflow automation platform. - \[Cisco Secure Endpoint credentials\](https://docs.n8n.io/integrations/builtin/credentials/ciscosecureendpoint.md): Documentation for the Cisco Secure Endpoint credentials. Use these credentials to authenticate Cisco Secure Endpoint in n8n, a workflow automation platform. - \[Cisco Umbrella credentials\](https://docs.n8n.io/integrations/builtin/credentials/ciscoumbrella.md): Documentation for the Cisco Umbrella credentials. Use these credentials to authenticate Cisco Umbrella in n8n, a workflow automation platform. - \[Clearbit credentials\](https://docs.n8n.io/integrations/builtin/credentials/clearbit.md): Documentation for Clearbit credentials. Use these credentials to authenticate Clearbit in n8n, a workflow automation platform. - \[ClickUp credentials\](https://docs.n8n.io/integrations/builtin/credentials/clickup.md): Documentation for ClickUp credentials. Use these credentials to authenticate ClickUp in n8n, a workflow automation platform. - \[Clockify credentials\](https://docs.n8n.io/integrations/builtin/credentials/clockify.md): Documentation for Clockify credentials. Use these credentials to authenticate Clockify in n8n, a workflow automation platform. - \[Cloudflare credentials\](https://docs.n8n.io/integrations/builtin/credentials/cloudflare.md): Documentation for Cloudflare credentials. Use these credentials to authenticate Cloudflare in n8n, a workflow automation platform. - \[Cockpit credentials\](https://docs.n8n.io/integrations/builtin/credentials/cockpit.md): Documentation for Cockpit credentials. Use these credentials to authenticate Cockpit in n8n, a workflow automation platform. - \[Coda credentials\](https://docs.n8n.io/integrations/builtin/credentials/coda.md): Documentation for Coda credentials. Use these credentials to authenticate Coda in n8n, a workflow automation platform. - \[Cohere credentials\](https://docs.n8n.io/integrations/builtin/credentials/cohere.md): Documentation for the Cohere credentials. Use these credentials to authenticate Cohere in n8n, a workflow automation platform. - \[Contentful credentials\](https://docs.n8n.io/integrations/builtin/credentials/contentful.md): Documentation for Contentful credentials. Use these credentials to authenticate Contentful in n8n, a workflow automation platform. - \[ConvertAPI credentials\](https://docs.n8n.io/integrations/builtin/credentials/convertapi.md): Documentation for the ConvertAPI credentials. Use these credentials to authenticate ConvertAPI in n8n, a workflow automation platform. - \[ConvertKit credentials\](https://docs.n8n.io/integrations/builtin/credentials/convertkit.md): Documentation for ConvertKit credentials. Use these credentials to authenticate ConvertKit in n8n, a workflow automation platform. - \[Copper credentials\](https://docs.n8n.io/integrations/builtin/credentials/copper.md): Documentation for Copper credentials. Use these credentials to authenticate Copper in n8n, a workflow automation platform. - \[Cortex credentials\](https://docs.n8n.io/integrations/builtin/credentials/cortex.md): Documentation for the Cortex credentials. Use these credentials to authenticate Cortex in n8n, a workflow automation platform. - \[CrateDB credentials\](https://docs.n8n.io/integrations/builtin/credentials/cratedb.md): Documentation for CrateDB credentials. Use these credentials to authenticate CrateDB in n8n, a workflow automation platform. - \[crowd.dev credentials\](https://docs.n8n.io/integrations/builtin/credentials/crowddev.md): Documentation for the crowd.dev credentials. Use these credentials to authenticate crowd.dev in n8n, a workflow automation platform. - \[CrowdStrike credentials\](https://docs.n8n.io/integrations/builtin/credentials/crowdstrike.md): Documentation for the CrowdStrike credentials. Use these credentials to authenticate CrowdStrike in n8n, a workflow automation platform. - \[Crypto credentials\](https://docs.n8n.io/integrations/builtin/credentials/crypto.md): Documentation for the Crypto credentials. Use these credentials to authenticate the Crypto node in n8n, a workflow automation platform. - \[Customer.io credentials\](https://docs.n8n.io/integrations/builtin/credentials/customerio.md): Documentation for Customer.io credentials. Use these credentials to authenticate Customer.io in n8n, a workflow automation platform. - \[Databricks credentials\](https://docs.n8n.io/integrations/builtin/credentials/databricks.md): Documentation for Databricks credentials. Use these credentials to authenticate Databricks in n8n, a workflow automation platform. - \[Datadog credentials\](https://docs.n8n.io/integrations/builtin/credentials/datadog.md): Documentation for the Datadog credentials. Use these credentials to authenticate Datadog in n8n, a workflow automation platform. - \[Daytona credentials\](https://docs.n8n.io/integrations/builtin/credentials/daytona.md): Documentation for the Daytona credentials. Use these credentials to authenticate Daytona in n8n, a workflow automation platform. - \[DeepL credentials\](https://docs.n8n.io/integrations/builtin/credentials/deepl.md): Documentation for DeepL credentials. Use these credentials to authenticate DeepL in n8n, a workflow automation platform. - \[DeepSeek credentials\](https://docs.n8n.io/integrations/builtin/credentials/deepseek.md): Documentation for DeepSeek credentials. Use these credentials to authenticate Deepseek in n8n, a workflow automation platform. - \[Demio credentials\](https://docs.n8n.io/integrations/builtin/credentials/demio.md): Documentation for Demio credentials. Use these credentials to authenticate Demio in n8n, a workflow automation platform. - \[DFIR-IRIS credentials\](https://docs.n8n.io/integrations/builtin/credentials/dfiriris.md): Documentation for the DFIR-IRIS credentials. Use these credentials to authenticate DFIR-IRIS in n8n, a workflow automation platform. - \[DHL credentials\](https://docs.n8n.io/integrations/builtin/credentials/dhl.md): Documentation for DHL credentials. Use these credentials to authenticate DHL in n8n, a workflow automation platform. - \[Discord credentials\](https://docs.n8n.io/integrations/builtin/credentials/discord.md): Documentation for Discord credentials. Use these credentials to authenticate Discord in n8n, a workflow automation platform. - \[Discourse credentials\](https://docs.n8n.io/integrations/builtin/credentials/discourse.md): Documentation for Discourse credentials. Use these credentials to authenticate Discourse in n8n, a workflow automation platform. - \[Disqus credentials\](https://docs.n8n.io/integrations/builtin/credentials/disqus.md): Documentation for Disqus credentials. Use these credentials to authenticate Disqus in n8n, a workflow automation platform. - \[Drift credentials\](https://docs.n8n.io/integrations/builtin/credentials/drift.md): Documentation for Drift credentials. Use these credentials to authenticate Drift in n8n, a workflow automation platform. - \[Dropbox credentials\](https://docs.n8n.io/integrations/builtin/credentials/dropbox.md): Documentation for Dropbox credentials. Use these credentials to authenticate Dropbox in n8n, a workflow automation platform. - \[Dropcontact credentials\](https://docs.n8n.io/integrations/builtin/credentials/dropcontact.md): Documentation for Dropcontact credentials. Use these credentials to authenticate Dropcontact in n8n, a workflow automation platform. - \[Dynatrace credentials\](https://docs.n8n.io/integrations/builtin/credentials/dynatrace.md): Documentation for the Dynatrace credentials. Use these credentials to authenticate Dynatrace in n8n, a workflow automation platform. - \[E-goi credentials\](https://docs.n8n.io/integrations/builtin/credentials/egoi.md): Documentation for E-goi credentials. Use these credentials to authenticate E-goi in n8n, a workflow automation platform. - \[Elasticsearch credentials\](https://docs.n8n.io/integrations/builtin/credentials/elasticsearch.md): Documentation for Elasticsearch credentials. Use these credentials to authenticate Elasticsearch in n8n, a workflow automation platform. - \[Elastic Security credentials\](https://docs.n8n.io/integrations/builtin/credentials/elasticsecurity.md): Documentation for Elastic Security credentials. Use these credentials to authenticate Elastic Security in n8n, a workflow automation platform. - \[Emelia credentials\](https://docs.n8n.io/integrations/builtin/credentials/emelia.md): Documentation for Emelia credentials. Use these credentials to authenticate Emelia in n8n, a workflow automation platform. - \[ERPNext credentials\](https://docs.n8n.io/integrations/builtin/credentials/erpnext.md): Documentation for ERPNext credentials. Use these credentials to authenticate ERPNext in n8n, a workflow automation platform. - \[Eventbrite credentials\](https://docs.n8n.io/integrations/builtin/credentials/eventbrite.md): Documentation for Eventbrite credentials. Use these credentials to authenticate Eventbrite in n8n, a workflow automation platform. - \[F5 Big-IP credentials\](https://docs.n8n.io/integrations/builtin/credentials/f5bigip.md): Documentation for the F5 Big-IP credentials. Use these credentials to authenticate F5 Big-IP in n8n, a workflow automation platform. - \[Facebook App credentials\](https://docs.n8n.io/integrations/builtin/credentials/facebookapp.md): Documentation for Facebook App credentials. Use these credentials to authenticate Facebook App in n8n, a workflow automation platform. - \[Facebook Graph API credentials\](https://docs.n8n.io/integrations/builtin/credentials/facebookgraph.md): Documentation for Facebook Graph API credentials. Use these credentials to authenticate Facebook Graph API in n8n, a workflow automation platform. - \[Facebook Lead Ads credentials\](https://docs.n8n.io/integrations/builtin/credentials/facebookleadads.md): Documentation for the Facebook Lead Ads credentials. Use these credentials to authenticate Facebook Lead Ads in n8n, a workflow automation platform. - \[Figma credentials\](https://docs.n8n.io/integrations/builtin/credentials/figma.md): Documentation for Figma credentials. Use these credentials to authenticate Figma in n8n, a workflow automation platform. - \[FileMaker credentials\](https://docs.n8n.io/integrations/builtin/credentials/filemaker.md): Documentation for FileMaker credentials. Use these credentials to authenticate FileMaker in n8n, a workflow automation platform. - \[Filescan credentials\](https://docs.n8n.io/integrations/builtin/credentials/filescan.md): Documentation for the Filescan credentials. Use these credentials to authenticate Filescan in n8n, a workflow automation platform. - \[Flow credentials\](https://docs.n8n.io/integrations/builtin/credentials/flow.md): Documentation for Flow credentials. Use these credentials to authenticate Flow in n8n, a workflow automation platform. - \[Form.io Trigger credentials\](https://docs.n8n.io/integrations/builtin/credentials/formiotrigger.md): Documentation for Form.io Trigger credentials. Use these credentials to authenticate Form.io Trigger in n8n, a workflow automation platform. - \[Formstack Trigger credentials\](https://docs.n8n.io/integrations/builtin/credentials/formstacktrigger.md): Documentation for Formstack Trigger credentials. Use these credentials to authenticate Formstack Trigger in n8n, a workflow automation platform. - \[Fortinet FortiGate credentials\](https://docs.n8n.io/integrations/builtin/credentials/fortigate.md): Documentation for the Fortinet FortiGate credentials. Use these credentials to authenticate Fortinet FortiGate in n8n, a workflow automation platform. - \[Freshdesk credentials\](https://docs.n8n.io/integrations/builtin/credentials/freshdesk.md): Documentation for Freshdesk credentials. Use these credentials to authenticate Freshdesk in n8n, a workflow automation platform. - \[Freshservice credentials\](https://docs.n8n.io/integrations/builtin/credentials/freshservice.md): Documentation for Freshservice credentials. Use these credentials to authenticate Freshservice in n8n, a workflow automation platform. - \[Freshworks CRM credentials\](https://docs.n8n.io/integrations/builtin/credentials/freshworkscrm.md): Documentation for Freshworks CRM credentials. Use these credentials to authenticate Freshworks CRM in n8n, a workflow automation platform. - \[FTP credentials\](https://docs.n8n.io/integrations/builtin/credentials/ftp.md): Documentation for FTP credentials. Use these credentials to authenticate FTP in n8n, a workflow automation platform. - \[GetResponse credentials\](https://docs.n8n.io/integrations/builtin/credentials/getresponse.md): Documentation for GetResponse credentials. Use these credentials to authenticate GetResponse in n8n, a workflow automation platform. - \[Ghost credentials\](https://docs.n8n.io/integrations/builtin/credentials/ghost.md): Documentation for Ghost credentials. Use these credentials to authenticate Ghost in n8n, a workflow automation platform. - \[Git credentials\](https://docs.n8n.io/integrations/builtin/credentials/git.md): Documentation for Git credentials. Use these credentials to authenticate Git in n8n, a workflow automation platform. - \[GitHub credentials\](https://docs.n8n.io/integrations/builtin/credentials/github.md): Documentation for GitHub credentials. Use these credentials to authenticate GitHub in n8n, a workflow automation platform. - \[GitLab credentials\](https://docs.n8n.io/integrations/builtin/credentials/gitlab.md): Documentation for GitLab credentials. Use these credentials to authenticate GitLab in n8n, a workflow automation platform. - \[Gong credentials\](https://docs.n8n.io/integrations/builtin/credentials/gong.md): Documentation for the Gong credentials. Use these credentials to authenticate Gong in n8n, a workflow automation platform. - \[Google\](https://docs.n8n.io/integrations/builtin/credentials/google.md): Documentation for Google credentials. Use these credentials to authenticate Google in n8n, a workflow automation platform. - \[Google OAuth2 single service\](https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service.md): Documentation for single service OAuth2 Google credentials. Use these credentials to authenticate Google in n8n, a workflow automation platform. - \[Google OAuth2 generic\](https://docs.n8n.io/integrations/builtin/credentials/google/oauth-generic.md): Documentation for generic OAuth2 Google credentials. Use these credentials to authenticate Google services in n8n, a workflow automation platform. - \[Google Service Account\](https://docs.n8n.io/integrations/builtin/credentials/google/service-account.md): Documentation for service account Google credentials. Use these credentials to authenticate Google in n8n, a workflow automation platform. - \[Google Gemini(PaLM) credentials\](https://docs.n8n.io/integrations/builtin/credentials/googleai.md): Documentation for the Google Gemini(PaLM) credentials. Use these credentials to authenticate Google Gemini and Google PaLM AI nodes in n8n, a workflow automation platform. - \[Gotify credentials\](https://docs.n8n.io/integrations/builtin/credentials/gotify.md): Documentation for Gotify credentials. Use these credentials to authenticate Gotify in n8n, a workflow automation platform. - \[GoToWebinar credentials\](https://docs.n8n.io/integrations/builtin/credentials/gotowebinar.md): Documentation for GoToWebinar credentials. Use these credentials to authenticate GoToWebinar in n8n, a workflow automation platform. - \[Grafana credentials\](https://docs.n8n.io/integrations/builtin/credentials/grafana.md): Documentation for Grafana credentials. Use these credentials to authenticate Grafana in n8n, a workflow automation platform. - \[Grist credentials\](https://docs.n8n.io/integrations/builtin/credentials/grist.md): Documentation for Grist credentials. Use these credentials to authenticate Grist in n8n, a workflow automation platform. - \[Groq credentials\](https://docs.n8n.io/integrations/builtin/credentials/groq.md): Documentation for the Groq credentials. Use these credentials to authenticate Groq in n8n, a workflow automation platform. - \[Gumroad credentials\](https://docs.n8n.io/integrations/builtin/credentials/gumroad.md): Documentation for Gumroad credentials. Use these credentials to authenticate Gumroad in n8n, a workflow automation platform. - \[HaloPSA credentials\](https://docs.n8n.io/integrations/builtin/credentials/halopsa.md): Documentation for HaloPSA credentials. Use these credentials to authenticate HaloPSA in n8n, a workflow automation platform. - \[Harvest credentials\](https://docs.n8n.io/integrations/builtin/credentials/harvest.md): Documentation for Harvest credentials. Use these credentials to authenticate Harvest in n8n, a workflow automation platform. - \[Help Scout credentials\](https://docs.n8n.io/integrations/builtin/credentials/helpscout.md): Documentation for Help Scout credentials. Use these credentials to authenticate Help Scout in n8n, a workflow automation platform. - \[HighLevel credentials\](https://docs.n8n.io/integrations/builtin/credentials/highlevel.md): Documentation for HighLevel credentials. Use these credentials to authenticate HighLevel in n8n, a workflow automation platform. - \[Home Assistant credentials\](https://docs.n8n.io/integrations/builtin/credentials/homeassistant.md): Documentation for Home Assistant credentials. Use these credentials to authenticate Home Assistant in n8n, a workflow automation platform. - \[HTTP Request credentials\](https://docs.n8n.io/integrations/builtin/credentials/httprequest.md): Documentation for HTTP Request credentials. Use these credentials to authenticate HTTP Request in n8n, a workflow automation platform. - \[HubSpot credentials\](https://docs.n8n.io/integrations/builtin/credentials/hubspot.md): Documentation for HubSpot credentials. Use these credentials to authenticate HubSpot in n8n, a workflow automation platform. - \[Hugging Face credentials\](https://docs.n8n.io/integrations/builtin/credentials/huggingface.md): Documentation for the Hugging Face credentials. Use these credentials to authenticate Hugging Face in n8n, a workflow automation platform. - \[Humantic AI credentials\](https://docs.n8n.io/integrations/builtin/credentials/humanticai.md): Documentation for Humantic AI credentials. Use these credentials to authenticate Humantic AI in n8n, a workflow automation platform. - \[Hunter credentials\](https://docs.n8n.io/integrations/builtin/credentials/hunter.md): Documentation for Hunter credentials. Use these credentials to authenticate Hunter in n8n, a workflow automation platform. - \[Hybrid Analysis credentials\](https://docs.n8n.io/integrations/builtin/credentials/hybridanalysis.md): Documentation for the Hybrid Analysis credentials. Use these credentials to authenticate Hybrid Analysis in n8n, a workflow automation platform. - \[IMAP\](https://docs.n8n.io/integrations/builtin/credentials/imap.md): Documentation for IMAP credentials. Use these credentials to authenticate IMAP in n8n, a workflow automation platform. - \[Gmail\](https://docs.n8n.io/integrations/builtin/credentials/imap/gmail.md): Documentation for Gmail IMAP credentials. Use these credentials to authenticate Gmail IMAP in n8n, a workflow automation platform. - \[Outlook.com\](https://docs.n8n.io/integrations/builtin/credentials/imap/outlook.md): Documentation for Outlook.com IMAP credentials. Use these credentials to authenticate Outlook.com IMAP in n8n, a workflow automation platform. - \[Yahoo\](https://docs.n8n.io/integrations/builtin/credentials/imap/yahoo.md): Documentation for Yahoo IMAP credentials. Use these credentials to authenticate Yahoo IMAP in n8n, a workflow automation platform. - \[Imperva WAF credentials\](https://docs.n8n.io/integrations/builtin/credentials/impervawaf.md): Documentation for the Imperva WAF credentials. Use these credentials to authenticate Imperva WAF in n8n, a workflow automation platform. - \[Intercom credentials\](https://docs.n8n.io/integrations/builtin/credentials/intercom.md): Documentation for Intercom credentials. Use these credentials to authenticate Intercom in n8n, a workflow automation platform. - \[Invoice Ninja credentials\](https://docs.n8n.io/integrations/builtin/credentials/invoiceninja.md): Documentation for Invoice Ninja credentials. Use these credentials to authenticate Invoice Ninja in n8n, a workflow automation platform. - \[Iterable credentials\](https://docs.n8n.io/integrations/builtin/credentials/iterable.md): Documentation for Iterable credentials. Use these credentials to authenticate Iterable in n8n, a workflow automation platform. - \[Jenkins credentials\](https://docs.n8n.io/integrations/builtin/credentials/jenkins.md): Documentation for Jenkins credentials. Use these credentials to authenticate Jenkins in n8n, a workflow automation platform. - \[Jina AI credentials\](https://docs.n8n.io/integrations/builtin/credentials/jinaai.md): Documentation for the Jina AI credentials. Use these credentials to authenticate Jina AI in n8n, a workflow automation platform. - \[Jira credentials\](https://docs.n8n.io/integrations/builtin/credentials/jira.md): Documentation for Jira credentials. Use these credentials to authenticate Jira in n8n, a workflow automation platform. - \[Jotform credentials\](https://docs.n8n.io/integrations/builtin/credentials/jotform.md): Documentation for Jotform credentials. Use these credentials to authenticate Jotform in n8n, a workflow automation platform. - \[JWT credentials\](https://docs.n8n.io/integrations/builtin/credentials/jwt.md): Documentation for the JWT credentials. Use these credentials to authenticate JWT in n8n, a workflow automation platform. - \[Kafka credentials\](https://docs.n8n.io/integrations/builtin/credentials/kafka.md): Documentation for Kafka credentials. Use these credentials to authenticate Kafka in n8n, a workflow automation platform. - \[Keap credentials\](https://docs.n8n.io/integrations/builtin/credentials/keap.md): Documentation for Keap credentials. Use these credentials to authenticate Keap in n8n, a workflow automation platform. - \[Kibana credentials\](https://docs.n8n.io/integrations/builtin/credentials/kibana.md): Documentation for the Kibana credentials. Use these credentials to authenticate Kibana in n8n, a workflow automation platform. - \[Kitemaker credentials\](https://docs.n8n.io/integrations/builtin/credentials/kitemaker.md): Documentation for Kitemaker credentials. Use these credentials to authenticate Kitemaker in n8n, a workflow automation platform. - \[KoboToolbox credentials\](https://docs.n8n.io/integrations/builtin/credentials/kobotoolbox.md): Documentation for KoboToolbox credentials. Use these credentials to authenticate KoboToolbox in n8n, a workflow automation platform. - \[LDAP credentials\](https://docs.n8n.io/integrations/builtin/credentials/ldap.md): Documentation for the LDAP credentials. Use these credentials to authenticate LDAP in n8n, a workflow automation platform. - \[Lemlist credentials\](https://docs.n8n.io/integrations/builtin/credentials/lemlist.md): Documentation for Lemlist credentials. Use these credentials to authenticate Lemlist in n8n, a workflow automation platform. - \[Lemonade credentials\](https://docs.n8n.io/integrations/builtin/credentials/lemonade.md): Documentation for Lemonade credentials. Use these credentials to authenticate Lemonade in n8n, a workflow automation platform. - \[Line credentials\](https://docs.n8n.io/integrations/builtin/credentials/line.md): Documentation for Line credentials. Use these credentials to authenticate the Line node in n8n, a workflow automation platform. - \[Linear credentials\](https://docs.n8n.io/integrations/builtin/credentials/linear.md): Documentation for Linear credentials. Use these credentials to authenticate Linear in n8n, a workflow automation platform. - \[LingvaNex credentials\](https://docs.n8n.io/integrations/builtin/credentials/lingvanex.md): Documentation for LingvaNex credentials. Use these credentials to authenticate LingvaNex in n8n, a workflow automation platform. - \[LinkedIn credentials\](https://docs.n8n.io/integrations/builtin/credentials/linkedin.md): Documentation for LinkedIn credentials. Use these credentials to authenticate LinkedIn in n8n, a workflow automation platform. - \[LoneScale credentials\](https://docs.n8n.io/integrations/builtin/credentials/lonescale.md): Documentation for LoneScale credentials. Use these credentials to authenticate LoneScale in n8n, a workflow automation platform. - \[Magento 2 credentials\](https://docs.n8n.io/integrations/builtin/credentials/magento2.md): Documentation for Magento 2 credentials. Use these credentials to authenticate Magento 2 in n8n, a workflow automation platform. - \[Mailcheck credentials\](https://docs.n8n.io/integrations/builtin/credentials/mailcheck.md): Documentation for Mailcheck credentials. Use these credentials to authenticate Mailcheck in n8n, a workflow automation platform. - \[Mailchimp credentials\](https://docs.n8n.io/integrations/builtin/credentials/mailchimp.md): Documentation for Mailchimp credentials. Use these credentials to authenticate Mailchimp in n8n, a workflow automation platform. - \[MailerLite credentials\](https://docs.n8n.io/integrations/builtin/credentials/mailerlite.md): Documentation for MailerLite credentials. Use these credentials to authenticate MailerLite in n8n, a workflow automation platform. - \[Mailgun credentials\](https://docs.n8n.io/integrations/builtin/credentials/mailgun.md): Documentation for Mailgun credentials. Use these credentials to authenticate Mailgun in n8n, a workflow automation platform. - \[Mailjet credentials\](https://docs.n8n.io/integrations/builtin/credentials/mailjet.md): Documentation for Mailjet credentials. Use these credentials to authenticate Mailjet in n8n, a workflow automation platform. - \[Malcore credentials\](https://docs.n8n.io/integrations/builtin/credentials/malcore.md): Documentation for the Malcore credentials. Use these credentials to authenticate Malcore in n8n, a workflow automation platform. - \[Mandrill credentials\](https://docs.n8n.io/integrations/builtin/credentials/mandrill.md): Documentation for Mandrill credentials. Use these credentials to authenticate Mandrill in n8n, a workflow automation platform. - \[Marketstack credentials\](https://docs.n8n.io/integrations/builtin/credentials/marketstack.md): Documentation for Marketstack credentials. Use these credentials to authenticate Marketstack in n8n, a workflow automation platform. - \[Matrix credentials\](https://docs.n8n.io/integrations/builtin/credentials/matrix.md): Documentation for Matrix credentials. Use these credentials to authenticate Matrix in n8n, a workflow automation platform. - \[Mattermost credentials\](https://docs.n8n.io/integrations/builtin/credentials/mattermost.md): Documentation for Mattermost credentials. Use these credentials to authenticate Mattermost in n8n, a workflow automation platform. - \[Mautic credentials\](https://docs.n8n.io/integrations/builtin/credentials/mautic.md): Documentation for Mautic credentials. Use these credentials to authenticate Mautic in n8n, a workflow automation platform. - \[Medium credentials\](https://docs.n8n.io/integrations/builtin/credentials/medium.md): Documentation for Medium credentials. Use these credentials to authenticate Medium in n8n, a workflow automation platform. - \[MessageBird credentials\](https://docs.n8n.io/integrations/builtin/credentials/messagebird.md): Documentation for MessageBird credentials. Use these credentials to authenticate MessageBird in n8n, a workflow automation platform. - \[Metabase credentials\](https://docs.n8n.io/integrations/builtin/credentials/metabase.md): Documentation for Metabase credentials. Use these credentials to authenticate Metabase in n8n, a workflow automation platform. - \[Microsoft credentials\](https://docs.n8n.io/integrations/builtin/credentials/microsoft.md): Documentation for Microsoft credentials. Use these credentials to authenticate Microsoft in n8n, a workflow automation platform. - \[Microsoft Azure Monitor credentials\](https://docs.n8n.io/integrations/builtin/credentials/microsoftazuremonitor.md): Documentation for the Microsoft Azure Monitor credentials. Use these credentials to authenticate Microsoft Azure Monitor in n8n, a workflow automation platform. - \[Microsoft Entra ID credentials\](https://docs.n8n.io/integrations/builtin/credentials/microsoftentra.md): Documentation for the Microsoft Entra ID credentials. Use these credentials to authenticate Microsoft Entra ID in n8n, a workflow automation platform. - \[Microsoft SQL credentials\](https://docs.n8n.io/integrations/builtin/credentials/microsoftsql.md): Documentation for Microsoft SQL credentials. Use these credentials to authenticate Microsoft SQL in n8n, a workflow automation platform. - \[Microsoft Agent 365 credentials\](https://docs.n8n.io/integrations/builtin/credentials/microsoftagent365.md): Documentation for Microsoft Agent 365 credentials. Use these credentials to authenticate Microsoft Agent 365 in n8n, a workflow automation platform. - \[Milvus credentials\](https://docs.n8n.io/integrations/builtin/credentials/milvus.md): Documentation for the Milvus credentials. Use these credentials to authenticate Milvus in n8n, a workflow automation platform. - \[Mindee credentials\](https://docs.n8n.io/integrations/builtin/credentials/mindee.md): Documentation for Mindee credentials. Use these credentials to authenticate Mindee in n8n, a workflow automation platform. - \[Miro credentials\](https://docs.n8n.io/integrations/builtin/credentials/miro.md): Documentation for the Miro credentials. Use these credentials to authenticate Miro in n8n, a workflow automation platform. - \[MISP credentials\](https://docs.n8n.io/integrations/builtin/credentials/misp.md): Documentation for MISP credentials. Use these credentials to authenticate MISP in n8n, a workflow automation platform. - \[Mist credentials\](https://docs.n8n.io/integrations/builtin/credentials/mist.md): Documentation for the Mist credentials. Use these credentials to authenticate Mist in n8n, a workflow automation platform. - \[MiniMax credentials\](https://docs.n8n.io/integrations/builtin/credentials/minimax.md): Documentation for MiniMax credentials. Use these credentials to authenticate MiniMax in n8n, a workflow automation platform. - \[Mistral Cloud credentials\](https://docs.n8n.io/integrations/builtin/credentials/mistral.md): Documentation for the Mistral Cloud credentials. Use these credentials to authenticate Mistral Cloud in n8n, a workflow automation platform. - \[Mocean credentials\](https://docs.n8n.io/integrations/builtin/credentials/mocean.md): Documentation for Mocean credentials. Use these credentials to authenticate Mocean in n8n, a workflow automation platform. - \[monday.com credentials\](https://docs.n8n.io/integrations/builtin/credentials/mondaycom.md): Documentation for monday.com credentials. Use these credentials to authenticate monday.com in n8n, a workflow automation platform. - \[MongoDB credentials\](https://docs.n8n.io/integrations/builtin/credentials/mongodb.md): Documentation for MongoDB credentials. Use these credentials to authenticate MongoDB in n8n, a workflow automation platform. - \[Monica CRM credentials\](https://docs.n8n.io/integrations/builtin/credentials/monicacrm.md): Documentation for Monica CRM credentials. Use these credentials to authenticate Monica CRM in n8n, a workflow automation platform. - \[Moonshot credentials\](https://docs.n8n.io/integrations/builtin/credentials/moonshot.md): Documentation for Moonshot credentials. Use these credentials to authenticate Moonshot in n8n, a workflow automation platform. - \[Motorhead credentials\](https://docs.n8n.io/integrations/builtin/credentials/motorhead.md): Documentation for the Motorhead credentials. Use these credentials to authenticate Motorhead in n8n, a workflow automation platform. - \[MQTT credentials\](https://docs.n8n.io/integrations/builtin/credentials/mqtt.md): Documentation for MQTT credentials. Use these credentials to authenticate MQTT in n8n, a workflow automation platform. - \[MSG91 credentials\](https://docs.n8n.io/integrations/builtin/credentials/msg91.md): Documentation for MSG91 credentials. Use these credentials to authenticate MSG91 in n8n, a workflow automation platform. - \[MySQL credentials\](https://docs.n8n.io/integrations/builtin/credentials/mysql.md): Documentation for MySQL credentials. Use these credentials to authenticate MySQL in n8n, a workflow automation platform. - \[NASA credentials\](https://docs.n8n.io/integrations/builtin/credentials/nasa.md): Documentation for NASA credentials. Use these credentials to authenticate NASA in n8n, a workflow automation platform. - \[Netlify credentials\](https://docs.n8n.io/integrations/builtin/credentials/netlify.md): Documentation for Netlify credentials. Use these credentials to authenticate Netlify in n8n, a workflow automation platform. - \[Netscaler ADC credentials\](https://docs.n8n.io/integrations/builtin/credentials/netscaleradc.md): Documentation for Netscaler ADC credentials. Use these credentials to authenticate Netscaler ADC in n8n, a workflow automation platform. - \[Nextcloud credentials\](https://docs.n8n.io/integrations/builtin/credentials/nextcloud.md): Documentation for Nextcloud credentials. Use these credentials to authenticate Nextcloud in n8n, a workflow automation platform. - \[NocoDB credentials\](https://docs.n8n.io/integrations/builtin/credentials/nocodb.md): Documentation for NocoDB credentials. Use these credentials to authenticate NocoDB in n8n, a workflow automation platform. - \[Notion credentials\](https://docs.n8n.io/integrations/builtin/credentials/notion.md): Documentation for Notion credentials. Use these credentials to authenticate Notion in n8n, a workflow automation platform. - \[npm credentials\](https://docs.n8n.io/integrations/builtin/credentials/npm.md): Documentation for the npm credentials. Use these credentials to authenticate npm in n8n, a workflow automation platform. - \[NVIDIA Nemotron credentials\](https://docs.n8n.io/integrations/builtin/credentials/nvidia.md): Documentation for NVIDIA Nemotron credentials. Use these credentials to authenticate NVIDIA Nemotron in n8n, a workflow automation platform. - \[Odoo credentials\](https://docs.n8n.io/integrations/builtin/credentials/odoo.md): Documentation for Odoo credentials. Use these credentials to authenticate Odoo in n8n, a workflow automation platform. - \[Okta credentials\](https://docs.n8n.io/integrations/builtin/credentials/okta.md): Documentation for the Okta credentials. Use these credentials to authenticate Okta in n8n, a workflow automation platform. - \[Ollama credentials\](https://docs.n8n.io/integrations/builtin/credentials/ollama.md): Documentation for the Ollama credentials. Use these credentials to authenticate Ollama in n8n, a workflow automation platform. - \[One Simple API credentials\](https://docs.n8n.io/integrations/builtin/credentials/onesimpleapi.md): Documentation for One Simple API credentials. Use these credentials to authenticate One Simple API in n8n, a workflow automation platform. - \[Onfleet credentials\](https://docs.n8n.io/integrations/builtin/credentials/onfleet.md): Documentation for Onfleet credentials. Use these credentials to authenticate Onfleet in n8n, a workflow automation platform. - \[OpenAI credentials\](https://docs.n8n.io/integrations/builtin/credentials/openai.md): Documentation for OpenAI credentials. Use these credentials to authenticate OpenAI in n8n, a workflow automation platform. - \[OpenCTI credentials\](https://docs.n8n.io/integrations/builtin/credentials/opencti.md): Documentation for the OpenCTI credentials. Use these credentials to authenticate OpenCTI in n8n, a workflow automation platform. - \[OpenRouter credentials\](https://docs.n8n.io/integrations/builtin/credentials/openrouter.md): Documentation for OpenRouter credentials. Use these credentials to authenticate OpenRouter in n8n, a workflow automation platform. - \[OpenWeatherMap credentials\](https://docs.n8n.io/integrations/builtin/credentials/openweathermap.md): Documentation for OpenWeatherMap credentials. Use these credentials to authenticate OpenWeatherMap in n8n, a workflow automation platform. - \[Oracle Database credentials\](https://docs.n8n.io/integrations/builtin/credentials/oracledb.md): Documentation for Oracle Database credentials. Use these credentials to authenticate Oracle Database in n8n, a workflow automation platform. - \[Oura credentials\](https://docs.n8n.io/integrations/builtin/credentials/oura.md): Documentation for Oura credentials. Use these credentials to authenticate Oura in n8n, a workflow automation platform. - \[Paddle credentials\](https://docs.n8n.io/integrations/builtin/credentials/paddle.md): Documentation for Paddle credentials. Use these credentials to authenticate Paddle in n8n, a workflow automation platform. - \[PagerDuty credentials\](https://docs.n8n.io/integrations/builtin/credentials/pagerduty.md): Documentation for PagerDuty credentials. Use these credentials to authenticate PagerDuty in n8n, a workflow automation platform. - \[PayPal credentials\](https://docs.n8n.io/integrations/builtin/credentials/paypal.md): Documentation for PayPal credentials. Use these credentials to authenticate PayPal in n8n, a workflow automation platform. - \[Peekalink credentials\](https://docs.n8n.io/integrations/builtin/credentials/peekalink.md): Documentation for Peekalink credentials. Use these credentials to authenticate Peekalink in n8n, a workflow automation platform. - \[Perplexity credentials\](https://docs.n8n.io/integrations/builtin/credentials/perplexity.md): Documentation for the Perplexity credentials. Use these credentials to authenticate Perplexity in n8n, a workflow automation platform. - \[PhantomBuster credentials\](https://docs.n8n.io/integrations/builtin/credentials/phantombuster.md): Documentation for PhantomBuster credentials. Use these credentials to authenticate PhantomBuster in n8n, a workflow automation platform. - \[Philips Hue credentials\](https://docs.n8n.io/integrations/builtin/credentials/philipshue.md): Documentation for Philips Hue credentials. Use these credentials to authenticate Philips Hue in n8n, a workflow automation platform. - \[Chroma credentials\](https://docs.n8n.io/integrations/builtin/credentials/chroma.md): Documentation for the Chroma credentials. Use these credentials to authenticate Chroma in n8n, a workflow automation platform. - \[Pinecone credentials\](https://docs.n8n.io/integrations/builtin/credentials/pinecone.md): Documentation for the Pinecone credentials. Use these credentials to authenticate Pinecone in n8n, a workflow automation platform. - \[Pipedrive credentials\](https://docs.n8n.io/integrations/builtin/credentials/pipedrive.md): Documentation for Pipedrive credentials. Use these credentials to authenticate Pipedrive in n8n, a workflow automation platform. - \[Plivo credentials\](https://docs.n8n.io/integrations/builtin/credentials/plivo.md): Documentation for Plivo credentials. Use these credentials to authenticate Plivo in n8n, a workflow automation platform. - \[Postgres credentials\](https://docs.n8n.io/integrations/builtin/credentials/postgres.md): Documentation for Postgres credentials. Use these credentials to authenticate Postgres in n8n, a workflow automation platform. - \[PostHog credentials\](https://docs.n8n.io/integrations/builtin/credentials/posthog.md): Documentation for PostHog credentials. Use these credentials to authenticate PostHog in n8n, a workflow automation platform. - \[Postmark credentials\](https://docs.n8n.io/integrations/builtin/credentials/postmark.md): Documentation for Postmark credentials. Use these credentials to authenticate Postmark in n8n, a workflow automation platform. - \[ProfitWell credentials\](https://docs.n8n.io/integrations/builtin/credentials/profitwell.md): Documentation for ProfitWell credentials. Use these credentials to authenticate ProfitWell in n8n, a workflow automation platform. - \[Pushbullet credentials\](https://docs.n8n.io/integrations/builtin/credentials/pushbullet.md): Documentation for Pushbullet credentials. Use these credentials to authenticate Pushbullet in n8n, a workflow automation platform. - \[Pushcut credentials\](https://docs.n8n.io/integrations/builtin/credentials/pushcut.md): Documentation for Pushcut credentials. Use these credentials to authenticate Pushcut in n8n, a workflow automation platform. - \[Pushover credentials\](https://docs.n8n.io/integrations/builtin/credentials/pushover.md): Documentation for Pushover credentials. Use these credentials to authenticate Pushover in n8n, a workflow automation platform. - \[QRadar credentials\](https://docs.n8n.io/integrations/builtin/credentials/qradar.md): Documentation for the QRadar credentials. Use these credentials to authenticate QRadar in n8n, a workflow automation platform. - \[Qdrant credentials\](https://docs.n8n.io/integrations/builtin/credentials/qdrant.md): Documentation for the Qdrant credentials. Use these credentials to authenticate Qdrant in n8n, a workflow automation platform. - \[Qualys credentials\](https://docs.n8n.io/integrations/builtin/credentials/qualys.md): Documentation for the Qualys credentials. Use these credentials to authenticate Qualys in n8n, a workflow automation platform. - \[QuestDB credentials\](https://docs.n8n.io/integrations/builtin/credentials/questdb.md): Documentation for QuestDB credentials. Use these credentials to authenticate QuestDB in n8n, a workflow automation platform. - \[Quick Base credentials\](https://docs.n8n.io/integrations/builtin/credentials/quickbase.md): Documentation for Quick Base credentials. Use these credentials to authenticate Quick Base in n8n, a workflow automation platform. - \[QuickBooks credentials\](https://docs.n8n.io/integrations/builtin/credentials/quickbooks.md): Documentation for QuickBooks credentials. Use these credentials to authenticate QuickBooks in n8n, a workflow automation platform. - \[RabbitMQ credentials\](https://docs.n8n.io/integrations/builtin/credentials/rabbitmq.md): Documentation for RabbitMQ credentials. Use these credentials to authenticate RabbitMQ in n8n, a workflow automation platform. - \[Raindrop credentials\](https://docs.n8n.io/integrations/builtin/credentials/raindrop.md): Documentation for Raindrop credentials. Use these credentials to authenticate Raindrop in n8n, a workflow automation platform. - \[Rapid7 InsightVM credentials\](https://docs.n8n.io/integrations/builtin/credentials/rapid7insightvm.md): Documentation for the Rapid7 InsightVM credentials. Use these credentials to authenticate Rapid7 InsightVm in n8n, a workflow automation platform. - \[Recorded Future credentials\](https://docs.n8n.io/integrations/builtin/credentials/recordedfuture.md): Documentation for the Recorded Future credentials. Use these credentials to authenticate Recorded Future in n8n, a workflow automation platform. - \[Reddit credentials\](https://docs.n8n.io/integrations/builtin/credentials/reddit.md): Documentation for Reddit credentials. Use these credentials to authenticate Reddit in n8n, a workflow automation platform. - \[Redis credentials\](https://docs.n8n.io/integrations/builtin/credentials/redis.md): Documentation for Redis credentials. Use these credentials to authenticate Redis in n8n, a workflow automation platform. - \[Rocket.Chat credentials\](https://docs.n8n.io/integrations/builtin/credentials/rocketchat.md): Documentation for Rocket.Chat credentials. Use these credentials to authenticate Rocket.Chat in n8n, a workflow automation platform. - \[Rundeck credentials\](https://docs.n8n.io/integrations/builtin/credentials/rundeck.md): Documentation for Rundeck credentials. Use these credentials to authenticate Rundeck in n8n, a workflow automation platform. - \[S3 credentials\](https://docs.n8n.io/integrations/builtin/credentials/s3.md): Documentation for S3 credentials. Use these credentials to authenticate S3 in n8n, a workflow automation platform. - \[Salesforce credentials\](https://docs.n8n.io/integrations/builtin/credentials/salesforce.md): Documentation for Salesforce credentials. Use these credentials to authenticate Salesforce in n8n, a workflow automation platform. - \[Salesmate credentials\](https://docs.n8n.io/integrations/builtin/credentials/salesmate.md): Documentation for Salesmate credentials. Use these credentials to authenticate Salesmate in n8n, a workflow automation platform. - \[Schema Registry credentials\](https://docs.n8n.io/integrations/builtin/credentials/schemaregistry.md): Documentation for Schema Registry credentials. Use these credentials to authenticate Schema Registry in n8n, a workflow automation platform. - \[SearXNG credentials\](https://docs.n8n.io/integrations/builtin/credentials/searxng.md): Documentation for the SearXNG credentials. Use these credentials to authenticate SearXNG in n8n, a workflow automation platform. - \[SeaTable credentials\](https://docs.n8n.io/integrations/builtin/credentials/seatable.md): Documentation for SeaTable credentials. Use these credentials to authenticate SeaTable in n8n, a workflow automation platform. - \[SecurityScorecard credentials\](https://docs.n8n.io/integrations/builtin/credentials/securityscorecard.md): Documentation for SecurityScorecard credentials. Use these credentials to authenticate SecurityScorecard in n8n, a workflow automation platform. - \[Segment credentials\](https://docs.n8n.io/integrations/builtin/credentials/segment.md): Documentation for Segment credentials. Use these credentials to authenticate Segment in n8n, a workflow automation platform. - \[Sekoia credentials\](https://docs.n8n.io/integrations/builtin/credentials/sekoia.md): Documentation for the Sekoia credentials. Use these credentials to authenticate Sekoia in n8n, a workflow automation platform. - \[Send Email\](https://docs.n8n.io/integrations/builtin/credentials/send-email.md): Documentation for Send Email credentials. Use these credentials to authenticate Send Email in n8n, a workflow automation platform. - \[Gmail\](https://docs.n8n.io/integrations/builtin/credentials/send-email/gmail.md): Documentation for Gmail Send Email credentials. Use these credentials to authenticate Send Email with Gmail in n8n, a workflow automation platform. - \[Outlook.com\](https://docs.n8n.io/integrations/builtin/credentials/send-email/outlook.md): Documentation for Outlook.com Send Email credentials. Use these credentials to authenticate Send Email with Outlook.com in n8n, a workflow automation platform. - \[Yahoo\](https://docs.n8n.io/integrations/builtin/credentials/send-email/yahoo.md): Documentation for Yahoo Send Email credentials. Use these credentials to authenticate Send Email with Yahoo in n8n, a workflow automation platform. - \[SendGrid credentials\](https://docs.n8n.io/integrations/builtin/credentials/sendgrid.md): Documentation for SendGrid credentials. Use these credentials to authenticate SendGrid in n8n, a workflow automation platform. - \[Sendy credentials\](https://docs.n8n.io/integrations/builtin/credentials/sendy.md): Documentation for Sendy credentials. Use these credentials to authenticate Sendy in n8n, a workflow automation platform. - \[Sentry.io credentials\](https://docs.n8n.io/integrations/builtin/credentials/sentryio.md): Documentation for Sentry.io credentials. Use these credentials to authenticate Sentry.io in n8n, a workflow automation platform. - \[Serp credentials\](https://docs.n8n.io/integrations/builtin/credentials/serp.md): Documentation for the Serp credentials. Use these credentials to authenticate Serp in n8n, a workflow automation platform. - \[ServiceNow credentials\](https://docs.n8n.io/integrations/builtin/credentials/servicenow.md): Documentation for ServiceNow credentials. Use these credentials to authenticate ServiceNow in n8n, a workflow automation platform. - \[seven credentials\](https://docs.n8n.io/integrations/builtin/credentials/sms77.md): Documentation for seven credentials. Use these credentials to authenticate seven in n8n, a workflow automation platform. - \[Shopify credentials\](https://docs.n8n.io/integrations/builtin/credentials/shopify.md): Documentation for Shopify credentials. Use these credentials to authenticate Shopify in n8n, a workflow automation platform. - \[Shuffler credentials\](https://docs.n8n.io/integrations/builtin/credentials/shuffler.md): Documentation for the Shuffler credentials. Use these credentials to authenticate Shuffle in n8n, a workflow automation platform. - \[SIGNL4 credentials\](https://docs.n8n.io/integrations/builtin/credentials/signl4.md): Documentation for SIGNL4 credentials. Use these credentials to authenticate SIGNL4 in n8n, a workflow automation platform. - \[Slack credentials\](https://docs.n8n.io/integrations/builtin/credentials/slack.md): Documentation for Slack credentials. Use these credentials to authenticate Slack in n8n, a workflow automation platform. - \[Snowflake credentials\](https://docs.n8n.io/integrations/builtin/credentials/snowflake.md): Documentation for Snowflake credentials. Use these credentials to authenticate Snowflake in n8n, a workflow automation platform. - \[SolarWinds IPAM credentials\](https://docs.n8n.io/integrations/builtin/credentials/solarwindsipam.md): Documentation for the SolarWinds IPAM credentials. Use these credentials to authenticate SolarWinds IPAM in n8n, a workflow automation platform. - \[SolarWinds Observability SaaS credentials\](https://docs.n8n.io/integrations/builtin/credentials/solarwindsobservability.md): Documentation for the SolarWinds Observability SaaS credential, Use these credentials to authenticate SolarWinds Observability SaaS in n8n, a workflow automation platform - \[Splunk credentials\](https://docs.n8n.io/integrations/builtin/credentials/splunk.md): Documentation for Splunk credentials. Use these credentials to authenticate Splunk in n8n, a workflow automation platform. - \[Spotify credentials\](https://docs.n8n.io/integrations/builtin/credentials/spotify.md): Documentation for Spotify credentials. Use these credentials to authenticate Spotify in n8n, a workflow automation platform. - \[SSH credentials\](https://docs.n8n.io/integrations/builtin/credentials/ssh.md): Documentation for SSH credentials. Use these credentials to authenticate SSH in n8n, a workflow automation platform. - \[Stackby credentials\](https://docs.n8n.io/integrations/builtin/credentials/stackby.md): Documentation for Stackby credentials. Use these credentials to authenticate Stackby in n8n, a workflow automation platform. - \[Storyblok credentials\](https://docs.n8n.io/integrations/builtin/credentials/storyblok.md): Documentation for Storyblok credentials. Use these credentials to authenticate Storyblok in n8n, a workflow automation platform. - \[Strapi credentials\](https://docs.n8n.io/integrations/builtin/credentials/strapi.md): Documentation for Strapi credentials. Use these credentials to authenticate Strapi in n8n, a workflow automation platform. - \[Strava credentials\](https://docs.n8n.io/integrations/builtin/credentials/strava.md): Documentation for Strava credentials. Use these credentials to authenticate Strava in n8n, a workflow automation platform. - \[Stripe credentials\](https://docs.n8n.io/integrations/builtin/credentials/stripe.md): Documentation for Stripe credentials. Use these credentials to authenticate Stripe in n8n, a workflow automation platform. - \[Supabase credentials\](https://docs.n8n.io/integrations/builtin/credentials/supabase.md): Documentation for Supabase credentials. Use these credentials to authenticate Supabase in n8n, a workflow automation platform. - \[SurveyMonkey credentials\](https://docs.n8n.io/integrations/builtin/credentials/surveymonkey.md): Documentation for SurveyMonkey credentials. Use these credentials to authenticate SurveyMonkey in n8n, a workflow automation platform. - \[SyncroMSP credentials\](https://docs.n8n.io/integrations/builtin/credentials/syncromsp.md): Documentation for SyncroMSP credentials. Use these credentials to authenticate SyncroMSP in n8n, a workflow automation platform. - \[Sysdig credentials\](https://docs.n8n.io/integrations/builtin/credentials/sysdig.md): Documentation for the Sysdig credentials. Use these credentials to authenticate Sysdig in n8n, a workflow automation platform. - \[Taiga credentials\](https://docs.n8n.io/integrations/builtin/credentials/taiga.md): Documentation for Taiga credentials. Use these credentials to authenticate Taiga in n8n, a workflow automation platform. - \[Tapfiliate credentials\](https://docs.n8n.io/integrations/builtin/credentials/tapfiliate.md): Documentation for Tapfiliate credentials. Use these credentials to authenticate Tapfiliate in n8n, a workflow automation platform. - \[Telegram credentials\](https://docs.n8n.io/integrations/builtin/credentials/telegram.md): Documentation for Telegram credentials. Use these credentials to authenticate Telegram in n8n, a workflow automation platform. - \[TheHive credentials\](https://docs.n8n.io/integrations/builtin/credentials/thehive.md): Documentation for TheHive credentials. Use these credentials to authenticate TheHive in n8n, a workflow automation platform. - \[TheHive 5 credentials\](https://docs.n8n.io/integrations/builtin/credentials/thehive5.md): Documentation for TheHive 5 credentials. Use these credentials to authenticate TheHive in n8n, a workflow automation platform. - \[TimescaleDB credentials\](https://docs.n8n.io/integrations/builtin/credentials/timescaledb.md): Documentation for TimescaleDB credentials. Use these credentials to authenticate TimescaleDB in n8n, a workflow automation platform. - \[Todoist credentials\](https://docs.n8n.io/integrations/builtin/credentials/todoist.md): Documentation for Todoist credentials. Use these credentials to authenticate Todoist in n8n, a workflow automation platform. - \[Toggl credentials\](https://docs.n8n.io/integrations/builtin/credentials/toggl.md): Documentation for Toggl credentials. Use these credentials to authenticate Toggl in n8n, a workflow automation platform. - \[TOTP credentials\](https://docs.n8n.io/integrations/builtin/credentials/totp.md): Documentation for TOTP credentials. Use these credentials to authenticate TOTP in n8n, a workflow automation platform. - \[Travis CI credentials\](https://docs.n8n.io/integrations/builtin/credentials/travisci.md): Documentation for Travis CI credentials. Use these credentials to authenticate Travis CI in n8n, a workflow automation platform. - \[Trellix ePO credentials\](https://docs.n8n.io/integrations/builtin/credentials/trellixepo.md): Documentation for the Trellix ePO credentials. Use these credentials to authenticate Trellix ePO in n8n, a workflow automation platform. - \[Trello credentials\](https://docs.n8n.io/integrations/builtin/credentials/trello.md): Documentation for Trello credentials. Use these credentials to authenticate Trello in n8n, a workflow automation platform. - \[Twake credentials\](https://docs.n8n.io/integrations/builtin/credentials/twake.md): Documentation for Twake credentials. Use these credentials to authenticate Twake in n8n, a workflow automation platform. - \[Twilio credentials\](https://docs.n8n.io/integrations/builtin/credentials/twilio.md): Documentation for Twilio credentials. Use these credentials to authenticate Twilio in n8n, a workflow automation platform. - \[Twist credentials\](https://docs.n8n.io/integrations/builtin/credentials/twist.md): Documentation for Twist credentials. Use these credentials to authenticate Twist in n8n, a workflow automation platform. - \[Typeform credentials\](https://docs.n8n.io/integrations/builtin/credentials/typeform.md): Documentation for Typeform credentials. Use these credentials to authenticate Typeform in n8n, a workflow automation platform. - \[Unleashed Software credentials\](https://docs.n8n.io/integrations/builtin/credentials/unleashedsoftware.md): Documentation for Unleashed Software credentials. Use these credentials to authenticate Unleashed Software in n8n, a workflow automation platform. - \[UpLead credentials\](https://docs.n8n.io/integrations/builtin/credentials/uplead.md): Documentation for UpLead credentials. Use these credentials to authenticate UpLead in n8n, a workflow automation platform. - \[uProc credentials\](https://docs.n8n.io/integrations/builtin/credentials/uproc.md): Documentation for uProc credentials. Use these credentials to authenticate uProc in n8n, a workflow automation platform. - \[UptimeRobot credentials\](https://docs.n8n.io/integrations/builtin/credentials/uptimerobot.md): Documentation for UptimeRobot credentials. Use these credentials to authenticate UptimeRobot in n8n, a workflow automation platform. - \[urlscan.io credentials\](https://docs.n8n.io/integrations/builtin/credentials/urlscanio.md): Documentation for urlscan.io credentials. Use these credentials to authenticate urlscan.io in n8n, a workflow automation platform. - \[Venafi TLS Protect Cloud credentials\](https://docs.n8n.io/integrations/builtin/credentials/venafitlsprotectcloud.md): Documentation for Venafi TLS Protect Cloud credentials. Use these credentials to authenticate Venafi TLS Protect Cloud in n8n, a workflow automation platform. - \[Venafi TLS Protect Datacenter credentials\](https://docs.n8n.io/integrations/builtin/credentials/venafitlsprotectdatacenter.md): Documentation for Venafi TLS Protect Datacenter credentials. Use these credentials to authenticate Venafi TLS Protect Datacenter in n8n, a workflow automation platform. - \[Vercel AI Gateway credentials\](https://docs.n8n.io/integrations/builtin/credentials/vercel.md): Documentation for the Vercel AI Gateway credentials. Use these credentials to authenticate the Vercel AI Gateway in n8n, a workflow automation platform. - \[Vero credentials\](https://docs.n8n.io/integrations/builtin/credentials/vero.md): Documentation for Vero credentials. Use these credentials to authenticate Vero in n8n, a workflow automation platform. - \[VirusTotal credentials\](https://docs.n8n.io/integrations/builtin/credentials/virustotal.md): Documentation for the VirusTotal credentials. Use these credentials to authenticate VirusTotal in n8n, a workflow automation platform. - \[Vonage credentials\](https://docs.n8n.io/integrations/builtin/credentials/vonage.md): Documentation for Vonage credentials. Use these credentials to authenticate Vonage in n8n, a workflow automation platform. - \[Weaviate credentials\](https://docs.n8n.io/integrations/builtin/credentials/weaviate.md): Documentation for Weaviate credentials. Use these credentials to authenticate Weaviate in n8n, a workflow automation platform. - \[Webex by Cisco credentials\](https://docs.n8n.io/integrations/builtin/credentials/ciscowebex.md): Documentation for Webex by Cisco credentials. Use these credentials to authenticate Webex by Cisco in n8n, a workflow automation platform. - \[Webflow credentials\](https://docs.n8n.io/integrations/builtin/credentials/webflow.md): Documentation for Webflow credentials. Use these credentials to authenticate Webflow in n8n, a workflow automation platform. - \[Webhook credentials\](https://docs.n8n.io/integrations/builtin/credentials/webhook.md): Documentation for Webhook credentials. Use these credentials to authenticate Webhook in n8n, a workflow automation platform. - \[Wekan credentials\](https://docs.n8n.io/integrations/builtin/credentials/wekan.md): Documentation for Wekan credentials. Use these credentials to authenticate Wekan in n8n, a workflow automation platform. - \[WhatsApp Business Cloud credentials\](https://docs.n8n.io/integrations/builtin/credentials/whatsapp.md): Documentation for WhatsApp Business Cloud credentials. Use these credentials to authenticate WhatsApp Business Cloud in n8n, a workflow automation platform. - \[Wise credentials\](https://docs.n8n.io/integrations/builtin/credentials/wise.md): Documentation for Wise credentials. Use these credentials to authenticate Wise in n8n, a workflow automation platform. - \[Wolfram|Alpha credentials\](https://docs.n8n.io/integrations/builtin/credentials/wolframalpha.md): Documentation for the Wolfram|Alpha credentials. Use these credentials to authenticate Wolfram|Alpha in n8n, a workflow automation platform. - \[WooCommerce credentials\](https://docs.n8n.io/integrations/builtin/credentials/woocommerce.md): Documentation for WooCommerce credentials. Use these credentials to authenticate WooCommerce in n8n, a workflow automation platform. - \[WordPress credentials\](https://docs.n8n.io/integrations/builtin/credentials/wordpress.md): Documentation for WordPress credentials. Use these credentials to authenticate WordPress in n8n, a workflow automation platform. - \[Workable credentials\](https://docs.n8n.io/integrations/builtin/credentials/workable.md): Documentation for Workable credentials. Use these credentials to authenticate Workable in n8n, a workflow automation platform. - \[Wufoo credentials\](https://docs.n8n.io/integrations/builtin/credentials/wufoo.md): Documentation for Wufoo credentials. Use these credentials to authenticate Wufoo in n8n, a workflow automation platform. - \[X (formerly Twitter) credentials\](https://docs.n8n.io/integrations/builtin/credentials/twitter.md): Documentation for X credentials. Use these credentials to authenticate X in n8n, a workflow automation platform. - \[xAI credentials\](https://docs.n8n.io/integrations/builtin/credentials/xai.md): Documentation for xAI credentials. Use these credentials to authenticate xAI in n8n, a workflow automation platform. - \[Xata credentials\](https://docs.n8n.io/integrations/builtin/credentials/xata.md): Documentation for the Xata credentials. Use these credentials to authenticate Xata in n8n, a workflow automation platform. - \[Xero credentials\](https://docs.n8n.io/integrations/builtin/credentials/xero.md): Documentation for Xero credentials. Use these credentials to authenticate Xero in n8n, a workflow automation platform. - \[Yourls credentials\](https://docs.n8n.io/integrations/builtin/credentials/yourls.md): Documentation for Yourls credentials. Use these credentials to authenticate Yourls in n8n, a workflow automation platform. - \[Zabbix credentials\](https://docs.n8n.io/integrations/builtin/credentials/zabbix.md): Documentation for the Zabbix credentials. Use these credentials to authenticate Zabbix in n8n, a workflow automation platform. - \[Zammad credentials\](https://docs.n8n.io/integrations/builtin/credentials/zammad.md): Documentation for Zammad credentials. Use these credentials to authenticate Zammad in n8n, a workflow automation platform. - \[Zendesk credentials\](https://docs.n8n.io/integrations/builtin/credentials/zendesk.md): Documentation for Zendesk credentials. Use these credentials to authenticate Zendesk in n8n, a workflow automation platform. - \[Zep credentials\](https://docs.n8n.io/integrations/builtin/credentials/zep.md): Documentation for the Zep credentials. Use these credentials to authenticate Zep in n8n, a workflow automation platform. - \[Zoho credentials\](https://docs.n8n.io/integrations/builtin/credentials/zoho.md): Documentation for Zoho credentials. Use these credentials to authenticate Zoho in n8n, a workflow automation platform. - \[Zoom credentials\](https://docs.n8n.io/integrations/builtin/credentials/zoom.md): Documentation for Zoom credentials. Use these credentials to authenticate Zoom in n8n, a workflow automation platform. - \[Zscaler ZIA credentials\](https://docs.n8n.io/integrations/builtin/credentials/zscalerzia.md): Documentation for the Zscaler ZIA credentials. Use these credentials to authenticate Zscaler ZIA in n8n, a workflow automation platform. - \[Zulip credentials\](https://docs.n8n.io/integrations/builtin/credentials/zulip.md): Documentation for Zulip credentials. Use these credentials to authenticate Zulip in n8n, a workflow automation platform. - \[Custom API actions for existing nodes\](https://docs.n8n.io/integrations/builtin/custom-api-actions-for-existing-nodes.md) - \[Handle rate limits\](https://docs.n8n.io/integrations/builtin/handle-rate-limits.md): How to handle API rate limits when using n8n integrations. - \[Deprecated nodes\](https://docs.n8n.io/integrations/builtin/deprecated-nodes.md) - \[Community nodes\](https://docs.n8n.io/integrations/community-nodes.md) - \[Installation and management\](https://docs.n8n.io/integrations/community-nodes/installation-and-management.md) - \[Install verified community nodes\](https://docs.n8n.io/integrations/community-nodes/installation-and-management/install-verified-community-nodes.md) - \[GUI installation\](https://docs.n8n.io/integrations/community-nodes/installation-and-management/gui-installation.md) - \[Manual installation\](https://docs.n8n.io/integrations/community-nodes/installation-and-management/manual-installation.md) - \[Environment variable installation\](https://docs.n8n.io/integrations/community-nodes/installation-and-management/environment-variable-installation.md) - \[Risks\](https://docs.n8n.io/integrations/community-nodes/risks.md) - \[Blocklist\](https://docs.n8n.io/integrations/community-nodes/blocklist.md) - \[Using community nodes\](https://docs.n8n.io/integrations/community-nodes/using-community-nodes.md) - \[Troubleshooting\](https://docs.n8n.io/integrations/community-nodes/troubleshooting.md) - \[Building community nodes\](https://docs.n8n.io/integrations/community-nodes/building-community-nodes.md) ## Connect - \[Connect\](https://docs.n8n.io/connect/readme.md): Use the API, CLI, and MCP server to connect to n8n programmatically. - \[n8n API\](https://docs.n8n.io/connect/n8n-api.md): Access n8n public REST API documentation and guides. Find comprehensive resources to programmatically perform tasks with the public API instead of the GUI. - \[Authentication\](https://docs.n8n.io/connect/n8n-api/authentication.md): Authentication for n8n's public REST API. - \[Pagination\](https://docs.n8n.io/connect/n8n-api/pagination.md): Pagination in n8n's public REST API. - \[Use an API playground\](https://docs.n8n.io/connect/n8n-api/use-an-api-playground.md): How to use an API playground to try out n8n's public REST API. - \[Endpoint reference\](https://docs.n8n.io/connect/n8n-api/api-reference.md): Endpoint reference for n8n's public REST API, generated from the OpenAPI specification. - \[User\](https://docs.n8n.io/connect/n8n-api/user.md) - \[Audit\](https://docs.n8n.io/connect/n8n-api/audit.md) - \[Execution\](https://docs.n8n.io/connect/n8n-api/execution.md) - \[Workflow\](https://docs.n8n.io/connect/n8n-api/workflow.md) - \[Credential\](https://docs.n8n.io/connect/n8n-api/credential.md) - \[Tags\](https://docs.n8n.io/connect/n8n-api/tags.md) - \[Source Control\](https://docs.n8n.io/connect/n8n-api/source-control.md) - \[Variables\](https://docs.n8n.io/connect/n8n-api/variables.md) - \[Data Table\](https://docs.n8n.io/connect/n8n-api/data-table.md) - \[Projects\](https://docs.n8n.io/connect/n8n-api/projects.md) - \[Community Package\](https://docs.n8n.io/connect/n8n-api/community-package.md) - \[Discover\](https://docs.n8n.io/connect/n8n-api/discover.md) - \[Insights\](https://docs.n8n.io/connect/n8n-api/insights.md) - \[Folders\](https://docs.n8n.io/connect/n8n-api/folders.md) - \[N8n Package\](https://docs.n8n.io/connect/n8n-api/n8n-package.md) - \[Models\](https://docs.n8n.io/connect/n8n-api/models.md) - \[n8n CLI\](https://docs.n8n.io/connect/n8n-cli.md): n8n CLI is a lightweight client for interacting with n8n programmatically through the Public API. - \[Connect to n8n MCP server\](https://docs.n8n.io/connect/connect-to-n8n-mcp-server.md): Connect, authenticate, and integrate MCP clients to build and execute n8n workflows programmatically - \[MCP server tools reference\](https://docs.n8n.io/connect/connect-to-n8n-mcp-server/mcp-server-tools-reference.md): Complete reference for all tools exposed by the n8n MCP server, including workflow management, workflow builder, and data table tools. - \[Connect to the n8n docs MCP server\](https://docs.n8n.io/connect/connect-to-n8n-docs-mcp-server.md): Connect an AI tool to the n8n docs Model Context Protocol (MCP) server to search and read the documentation. - \[Create nodes\](https://docs.n8n.io/connect/create-nodes.md) - \[Overview\](https://docs.n8n.io/connect/create-nodes/overview.md) - \[Plan your node\](https://docs.n8n.io/connect/create-nodes/plan-your-node.md) - \[Choose a node type\](https://docs.n8n.io/connect/create-nodes/plan-your-node/choose-a-node-type.md) - \[Choose a node building style\](https://docs.n8n.io/connect/create-nodes/plan-your-node/choose-a-node-building-style.md) - \[Node UI design\](https://docs.n8n.io/connect/create-nodes/plan-your-node/node-ui-design.md) - \[Choose node file structure\](https://docs.n8n.io/connect/create-nodes/plan-your-node/choose-node-file-structure.md) - \[Build your node\](https://docs.n8n.io/connect/create-nodes/build-your-node.md) - \[Set up your development environment\](https://docs.n8n.io/connect/create-nodes/build-your-node/set-up-your-development-environment.md) - \[Using the n8n-node tool\](https://docs.n8n.io/connect/create-nodes/build-your-node/using-the-n8n-node-tool.md) - \[Tutorial: Build a declarative-style node\](https://docs.n8n.io/connect/create-nodes/build-your-node/tutorial-build-a-declarative-style-node.md) - \[Tutorial: Build a programmatic-style node\](https://docs.n8n.io/connect/create-nodes/build-your-node/tutorial-build-a-programmatic-style-node.md) - \[Reference\](https://docs.n8n.io/connect/create-nodes/build-your-node/reference.md) - \[Node UI elements\](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/node-ui-elements.md) - \[Code standards\](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/code-standards.md) - \[Error handling\](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/error-handling.md) - \[Versioning\](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/versioning.md) - \[Base files\](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/base-files.md) - \[Structure\](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/base-files/structure.md): A reference document detailing the basic structure of the node base file. - \[Standard parameters\](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/base-files/standard-parameters.md): A reference document listing the standard parameters of the node base file. - \[Declarative-style parameters\](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/base-files/declarative-style-parameters.md): A reference document listing the declarative-style parameters of the node base file. - \[Programmatic-style parameters\](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/base-files/programmatic-style-parameters.md): A reference document listing the programmatic-style parameters of the node base file. - \[Programmatic-style execute method\](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/base-files/programmatic-style-execute-method.md): A reference document for the programmatic-style execute() method of the node base file. - \[Codex files\](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/codex-files.md) - \[Credentials files\](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/credentials-files.md) - \[HTTP request helpers\](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/http-request-helpers.md) - \[Item linking\](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/item-linking.md) - \[UX guidelines\](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/ux-guidelines.md) - \[Verification guidelines\](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/verification-guidelines.md) - \[Test your node\](https://docs.n8n.io/connect/create-nodes/test-your-node.md) - \[Run your node locally\](https://docs.n8n.io/connect/create-nodes/test-your-node/run-your-node-locally.md) - \[Node linter\](https://docs.n8n.io/connect/create-nodes/test-your-node/node-linter.md) - \[Troubleshooting\](https://docs.n8n.io/connect/create-nodes/test-your-node/troubleshooting.md) - \[Deploy your node\](https://docs.n8n.io/connect/create-nodes/deploy-your-node.md) - \[Submit community nodes\](https://docs.n8n.io/connect/create-nodes/deploy-your-node/submit-community-nodes.md) - \[Install private nodes\](https://docs.n8n.io/connect/create-nodes/deploy-your-node/install-private-nodes.md) ## Administer - \[Administer\](https://docs.n8n.io/administer/readme.md): Secure, manage, and operate your n8n instance. - \[Manage users and access\](https://docs.n8n.io/administer/manage-users-and-access.md): User management in n8n - \[Set up for Cloud\](https://docs.n8n.io/administer/manage-users-and-access/set-up-for-cloud.md): Set up user management on n8n Cloud - \[Add and remove users\](https://docs.n8n.io/administer/manage-users-and-access/add-and-remove-users.md) - \[Understand account types\](https://docs.n8n.io/administer/manage-users-and-access/understand-account-types.md): n8n account types - \[Set permissions and roles (RBAC)\](https://docs.n8n.io/administer/manage-users-and-access/set-permissions-and-roles-rbac.md): Set up and use role-based access control (RBAC) in n8n. - \[See available roles\](https://docs.n8n.io/administer/manage-users-and-access/set-permissions-and-roles-rbac/see-available-roles.md): Understand the RBAC roles available in n8n, and the access they have. - \[Organize work in projects\](https://docs.n8n.io/administer/manage-users-and-access/set-permissions-and-roles-rbac/organize-work-in-projects.md): Understand how n8n uses project for RBAC. Learn how to create and manage projects. - \[Create custom roles\](https://docs.n8n.io/administer/manage-users-and-access/set-permissions-and-roles-rbac/create-custom-roles.md): Create and manage custom project roles with granular permissions in n8n. - \[Verify user identity\](https://docs.n8n.io/administer/manage-users-and-access/verify-user-identity.md) - \[Require two-factor auth\](https://docs.n8n.io/administer/manage-users-and-access/verify-user-identity/require-two-factor-auth.md): How to enable 2FA for your n8n account - \[Connect LDAP\](https://docs.n8n.io/administer/manage-users-and-access/verify-user-identity/connect-ldap.md): Using LDAP with n8n. - \[Use SAML\](https://docs.n8n.io/administer/manage-users-and-access/verify-user-identity/use-saml.md) - \[Set up SAML\](https://docs.n8n.io/administer/manage-users-and-access/verify-user-identity/use-saml/set-up-saml.md): Generic setup instructions for using SAML SSO with n8n. - \[Manage users with SAML\](https://docs.n8n.io/administer/manage-users-and-access/verify-user-identity/use-saml/manage-users-with-saml.md): How to manage users and user logins with SAML enabled. - \[Set up Okta Workforce Identity SAML\](https://docs.n8n.io/administer/manage-users-and-access/verify-user-identity/use-saml/set-up-okta-workforce-identity-saml.md): Use Okta Workforce Identity with n8n. - \[Set up Azure AD SAML\](https://docs.n8n.io/administer/manage-users-and-access/verify-user-identity/use-saml/set-up-azure-ad-saml.md): Use Azure AD with n8n. - \[Troubleshoot SAML\](https://docs.n8n.io/administer/manage-users-and-access/verify-user-identity/use-saml/troubleshoot-saml.md): A list of things to check if you encounter issues with SAML. - \[Use OIDC\](https://docs.n8n.io/administer/manage-users-and-access/verify-user-identity/use-oidc.md) - \[Set up OIDC\](https://docs.n8n.io/administer/manage-users-and-access/verify-user-identity/use-oidc/set-up-oidc.md): Set up instructions for enabling OIDC SSO with n8n. - \[Troubleshoot OIDC\](https://docs.n8n.io/administer/manage-users-and-access/verify-user-identity/use-oidc/troubleshoot-oidc.md): Things to be aware of and troubleshooting OIDC within n8n - \[Follow best practices\](https://docs.n8n.io/administer/manage-users-and-access/follow-best-practices.md): User management best practices. - \[Use source control and environments\](https://docs.n8n.io/administer/use-source-control-and-environments.md): Overview of source control and environments in n8n - \[Understand source control\](https://docs.n8n.io/administer/use-source-control-and-environments/understand-source-control.md): Understand how source control and environments work in n8n. - \[Work with environments\](https://docs.n8n.io/administer/use-source-control-and-environments/work-with-environments.md): Understand the concepts behind environments in n8n. - \[Use Git in n8n\](https://docs.n8n.io/administer/use-source-control-and-environments/use-git-in-n8n.md): Git concepts and limitations in n8n. - \[Choose branching patterns\](https://docs.n8n.io/administer/use-source-control-and-environments/choose-branching-patterns.md): Understand the different relationships between n8n instances and Git branches that are possible with source control. - \[Set up source control\](https://docs.n8n.io/administer/use-source-control-and-environments/set-up-source-control.md): Link n8n to your Git provider. - \[Push and pull changes\](https://docs.n8n.io/administer/use-source-control-and-environments/push-and-pull-changes.md): Send work to Git, and fetch work from Git to your instance. - \[Compare versions\](https://docs.n8n.io/administer/use-source-control-and-environments/compare-versions.md): Use workflow diffs to compare local and remote changes - \[Move work between environments\](https://docs.n8n.io/administer/use-source-control-and-environments/move-work-between-environments.md): How to get changes from one environment into another. - \[Tutorial: Create environments with source control\](https://docs.n8n.io/administer/use-source-control-and-environments/tutorial-create-environments-with-source-control.md): How to use n8n's source control feature to create environments. - \[Manage credentials\](https://docs.n8n.io/administer/manage-credentials.md) - \[Share credentials securely\](https://docs.n8n.io/administer/manage-credentials/share-credentials-securely.md): Share credentials within an organization. - \[Credential overwrites\](https://docs.n8n.io/administer/manage-credentials/credential-overwrites.md): Set credential data globally on a self-hosted n8n instance so users can authenticate without seeing or entering client secrets. - \[Use external secret stores\](https://docs.n8n.io/administer/manage-credentials/use-external-secret-stores.md): Use an external secrets vault with n8n. - \[Observe and log\](https://docs.n8n.io/administer/observe-and-log.md) - \[Track usage with Insights\](https://docs.n8n.io/administer/observe-and-log/track-usage-with-insights.md): Insights - \[Stream logs to external systems\](https://docs.n8n.io/administer/observe-and-log/stream-logs-to-external-systems.md): Stream events from n8n to your logging tools. ## Contribute - \[Contribute to n8n\](https://docs.n8n.io/contribute/contribute-to-n8n.md): Learn how to contribute to n8n. - \[Contribution guide for n8n Docs\](https://docs.n8n.io/contribute/contribution-guide-for-n8n-docs.md) - \[Style guide for n8n Docs\](https://docs.n8n.io/contribute/style-guide-for-n8n-docs.md) - \[Where to get help\](https://docs.n8n.io/contribute/where-to-get-help.md): How to get help and support with n8n. ## Privacy and security - \[Privacy\](https://docs.n8n.io/privacy-and-security/privacy.md): n8n's privacy policies - \[Incident response\](https://docs.n8n.io/privacy-and-security/incident-response.md): n8n's incident response procedures. - \[What you can do\](https://docs.n8n.io/privacy-and-security/what-you-can-do.md): What you can do to improve privacy and data security when using n8n. - \[Sustainable use license\](https://docs.n8n.io/privacy-and-security/sustainable-use-license.md): The n8n Sustainable Use License. ## Changelog - \[Changelog\](https://docs.n8n.io/changelog/changelog.md) - \[Release notes 2.x\](https://docs.n8n.io/changelog/release-notes-2.x.md): Release notes detailing new features and bug fixes for n8n. - \[Release notes 1.x\](https://docs.n8n.io/changelog/release-notes-1.x.md): Release notes detailing new features and bug fixes for n8n. - \[Release notes 0.x\](https://docs.n8n.io/changelog/release-notes-0.x.md): Release notes detailing new features and bug fixes for n8n. - \[v2.0 Breaking changes\](https://docs.n8n.io/changelog/v20-breaking-changes.md): Breaking changes coming in version 2.0 - \[v2.0 Migration tool\](https://docs.n8n.io/changelog/v20-migration-tool.md): Tool to help you migrate to v2.0 - \[v1.0 Migration guide\](https://docs.n8n.io/changelog/v10-migration-guide.md): What's new in version 1 --- # Build | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/build/readme.md) . Build workflows in n8n, from first draft to production. Use this space to learn workflow basics, data handling, logic, code, and AI. ### [](https://docs.n8n.io/build#explore-this-space) Explore this space #### [](https://docs.n8n.io/build#foundations) Foundations [**Understand workflows**](https://docs.n8n.io/build/understand-workflows) Learn the core building blocks, editor concepts, and workflow anatomy. [Open](https://docs.n8n.io/build/understand-workflows) [**Ways of building workflows**](https://docs.n8n.io/build/ways-of-building-workflows) Choose the fastest path with templates, AI, MCP, or manual building. [Open](https://docs.n8n.io/build/ways-of-building-workflows) [**Work with data**](https://docs.n8n.io/build/work-with-data) Reference, transform, structure, and test the data moving through workflows. [Open](https://docs.n8n.io/build/work-with-data) [**Code in n8n**](https://docs.n8n.io/build/code-in-n8n) Use expressions, the Code node, and developer tools when low-code is not enough. [Open](https://docs.n8n.io/build/code-in-n8n) #### [](https://docs.n8n.io/build#build-and-optimize) Build and optimize [**Manage workflows**](https://docs.n8n.io/build/manage-workflows) Configure, tag, share, export, and maintain workflows as they grow. [Open](https://docs.n8n.io/build/manage-workflows) [**Flow logic**](https://docs.n8n.io/build/flow-logic) Branch, merge, loop, wait, and handle errors with clear workflow logic. [Open](https://docs.n8n.io/build/flow-logic) [**Integrate AI**](https://docs.n8n.io/build/integrate-ai) Build AI-powered workflows with models, tools, evaluations, and prompts. [Open](https://docs.n8n.io/build/integrate-ai) [**Keyboard shortcuts**](https://docs.n8n.io/build/keyboard-shortcuts) Move faster in the editor with workflow, canvas, and node shortcuts. [Open](https://docs.n8n.io/build/keyboard-shortcuts) Last updated 22 hours ago Was this helpful? --- # Nodes | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/integrations/readme.md) . n8n calls integrations nodes. Nodes are the building blocks of workflows in n8n. They're an entry point for retrieving data, a function to process data, or an exit for sending data. The data process includes filtering, recomposing, and changing data. There can be one or several nodes for your API, service or app. You can connect multiple nodes, which allows you to create complex workflows. [](https://docs.n8n.io/integrations#built-in-nodes) Built-in nodes ----------------------------------------------------------------------- n8n includes a collection of built-in integrations. Refer to [Built-in nodes](https://docs.n8n.io/integrations/builtin/node-types) for documentation on all n8n's built-in nodes. [](https://docs.n8n.io/integrations#community-nodes) Community nodes ------------------------------------------------------------------------- As well as using the built-in nodes, you can also install community-built nodes. Refer to [Community nodes](https://docs.n8n.io/integrations/community-nodes/installation-and-management) for more information. [](https://docs.n8n.io/integrations#credential-only-nodes-and-custom-operations) Credential-only nodes and custom operations --------------------------------------------------------------------------------------------------------------------------------- One of the most complex parts of setting up [API](https://docs.n8n.io/key-concept-glossary#api) calls is managing authentication. n8n provides [credentials](https://docs.n8n.io/key-concept-glossary#credential-n8n) support for operations and services beyond those supported by built-in nodes. * Custom operations for existing nodes: n8n supplies hundreds of nodes to create workflows that link multiple products. However, some nodes don't include all the possible operations supported by a product's API. You can work around this by making a custom API call using the [HTTP Request](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest) node. * Credential-only nodes: n8n includes credential-only nodes. These are integrations where n8n supports setting up credentials for use in the HTTP Request node, but doesn't provide a standalone node. You can find a credential-only node in the nodes panel, as you would for any other integration. Refer to [Custom operations](https://docs.n8n.io/integrations/builtin/custom-api-actions-for-existing-nodes) for more information. [](https://docs.n8n.io/integrations#generic-integrations) Generic integrations ----------------------------------------------------------------------------------- If you need to connect to a service where n8n doesn't have a node, or a credential-only node, you can still use the [HTTP Request](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest) node. Refer to the node page for details on how to set up authentication and create your API call. [](https://docs.n8n.io/integrations#where-to-go-next) Where to go next --------------------------------------------------------------------------- * If you want to create your own node, head over to the [Creating Nodes](https://docs.n8n.io/connect/create-nodes/overview) section. * Check out [Community nodes](https://docs.n8n.io/integrations/community-nodes/using-community-nodes) to learn about installing and managing community-built nodes. * If you'd like to learn more about the different nodes in n8n, their functionalities and example usage, check out n8n's node libraries: [Core nodes](https://docs.n8n.io/integrations/builtin/core-nodes) , [Actions](https://docs.n8n.io/integrations/builtin/app-nodes) , and [Triggers](https://docs.n8n.io/integrations/builtin/trigger-nodes) . * If you'd like to learn how to add the credentials for the different nodes, head over to the [Credentials](https://docs.n8n.io/integrations/builtin/credentials) section. Last updated 22 hours ago Was this helpful? --- # Contribute to n8n | Contribute | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/contribute/contribute-to-n8n.md) . There are a several ways in which you can contribute to n8n, depending on your skills and interests. Each form of contribution is valuable to us! [](https://docs.n8n.io/contribute#share-some-love-review-us) Share some love: Review us -------------------------------------------------------------------------------------------- * Star n8n on [GitHub](https://github.com/n8n-io/n8n) and [Docker Hub](https://hub.docker.com/r/n8nio/n8n) . * Follow us on [Twitter](https://twitter.com/n8n_io) , [LinkedIn](https://www.linkedin.com/company/28491094) , and [Facebook](https://www.facebook.com/n8nio/) . * Upvote n8n on [AlternativeTo](https://alternativeto.net/software/n8n-io/) and [Alternative.me](https://alternative.me/n8n-io) . * Add n8n to your stack on [Stackshare](https://stackshare.io/n8n) . * Write a review about n8n on [G2](https://www.g2.com/products/n8n/reviews) , [Slant](https://www.slant.co/improve/options/37977/~n8n-review) , and [Capterra](https://www.capterra.com/p/198028/n8n-io/) . [](https://docs.n8n.io/contribute#help-out-the-community) Help out the community ------------------------------------------------------------------------------------- You can participate in the [forum](https://community.n8n.io/) and help the community members out with their questions. When sharing workflows in the community forum for debugging, use code blocks. Use triple backticks ` ``` ` to wrap the workflow JSON in a code block. The following video demonstrates the steps of sharing workflows on the community forum: [](https://docs.n8n.io/contribute#contribute-a-workflow-template) Contribute a workflow template ----------------------------------------------------------------------------------------------------- You can submit your workflows to n8n's template library. n8n is working on a creator program, and developing a marketplace of templates. This is an ongoing project, and details are likely to change. Refer to [n8n Creator hub](https://www.notion.so/n8n/n8n-Creator-hub-7bd2cbe0fce0449198ecb23ff4a2f76f) for information on how to submit templates and become a creator. [](https://docs.n8n.io/contribute#build-a-node) Build a node ----------------------------------------------------------------- Create an integration for a third party service. Check out [the node creation docs](https://docs.n8n.io/connect/create-nodes/overview) for guidance on how to create and publish a community node. [](https://docs.n8n.io/contribute#contribute-to-the-code) Contribute to the code ------------------------------------------------------------------------------------- There are different ways in which you can contribute to the n8n code base: * Fix [issues](https://github.com/n8n-io/n8n/issues) reported on GitHub. The [CONTRIBUTING guide](https://github.com/n8n-io/n8n/blob/master/CONTRIBUTING.md) will help you get your development environment ready in minutes. * Add additional functionality to an existing third party integration. * Add a new feature to n8n. [](https://docs.n8n.io/contribute#contribute-to-the-docs) Contribute to the docs ------------------------------------------------------------------------------------- You can contribute to the n8n documentation, for example by documenting nodes or fixing issues. The repository for the docs is [here](https://github.com/n8n-io/n8n-docs) and the guidelines for contributing to the docs are [here](https://github.com/n8n-io/n8n-docs/blob/master/CONTRIBUTING.md) . [](https://docs.n8n.io/contribute#contribute-to-community-tutorials) Contribute to community tutorials ----------------------------------------------------------------------------------------------------------- Share your own video or written guides on our [community-driven, searchable library of n8n tutorials and training materials](https://community.n8n.io/t/how-to-share-your-tutorials/48398) . Tag them for easy discovery, and post in your language’s subcategory. Follow the contribution guidelines to help keep our growing library high-quality and accessible to everyone. [](https://docs.n8n.io/contribute#refer-a-candidate) Refer a candidate --------------------------------------------------------------------------- Do you know someone who would be a great fit for one of our [open positions](https://n8n.io/careers) ? Refer them to us! In return, we'll pay you €1,000 when the referral successfully passes their probationary period. Here's how this works: 1. **Search**: Have a look at the description and requirements of each role, and consider if someone you know would be a great fit. 2. **Referral**: Once you've identified a potential candidate, send an email to [Jobs at n8n](mailto:jobs@n8n.io) with the subject line _Employee referral - \[job title\]_ and a short description of the person you're referring (and the reason why). Also, tell your referral to apply for the job through our [careers page](https://n8n.io/careers) . 3. **Evaluation**: We'll screen the application and inform you about the next steps of the hiring process. 4. **Reward**: As soon as your referral has successfully finished the probationary period, we'll reward you for your efforts by transferring the €1,000 to your bank account. Last updated 9 days ago Was this helpful? This site uses cookies to deliver its service and to analyze traffic. By browsing this site, you accept the [privacy policy](https://n8n.io/legal/privacy/) . AcceptReject --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/build/readme.md). # Build Build workflows in n8n, from first draft to production. Use this space to learn workflow basics, data handling, logic, code, and AI. ### Explore this space {% columns %} {% column %} #### Foundations \[\*\*Understand workflows\*\*\](/build/understand-workflows.md) Learn the core building blocks, editor concepts, and workflow anatomy. Open \[\*\*Ways of building workflows\*\*\](/build/ways-of-building-workflows.md) Choose the fastest path with templates, AI, MCP, or manual building. Open \[\*\*Work with data\*\*\](/build/work-with-data.md) Reference, transform, structure, and test the data moving through workflows. Open \[\*\*Code in n8n\*\*\](/build/code-in-n8n.md) Use expressions, the Code node, and developer tools when low-code is not enough. Open {% endcolumn %} {% column %} #### Build and optimize \[\*\*Manage workflows\*\*\](/build/manage-workflows.md) Configure, tag, share, export, and maintain workflows as they grow. Open \[\*\*Flow logic\*\*\](/build/flow-logic.md) Branch, merge, loop, wait, and handle errors with clear workflow logic. Open \[\*\*Integrate AI\*\*\](/build/integrate-ai.md) Build AI-powered workflows with models, tools, evaluations, and prompts. Open \[\*\*Keyboard shortcuts\*\*\](/build/keyboard-shortcuts.md) Move faster in the editor with workflow, canvas, and node shortcuts. Open {% endcolumn %} {% endcolumns %} --- # Keyboard shortcuts | Build | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/build/keyboard-shortcuts.md) . n8n provides keyboard shortcuts for some actions. [](https://docs.n8n.io/build/keyboard-shortcuts#workflow-controls) Workflow controls ----------------------------------------------------------------------------------------- * **Ctrl/Cmd** + **Alt** + **n**: create new workflow * **Ctrl/Cmd** + **o**: open workflow * **Ctrl/Cmd** + **s**: save the current workflow * **Ctrl/Cmd** + **z**: undo * **Ctrl/Cmd** + **shift** + **z**: redo * **Ctrl/Cmd** + **Enter**: execute workflow [](https://docs.n8n.io/build/keyboard-shortcuts#canvas) Canvas ------------------------------------------------------------------- ### [](https://docs.n8n.io/build/keyboard-shortcuts#move-the-canvas) Move the canvas * **Ctrl/Cmd** + **Left Mouse Button** + drag: move node view * **Ctrl/Cmd** + **Middle mouse button** + drag: move node view * **Space** + drag: move node view * **Middle mouse button** + drag: move node view * Two fingers on a touch screen: move node view ### [](https://docs.n8n.io/build/keyboard-shortcuts#canvas-zoom) Canvas zoom * **+** or **\=**: zoom in * **\-** or **\_**: zoom out * **0**: reset zoom level * **1**: zoom to fit workflow * **Ctrl/Cmd** + **Mouse wheel**: zoom in/out ### [](https://docs.n8n.io/build/keyboard-shortcuts#nodes-on-the-canvas) Nodes on the canvas * **Double click** on a node: open the node details * **Ctrl/Cmd** + **Double click** on a sub-workflow node: open the sub-workflow in a new tab * **Ctrl/Cmd** + **a**: select all nodes * **Ctrl/Cmd** + **v**: paste nodes * **Shift** + **s**: add sticky note ### [](https://docs.n8n.io/build/keyboard-shortcuts#with-one-or-more-nodes-selected-in-canvas) With one or more nodes selected in canvas * **ArrowDown**: select sibling node below the current one * **ArrowLeft**: select node left of the current one * **ArrowRight**: select node right of the current one * **ArrowUp**: select sibling node above the current one * **Ctrl/Cmd** + **c**: copy * **Ctrl/Cmd** + **g**: group selected nodes * **Ctrl/Cmd** + **shift** + **g**: ungroup selected nodes * **Ctrl/Cmd** + **x**: cut * **D**: deactivate * **Delete**: delete * **Enter**: open * **F2**: rename * **P**: pin data in node. Refer to [Data pinning](https://docs.n8n.io/build/work-with-data/pin-and-mock-data) for more information. * **Shift** + **ArrowLeft**: select all nodes left of the current one * **Shift** + **ArrowRight**: select all nodes right of the current one * **Ctrl/Cmd** + **Shift** + **o** on a sub-workflow node: open the sub-workflow in a new tab [](https://docs.n8n.io/build/keyboard-shortcuts#node-panel) Node panel --------------------------------------------------------------------------- * **N**: open the Node Panel * **Enter**: insert selected node into workflow * **Escape**: close Node panel ### [](https://docs.n8n.io/build/keyboard-shortcuts#node-panel-categories) Node panel categories * **Enter**: insert node into workflow, collapse/expand category, open subcategory * **ArrowRight**: expand category, open subcategory * **ArrowLeft**: collapse category, close subcategory view [](https://docs.n8n.io/build/keyboard-shortcuts#within-nodes) Within nodes ------------------------------------------------------------------------------- * **\=**: in an empty parameter input, this switches to expressions mode. [](https://docs.n8n.io/build/keyboard-shortcuts#command-bar) Command bar ----------------------------------------------------------------------------- The Command Bar provides quick access to actions and navigation throughout n8n. Access it using **Ctrl/Cmd + K**, or click the magnifying glass icon on the canvas. Commands adapt based on your current view and permissions. * **Workflow actions:** Add nodes, save, test, tidy up, publish/unpublish, duplicate, import/export, archive, delete * **Resource navigation:** Create and open workflows, credentials, data tables, projects; access recent resources * **Execution actions:** Debug, copy, retry, stop, or delete executions * **General navigation:** Access Templates, Variables, Insights, Settings, Help resources, and Documentation [PreviousUse AI for parameters](https://docs.n8n.io/build/integrate-ai/ai-examples/use-ai-for-parameters) Last updated 9 days ago Was this helpful? --- # Code in n8n | Build | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/build/code-in-n8n.md) . n8n is a low-code tool. This means you can do a lot without code, then add code when needed. [](https://docs.n8n.io/build/code-in-n8n#code-in-your-workflows) Code in your workflows -------------------------------------------------------------------------------------------- There are two places in your workflows where you can use code: * **Expressions** Use expressions to transform [data](https://docs.n8n.io/build/work-with-data/overview) in your nodes. You can use JavaScript in expressions, as well as n8n's [Built-in methods and variables](https://docs.n8n.io/build/code-in-n8n/use-built-in-shortcuts) . [→ Expressions](https://docs.n8n.io/build/work-with-data/expressions-versus-data-nodes) * **Code node** Use the Code node to add JavaScript or Python to your workflow. [→ Code node](https://docs.n8n.io/build/code-in-n8n/using-the-code-node) [](https://docs.n8n.io/build/code-in-n8n#other-technical-resources) Other technical resources -------------------------------------------------------------------------------------------------- These are features that are relevant to technical users. ### [](https://docs.n8n.io/build/code-in-n8n#technical-nodes) Technical nodes n8n provides core nodes, which simplify adding key functionality such as API requests, webhooks, scheduling, and file handling. * **Write a backend** The [HTTP Request](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest) , [Webhook](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook) , and [Code](https://docs.n8n.io/build/code-in-n8n/using-the-code-node) nodes help you make API calls, respond to webhooks, and write any JavaScript in your workflow. Use this do things like [Create an API endpoint](https://n8n.io/workflows/1750-creating-an-api-endpoint/) . [→ Core nodes](https://docs.n8n.io/integrations/builtin/core-nodes) * **Represent complex logic** You can build complex flows, using nodes like [If](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.if) , [Switch](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.switch) , and [Merge](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.merge) nodes. [→ Flow logic](https://docs.n8n.io/build/flow-logic) ### [](https://docs.n8n.io/build/code-in-n8n#other-developer-resources) Other developer resources * **The n8n API** n8n provides an API, where you can programmatically perform many of the same tasks as you can in the GUI. There's an [n8n API node](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.n8n) to access the API in your workflows. [→ API](https://docs.n8n.io/connect/n8n-api) * **Self-host** You can self-host n8n. This keeps your data on your own infrastructure. [→ Hosting](https://docs.n8n.io/deploy/host-n8n) * **Build your own nodes** You can build custom nodes, install them on your n8n instance, and publish them to [npm](https://www.npmjs.com/) . [→ Creating nodes](https://docs.n8n.io/connect/create-nodes/overview) [PreviousData tables](https://docs.n8n.io/build/work-with-data/data-tables) [NextUsing the Code node](https://docs.n8n.io/build/code-in-n8n/using-the-code-node) Last updated 9 days ago Was this helpful? --- # Manage workflows | Build | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/build/manage-workflows.md) . [Configure workflow settings](https://docs.n8n.io/build/manage-workflows/configure-workflow-settings) [Tag workflows](https://docs.n8n.io/build/manage-workflows/tag-workflows) [View change history](https://docs.n8n.io/build/manage-workflows/view-change-history) [Export and import](https://docs.n8n.io/build/manage-workflows/export-and-import) [Share with others](https://docs.n8n.io/build/manage-workflows/share-with-others) [PreviousUse Chat Hub](https://docs.n8n.io/build/ways-of-building-workflows/chat-hub) [NextConfigure workflow settings](https://docs.n8n.io/build/manage-workflows/configure-workflow-settings) Last updated 10 days ago Was this helpful? --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/readme.md). # Nodes n8n calls integrations nodes. Nodes are the building blocks of workflows in n8n. They're an entry point for retrieving data, a function to process data, or an exit for sending data. The data process includes filtering, recomposing, and changing data. There can be one or several nodes for your API, service or app. You can connect multiple nodes, which allows you to create complex workflows. ## Built-in nodes n8n includes a collection of built-in integrations. Refer to \[Built-in nodes\](/integrations/builtin/node-types.md) for documentation on all n8n's built-in nodes. ## Community nodes As well as using the built-in nodes, you can also install community-built nodes. Refer to \[Community nodes\](/integrations/community-nodes/installation-and-management.md) for more information. ## Credential-only nodes and custom operations One of the most complex parts of setting up \[API\](/key-concept-glossary.md#api) calls is managing authentication. n8n provides \[credentials\](/key-concept-glossary.md#credential-n8n) support for operations and services beyond those supported by built-in nodes. \* Custom operations for existing nodes: n8n supplies hundreds of nodes to create workflows that link multiple products. However, some nodes don't include all the possible operations supported by a product's API. You can work around this by making a custom API call using the \[HTTP Request\](/integrations/builtin/core-nodes/n8n-nodes-base.httprequest.md) node. \* Credential-only nodes: n8n includes credential-only nodes. These are integrations where n8n supports setting up credentials for use in the HTTP Request node, but doesn't provide a standalone node. You can find a credential-only node in the nodes panel, as you would for any other integration. Refer to \[Custom operations\](/integrations/builtin/custom-api-actions-for-existing-nodes.md) for more information. ## Generic integrations If you need to connect to a service where n8n doesn't have a node, or a credential-only node, you can still use the \[HTTP Request\](/integrations/builtin/core-nodes/n8n-nodes-base.httprequest.md) node. Refer to the node page for details on how to set up authentication and create your API call. ## Where to go next \* If you want to create your own node, head over to the \[Creating Nodes\](/connect/create-nodes/overview.md) section. \* Check out \[Community nodes\](/integrations/community-nodes/using-community-nodes.md) to learn about installing and managing community-built nodes. \* If you'd like to learn more about the different nodes in n8n, their functionalities and example usage, check out n8n's node libraries: \[Core nodes\](/integrations/builtin/core-nodes.md), \[Actions\](/integrations/builtin/app-nodes.md), and \[Triggers\](/integrations/builtin/trigger-nodes.md). \* If you'd like to learn how to add the credentials for the different nodes, head over to the \[Credentials\](/integrations/builtin/credentials.md) section. --- # Sustainable use license | Privacy and security | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/privacy-and-security/sustainable-use-license.md) . **Proprietary licenses for Enterprise** Proprietary licenses are available for enterprise customers. [Get in touch](mailto:license@n8n.io) for more information. n8n's [Sustainable Use License](https://github.com/n8n-io/n8n/blob/master/LICENSE.md) and [n8n Enterprise License](https://github.com/n8n-io/n8n/blob/master/LICENSE_EE.md) are based on the [fair-code](https://faircode.io/) model. [](https://docs.n8n.io/privacy-and-security/sustainable-use-license#license-faqs) License FAQs --------------------------------------------------------------------------------------------------- ### [](https://docs.n8n.io/privacy-and-security/sustainable-use-license#what-license-do-you-use) What license do you use? n8n uses the [Sustainable Use License](https://github.com/n8n-io/n8n/blob/master/LICENSE.md) and [n8n Enterprise License](https://github.com/n8n-io/n8n/blob/master/LICENSE_EE.md) . These licenses are based on the [fair-code](https://faircode.io/) model. ### [](https://docs.n8n.io/privacy-and-security/sustainable-use-license#what-source-code-is-covered-by-the-sustainable-use-license) What source code is covered by the Sustainable Use License? The [Sustainable Use License](https://github.com/n8n-io/n8n/blob/master/LICENSE.md) applies to all our source code hosted in our [main GitHub repository](https://github.com/n8n-io/n8n) except: * Content of branches other than master. * Source code files that contain `.ee.` in their file name. These are licensed under the [n8n Enterprise License](https://github.com/n8n-io/n8n/blob/master/LICENSE_EE.md) . ### [](https://docs.n8n.io/privacy-and-security/sustainable-use-license#what-is-the-sustainable-use-license) What is the Sustainable Use License? The Sustainable Use License is a fair-code software license created by n8n in 2022. You can read more about why we did this [here](https://docs.n8n.io/privacy-and-security/sustainable-use-license#why-did-you-create-a-license) . The license allows you the free right to use, modify, create derivative works, and redistribute, with three limitations: * You may use or modify the software only for your own internal business purposes or for non-commercial or personal use. * You may distribute the software or provide it to others only if you do so free of charge for non-commercial purposes. * You may not alter, remove, or obscure any licensing, copyright, or other notices of the licensor in the software. Any use of the licensor's trademarks is subject to applicable law. We encourage anyone who wants to use the Sustainable Use License. If you are building something out in the open, it makes sense to think about licensing earlier in order to avoid problems later. Contact us at [license@n8n.io](mailto:license@n8n.io) if you would like to ask any questions about it. ### [](https://docs.n8n.io/privacy-and-security/sustainable-use-license#what-is-and-isnt-allowed-under-the-license-in-the-context-of-n8ns-product) What is and isn't allowed under the license in the context of n8n's product? Our license restricts use to "internal business purposes". In practice this means all use is allowed unless you are selling a product, service, or module in which the value derives entirely or substantially from n8n functionality. Here are some examples that wouldn't be allowed: * White-labeling n8n and offering it to your customers for money. * Hosting n8n and charging people money to access it. All of the following examples are allowed under our license: * Using n8n to sync the data you control as a company, for example from a CRM to an internal database. * Creating an n8n node for your product or any other integration between your product and n8n. * Providing consulting services related to n8n, for example building workflows, custom features closely connect to n8n, or code that gets executed by n8n. * Supporting n8n, for example by setting it up or maintaining it on an internal company server. #### [](https://docs.n8n.io/privacy-and-security/sustainable-use-license#can-i-use-n8n-to-act-as-the-back-end-to-power-a-feature-in-my-app) Can I use n8n to act as the back-end to power a feature in my app? Usually yes, as long as the back-end process doesn't use users' own credentials to access their data. Here are two examples to clarify: **Example 1: Sync ACME app with HubSpot** Bob sets up n8n to collect a user's HubSpot credentials to sync data in the ACME app with data in HubSpot. **NOT ALLOWED** under the Sustainable Use License. This use case collects the user's own HubSpot credentials to pull information to feed into the ACME app. **Example 2: Embed AI chatbot in ACME app** Bob sets up n8n to embed an AI chatbot within the ACME app. The AI chatbot's credentials in n8n use Bob's company credentials. ACME app end-users only enter their questions or queries to the chatbot. **ALLOWED** under the Sustainable Use License. No user credentials are being collected. ### [](https://docs.n8n.io/privacy-and-security/sustainable-use-license#what-if-i-want-to-use-n8n-for-something-thats-not-permitted-by-the-license) What if I want to use n8n for something that's not permitted by the license? You must sign a separate commercial agreement with us. We actively encourage software creators to build with n8n in their products; we just ask them to sign an agreement laying out the terms of use, and the fees owed to n8n for using the product in this way. [Contact us](mailto:license@n8n.io) to learn more. If you are unsure whether the use case you have in mind constitutes an internal business purpose or not, take a look at [the examples](https://docs.n8n.io/privacy-and-security/sustainable-use-license#what-is-and-isnt-allowed-under-the-license-in-the-context-of-n8ns-product) , and if you're still unclear, email us at [license@n8n.io](mailto:license@n8n.io) . ### [](https://docs.n8n.io/privacy-and-security/sustainable-use-license#why-dont-you-use-an-open-source-license) Why don't you use an open source license? n8n's mission is to give everyone who uses a computer technical superpowers. We've decided the best way for us to achieve this mission is to make n8n as widely and freely available as possible for users, while ensuring we can build a sustainable, viable business. By making our product free to use, easy to distribute, and source-available we help everyone access the product. By operating as a business, we can continue to release features, fix bugs, and provide reliable software at scale long-term. ### [](https://docs.n8n.io/privacy-and-security/sustainable-use-license#why-did-you-create-a-license) Why did you create a license? Creating a license was our least favorite option. We only went down this path after reviewing the possible existing licenses and deciding nothing fit our specific needs. There are two ways in which we try to mitigate the pain and friction of using a proprietary license: 1. By using plain English, and keeping it as short as possible. 2. By promoting [fair-code](https://faircode.io/) with the goal of making it a well-known umbrella term to describe software models like ours. Our goals when we created the Sustainable Use License were: 1. To be as permissive as possible. 2. Safeguarding our ability to build a business. 3. Being as clear as possible what use was permitted or not. ### [](https://docs.n8n.io/privacy-and-security/sustainable-use-license#my-company-has-a-policy-against-using-code-that-restricts-commercial-use-can-i-still-use-n8n) My company has a policy against using code that restricts commercial use – can I still use n8n? Provided you are using n8n for internal business purposes, and not making n8n available to your customers for them to connect their accounts and build workflows, you should be able to use n8n. If you are unsure whether the use case you have in mind constitutes an internal business purpose or not, take a look at [the examples](https://docs.n8n.io/privacy-and-security/sustainable-use-license#what-is-and-isnt-allowed-under-the-license-in-the-context-of-n8ns-product) , and if you're still unclear, email us at [license@n8n.io](mailto:license@n8n.io) . ### [](https://docs.n8n.io/privacy-and-security/sustainable-use-license#what-happens-to-the-code-i-contribute-to-n8n-in-light-of-the-sustainable-use-license) What happens to the code I contribute to n8n in light of the Sustainable Use License? Any code you contribute on GitHub is subject to GitHub's [terms of use](https://docs.github.com/en/site-policy/github-terms/github-terms-of-service#d-user-generated-content) . In simple terms, this means you own, and are responsible for, anything you contribute, but that you grant other GitHub users certain rights to use this code. When you contribute code to a repository containing notice of a license, you license the code under the same terms. n8n asks every contributor to sign our [Contributor License Agreement](https://github.com/n8n-io/n8n/blob/master/CONTRIBUTOR_LICENSE_AGREEMENT.md) . In addition to the above, this gives n8n the ability to change its license without seeking additional permission. It also means you aren't liable for your contributions (e.g. in case they cause damage to someone else's business). It's easy to get started contributing code to n8n [here](https://github.com/n8n-io) , and we've listed broader ways of participating in our community [here](https://docs.n8n.io/contribute) . ### [](https://docs.n8n.io/privacy-and-security/sustainable-use-license#why-did-you-switch-to-the-sustainable-use-license-from-your-previous-license-arrangement-apache-20-w) Why did you switch to the Sustainable Use License from your previous license arrangement (Apache 2.0 with Commons Clause)? n8n was licensed under Apache 2.0 with Commons Clause until 17 March 2022. Commons Clause was initiated by various software companies wanting to protect their rights against cloud providers. The concept involved adding a commercial restriction on top of an existing open source license. However, the use of the Commons Clause as an additional condition to an open source license, as well as the use of wording that's open to interpretation, created some confusion and uncertainty regarding the terms of use. The Commons Clause also restricted people's ability to offer consulting and support services: we realized these services are critical in enabling people to get value from n8n, so we wanted to remove this restriction. We created the Sustainable Use License to be more permissive and more clear about what use is allowed, while continuing to ensure n8n gets the funding needed to build and improve our product. ### [](https://docs.n8n.io/privacy-and-security/sustainable-use-license#what-are-the-main-differences-between-the-sustainable-use-license-and-your-previous-license-arrangem) What are the main differences between the Sustainable Use License and your previous license arrangement (Apache 2.0 with Commons Clause)? There are two main differences between the Sustainable Use License and our previous license arrangement. The first is that we have tightened the definition of how you can use the software. Previously the Commons Clause restricted users ability to "sell" the software; we have redefined this to restrict use to internal business purposes. The second difference is that our previous license restricted people's ability to charge fees for consulting or support services related to the software: we have lifted that restriction altogether. That means you are now free to offer commercial consulting or support services (e.g. building n8n workflows) without the need for a separate license agreement with us. If you are interested in joining our community of n8n experts providing these services, you can learn more here. ### [](https://docs.n8n.io/privacy-and-security/sustainable-use-license#is-n8n-open-source) Is n8n open source? Although n8n's source code is available under the Sustainable Use License, according to the [Open Source Initiative](https://opensource.org/) (OSI), open source licenses can't include limitations on use, so we do not call ourselves open source. In practice, n8n offers most users many of the same benefits as OSI-approved open source. We coined the term ['fair-code'](https://faircode.io/) as a way of describing our licensing model, and the model of other companies who are source-available, but restrict commercial use of their source code. ### [](https://docs.n8n.io/privacy-and-security/sustainable-use-license#what-is-fair-code-and-how-does-the-sustainable-use-license-relate-to-it) What is fair-code, and how does the Sustainable Use License relate to it? Fair-code isn't a software license. It describes a software model where software: * Is generally free to use and can be distributed by anybody. * Has its source code openly available. * Can be extended by anybody in public and private communities. * Is commercially restricted by its authors. The Sustainable Use License is a fair-code license. You can read more about it and see other examples of fair-code licenses [here](https://faircode.io/) . We're always excited to talk about software licenses, fair-code, and other principles around sharing code with interested parties. To get in touch to chat, email [license@n8n.io](mailto:license@n8n.io) . ### [](https://docs.n8n.io/privacy-and-security/sustainable-use-license#can-i-use-n8ns-sustainable-use-license-for-my-own-project) Can I use n8n's Sustainable Use License for my own project? Yes! We're excited to see more software use the Sustainable Use License. We'd love to hear about your project if you're using our license: [license@n8n.io](mailto:license@n8n.io) . [PreviousWhat you can do](https://docs.n8n.io/privacy-and-security/what-you-can-do) Last updated 10 days ago Was this helpful? --- # Built-in nodes | Nodes | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/integrations/builtin.md) . [Node types](https://docs.n8n.io/integrations/builtin/node-types) [Core nodes](https://docs.n8n.io/integrations/builtin/core-nodes) [App nodes](https://docs.n8n.io/integrations/builtin/app-nodes) [Trigger nodes](https://docs.n8n.io/integrations/builtin/trigger-nodes) [Cluster nodes](https://docs.n8n.io/integrations/builtin/cluster-nodes) [Credentials](https://docs.n8n.io/integrations/builtin/credentials) [Custom API actions for existing nodes](https://docs.n8n.io/integrations/builtin/custom-api-actions-for-existing-nodes) [Handle rate limits](https://docs.n8n.io/integrations/builtin/handle-rate-limits) [Deprecated nodes](https://docs.n8n.io/integrations/builtin/deprecated-nodes) [PreviousNodes](https://docs.n8n.io/integrations) [NextNode types](https://docs.n8n.io/integrations/builtin/node-types) Last updated 10 days ago Was this helpful? --- # Work with data | Build | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/build/work-with-data.md) . [Overview](https://docs.n8n.io/build/work-with-data/overview) [Understand n8n's data structure](https://docs.n8n.io/build/work-with-data/understand-n8ns-data-structure) [Expressions versus data nodes](https://docs.n8n.io/build/work-with-data/expressions-versus-data-nodes) [Reference data](https://docs.n8n.io/build/work-with-data/reference-data) [Transform data](https://docs.n8n.io/build/work-with-data/transform-data) [Filter out unwanted data](https://docs.n8n.io/build/work-with-data/filter-out-unwanted-data) [Pin and mock data](https://docs.n8n.io/build/work-with-data/pin-and-mock-data) [Handle special data types](https://docs.n8n.io/build/work-with-data/handle-special-data-types) [Data tables](https://docs.n8n.io/build/work-with-data/data-tables) [PreviousUnderstand execution order](https://docs.n8n.io/build/flow-logic/understand-execution-order) [NextOverview](https://docs.n8n.io/build/work-with-data/overview) Last updated 10 days ago Was this helpful? --- # Ways of building workflows | Build | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/build/ways-of-building-workflows.md) . [Use AI Assistant (Preview)](https://docs.n8n.io/build/ways-of-building-workflows/ai-assistant-preview) [Use n8n MCP server](https://docs.n8n.io/build/ways-of-building-workflows/connect-to-n8n-mcp-server) [Use templates](https://docs.n8n.io/build/ways-of-building-workflows/use-templates) [Use AI Workflow Builder](https://docs.n8n.io/build/ways-of-building-workflows/ai-workflow-builder) [Use Ask n8n AI](https://docs.n8n.io/build/ways-of-building-workflows/use-the-ai-assistant) [Use Chat Hub](https://docs.n8n.io/build/ways-of-building-workflows/chat-hub) [PreviousCreate and edit credentials](https://docs.n8n.io/build/understand-workflows/create-and-edit-credentials) [NextUse AI Assistant (Preview)](https://docs.n8n.io/build/ways-of-building-workflows/ai-assistant-preview) Last updated 2 days ago Was this helpful? --- # Custom API actions for existing nodes | Nodes | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/integrations/builtin/custom-api-actions-for-existing-nodes.md) . One of the most complex parts of setting up [API](https://docs.n8n.io/key-concept-glossary#api) calls is managing authentication. n8n provides [credentials](https://docs.n8n.io/key-concept-glossary#credential-n8n) support for operations and services beyond those supported by built-in nodes. * Custom operations for existing nodes: n8n supplies hundreds of nodes to create workflows that link multiple products. However, some nodes don't include all the possible operations supported by a product's API. You can work around this by making a custom API call using the [HTTP Request](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest) node. * Credential-only nodes: n8n includes credential-only nodes. These are integrations where n8n supports setting up credentials for use in the HTTP Request node, but doesn't provide a standalone node. You can find a credential-only node in the nodes panel, as you would for any other integration. [](https://docs.n8n.io/integrations/builtin/custom-api-actions-for-existing-nodes#predefined-credential-types) Predefined credential types ----------------------------------------------------------------------------------------------------------------------------------------------- A predefined credential type is a credential that already exists in n8n. You can use predefined credential types instead of generic credentials in the HTTP Request node. For example: you create an Asana credential, for use with the Asana node. Later, you want to perform an operation that isn't supported by the Asana node, using Asana's API. You can use your existing Asana credential in the HTTP Request node to perform the operation, without additional authentication setup. ### [](https://docs.n8n.io/integrations/builtin/custom-api-actions-for-existing-nodes#using-predefined-credential-types) Using predefined credential types To use a predefined credential type: 1. Open your HTTP Request node, or add a new one to your workflow. 2. In **Authentication**, select **Predefined Credential Type**. 3. In **Credential Type**, select the API you want to use. 4. In **Credential for** `****`, you can: 1. Select an existing credential for that platform, if available. 2. Select **Create New** to create a new credential. ### [](https://docs.n8n.io/integrations/builtin/custom-api-actions-for-existing-nodes#credential-scopes) Credential scopes Some existing credential types have specific scopes: endpoints that they work with. n8n warns you about this when you select the credential type. For example, follow the steps in [Using predefined credential types](https://docs.n8n.io/integrations/builtin/custom-api-actions-for-existing-nodes#using-predefined-credential-types) , and select **Google Calendar OAuth2 API** as your **Credential Type**. n8n displays a box listing the two endpoints you can use this credential type with: ![](https://docs.n8n.io/~gitbook/image?url=https%3A%2F%2F139179334-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FBKcbOzIWja8NfqKDcqHc%252Fuploads%252Fgit-blob-f3d16a279c43fed8940226a3e1a32b6e18e1d238%252Fscopes.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=3163a35d&sv=2) The scopes box [PreviousZulip credentials](https://docs.n8n.io/integrations/builtin/credentials/zulip) [NextHandle rate limits](https://docs.n8n.io/integrations/builtin/handle-rate-limits) Last updated 9 days ago Was this helpful? --- # Community nodes | Nodes | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/integrations/community-nodes.md) . [Installation and management](https://docs.n8n.io/integrations/community-nodes/installation-and-management) [Risks](https://docs.n8n.io/integrations/community-nodes/risks) [Blocklist](https://docs.n8n.io/integrations/community-nodes/blocklist) [Using community nodes](https://docs.n8n.io/integrations/community-nodes/using-community-nodes) [Troubleshooting](https://docs.n8n.io/integrations/community-nodes/troubleshooting) [Building community nodes](https://docs.n8n.io/integrations/community-nodes/building-community-nodes) [PreviousDeprecated nodes](https://docs.n8n.io/integrations/builtin/deprecated-nodes) [NextInstallation and management](https://docs.n8n.io/integrations/community-nodes/installation-and-management) Last updated 10 days ago Was this helpful? --- # Integrate AI | Build | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/build/integrate-ai.md) . [Understand AI components](https://docs.n8n.io/build/integrate-ai/understand-ai-components) [Test and improve AI workflows](https://docs.n8n.io/build/integrate-ai/test-and-improve-ai-workflows) [AI examples](https://docs.n8n.io/build/integrate-ai/ai-examples) [PreviousPagination](https://docs.n8n.io/build/code-in-n8n/cookbook/http-request-node/pagination) [NextUnderstand AI components](https://docs.n8n.io/build/integrate-ai/understand-ai-components) Last updated 10 days ago Was this helpful? --- # Installation and management | Nodes | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/integrations/community-nodes/installation-and-management.md) . There are four ways to install community nodes: * Within n8n using the [nodes panel](https://docs.n8n.io/integrations/community-nodes/installation-and-management/install-verified-community-nodes) (for verified community nodes only). * Within n8n [using the GUI](https://docs.n8n.io/integrations/community-nodes/installation-and-management/gui-installation) : Use this method to install community nodes from the npm registry. * [Manually from the command line](https://docs.n8n.io/integrations/community-nodes/installation-and-management/manual-installation) : use this method to install community nodes from npm if your n8n instance doesn't support installation through the in-app GUI. * [From environment variables](https://docs.n8n.io/integrations/community-nodes/installation-and-management/environment-variable-installation) : use this method to bootstrap an instance with a fixed set of community packages, for example through a deployment pipeline. **Installing from npm only available on self-hosted instances** Unverified community nodes aren't available on n8n cloud and require [self-hosting](https://docs.n8n.io/deploy/host-n8n) n8n. [PreviousCommunity nodes](https://docs.n8n.io/integrations/community-nodes) [NextInstall verified community nodes](https://docs.n8n.io/integrations/community-nodes/installation-and-management/install-verified-community-nodes) Last updated 10 days ago Was this helpful? --- # Node types | Nodes | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/integrations/builtin/node-types.md) . This section contains the node library: reference documentation for every built-in node in n8n, and their credentials. When you add a node to a workflow, n8n displays a list of available operations. An operation is something a node does, such as getting or sending data. There are two types of operation: * Triggers start a workflow in response to specific events or conditions in your services. When you select a Trigger, n8n adds a trigger node to your workflow, with the Trigger operation you chose pre-selected. When you search for a node in n8n, Trigger operations have a bolt icon ![Trigger icon](https://docs.n8n.io/~gitbook/image?url=https%3A%2F%2F2738857267-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FGixZThfitWP21x2gQFpD%252Fuploads%252Fgit-blob-4829d6f9de935beb784ab8cce7a682aaaf30432c%252Ftrigger.png%3Falt%3Dmedia&width=26&dpr=3&quality=100&sign=c6d24e3b&sv=2). * Actions are operations that represent specific tasks within a workflow, which you can use to manipulate data, perform operations on external systems, and trigger events in other systems as part of your workflows. When you select an Action, n8n adds a node to your workflow, with the Action operation you chose pre-selected. [](https://docs.n8n.io/integrations/builtin/node-types#core-nodes) Core nodes ---------------------------------------------------------------------------------- Core nodes can be actions or triggers. Whereas most nodes connect to a specific external service, core nodes provide functionality such as logic, scheduling, or generic API calls. [](https://docs.n8n.io/integrations/builtin/node-types#cluster-nodes) Cluster nodes ---------------------------------------------------------------------------------------- [Cluster nodes](https://docs.n8n.io/key-concept-glossary#cluster-node-n8n) are node groups that work together to provide functionality in an n8n workflow. Instead of using a single node, you use a [root node](https://docs.n8n.io/key-concept-glossary#root-node-n8n) and one or more [sub-nodes](https://docs.n8n.io/key-concept-glossary#sub-node-n8n) that extend the functionality of the node. ![](https://docs.n8n.io/~gitbook/image?url=https%3A%2F%2F2738857267-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FGixZThfitWP21x2gQFpD%252Fuploads%252Fgit-blob-eeb624d06de1a0d1328156fc353875aa0b8cdebe%252Froot-sub-nodes.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=d5c3386&sv=2) Screenshot of a workflow with a root node and two sub-nodes [](https://docs.n8n.io/integrations/builtin/node-types#credentials) Credentials ------------------------------------------------------------------------------------ External services need a way to identify and authenticate users. This data can range from an API key over an email/password combination to a long multi-line private key. You can save these in n8n as credentials. Nodes in n8n can then request that credential information. As another layer of security, only node types with specific access rights can access the credentials. To make sure that the data is secure, it gets saved to the database encrypted. n8n uses a random personal encryption key, which it automatically generates on the first run of n8n and then saved under `~/.n8n/config`. To learn more about creating, managing, and sharing credentials, refer to [Manage credentials](https://docs.n8n.io/build/understand-workflows/create-and-edit-credentials) . [](https://docs.n8n.io/integrations/builtin/node-types#community-nodes) Community nodes -------------------------------------------------------------------------------------------- n8n supports custom nodes built by the community. Refer to [Community nodes](https://docs.n8n.io/integrations/community-nodes/installation-and-management) for guidance on installing and using these nodes. For help building your own custom nodes, and publish them to [npm](https://www.npmjs.com/) , refer to [Creating nodes](https://docs.n8n.io/connect/create-nodes/overview) for more information. [PreviousBuilt-in nodes](https://docs.n8n.io/integrations/builtin) [NextCore nodes](https://docs.n8n.io/integrations/builtin/core-nodes) Last updated 7 days ago Was this helpful? --- # Using community nodes | Nodes | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/integrations/community-nodes/using-community-nodes.md) . To use community nodes, you first need to [install](https://docs.n8n.io/integrations/community-nodes/installation-and-management) them. [](https://docs.n8n.io/integrations/community-nodes/using-community-nodes#adding-community-nodes-to-your-workflow) Adding community nodes to your workflow --------------------------------------------------------------------------------------------------------------------------------------------------------------- After installing a community node, you can use it like any other node. n8n displays the node in search results in the **Nodes** panel. n8n marks community nodes with a **Package** ![Package icon](https://docs.n8n.io/~gitbook/image?url=https%3A%2F%2F139179334-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FBKcbOzIWja8NfqKDcqHc%252Fuploads%252Fgit-blob-54756d06a1ec1ef324747430f27b386c34b88e50%252Fpackage.png%3Falt%3Dmedia&width=40&dpr=3&quality=100&sign=af48d2a7&sv=2) icon in the nodes panel. [](https://docs.n8n.io/integrations/community-nodes/using-community-nodes#community-nodes-with-duplicate-names) Community nodes with duplicate names --------------------------------------------------------------------------------------------------------------------------------------------------------- It's possible for several community nodes to have the same name. If you use two nodes with the same name in your workflow, they'll look the same, unless they have different icons. [PreviousBlocklist](https://docs.n8n.io/integrations/community-nodes/blocklist) [NextTroubleshooting](https://docs.n8n.io/integrations/community-nodes/troubleshooting) Last updated 10 days ago Was this helpful? --- # Overview | Connect | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/connect/create-nodes/overview.md) . Learn how to build your own custom nodes. This section includes: * Guidance on planning your build, including [which style to use](https://docs.n8n.io/connect/create-nodes/plan-your-node/choose-a-node-building-style) . * [Tutorials](https://docs.n8n.io/connect/create-nodes/build-your-node) for different node building styles. * Instructions for [testing your node](https://docs.n8n.io/connect/create-nodes/test-your-node) , including how to use the n8n [node linter](https://docs.n8n.io/connect/create-nodes/test-your-node/node-linter) and [troubleshooting](https://docs.n8n.io/connect/create-nodes/test-your-node/troubleshooting) support. * How to [share your node](https://docs.n8n.io/connect/create-nodes/deploy-your-node/submit-community-nodes) with the community, submit it for [verification by n8n](https://docs.n8n.io/connect/create-nodes/deploy-your-node/submit-community-nodes) , or use it as a [private node](https://docs.n8n.io/connect/create-nodes/deploy-your-node/install-private-nodes) . * [Reference material](https://docs.n8n.io/connect/create-nodes/build-your-node/reference) , including UI elements and information on the individual files that make up a node. [](https://docs.n8n.io/connect/create-nodes/overview#prerequisites) Prerequisites -------------------------------------------------------------------------------------- This section assumes the following: * Some familiarity with JavaScript and TypeScript. * Ability to manage your own development environment, including git. * Knowledge of npm, including creating and submitting packages. * Familiarity with n8n, including a good understanding of [data structures](https://docs.n8n.io/build/work-with-data/understand-n8ns-data-structure) and [item linking](https://docs.n8n.io/build/work-with-data/reference-data/link-data-items) . [PreviousCreate nodes](https://docs.n8n.io/connect/create-nodes) [NextPlan your node](https://docs.n8n.io/connect/create-nodes/plan-your-node) Last updated 9 days ago Was this helpful? --- # HTTP Request | Nodes | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest.md) . The HTTP Request node is one of the most versatile nodes in n8n. It allows you to make HTTP requests to query data from any app or service with a REST API. You can use the HTTP Request node a regular node or attached to an [AI agent](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/tools-agent) to use as a [tool](https://docs.n8n.io/build/integrate-ai/understand-ai-components/how-tools-work) { data-preview }. When using this node, you're creating a REST API call. You need some understanding of basic API terminology and concepts. There are two ways to create an HTTP request: configure the [node parameters](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest#node-parameters) or [import a curl command](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest#import-curl-command) . **Credentials** Refer to [HTTP Request credentials](https://docs.n8n.io/integrations/builtin/credentials/httprequest) for guidance on setting up authentication. [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest#node-parameters) Node parameters ----------------------------------------------------------------------------------------------------------------------- ### [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest#method) Method Select the method to use for the request: * DELETE * GET * HEAD * OPTIONS * PATCH * POST * PUT ### [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest#url) URL Enter the endpoint you want to use. ### [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest#authentication) Authentication n8n recommends using the **Predefined Credential Type** option when it's available. It offers an easier way to set up and manage credentials, compared to configuring generic credentials. #### [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest#predefined-credentials) Predefined credentials Credentials for integrations supported by n8n, including both built-in and community nodes. Use **Predefined Credential Type** for custom operations without extra setup. Refer to [Custom API operations](https://docs.n8n.io/integrations/builtin/custom-api-actions-for-existing-nodes) for more information. #### [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest#generic-credentials) Generic credentials Credentials for integrations not supported by n8n. You'll need to manually configure the authentication process, including specifying the required API endpoints, necessary parameters, and the authentication method. You can select one of the following methods: * Basic auth * Custom auth * Digest auth * Header auth * OAuth1 API * OAuth2 API * Query auth Refer to [HTTP request credentials](https://docs.n8n.io/integrations/builtin/credentials/httprequest) for more information on setting up each credential type. ### [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest#send-query-parameters) Send Query Parameters Query parameters act as filters on HTTP requests. If the API you're interacting with supports them and the request you're making needs a filter, turn this option on. **Specify your query parameters** using one of the available options: * **Using Fields Below**: Enter **Name**/**Value** pairs of **Query Parameters**. To enter more query parameter name/value pairs, select **Add Parameter**. The name is the name of the field you're filtering on, and the value is the filter value. * **Using JSON**: Enter **JSON** to define your query parameters. Refer to your service's API documentation for detailed guidance. ### [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest#send-headers) Send Headers Use this parameter to send headers with your request. Headers contain metadata or context about your request. **Specify Headers** using one of the available options: * **Using Fields Below**: Enter **Name**/**Value** pairs of **Header Parameters**. To enter more header parameter name/value pairs, select **Add Parameter**. The name is the header you wish to set, and the value is the value you want to pass for that header. * **Using JSON**: Enter **JSON** to define your header parameters. Refer to your service's API documentation for detailed guidance. ### [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest#send-body) Send Body If you need to send a body with your API request, turn this option on. Then select the **Body Content Type** that best matches the format for the body content you wish to send. #### [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest#form-urlencoded) Form URLencoded Use this option to send your body as `application/x-www-form-urlencoded`. **Specify Body** using one of the available options: * **Using Fields Below**: Enter **Name**/**Value** pairs of **Body Parameters**. To enter more body parameter name/value pairs, select **Add Parameter**. The name should be the form field name, and the value is what you wish to set that field to. * **Using Single Field**: Enter your name/value pairs in a single **Body** parameter with format `fieldname1=value1&fieldname2=value2`. Refer to your service's API documentation for detailed guidance. #### [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest#form-data) Form-Data Use this option to send your body as `multipart/form-data`. Configure your **Body Parameters** by selecting the **Parameter Type**: * Choose **Form Data** to enter **Name**/**Value** pairs. * Choose **n8n Binary File** to pull the body from a file the node has access to. * **Name**: Enter the ID of the field to set. * **Input Data Field Name**: Enter the name of the incoming field containing the binary file data you want to process. Select **Add Parameter** to enter more parameters. Refer to your service's API documentation for detailed guidance. #### [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest#json) JSON Use this option to send your body as JSON. **Specify Body** using one of the available options: * **Using Fields Below**: Enter **Name**/**Value** pairs of **Body Parameters**. To enter more body parameter name/value pairs, select **Add Parameter**. * **Using JSON**: Enter **JSON** to define your body. Refer to your service's API documentation for detailed guidance. #### [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest#n8n-binary-file) n8n Binary File Use this option to send the contents of a file stored in n8n as the body. Enter the name of the incoming field that contains the file as the **Input Data Field Name**. Refer to your service's API documentation for detailed guidance on how to format the file. #### [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest#raw) Raw Use this option to send raw data in the body. * **Content Type**: Enter the `Content-Type` header to use for the raw body content. Refer to the IANA [Media types](https://www.iana.org/assignments/media-types/media-types.xhtml) documentation for a full list of MIME content types. * **Body**: Enter the raw body content to send. Refer to your service's API documentation for detailed guidance. [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest#node-options) Node options ----------------------------------------------------------------------------------------------------------------- Select **Add Option** to view and select these options. Options are available to all parameters unless otherwise noted. ### [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest#array-format-in-query-parameters) Array Format in Query Parameters **Option availability** This option is only available when you turn on **Send Query Parameters**. Use this option to control the format for arrays included in query parameters. Choose from these options: * **No Brackets**: Arrays will format as the name=value for each item in the array, for example: `foo=bar&foo=qux`. * **Brackets Only**: The node adds square brackets after each array name, for example: `foo[]=bar&foo[]=qux`. * **Brackets with Indices**: The node adds square brackets with an index value after each array name, for example: `foo[0]=bar&foo[1]=qux`. Refer to your service's API documentation for guidance on which option to use. ### [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest#batching) Batching Control how to batch large numbers of input items: * **Items per Batch**: Enter the number of input items to include in each batch. * **Batch Interval**: Enter the time to wait between each batch of requests in milliseconds. Enter 0 for no batch interval. ### [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest#ignore-ssl-issues) Ignore SSL Issues By default, n8n only downloads the response if SSL certificate validation succeeds. If you'd like to download the response even if SSL certificate validation fails, turn this option on. ### [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest#lowercase-headers) Lowercase Headers Choose whether to lowercase header names (turned on, default) or not (turned off). ### [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest#redirects) Redirects Choose whether to follow redirects (turned on by default) or not (turned off). If turned on, enter the maximum number of redirects the request should follow in **Max Redirects**. ### [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest#response) Response Use this option to set some details about the expected API response, including: * **Include Response Headers and Status**: By default, the node returns only the body. Turn this option on to return the full response (headers and response status code) as well as the body. * **Never Error**: By default, the node returns success only when the response returns with a 2xx code. Turn this option on to return success regardless of the code returned. * **Response Format**: Select the format in which the data gets returned. Choose from: * **Autodetect** (default): The node detects and formats the response based on the data returned. * **File**: Select this option to put the response into a file. Enter the field name where you want the file returned in **Put Output in Field**. * **JSON**: Select this option to format the response as JSON. * **Text**: Select this option to format the response as plain text. Enter the field name where you want the file returned in **Put Output in Field**. ### [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest#pagination) Pagination Use this option to paginate results, useful for handling query results that are too big for the API to return in a single call. **Inspect the API data first** Some options for pagination require knowledge of the data returned by the API you're using. Before setting up pagination, either check the API documentation, or do an API call without pagination, to see the data it returns. Understand pagination[](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest#understand-pagination) Pagination means splitting a large set of data into multiple pages. The amount of data on each page depends on the limit you set. For example, you make an API call to an endpoint called `/users`. The API wants to send back information on 300 users, but this is too much data for the API to send in one response. If the API supports pagination, you can incrementally fetch the data. To do this, you call `/users` with a pagination limit, and a page number or URL to tell the API which page to send. In this example, say you use a limit of 10, and start from page 0. The API sends the first 10 users in its response. You then call the API again, increasing the page number by 1, to get the next 10 results. Configure the pagination settings: * **Pagination Mode**: * **Off**: Turn off pagination. * **Update a Parameter in Each Request**: Use this when you need to dynamically set parameters for each request. * **Response Contains Next URL**: Use this when the API response includes the URL of the next page. Use an expression to set **Next URL**. For example setups, refer to [HTTP Request node cookbook | Pagination](https://docs.n8n.io/build/code-in-n8n/cookbook/http-request-node/pagination) . n8n provides built-in variables for working with HTTP node requests and responses when using pagination: Variable Description `$pageCount` The pagination count. Tracks how many pages the node has fetched. `$request` The request object sent by the HTTP node. `$response` The response object from the HTTP call. Includes `$response.body`, `$response.headers`, and `$response.statusCode`. The contents of `body` and `headers` depend on the data sent by the API. **API differences** Different APIs implement pagination in different ways. Check the API documentation for the API you're using for details. You need to find out things like: * Does the API provide the URL for the next page? * Are there API-specific limits on page size or page number? * The structure of the data that the API returns. ### [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest#proxy) Proxy Use this option if you need to specify an HTTP proxy. Enter the **Proxy** the request should use. This takes precedence over global settings defined with the [`HTTP_PROXY`, `HTTPS_PROXY`, or `ALL_PROXY` environment variables](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/deployment) . ### [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest#timeout) Timeout Use this option to set how long the node should wait for the server to send response headers (and start the response body). The node aborts requests that exceed this value for the initial response. Enter the **Timeout** time to wait in milliseconds. [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest#tool-only-options) Tool-only options --------------------------------------------------------------------------------------------------------------------------- The following options are only available when attached to an [AI agent](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/tools-agent) as a [tool](https://docs.n8n.io/build/integrate-ai/understand-ai-components/how-tools-work) { data-preview }. ### [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest#optimize-response) Optimize Response Whether to optimize the tool response to reduce the amount of data passed to the LLM. Optimizing the response can reduce costs and can help the LLM ignore unimportant details, often leading to better results. When optimizing responses, you select an expected response type, which determines other options you can configure. The supported response types are: #### [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest#json-1) JSON When expecting a **JSON** response, you can configure which parts of the JSON data to use as a response with the following choices: * **Field Containing Data**: This field identifies a specific part of the JSON object that contains your relevant data. You can leave this blank to use the entire response. * **Include Fields**: This is how you choose which fields you want in your response object. There are three choices: * **All**: Include all fields in the response object. * **Selected**: Include only the fields specified below. * **Fields**: A comma-separated list of fields to include in the response. You can use dot notation to specify nested fields. You can drag fields from the Input panel to add them to the field list. * **Exclude**: Include all fields _except_ the fields specified below. * **Fields**: A comma-separated list of fields to exclude from the response. You can use dot notation to specify nested fields. You can drag fields from the Input panel to add them to the field list. #### [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest#html) HTML When expecting **HTML**, you can identify the part of an HTML document relevant to the LLM and optimize the response with the following options: * **Selector (CSS)**: A specific element or element type to include in the response HTML. Uses the `body` element by default. * **Return Only Content**: Whether to strip HTML tags and attributes from the response, leaving only the actual content. This uses fewer tokens and may be easier for the model to understand. * **Elements To Omit**: A comma-separated list of CSS selectors to exclude when extracting content. * **Truncate Response**: Whether to limit the response size to save tokens. * **Max Response Characters**: The maximum number of characters to include in the HTML response. The default value is 1000. #### [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest#text) Text When expecting a generic **Text** response, you can optimize the results with the following options: * **Truncate Response**: Whether to limit the response size to save tokens. * **Max Response Characters**: The maximum number of characters to include in the HTML response. The default value is 1000. [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest#import-curl-command) Import curl command ------------------------------------------------------------------------------------------------------------------------------- [curl](https://curl.se/) is a command line tool and library for transferring data with URLs. You can use curl to call REST APIs. If the API documentation of the service you want to use provides curl examples, you can copy them out of the documentation and into n8n to configure the HTTP Request node. Import a curl command: **Import format** This option always imports any parameter values as strings. If you wish to preserve the type of numbers and booleans in your request, switch **Using Fields Below** to **Using JSON** and paste your JSON object containing the parameters. 1. From the HTTP Request node's **Parameters** tab, select **Import cURL**. The **Import cURL command** modal opens. 2. Paste your curl command into the text box. 3. Select **Import**. n8n loads the request configuration into the node fields. This overwrites any existing configuration. [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest#templates-and-examples) Templates and examples ------------------------------------------------------------------------------------------------------------------------------------- [Browse n8n-nodes-base.httprequest integration templates](https://n8n.io/integrations/http-request) or [search all templates](https://n8n.io/workflows/) [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest#common-issues) Common issues ------------------------------------------------------------------------------------------------------------------- For common questions or issues and suggested solutions, refer to [Common Issues](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/common-issues) . [PreviousHTML](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.html) [NextCommon Issues](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/common-issues) Last updated 9 days ago Was this helpful? --- # Privacy | Privacy and security | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/privacy-and-security/privacy.md) . This page describes n8n's data privacy practices. [](https://docs.n8n.io/privacy-and-security#gdpr) GDPR ----------------------------------------------------------- ### [](https://docs.n8n.io/privacy-and-security#data-processing-agreement) Data processing agreement For Cloud versions of n8n, n8n is considered both a Controller and a Processor as defined by the GDPR. As a Processor, n8n implements policies and practices that secure the personal data you send to the platform, and includes a [Data Processing Agreement](https://n8n.io/legal/#data) as part of the company's standard [Terms of Service](https://n8n.io/legal/#terms) . The n8n Data Processing Agreement includes the [Standard Contractual Clauses (SCCs)](https://ec.europa.eu/info/law/law-topic/data-protection/international-dimension-data-protection/standard-contractual-clauses-scc_en) . These clarify how n8n handles your data, and they update n8n's GDPR policies to cover the latest standards set by the European Commission. You can find a list of n8n sub-processors [here](https://n8n.io/legal/sub-processors/) . **Self-hosted n8n** For self-hosted versions, n8n is neither a Controller nor a Processor, as we don't manage your data ### [](https://docs.n8n.io/privacy-and-security#submitting-an-account-deletion-request) Submitting an account deletion request Email help@n8n.io to make an account deletion request. ### [](https://docs.n8n.io/privacy-and-security#sub-processors) Sub-processors The sub-processor list has moved to [n8n.io/legal/sub-processors](https://n8n.io/legal/sub-processors/) . ### [](https://docs.n8n.io/privacy-and-security#gdpr-for-self-hosted-users) GDPR for self-hosted users If you self-host n8n, you are responsible for deleting user data. If you need to delete data on behalf of one of your users, you can delete the respective execution. n8n recommends configuring n8n to prune execution data automatically every few days to avoid effortful GDPR request handling as much as possible. Configure this using the `EXECUTIONS_DATA_MAX_AGE` environment variable. Refer to [Environment variables](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables) for more information. [](https://docs.n8n.io/privacy-and-security#data-collection) Data collection --------------------------------------------------------------------------------- n8n collects selected usage and performance data to help diagnose problems and improve the platform. Read about how n8n stores and processes this information in the [privacy policy](https://n8n.io/legal/#privacy) . The data gathered is different in self-hosted n8n and n8n Cloud. ### [](https://docs.n8n.io/privacy-and-security#data-collection-in-self-hosted-n8n) Data collection in self-hosted n8n n8n takes care to keep self-hosted data anonymous and avoids collecting sensitive data. #### [](https://docs.n8n.io/privacy-and-security#what-n8n-collects) What n8n collects * Error codes and messages of failed executions (excluding any payload data, and not for custom nodes) * Error reports for app crashes and API issues * The graph of a workflow (types of nodes used and how they're connected) * From node parameters: * The 'resource' and 'operation' that a node is set to (if applicable) * For HTTP request nodes, the domain, path, and method (with personal data anonymized) * Data around workflow executions: * Status * The user ID of the user who ran the execution * The first time a workflow loads data from an external source * The first successful production (non-manual) workflow execution * The domain of webhook calls, if specified (excluding subdomain). * Details on how the UI is used (for example, navigation, nodes panel searches) * Diagnostic information: * n8n version * Selected settings: * DB\_TYPE * N8N\_VERSION\_NOTIFICATIONS\_ENABLED * N8N\_DISABLE\_PRODUCTION\_MAIN\_PROCESS * [Execution variables](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/executions) * OS, RAM, and CPUs * Anonymous instance ID * IP address #### [](https://docs.n8n.io/privacy-and-security#what-n8n-doesnt-collect) What n8n doesn't collect n8n doesn't collect private or sensitive information, such as: * Personally identifiable information (except IP address) * Credential information * Node parameters (except 'resource' and 'operation') * Execution data * Sensitive settings (for example, endpoints, ports, DB connections, username/password) * Error payloads #### [](https://docs.n8n.io/privacy-and-security#how-collection-works) How collection works Most data is sent to n8n as events that generate it occur. Workflow execution counts and an instance pulse are sent periodically (every 6 hours). #### [](https://docs.n8n.io/privacy-and-security#opting-out-of-telemetry) Opting out of telemetry Telemetry collection is enabled by default. To disable it you can configure the following environment variables. To opt out of telemetry events: Copy export N8N_DIAGNOSTICS_ENABLED=false To opt out of checking for new versions of n8n: Copy export N8N_VERSION_NOTIFICATIONS_ENABLED=false To disable the templates feature (prevents background health check calls): Copy export N8N_TEMPLATES_ENABLED=false See [configuration](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration) for more info on how to set environment variables. ### [](https://docs.n8n.io/privacy-and-security#data-collection-in-n8n-cloud) Data collection in n8n Cloud n8n Cloud collects everything listed in [Data collection in self-hosted n8n](https://docs.n8n.io/privacy-and-security#data-collection-in-self-hosted-n8n) . Additionally, in n8n Cloud, n8n uses [PostHog](https://posthog.com/) to track events and visualise usage, including using session recordings. Session recordings comprise the data seen by a user on screen, with the exception of credential values. n8n's product team uses this data to improve the product. All recordings are deleted after 21 days. ### [](https://docs.n8n.io/privacy-and-security#ai-in-n8n) AI in n8n To provide enhanced assistance, n8n integrates AI-powered features that leverage Large Language Models (LLMs). #### [](https://docs.n8n.io/privacy-and-security#how-n8n-uses-ai) How n8n uses AI To assist and improve user experience, n8n may send specific context data to LLMs. This context data is strictly limited to information about the current workflow. n8n does not send any values from credential fields or actual output data to AI services. The data will not be incorporated, used, or retained to train the models of the AI services. Any data will be deleted after 30 days. #### [](https://docs.n8n.io/privacy-and-security#ai-usage-settings) AI usage settings Available in n8n v2.7.0 and above. You can manage your AI usage settings by navigating to **Settings** > **AI Usage** in your n8n instance. More details can be found on the [AI Assistant documentation page](https://docs.n8n.io/build/ways-of-building-workflows/use-the-ai-assistant#ai-usage-settings) . #### [](https://docs.n8n.io/privacy-and-security#when-n8n-shares-data) When n8n shares data Data is only sent to AI services if workspaces have opted in to use the assistant. The Assistant is enabled by default for n8n Cloud users. When a workspace opts in to use the assistant, node-specific data is transmitted only during direct interactions and active sessions with the AI assistant, ensuring no unnecessary data sharing occurs. #### [](https://docs.n8n.io/privacy-and-security#what-n8n-shares) What n8n shares * **General Workflow Information**: This includes details about which nodes are present in your workflow, the number of items currently in the workflow, and whether the workflow is active. * **Input & Output Schemas of Nodes**: This includes the schema of all nodes with incoming data and the output schema of a node in question. We do not send the actual data value of the schema. * **Node Configuration**: This includes the operations, options, and settings chosen in the referenced node. * **Code and Expressions**: This includes any code or expressions in the node in question to help with debugging potential issues and optimizations. #### [](https://docs.n8n.io/privacy-and-security#what-n8n-doesnt-share) What n8n doesn't share * **Credentials**: Any values of the credential fields of your nodes. * **Output Data**: The actual data processed by your workflows. * **Sensitive Information**: Any personally identifiable information or other sensitive data that could compromise your privacy or security that you have not explicitly mentioned in node parameters or your code of a [Code Node](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code) . ### [](https://docs.n8n.io/privacy-and-security#documentation-telemetry) Documentation telemetry n8n's documentation (this website) uses cookies to recognize your repeated visits and preferences, as well as to measure the effectiveness of n8n's documentation and whether users find what they're searching for. With your consent, you're helping n8n to make our documentation better. You can control cookie consent using the cookie widget. [](https://docs.n8n.io/privacy-and-security#retention-and-deletion-of-personal-identifiable-data) Retention and deletion of personal identifiable data ----------------------------------------------------------------------------------------------------------------------------------------------------------- PID (personal identifiable data) is data that's personal to you and would identify you as an individual. ### [](https://docs.n8n.io/privacy-and-security#n8n-cloud) n8n Cloud #### [](https://docs.n8n.io/privacy-and-security#pid-retention) PID retention n8n only retains data for as long as necessary to provide the core service. For n8n Cloud, n8n stores your workflow code, credentials, and other data indefinitely, until you choose to delete it or close your account. The platform stores execution data according to the retention rules on your account. n8n deletes most internal application logs and logs tied to subprocessors within 90 days. The company retains a subset of logs for longer periods where required for security investigations. #### [](https://docs.n8n.io/privacy-and-security#pid-deletion) PID deletion If you choose to delete your n8n account, n8n deletes all customer data and event data associated with your account. n8n deletes customer data in backups within 90 days. ### [](https://docs.n8n.io/privacy-and-security#self-hosted) Self-hosted Self-hosted users should have their own PID policy and data deletion processes. Refer to [What you can do](https://docs.n8n.io/privacy-and-security/what-you-can-do) for more information. [](https://docs.n8n.io/privacy-and-security#payment-processor) Payment processor ------------------------------------------------------------------------------------- n8n uses Paddle.com to process payments. When you sign up for a paid plan, Paddle transmits and stores the details of your payment method according to their security policy. n8n stores no information about your payment method. [NextIncident response](https://docs.n8n.io/privacy-and-security/incident-response) Last updated 9 days ago Was this helpful? --- # Flow logic | Build | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/build/flow-logic.md) . n8n allows you to represent complex logic in your workflows. [](https://docs.n8n.io/build/flow-logic#related-sections) Related sections ------------------------------------------------------------------------------- You need some understanding of [Data](https://docs.n8n.io/build/work-with-data/overview) in n8n, including [Data structure](https://docs.n8n.io/build/work-with-data/understand-n8ns-data-structure) and [Data flow within nodes](https://docs.n8n.io/build/work-with-data/understand-n8ns-data-structure#how-data-flows-within-nodes) . When building your logic, you'll use n8n's [Core nodes](https://docs.n8n.io/integrations/builtin/core-nodes) , including: * Splitting: [IF](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.if) and [Switch](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.switch) . * Merging: [Merge](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.merge) , [Compare Datasets](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.comparedatasets) , and [Code](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code) . * Looping: [IF](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.if) and [Loop Over Items](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.splitinbatches) . * Waiting: [Wait](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.wait) . * Creating sub-workflows: [Execute Workflow](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executeworkflow) and [Execute Workflow Trigger](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executeworkflowtrigger) . * Error handling: [Stop And Error](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.stopanderror) and [Error Trigger](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.errortrigger) . [PreviousShare with others](https://docs.n8n.io/build/manage-workflows/share-with-others) [NextSplit with conditionals](https://docs.n8n.io/build/flow-logic/split-with-conditionals) Last updated 10 days ago Was this helpful? --- # Trigger nodes | Nodes | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/integrations/builtin/trigger-nodes.md) . This section provides information about n8n's Triggers. [PreviousZulip](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.zulip) [NextActiveCampaign Trigger](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.activecampaigntrigger) Last updated 9 days ago Was this helpful? --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/contribute/contribute-to-n8n.md). # Contribute to n8n There are a several ways in which you can contribute to n8n, depending on your skills and interests. Each form of contribution is valuable to us! ## Share some love: Review us \* Star n8n on \[GitHub\](https://github.com/n8n-io/n8n) and \[Docker Hub\](https://hub.docker.com/r/n8nio/n8n). \* Follow us on \[Twitter\](https://twitter.com/n8n\_io), \[LinkedIn\](https://www.linkedin.com/company/28491094), and \[Facebook\](https://www.facebook.com/n8nio/). \* Upvote n8n on \[AlternativeTo\](https://alternativeto.net/software/n8n-io/) and \[Alternative.me\](https://alternative.me/n8n-io). \* Add n8n to your stack on \[Stackshare\](https://stackshare.io/n8n). \* Write a review about n8n on \[G2\](https://www.g2.com/products/n8n/reviews), \[Slant\](https://www.slant.co/improve/options/37977/~n8n-review), and \[Capterra\](https://www.capterra.com/p/198028/n8n-io/). ## Help out the community You can participate in the \[forum\](https://community.n8n.io/) and help the community members out with their questions. When sharing workflows in the community forum for debugging, use code blocks. Use triple backticks \` \`\`\` \` to wrap the workflow JSON in a code block. The following video demonstrates the steps of sharing workflows on the community forum: {% embed url="" %} ## Contribute a workflow template You can submit your workflows to n8n's template library. n8n is working on a creator program, and developing a marketplace of templates. This is an ongoing project, and details are likely to change. Refer to \[n8n Creator hub\](https://www.notion.so/n8n/n8n-Creator-hub-7bd2cbe0fce0449198ecb23ff4a2f76f) for information on how to submit templates and become a creator. ## Build a node Create an integration for a third party service. Check out \[the node creation docs\](/connect/create-nodes/overview.md) for guidance on how to create and publish a community node. ## Contribute to the code There are different ways in which you can contribute to the n8n code base: \* Fix \[issues\](https://github.com/n8n-io/n8n/issues) reported on GitHub. The \[CONTRIBUTING guide\](https://github.com/n8n-io/n8n/blob/master/CONTRIBUTING.md) will help you get your development environment ready in minutes. \* Add additional functionality to an existing third party integration. \* Add a new feature to n8n. ## Contribute to the docs You can contribute to the n8n documentation, for example by documenting nodes or fixing issues. The repository for the docs is \[here\](https://github.com/n8n-io/n8n-docs) and the guidelines for contributing to the docs are \[here\](https://github.com/n8n-io/n8n-docs/blob/master/CONTRIBUTING.md). ## Contribute to community tutorials Share your own video or written guides on our \[community-driven, searchable library of n8n tutorials and training materials\](https://community.n8n.io/t/how-to-share-your-tutorials/48398). Tag them for easy discovery, and post in your language’s subcategory. Follow the contribution guidelines to help keep our growing library high-quality and accessible to everyone. ## Refer a candidate Do you know someone who would be a great fit for one of our \[open positions\](https://n8n.io/careers)? Refer them to us! In return, we'll pay you €1,000 when the referral successfully passes their probationary period. Here's how this works: 1. \*\*Search\*\*: Have a look at the description and requirements of each role, and consider if someone you know would be a great fit. 2. \*\*Referral\*\*: Once you've identified a potential candidate, send an email to \[Jobs at n8n\](mailto:jobs@n8n.io) with the subject line \*Employee referral - \\\[job title\]\* and a short description of the person you're referring (and the reason why). Also, tell your referral to apply for the job through our \[careers page\](https://n8n.io/careers). 3. \*\*Evaluation\*\*: We'll screen the application and inform you about the next steps of the hiring process. 4. \*\*Reward\*\*: As soon as your referral has successfully finished the probationary period, we'll reward you for your efforts by transferring the €1,000 to your bank account. --- # Credentials | Nodes | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/integrations/builtin/credentials.md) . This section contains step-by-step information about authenticating the different nodes in n8n. [PreviousModel Selector](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.modelselector) [NextAction Network credentials](https://docs.n8n.io/integrations/builtin/credentials/actionnetwork) Last updated 10 days ago Was this helpful? --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/build/integrate-ai.md). # Integrate AI {% content-ref url="/pages/h1tEyG8mIEk9JnQQqtpx" %} \[Understand AI components\](/build/integrate-ai/understand-ai-components.md) {% endcontent-ref %} {% content-ref url="/pages/VpIGTBBk7PV3glWpoUrT" %} \[Test and improve AI workflows\](/build/integrate-ai/test-and-improve-ai-workflows.md) {% endcontent-ref %} {% content-ref url="/pages/achz8OvvBOKBQN3azCxB" %} \[AI examples\](/build/integrate-ai/ai-examples.md) {% endcontent-ref %} --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/build/manage-workflows.md). # Manage workflows {% content-ref url="/pages/Y6ReliiVYJJSBv9kJ2rC" %} \[Configure workflow settings\](/build/manage-workflows/configure-workflow-settings.md) {% endcontent-ref %} {% content-ref url="/pages/AHdRz1t9G6SfbecnM2OT" %} \[Tag workflows\](/build/manage-workflows/tag-workflows.md) {% endcontent-ref %} {% content-ref url="/pages/YUA6vIbGfH248ZCipNN2" %} \[View change history\](/build/manage-workflows/view-change-history.md) {% endcontent-ref %} {% content-ref url="/pages/XTs4MnKTUAPfeDpltySc" %} \[Export and import\](/build/manage-workflows/export-and-import.md) {% endcontent-ref %} {% content-ref url="/pages/k2CGHedyMWoNgUv8reeb" %} \[Share with others\](/build/manage-workflows/share-with-others.md) {% endcontent-ref %} --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/connect/create-nodes/overview.md). # Overview Learn how to build your own custom nodes\[^1\]. This section includes: \* Guidance on planning your build, including \[which style to use\](/connect/create-nodes/plan-your-node/choose-a-node-building-style.md). \* \[Tutorials\](/connect/create-nodes/build-your-node.md) for different node building styles. \* Instructions for \[testing your node\](/connect/create-nodes/test-your-node.md), including how to use the n8n \[node linter\](/connect/create-nodes/test-your-node/node-linter.md) and \[troubleshooting\](/connect/create-nodes/test-your-node/troubleshooting.md) support. \* How to \[share your node\](/connect/create-nodes/deploy-your-node/submit-community-nodes.md) with the community, submit it for \[verification by n8n\](/connect/create-nodes/deploy-your-node/submit-community-nodes.md), or use it as a \[private node\](/connect/create-nodes/deploy-your-node/install-private-nodes.md). \* \[Reference material\](/connect/create-nodes/build-your-node/reference.md), including UI elements and information on the individual files that make up a node. ## Prerequisites [](https://docs.n8n.io/connect/create-nodes/overview.md#prerequisites) This section assumes the following: \* Some familiarity with JavaScript and TypeScript. \* Ability to manage your own development environment, including git. \* Knowledge of npm, including creating and submitting packages. \* Familiarity with n8n, including a good understanding of \[data structures\](/build/work-with-data/understand-n8ns-data-structure.md) and \[item linking\](/build/work-with-data/reference-data/link-data-items.md). \[^1\]: In n8n, nodes are individual components that you compose to create workflows. Nodes define when the workflow should run, allow you to fetch, send, and process data, can define flow control logic, and connect with external services. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/community-nodes/using-community-nodes.md). # Using community nodes To use community nodes, you first need to \[install\](/integrations/community-nodes/installation-and-management.md) them. ## Adding community nodes to your workflow [](https://docs.n8n.io/integrations/community-nodes/using-community-nodes.md#adding-community-nodes-to-your-workflow) After installing a community node, you can use it like any other node. n8n displays the node in search results in the \*\*Nodes\*\* panel. n8n marks community nodes with a \*\*Package\*\* ![Package icon](https://docs.n8n.io/files/QoDweRF25xcgzIvoD0IL) icon in the nodes panel. ## Community nodes with duplicate names [](https://docs.n8n.io/integrations/community-nodes/using-community-nodes.md#community-nodes-with-duplicate-names) It's possible for several community nodes to have the same name. If you use two nodes with the same name in your workflow, they'll look the same, unless they have different icons. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/community-nodes/installation-and-management.md). # Installation and management There are four ways to install community nodes: \* Within n8n using the \[nodes panel\](/integrations/community-nodes/installation-and-management/install-verified-community-nodes.md) (for verified community nodes only). \* Within n8n \[using the GUI\](/integrations/community-nodes/installation-and-management/gui-installation.md): Use this method to install community nodes from the npm registry. \* \[Manually from the command line\](/integrations/community-nodes/installation-and-management/manual-installation.md): use this method to install community nodes from npm if your n8n instance doesn't support installation through the in-app GUI. \* \[From environment variables\](/integrations/community-nodes/installation-and-management/environment-variable-installation.md): use this method to bootstrap an instance with a fixed set of community packages, for example through a deployment pipeline. {% hint style="info" %} \*\*Installing from npm only available on self-hosted instances\*\* Unverified community nodes aren't available on n8n cloud and require \[self-hosting\](/deploy/host-n8n.md) n8n. {% endhint %} --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/build/code-in-n8n.md). # Code in n8n n8n is a low-code tool. This means you can do a lot without code, then add code when needed. ## Code in your workflows [](https://docs.n8n.io/build/code-in-n8n.md#code-in-your-workflows) There are two places in your workflows where you can use code: \* \*\*Expressions\*\* Use expressions\[^1\] to transform \[data\](/build/work-with-data/overview.md) in your nodes. You can use JavaScript in expressions, as well as n8n's \[Built-in methods and variables\](/build/code-in-n8n/use-built-in-shortcuts.md). \[→ Expressions\](/build/work-with-data/expressions-versus-data-nodes.md) \* \*\*Code node\*\* Use the Code node to add JavaScript or Python to your workflow. \[→ Code node\](/build/code-in-n8n/using-the-code-node.md) ## Other technical resources [](https://docs.n8n.io/build/code-in-n8n.md#other-technical-resources) These are features that are relevant to technical users. ### Technical nodes [](https://docs.n8n.io/build/code-in-n8n.md#technical-nodes) n8n provides core nodes, which simplify adding key functionality such as API requests, webhooks, scheduling, and file handling. \* \*\*Write a backend\*\* The \[HTTP Request\](/integrations/builtin/core-nodes/n8n-nodes-base.httprequest.md), \[Webhook\](/integrations/builtin/core-nodes/n8n-nodes-base.webhook.md), and \[Code\](/build/code-in-n8n/using-the-code-node.md) nodes help you make API calls, respond to webhooks, and write any JavaScript in your workflow. Use this do things like \[Create an API endpoint\](https://n8n.io/workflows/1750-creating-an-api-endpoint/). \[→ Core nodes\](/integrations/builtin/core-nodes.md) \* \*\*Represent complex logic\*\* You can build complex flows, using nodes like \[If\](/integrations/builtin/core-nodes/n8n-nodes-base.if.md), \[Switch\](/integrations/builtin/core-nodes/n8n-nodes-base.switch.md), and \[Merge\](/integrations/builtin/core-nodes/n8n-nodes-base.merge.md) nodes. \[→ Flow logic\](/build/flow-logic.md) ### Other developer resources [](https://docs.n8n.io/build/code-in-n8n.md#other-developer-resources) \* \*\*The n8n API\*\* n8n provides an API, where you can programmatically perform many of the same tasks as you can in the GUI. There's an \[n8n API node\](/integrations/builtin/core-nodes/n8n-nodes-base.n8n.md) to access the API in your workflows. \[→ API\](/connect/n8n-api.md) \* \*\*Self-host\*\* You can self-host n8n. This keeps your data on your own infrastructure. \[→ Hosting\](/deploy/host-n8n.md) \* \*\*Build your own nodes\*\* You can build custom nodes, install them on your n8n instance, and publish them to \[npm\](https://www.npmjs.com/). \[→ Creating nodes\](/connect/create-nodes/overview.md) \[^1\]: In n8n, expressions allow you to populate node parameters dynamically by executing JavaScript code. Instead of providing a static value, you can use the n8n expression syntax to define the value using data from previous nodes, other workflows, or your n8n environment. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin.md). # Built-in nodes {% content-ref url="/pages/CVfLIkBJMlNslSFPSVFS" %} \[Node types\](/integrations/builtin/node-types.md) {% endcontent-ref %} {% content-ref url="/pages/2nMn6iMWvHo535YVHExi" %} \[Core nodes\](/integrations/builtin/core-nodes.md) {% endcontent-ref %} {% content-ref url="/pages/juLMeQZOo7rAipbFoFxi" %} \[App nodes\](/integrations/builtin/app-nodes.md) {% endcontent-ref %} {% content-ref url="/pages/tYNhTZX7cmyTXzFHSxy2" %} \[Trigger nodes\](/integrations/builtin/trigger-nodes.md) {% endcontent-ref %} {% content-ref url="/pages/35iGlICRG65g4hi42nKo" %} \[Cluster nodes\](/integrations/builtin/cluster-nodes.md) {% endcontent-ref %} {% content-ref url="/pages/rnOKDCwIaBsxfVkZRLEL" %} \[Credentials\](/integrations/builtin/credentials.md) {% endcontent-ref %} {% content-ref url="/pages/rxe1T2tspWhHNxkp1Rmn" %} \[Custom API actions for existing nodes\](/integrations/builtin/custom-api-actions-for-existing-nodes.md) {% endcontent-ref %} {% content-ref url="/pages/897mPk24XLZU9TTwmOmP" %} \[Handle rate limits\](/integrations/builtin/handle-rate-limits.md) {% endcontent-ref %} {% content-ref url="/pages/DzdxgjDVUMW9PmjBR9KY" %} \[Deprecated nodes\](/integrations/builtin/deprecated-nodes.md) {% endcontent-ref %} --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/build/work-with-data.md). # Work with data {% content-ref url="/pages/uPhnt2RLCCFnrYn26dBB" %} \[Overview\](/build/work-with-data/overview.md) {% endcontent-ref %} {% content-ref url="/pages/4w4R7N2ysLi9xAC7Jfde" %} \[Understand n8n's data structure\](/build/work-with-data/understand-n8ns-data-structure.md) {% endcontent-ref %} {% content-ref url="/pages/tK1B9wCi50T49CsEILNp" %} \[Expressions versus data nodes\](/build/work-with-data/expressions-versus-data-nodes.md) {% endcontent-ref %} {% content-ref url="/pages/hsR3r14towKBVz1w4PYc" %} \[Reference data\](/build/work-with-data/reference-data.md) {% endcontent-ref %} {% content-ref url="/pages/u8gQnerF08AIQFtkQwbd" %} \[Transform data\](/build/work-with-data/transform-data.md) {% endcontent-ref %} {% content-ref url="/pages/xqk9FOQcyDBun5EsEaUf" %} \[Filter out unwanted data\](/build/work-with-data/filter-out-unwanted-data.md) {% endcontent-ref %} {% content-ref url="/pages/64fnmVXNjBUdA3IFNIy6" %} \[Pin and mock data\](/build/work-with-data/pin-and-mock-data.md) {% endcontent-ref %} {% content-ref url="/pages/6DhhWVdrfTsbGPuoQ9ha" %} \[Handle special data types\](/build/work-with-data/handle-special-data-types.md) {% endcontent-ref %} {% content-ref url="/pages/acgH5Mc2ud5OkPrxlzUk" %} \[Data tables\](/build/work-with-data/data-tables.md) {% endcontent-ref %} --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/community-nodes.md). # Community nodes {% content-ref url="/pages/i4opUVCVoDct4oWxDkIK" %} \[Installation and management\](/integrations/community-nodes/installation-and-management.md) {% endcontent-ref %} {% content-ref url="/pages/RDTMyI9Fm83cxFTPqfbf" %} \[Risks\](/integrations/community-nodes/risks.md) {% endcontent-ref %} {% content-ref url="/pages/Gq8LMXS4YttYUK52BIuY" %} \[Blocklist\](/integrations/community-nodes/blocklist.md) {% endcontent-ref %} {% content-ref url="/pages/yCfpLZhwZAtQvDtdnRJk" %} \[Using community nodes\](/integrations/community-nodes/using-community-nodes.md) {% endcontent-ref %} {% content-ref url="/pages/y45AnA5To87MMfM0hZOU" %} \[Troubleshooting\](/integrations/community-nodes/troubleshooting.md) {% endcontent-ref %} {% content-ref url="/pages/sbrL9DKCeF1ITi5x6Dsj" %} \[Building community nodes\](/integrations/community-nodes/building-community-nodes.md) {% endcontent-ref %} --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/privacy-and-security/sustainable-use-license.md). # Sustainable use license {% hint style="info" %} \*\*Proprietary licenses for Enterprise\*\* Proprietary licenses are available for enterprise customers. \[Get in touch\](mailto:license@n8n.io) for more information. {% endhint %} n8n's \[Sustainable Use License\](https://github.com/n8n-io/n8n/blob/master/LICENSE.md) and \[n8n Enterprise License\](https://github.com/n8n-io/n8n/blob/master/LICENSE\_EE.md) are based on the \[fair-code\](https://faircode.io/) model. ## License FAQs [](https://docs.n8n.io/privacy-and-security/sustainable-use-license.md#license-faqs) \### What license do you use? [](https://docs.n8n.io/privacy-and-security/sustainable-use-license.md#what-license-do-you-use) n8n uses the \[Sustainable Use License\](https://github.com/n8n-io/n8n/blob/master/LICENSE.md) and \[n8n Enterprise License\](https://github.com/n8n-io/n8n/blob/master/LICENSE\_EE.md). These licenses are based on the \[fair-code\](https://faircode.io/) model. ### What source code is covered by the Sustainable Use License? [](https://docs.n8n.io/privacy-and-security/sustainable-use-license.md#what-source-code-is-covered-by-the-sustainable-use-license) The \[Sustainable Use License\](https://github.com/n8n-io/n8n/blob/master/LICENSE.md) applies to all our source code hosted in our \[main GitHub repository\](https://github.com/n8n-io/n8n) except: \* Content of branches other than master. \* Source code files that contain \`.ee.\` in their file name. These are licensed under the \[n8n Enterprise License\](https://github.com/n8n-io/n8n/blob/master/LICENSE\_EE.md). ### What is the Sustainable Use License? [](https://docs.n8n.io/privacy-and-security/sustainable-use-license.md#what-is-the-sustainable-use-license) The Sustainable Use License is a fair-code software license created by n8n in 2022. You can read more about why we did this \[here\](#why-did-you-create-a-license). The license allows you the free right to use, modify, create derivative works, and redistribute, with three limitations: \* You may use or modify the software only for your own internal business purposes or for non-commercial or personal use. \* You may distribute the software or provide it to others only if you do so free of charge for non-commercial purposes. \* You may not alter, remove, or obscure any licensing, copyright, or other notices of the licensor in the software. Any use of the licensor's trademarks is subject to applicable law. We encourage anyone who wants to use the Sustainable Use License. If you are building something out in the open, it makes sense to think about licensing earlier in order to avoid problems later. Contact us at if you would like to ask any questions about it. ### What is and isn't allowed under the license in the context of n8n's product? [](https://docs.n8n.io/privacy-and-security/sustainable-use-license.md#what-is-and-isnt-allowed-under-the-license-in-the-context-of-n8ns-product) Our license restricts use to "internal business purposes". In practice this means all use is allowed unless you are selling a product, service, or module in which the value derives entirely or substantially from n8n functionality. Here are some examples that wouldn't be allowed: \* White-labeling n8n and offering it to your customers for money. \* Hosting n8n and charging people money to access it. All of the following examples are allowed under our license: \* Using n8n to sync the data you control as a company, for example from a CRM to an internal database. \* Creating an n8n node for your product or any other integration between your product and n8n. \* Providing consulting services related to n8n, for example building workflows, custom features closely connect to n8n, or code that gets executed by n8n. \* Supporting n8n, for example by setting it up or maintaining it on an internal company server. #### Can I use n8n to act as the back-end to power a feature in my app? [](https://docs.n8n.io/privacy-and-security/sustainable-use-license.md#can-i-use-n8n-to-act-as-the-back-end-to-power-a-feature-in-my-app) Usually yes, as long as the back-end process doesn't use users' own credentials to access their data. Here are two examples to clarify: \*\*Example 1: Sync ACME app with HubSpot\*\* Bob sets up n8n to collect a user's HubSpot credentials to sync data in the ACME app with data in HubSpot. \*\*NOT ALLOWED\*\* under the Sustainable Use License. This use case collects the user's own HubSpot credentials to pull information to feed into the ACME app. \*\*Example 2: Embed AI chatbot in ACME app\*\* Bob sets up n8n to embed an AI chatbot within the ACME app. The AI chatbot's credentials in n8n use Bob's company credentials. ACME app end-users only enter their questions or queries to the chatbot. \*\*ALLOWED\*\* under the Sustainable Use License. No user credentials are being collected. ### What if I want to use n8n for something that's not permitted by the license? [](https://docs.n8n.io/privacy-and-security/sustainable-use-license.md#what-if-i-want-to-use-n8n-for-something-thats-not-permitted-by-the-license) You must sign a separate commercial agreement with us. We actively encourage software creators to build with n8n in their products; we just ask them to sign an agreement laying out the terms of use, and the fees owed to n8n for using the product in this way. \[Contact us\](mailto:license@n8n.io) to learn more. If you are unsure whether the use case you have in mind constitutes an internal business purpose or not, take a look at \[the examples\](#what-is-and-isnt-allowed-under-the-license-in-the-context-of-n8ns-product), and if you're still unclear, email us at . ### Why don't you use an open source license? [](https://docs.n8n.io/privacy-and-security/sustainable-use-license.md#why-dont-you-use-an-open-source-license) n8n's mission is to give everyone who uses a computer technical superpowers. We've decided the best way for us to achieve this mission is to make n8n as widely and freely available as possible for users, while ensuring we can build a sustainable, viable business. By making our product free to use, easy to distribute, and source-available we help everyone access the product. By operating as a business, we can continue to release features, fix bugs, and provide reliable software at scale long-term. ### Why did you create a license? [](https://docs.n8n.io/privacy-and-security/sustainable-use-license.md#why-did-you-create-a-license) Creating a license was our least favorite option. We only went down this path after reviewing the possible existing licenses and deciding nothing fit our specific needs. There are two ways in which we try to mitigate the pain and friction of using a proprietary license: 1. By using plain English, and keeping it as short as possible. 2. By promoting \[fair-code\](https://faircode.io/) with the goal of making it a well-known umbrella term to describe software models like ours. Our goals when we created the Sustainable Use License were: 1. To be as permissive as possible. 2. Safeguarding our ability to build a business. 3. Being as clear as possible what use was permitted or not. ### My company has a policy against using code that restricts commercial use – can I still use n8n? [](https://docs.n8n.io/privacy-and-security/sustainable-use-license.md#my-company-has-a-policy-against-using-code-that-restricts-commercial-use-can-i-still-use-n8n) Provided you are using n8n for internal business purposes, and not making n8n available to your customers for them to connect their accounts and build workflows, you should be able to use n8n. If you are unsure whether the use case you have in mind constitutes an internal business purpose or not, take a look at \[the examples\](#what-is-and-isnt-allowed-under-the-license-in-the-context-of-n8ns-product), and if you're still unclear, email us at . ### What happens to the code I contribute to n8n in light of the Sustainable Use License? [](https://docs.n8n.io/privacy-and-security/sustainable-use-license.md#what-happens-to-the-code-i-contribute-to-n8n-in-light-of-the-sustainable-use-license) Any code you contribute on GitHub is subject to GitHub's \[terms of use\](https://docs.github.com/en/site-policy/github-terms/github-terms-of-service#d-user-generated-content). In simple terms, this means you own, and are responsible for, anything you contribute, but that you grant other GitHub users certain rights to use this code. When you contribute code to a repository containing notice of a license, you license the code under the same terms. n8n asks every contributor to sign our \[Contributor License Agreement\](https://github.com/n8n-io/n8n/blob/master/CONTRIBUTOR\_LICENSE\_AGREEMENT.md). In addition to the above, this gives n8n the ability to change its license without seeking additional permission. It also means you aren't liable for your contributions (e.g. in case they cause damage to someone else's business). It's easy to get started contributing code to n8n \[here\](https://github.com/n8n-io), and we've listed broader ways of participating in our community \[here\](/contribute/contribute-to-n8n.md). ### Why did you switch to the Sustainable Use License from your previous license arrangement (Apache 2.0 with Commons Clause)? [](https://docs.n8n.io/privacy-and-security/sustainable-use-license.md#why-did-you-switch-to-the-sustainable-use-license-from-your-previous-license-arrangement-apache-20-w) n8n was licensed under Apache 2.0 with Commons Clause until 17 March 2022. Commons Clause was initiated by various software companies wanting to protect their rights against cloud providers. The concept involved adding a commercial restriction on top of an existing open source license. However, the use of the Commons Clause as an additional condition to an open source license, as well as the use of wording that's open to interpretation, created some confusion and uncertainty regarding the terms of use. The Commons Clause also restricted people's ability to offer consulting and support services: we realized these services are critical in enabling people to get value from n8n, so we wanted to remove this restriction. We created the Sustainable Use License to be more permissive and more clear about what use is allowed, while continuing to ensure n8n gets the funding needed to build and improve our product. ### What are the main differences between the Sustainable Use License and your previous license arrangement (Apache 2.0 with Commons Clause)? [](https://docs.n8n.io/privacy-and-security/sustainable-use-license.md#what-are-the-main-differences-between-the-sustainable-use-license-and-your-previous-license-arrangem) There are two main differences between the Sustainable Use License and our previous license arrangement. The first is that we have tightened the definition of how you can use the software. Previously the Commons Clause restricted users ability to "sell" the software; we have redefined this to restrict use to internal business purposes. The second difference is that our previous license restricted people's ability to charge fees for consulting or support services related to the software: we have lifted that restriction altogether. That means you are now free to offer commercial consulting or support services (e.g. building n8n workflows) without the need for a separate license agreement with us. If you are interested in joining our community of n8n experts providing these services, you can learn more here. ### Is n8n open source? [](https://docs.n8n.io/privacy-and-security/sustainable-use-license.md#is-n8n-open-source) Although n8n's source code is available under the Sustainable Use License, according to the \[Open Source Initiative\](https://opensource.org/) (OSI), open source licenses can't include limitations on use, so we do not call ourselves open source. In practice, n8n offers most users many of the same benefits as OSI-approved open source. We coined the term \['fair-code'\](https://faircode.io/) as a way of describing our licensing model, and the model of other companies who are source-available, but restrict commercial use of their source code. ### What is fair-code, and how does the Sustainable Use License relate to it? [](https://docs.n8n.io/privacy-and-security/sustainable-use-license.md#what-is-fair-code-and-how-does-the-sustainable-use-license-relate-to-it) Fair-code isn't a software license. It describes a software model where software: \* Is generally free to use and can be distributed by anybody. \* Has its source code openly available. \* Can be extended by anybody in public and private communities. \* Is commercially restricted by its authors. The Sustainable Use License is a fair-code license. You can read more about it and see other examples of fair-code licenses \[here\](https://faircode.io/). We're always excited to talk about software licenses, fair-code, and other principles around sharing code with interested parties. To get in touch to chat, email . ### Can I use n8n's Sustainable Use License for my own project? [](https://docs.n8n.io/privacy-and-security/sustainable-use-license.md#can-i-use-n8ns-sustainable-use-license-for-my-own-project) Yes! We're excited to see more software use the Sustainable Use License. We'd love to hear about your project if you're using our license: . --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/custom-api-actions-for-existing-nodes.md). # Custom API actions for existing nodes One of the most complex parts of setting up \[API\](/key-concept-glossary.md#api) calls is managing authentication. n8n provides \[credentials\](/key-concept-glossary.md#credential-n8n) support for operations and services beyond those supported by built-in nodes. \* Custom operations for existing nodes: n8n supplies hundreds of nodes to create workflows that link multiple products. However, some nodes don't include all the possible operations supported by a product's API. You can work around this by making a custom API call using the \[HTTP Request\](/integrations/builtin/core-nodes/n8n-nodes-base.httprequest.md) node. \* Credential-only nodes: n8n includes credential-only nodes. These are integrations where n8n supports setting up credentials for use in the HTTP Request node, but doesn't provide a standalone node. You can find a credential-only node in the nodes panel, as you would for any other integration. ## Predefined credential types A predefined credential type is a credential that already exists in n8n. You can use predefined credential types instead of generic credentials in the HTTP Request node. For example: you create an Asana credential, for use with the Asana node. Later, you want to perform an operation that isn't supported by the Asana node, using Asana's API. You can use your existing Asana credential in the HTTP Request node to perform the operation, without additional authentication setup. ### Using predefined credential types To use a predefined credential type: 1. Open your HTTP Request node, or add a new one to your workflow. 2. In \*\*Authentication\*\*, select \*\*Predefined Credential Type\*\*. 3. In \*\*Credential Type\*\*, select the API you want to use. 4. In \*\*Credential for \`\`\*\*, you can: 1. Select an existing credential for that platform, if available. 2. Select \*\*Create New\*\* to create a new credential. ### Credential scopes Some existing credential types have specific scopes: endpoints that they work with. n8n warns you about this when you select the credential type. For example, follow the steps in \[Using predefined credential types\](#using-predefined-credential-types), and select \*\*Google Calendar OAuth2 API\*\* as your \*\*Credential Type\*\*. n8n displays a box listing the two endpoints you can use this credential type with: !\[The scopes box\](/files/O5MIKzrAhWRhJKxdSR0o) --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/build/ways-of-building-workflows.md). # Ways of building workflows {% content-ref url="/pages/7EImy3978pdBhls5Q76E" %} \[Use AI Assistant (Preview)\](/build/ways-of-building-workflows/ai-assistant-preview.md) {% endcontent-ref %} {% content-ref url="/pages/YzDHeVkwbIkfMIyQMgW9" %} \[Use n8n MCP server\](/build/ways-of-building-workflows/connect-to-n8n-mcp-server.md) {% endcontent-ref %} {% content-ref url="/pages/UxZfFabPGp1M9IEgwfH1" %} \[Use templates\](/build/ways-of-building-workflows/use-templates.md) {% endcontent-ref %} {% content-ref url="/pages/irwAomfgJGDKsYuYRfwC" %} \[Use AI Workflow Builder\](/build/ways-of-building-workflows/ai-workflow-builder.md) {% endcontent-ref %} {% content-ref url="/pages/WbRKr4ZLshWgdMh76rBo" %} \[Use Ask n8n AI\](/build/ways-of-building-workflows/use-the-ai-assistant.md) {% endcontent-ref %} {% content-ref url="/pages/E2xaOxt9APofcPodKHj7" %} \[Use Chat Hub\](/build/ways-of-building-workflows/chat-hub.md) {% endcontent-ref %} --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/node-types.md). # Node types This section contains the node\[^1\] library: reference documentation for every built-in node in n8n, and their credentials. When you add a node to a workflow, n8n displays a list of available operations. An operation is something a node does, such as getting or sending data. There are two types of operation: \* Triggers start a workflow in response to specific events or conditions in your services. When you select a Trigger, n8n adds a trigger node to your workflow, with the Trigger operation you chose pre-selected. When you search for a node in n8n, Trigger operations have a bolt icon ![Trigger icon](https://docs.n8n.io/spaces/GixZThfitWP21x2gQFpD/files/YhXfixCZho94eabo1r6o). \* Actions are operations that represent specific tasks within a workflow, which you can use to manipulate data, perform operations on external systems, and trigger events in other systems as part of your workflows. When you select an Action, n8n adds a node to your workflow, with the Action operation you chose pre-selected. ## Core nodes [](https://docs.n8n.io/integrations/builtin/node-types.md#core-nodes) Core nodes can be actions or triggers\[^2\]. Whereas most nodes connect to a specific external service, core nodes provide functionality such as logic, scheduling, or generic API calls. ## Cluster nodes [](https://docs.n8n.io/integrations/builtin/node-types.md#cluster-nodes) \[Cluster nodes\](/key-concept-glossary.md#cluster-node-n8n) are node groups that work together to provide functionality in an n8n workflow. Instead of using a single node, you use a \[root node\](/key-concept-glossary.md#root-node-n8n) and one or more \[sub-nodes\](/key-concept-glossary.md#sub-node-n8n) that extend the functionality of the node. !\[Screenshot of a workflow with a root node and two sub-nodes\](/spaces/GixZThfitWP21x2gQFpD/files/GbA7RoHTpD75RG5oDkF8) ## Credentials [](https://docs.n8n.io/integrations/builtin/node-types.md#credentials) External services need a way to identify and authenticate users. This data can range from an API key over an email/password combination to a long multi-line private key. You can save these in n8n as credentials\[^3\]. Nodes in n8n can then request that credential information. As another layer of security, only node types with specific access rights can access the credentials. To make sure that the data is secure, it gets saved to the database encrypted. n8n uses a random personal encryption key, which it automatically generates on the first run of n8n and then saved under \`~/.n8n/config\`. To learn more about creating, managing, and sharing credentials, refer to \[Manage credentials\](/build/understand-workflows/create-and-edit-credentials.md). ## Community nodes [](https://docs.n8n.io/integrations/builtin/node-types.md#community-nodes) n8n supports custom nodes built by the community. Refer to \[Community nodes\](/integrations/community-nodes/installation-and-management.md) for guidance on installing and using these nodes. For help building your own custom nodes, and publish them to \[npm\](https://www.npmjs.com/), refer to \[Creating nodes\](/connect/create-nodes/overview.md) for more information. \[^1\]: In n8n, nodes are individual components that you compose to create workflows. Nodes define when the workflow should run, allow you to fetch, send, and process data, can define flow control logic, and connect with external services. \[^2\]: A trigger node is a special node responsible for executing the workflow in response to certain conditions. All production workflows need at least one trigger to determine when the workflow should run. \[^3\]: In n8n, credentials store authentication information to connect with specific apps and services. After creating credentials with your authentication information (username and password, API key, OAuth secrets, etc.), you can use the associated app node to interact with the service. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/build/keyboard-shortcuts.md). # Keyboard shortcuts n8n provides keyboard shortcuts for some actions. ## Workflow controls [](https://docs.n8n.io/build/keyboard-shortcuts.md#workflow-controls) \* \*\*Ctrl/Cmd\*\* + \*\*Alt\*\* + \*\*n\*\*: create new workflow \* \*\*Ctrl/Cmd\*\* + \*\*o\*\*: open workflow \* \*\*Ctrl/Cmd\*\* + \*\*s\*\*: save the current workflow \* \*\*Ctrl/Cmd\*\* + \*\*z\*\*: undo \* \*\*Ctrl/Cmd\*\* + \*\*shift\*\* + \*\*z\*\*: redo \* \*\*Ctrl/Cmd\*\* + \*\*Enter\*\*: execute workflow ## Canvas [](https://docs.n8n.io/build/keyboard-shortcuts.md#canvas) \### Move the canvas [](https://docs.n8n.io/build/keyboard-shortcuts.md#move-the-canvas) \* \*\*Ctrl/Cmd\*\* + \*\*Left Mouse Button\*\* + drag: move node view \* \*\*Ctrl/Cmd\*\* + \*\*Middle mouse button\*\* + drag: move node view \* \*\*Space\*\* + drag: move node view \* \*\*Middle mouse button\*\* + drag: move node view \* Two fingers on a touch screen: move node view ### Canvas zoom [](https://docs.n8n.io/build/keyboard-shortcuts.md#canvas-zoom) \* \*\*+\*\* or \*\*=\*\*: zoom in \* \*\*-\*\* or \*\*\\\_\*\*: zoom out \* \*\*0\*\*: reset zoom level \* \*\*1\*\*: zoom to fit workflow \* \*\*Ctrl/Cmd\*\* + \*\*Mouse wheel\*\*: zoom in/out ### Nodes on the canvas [](https://docs.n8n.io/build/keyboard-shortcuts.md#nodes-on-the-canvas) \* \*\*Double click\*\* on a node: open the node details \* \*\*Ctrl/Cmd\*\* + \*\*Double click\*\* on a sub-workflow node: open the sub-workflow in a new tab \* \*\*Ctrl/Cmd\*\* + \*\*a\*\*: select all nodes \* \*\*Ctrl/Cmd\*\* + \*\*v\*\*: paste nodes \* \*\*Shift\*\* + \*\*s\*\*: add sticky note ### With one or more nodes selected in canvas [](https://docs.n8n.io/build/keyboard-shortcuts.md#with-one-or-more-nodes-selected-in-canvas) \* \*\*ArrowDown\*\*: select sibling node below the current one \* \*\*ArrowLeft\*\*: select node left of the current one \* \*\*ArrowRight\*\*: select node right of the current one \* \*\*ArrowUp\*\*: select sibling node above the current one \* \*\*Ctrl/Cmd\*\* + \*\*c\*\*: copy \* \*\*Ctrl/Cmd\*\* + \*\*g\*\*: group selected nodes \* \*\*Ctrl/Cmd\*\* + \*\*shift\*\* + \*\*g\*\*: ungroup selected nodes \* \*\*Ctrl/Cmd\*\* + \*\*x\*\*: cut \* \*\*D\*\*: deactivate \* \*\*Delete\*\*: delete \* \*\*Enter\*\*: open \* \*\*F2\*\*: rename \* \*\*P\*\*: pin data in node. Refer to \[Data pinning\](/build/work-with-data/pin-and-mock-data.md) for more information. \* \*\*Shift\*\* + \*\*ArrowLeft\*\*: select all nodes left of the current one \* \*\*Shift\*\* + \*\*ArrowRight\*\*: select all nodes right of the current one \* \*\*Ctrl/Cmd\*\* + \*\*Shift\*\* + \*\*o\*\* on a sub-workflow node: open the sub-workflow in a new tab ## Node panel [](https://docs.n8n.io/build/keyboard-shortcuts.md#node-panel) \* \*\*N\*\*: open the Node Panel \* \*\*Enter\*\*: insert selected node into workflow \* \*\*Escape\*\*: close Node panel ### Node panel categories [](https://docs.n8n.io/build/keyboard-shortcuts.md#node-panel-categories) \* \*\*Enter\*\*: insert node into workflow, collapse/expand category, open subcategory \* \*\*ArrowRight\*\*: expand category, open subcategory \* \*\*ArrowLeft\*\*: collapse category, close subcategory view ## Within nodes [](https://docs.n8n.io/build/keyboard-shortcuts.md#within-nodes) \* \*\*=\*\*: in an empty parameter input, this switches to expressions\[^1\] mode. ## Command bar [](https://docs.n8n.io/build/keyboard-shortcuts.md#command-bar) The Command Bar provides quick access to actions and navigation throughout n8n. Access it using \*\*Ctrl/Cmd + K\*\*, or click the magnifying glass icon on the canvas. Commands adapt based on your current view and permissions. \* \*\*Workflow actions:\*\* Add nodes, save, test, tidy up, publish/unpublish, duplicate, import/export, archive, delete \* \*\*Resource navigation:\*\* Create and open workflows, credentials, data tables, projects; access recent resources \* \*\*Execution actions:\*\* Debug, copy, retry, stop, or delete executions \* \*\*General navigation:\*\* Access Templates, Variables, Insights, Settings, Help resources, and Documentation \[^1\]: In n8n, expressions allow you to populate node parameters dynamically by executing JavaScript code. Instead of providing a static value, you can use the n8n expression syntax to define the value using data from previous nodes, other workflows, or your n8n environment. --- # Tag workflows | Build | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/build/manage-workflows/tag-workflows.md) . Workflow tags allow you to label your workflows. You can then filter workflows by tag. Tags are global. This means when you create a tag, it's available to all users on your n8n instance. [](https://docs.n8n.io/build/manage-workflows/tag-workflows#add-a-tag-to-a-workflow) Add a tag to a workflow ----------------------------------------------------------------------------------------------------------------- To add a tag to your workflow: 1. In your workflow, select **\+ Add tag**. 2. Select an existing tag, or enter a new tag name. 3. Once you select a tag and click away from the tag modal, n8n displays the tag next to the workflow name. You can add more than one tag. [](https://docs.n8n.io/build/manage-workflows/tag-workflows#filter-by-tag) Filter by tag --------------------------------------------------------------------------------------------- When browsing the workflows on your instance, you can filter by tag. 1. On the **Workflows** page, select **Filters**. 2. Select **Tags**. 3. Select the tag or tags you want to filter by. n8n lists the workflows with that tag. [](https://docs.n8n.io/build/manage-workflows/tag-workflows#manage-tags) Manage tags ----------------------------------------------------------------------------------------- You can edit existing tags. Instance owners can delete tags. 1. Select **Manage tags**. This is available from **Filters** > **Tags** on the **Workflows** page, or in the **\+ Add tag** modal in your workflow. 2. Hover over the tag you want to change. 3. Select **Edit** ![Add node icon](https://docs.n8n.io/~gitbook/image?url=https%3A%2F%2F3488703508-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FrPN1zU5jaYNvwH7RzxqA%252Fuploads%252Fgit-blob-8fac4fbc8898b24fe474f2c42da750cff2c2714f%252Fedit.png%3Falt%3Dmedia&width=40&dpr=3&quality=100&sign=e5cb6260&sv=2) to rename it, or **Delete** ![Add node icon](https://docs.n8n.io/~gitbook/image?url=https%3A%2F%2F3488703508-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FrPN1zU5jaYNvwH7RzxqA%252Fuploads%252Fgit-blob-867b0dd30e53d8d9fad0cd23c294923579a962e7%252Fdelete.png%3Falt%3Dmedia&width=41&dpr=3&quality=100&sign=b612b307&sv=2) to delete it. **Global tags** Tags are global. If you edit or delete a tag, this affects all users of your n8n instance. [PreviousConfigure workflow settings](https://docs.n8n.io/build/manage-workflows/configure-workflow-settings) [NextView change history](https://docs.n8n.io/build/manage-workflows/view-change-history) Last updated 10 days ago Was this helpful? * [Add a tag to a workflow](https://docs.n8n.io/build/manage-workflows/tag-workflows#add-a-tag-to-a-workflow) * [Filter by tag](https://docs.n8n.io/build/manage-workflows/tag-workflows#filter-by-tag) * [Manage tags](https://docs.n8n.io/build/manage-workflows/tag-workflows#manage-tags) Was this helpful? --- # n8n CLI | Connect | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/connect/n8n-cli.md) . **n8n CLI** is a lightweight command-line client that communicates with a running n8n instance through the [n8n API](https://docs.n8n.io/connect/n8n-api) . It can run from any machine with network access and authenticates using an API key. **n8n CLI is in beta** Use it only for experimenting, local development, and personal projects and not for production workflows. Use the API CLI to: * List and inspect workflows * Create a workflow from JSON * Check recent executions * Create a credential * Manage projects All operations respect the permissions of the user and the scope of the API key. [](https://docs.n8n.io/connect/n8n-cli#n8n-cli-versus-server-cli) n8n CLI versus server CLI ------------------------------------------------------------------------------------------------ If you need to manage your n8n instance (backups, license management, emergency resets), see the [Server CLI](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line) , a built-in tool that runs on the same machine as n8n. Aspect n8n CLI Server CLI **Runs from** Any machine with network access Same machine as n8n **Authentication** API key Direct database access **Requires n8n running** Yes No (not required for most operations) **Best for** Developers, integrations, AI agents Instance operators, backups, emergencies **Permissions** Respects user roles and API key scopes Bypasses access control [](https://docs.n8n.io/connect/n8n-cli#install-n8n-cli) Install n8n-cli ---------------------------------------------------------------------------- [](https://docs.n8n.io/connect/n8n-cli#connect-to-your-instance) Connect to your instance ---------------------------------------------------------------------------------------------- * The configuration is saved to `~/.n8n-cli/config.json` with restricted file permissions (`0600`). * Get your API key from **n8n > Settings > n8n API** Alternatively, skip the configuration file and use environment variables: [](https://docs.n8n.io/connect/n8n-cli#inline-flags) Inline flags ---------------------------------------------------------------------- ### [](https://docs.n8n.io/connect/n8n-cli#resolution-order) Resolution order 1. Command-line flags (`--url`, `--api-key`) 2. Environment variables (`N8N_URL`, `N8N_API_KEY`) 3. Config file (`~/.n8n-cli/config.json`) [](https://docs.n8n.io/connect/n8n-cli#commands) Commands -------------------------------------------------------------- Every command supports `--help` for detailed usage. Topic Commands `workflow` `list`, `get`, `create`, `update`, `delete`, `activate`, `deactivate`, `tags`, `transfer` `execution` `list`, `get`, `retry`, `stop`, `delete` `credential` `list`, `get`, `schema`, `create`, `delete`, `transfer` `project` `list`, `get`, `create`, `update`, `delete`, `members`, `add-member`, `remove-member` `tag` `list`, `create`, `update`, `delete` `variable` `list`, `create`, `update`, `delete` `data-table` `list`, `get`, `create`, `delete`, `rows`, `add-rows`, `update-rows`, `upsert-rows`, `delete-rows` `user` `list`, `get` `config` `set-url`, `set-api-key`, `show` `source-control` `pull` `package (beta)` `export`, `import` `skill` `install` `audit` (top-level) `login` / `logout` (top-level) [](https://docs.n8n.io/connect/n8n-cli#output-formats) Output formats -------------------------------------------------------------------------- All commands support three output formats via `--format`: Format Flag Use when Table \-`-format=table` (default) You want human-readable terminal output JSON `--format=json` Piping to jq, programmatic use ID-only `--format=id-only` Piping to xargs, scripting ### [](https://docs.n8n.io/connect/n8n-cli#examples) Examples * Human-readable table * JSON for scripts * Pipe IDs into another command [](https://docs.n8n.io/connect/n8n-cli#use-as-skill-with-claude-code) Use as skill with Claude Code -------------------------------------------------------------------------------------------------------- Install the skill so Claude always knows how to use n8n-cli: Then in Claude Code, type `/n8n-cli` to load it. Claude can now create, update, and manage workflows on your behalf without requiring an MCP. [](https://docs.n8n.io/connect/n8n-cli#examples-1) Examples ---------------------------------------------------------------- ### [](https://docs.n8n.io/connect/n8n-cli#list-and-inspect-workflows) List and inspect workflows ### [](https://docs.n8n.io/connect/n8n-cli#create-a-workflow-from-json) Create a workflow from JSON ### [](https://docs.n8n.io/connect/n8n-cli#check-recent-executions) Check recent executions ### [](https://docs.n8n.io/connect/n8n-cli#create-a-credential) Create a credential ### [](https://docs.n8n.io/connect/n8n-cli#manage-projects) Manage projects ### [](https://docs.n8n.io/connect/n8n-cli#export-and-import-packages) Export and import packages **Beta** The `package` command is still in beta. Breaking changes may occur See [n8n packages](https://docs.n8n.io/build/manage-workflows/n8n-packages) for a detailed overview of the available flags and what makes up a package. [PreviousModels](https://docs.n8n.io/connect/n8n-api/models) [NextConnect to n8n MCP server](https://docs.n8n.io/connect/connect-to-n8n-mcp-server) Last updated 1 day ago Was this helpful? * [n8n CLI versus server CLI](https://docs.n8n.io/connect/n8n-cli#n8n-cli-versus-server-cli) * [Install n8n-cli](https://docs.n8n.io/connect/n8n-cli#install-n8n-cli) * [Connect to your instance](https://docs.n8n.io/connect/n8n-cli#connect-to-your-instance) * [Inline flags](https://docs.n8n.io/connect/n8n-cli#inline-flags) * [Resolution order](https://docs.n8n.io/connect/n8n-cli#resolution-order) * [Commands](https://docs.n8n.io/connect/n8n-cli#commands) * [Output formats](https://docs.n8n.io/connect/n8n-cli#output-formats) * [Examples](https://docs.n8n.io/connect/n8n-cli#examples) * [Use as skill with Claude Code](https://docs.n8n.io/connect/n8n-cli#use-as-skill-with-claude-code) * [Examples](https://docs.n8n.io/connect/n8n-cli#examples-1) * [List and inspect workflows](https://docs.n8n.io/connect/n8n-cli#list-and-inspect-workflows) * [Create a workflow from JSON](https://docs.n8n.io/connect/n8n-cli#create-a-workflow-from-json) * [Check recent executions](https://docs.n8n.io/connect/n8n-cli#check-recent-executions) * [Create a credential](https://docs.n8n.io/connect/n8n-cli#create-a-credential) * [Manage projects](https://docs.n8n.io/connect/n8n-cli#manage-projects) * [Export and import packages](https://docs.n8n.io/connect/n8n-cli#export-and-import-packages) Was this helpful? Copy # Use directly with npx (zero install) npx @n8n/cli workflow list # Or install globally npm install -g @n8n/cli Copy n8n-cli config set-url https://your-instance.n8n.cloud n8n-cli config set-api-key YOUR_API_KEY n8n-cli config show Copy export N8N_URL=https://your-instance.n8n.cloud export N8N_API_KEY=your_api_key Copy n8n-cli --url=https://my-n8n.app.n8n.cloud --api-key=n8n_api_xxxxx workflow list Copy n8n-cli workflow list Copy n8n-cli workflow list --format=json | jq '.[] | select(.active) | .id' Copy n8n-cli workflow list --format=id-only | xargs -I{} n8n-cli workflow deactivate {} Copy n8n-cli skill install --global Copy n8n-cli workflow list n8n-cli workflow get Copy cat workflow.json | n8n-cli workflow create --stdin Copy n8n-cli execution list --status=error --limit=10 Copy n8n-cli credential schema gmailOAuth2 # see required fields first n8n-cli credential create --type=gmailOAuth2 --name='My Gmail' --file=cred.json Copy n8n-cli project create --name="My Project" n8n-cli workflow transfer --project= Copy n8n-cli package export --workflow-id= --output=export.n8np n8n-cli package import --file=export.n8np --conflict-policy=fail n8n-cli package import --file=export.n8np --project= --workflow-id-policy=source --conflict-policy=skip --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest.md). # HTTP Request The HTTP Request node is one of the most versatile nodes in n8n. It allows you to make HTTP requests to query data from any app or service with a REST API. You can use the HTTP Request node a regular node or attached to an \[AI agent\](/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/tools-agent.md) to use as a \[tool\](/build/integrate-ai/understand-ai-components/how-tools-work.md){ data-preview }. When using this node, you're creating a REST API call. You need some understanding of basic API terminology and concepts. There are two ways to create an HTTP request: configure the \[node parameters\](#node-parameters) or \[import a curl command\](#import-curl-command). {% hint style="info" %} \*\*Credentials\*\* Refer to \[HTTP Request credentials\](/integrations/builtin/credentials/httprequest.md) for guidance on setting up authentication. {% endhint %} ## Node parameters [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest.md#node-parameters) \### Method [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest.md#method) Select the method to use for the request: \* DELETE \* GET \* HEAD \* OPTIONS \* PATCH \* POST \* PUT ### URL [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest.md#url) Enter the endpoint you want to use. ### Authentication [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest.md#authentication) n8n recommends using the \*\*Predefined Credential Type\*\* option when it's available. It offers an easier way to set up and manage credentials, compared to configuring generic credentials. #### Predefined credentials [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest.md#predefined-credentials) Credentials for integrations supported by n8n, including both built-in and community nodes. Use \*\*Predefined Credential Type\*\* for custom operations without extra setup. Refer to \[Custom API operations\](/integrations/builtin/custom-api-actions-for-existing-nodes.md) for more information. #### Generic credentials [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest.md#generic-credentials) Credentials for integrations not supported by n8n. You'll need to manually configure the authentication process, including specifying the required API endpoints, necessary parameters, and the authentication method. You can select one of the following methods: \* Basic auth \* Custom auth \* Digest auth \* Header auth \* OAuth1 API \* OAuth2 API \* Query auth Refer to \[HTTP request credentials\](/integrations/builtin/credentials/httprequest.md) for more information on setting up each credential type. ### Send Query Parameters [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest.md#send-query-parameters) Query parameters act as filters on HTTP requests. If the API you're interacting with supports them and the request you're making needs a filter, turn this option on. \*\*Specify your query parameters\*\* using one of the available options: \* \*\*Using Fields Below\*\*: Enter \*\*Name\*\*/\*\*Value\*\* pairs of \*\*Query Parameters\*\*. To enter more query parameter name/value pairs, select \*\*Add Parameter\*\*. The name is the name of the field you're filtering on, and the value is the filter value. \* \*\*Using JSON\*\*: Enter \*\*JSON\*\* to define your query parameters. Refer to your service's API documentation for detailed guidance. ### Send Headers [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest.md#send-headers) Use this parameter to send headers with your request. Headers contain metadata or context about your request. \*\*Specify Headers\*\* using one of the available options: \* \*\*Using Fields Below\*\*: Enter \*\*Name\*\*/\*\*Value\*\* pairs of \*\*Header Parameters\*\*. To enter more header parameter name/value pairs, select \*\*Add Parameter\*\*. The name is the header you wish to set, and the value is the value you want to pass for that header. \* \*\*Using JSON\*\*: Enter \*\*JSON\*\* to define your header parameters. Refer to your service's API documentation for detailed guidance. ### Send Body [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest.md#send-body) If you need to send a body with your API request, turn this option on. Then select the \*\*Body Content Type\*\* that best matches the format for the body content you wish to send. #### Form URLencoded [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest.md#form-urlencoded) Use this option to send your body as \`application/x-www-form-urlencoded\`. \*\*Specify Body\*\* using one of the available options: \* \*\*Using Fields Below\*\*: Enter \*\*Name\*\*/\*\*Value\*\* pairs of \*\*Body Parameters\*\*. To enter more body parameter name/value pairs, select \*\*Add Parameter\*\*. The name should be the form field name, and the value is what you wish to set that field to. \* \*\*Using Single Field\*\*: Enter your name/value pairs in a single \*\*Body\*\* parameter with format \`fieldname1=value1&fieldname2=value2\`. Refer to your service's API documentation for detailed guidance. #### Form-Data [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest.md#form-data) Use this option to send your body as \`multipart/form-data\`. Configure your \*\*Body Parameters\*\* by selecting the \*\*Parameter Type\*\*: \* Choose \*\*Form Data\*\* to enter \*\*Name\*\*/\*\*Value\*\* pairs. \* Choose \*\*n8n Binary File\*\* to pull the body from a file the node has access to. \* \*\*Name\*\*: Enter the ID of the field to set. \* \*\*Input Data Field Name\*\*: Enter the name of the incoming field containing the binary file data you want to process. Select \*\*Add Parameter\*\* to enter more parameters. Refer to your service's API documentation for detailed guidance. #### JSON [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest.md#json) Use this option to send your body as JSON. \*\*Specify Body\*\* using one of the available options: \* \*\*Using Fields Below\*\*: Enter \*\*Name\*\*/\*\*Value\*\* pairs of \*\*Body Parameters\*\*. To enter more body parameter name/value pairs, select \*\*Add Parameter\*\*. \* \*\*Using JSON\*\*: Enter \*\*JSON\*\* to define your body. Refer to your service's API documentation for detailed guidance. #### n8n Binary File [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest.md#n8n-binary-file) Use this option to send the contents of a file stored in n8n as the body. Enter the name of the incoming field that contains the file as the \*\*Input Data Field Name\*\*. Refer to your service's API documentation for detailed guidance on how to format the file. #### Raw [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest.md#raw) Use this option to send raw data in the body. \* \*\*Content Type\*\*: Enter the \`Content-Type\` header to use for the raw body content. Refer to the IANA \[Media types\](https://www.iana.org/assignments/media-types/media-types.xhtml) documentation for a full list of MIME content types. \* \*\*Body\*\*: Enter the raw body content to send. Refer to your service's API documentation for detailed guidance. ## Node options [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest.md#node-options) Select \*\*Add Option\*\* to view and select these options. Options are available to all parameters unless otherwise noted. ### Array Format in Query Parameters [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest.md#array-format-in-query-parameters) {% hint style="info" %} \*\*Option availability\*\* This option is only available when you turn on \*\*Send Query Parameters\*\*. {% endhint %} Use this option to control the format for arrays included in query parameters. Choose from these options: \* \*\*No Brackets\*\*: Arrays will format as the name=value for each item in the array, for example: \`foo=bar&foo=qux\`. \* \*\*Brackets Only\*\*: The node adds square brackets after each array name, for example: \`foo\[\]=bar&foo\[\]=qux\`. \* \*\*Brackets with Indices\*\*: The node adds square brackets with an index value after each array name, for example: \`foo\[0\]=bar&foo\[1\]=qux\`. Refer to your service's API documentation for guidance on which option to use. ### Batching [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest.md#batching) Control how to batch large numbers of input items: \* \*\*Items per Batch\*\*: Enter the number of input items to include in each batch. \* \*\*Batch Interval\*\*: Enter the time to wait between each batch of requests in milliseconds. Enter 0 for no batch interval. ### Ignore SSL Issues [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest.md#ignore-ssl-issues) By default, n8n only downloads the response if SSL certificate validation succeeds. If you'd like to download the response even if SSL certificate validation fails, turn this option on. ### Lowercase Headers [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest.md#lowercase-headers) Choose whether to lowercase header names (turned on, default) or not (turned off). ### Redirects [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest.md#redirects) Choose whether to follow redirects (turned on by default) or not (turned off). If turned on, enter the maximum number of redirects the request should follow in \*\*Max Redirects\*\*. ### Response [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest.md#response) Use this option to set some details about the expected API response, including: \* \*\*Include Response Headers and Status\*\*: By default, the node returns only the body. Turn this option on to return the full response (headers and response status code) as well as the body. \* \*\*Never Error\*\*: By default, the node returns success only when the response returns with a 2xx code. Turn this option on to return success regardless of the code returned. \* \*\*Response Format\*\*: Select the format in which the data gets returned. Choose from: \* \*\*Autodetect\*\* (default): The node detects and formats the response based on the data returned. \* \*\*File\*\*: Select this option to put the response into a file. Enter the field name where you want the file returned in \*\*Put Output in Field\*\*. \* \*\*JSON\*\*: Select this option to format the response as JSON. \* \*\*Text\*\*: Select this option to format the response as plain text. Enter the field name where you want the file returned in \*\*Put Output in Field\*\*. ### Pagination [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest.md#pagination) Use this option to paginate results, useful for handling query results that are too big for the API to return in a single call. {% hint style="info" %} \*\*Inspect the API data first\*\* Some options for pagination require knowledge of the data returned by the API you're using. Before setting up pagination, either check the API documentation, or do an API call without pagination, to see the data it returns. {% endhint %} Understand pagination Pagination means splitting a large set of data into multiple pages. The amount of data on each page depends on the limit you set. For example, you make an API call to an endpoint called \`/users\`. The API wants to send back information on 300 users, but this is too much data for the API to send in one response. If the API supports pagination, you can incrementally fetch the data. To do this, you call \`/users\` with a pagination limit, and a page number or URL to tell the API which page to send. In this example, say you use a limit of 10, and start from page 0. The API sends the first 10 users in its response. You then call the API again, increasing the page number by 1, to get the next 10 results. Configure the pagination settings: \* \*\*Pagination Mode\*\*: \* \*\*Off\*\*: Turn off pagination. \* \*\*Update a Parameter in Each Request\*\*: Use this when you need to dynamically set parameters for each request. \* \*\*Response Contains Next URL\*\*: Use this when the API response includes the URL of the next page. Use an expression to set \*\*Next URL\*\*. For example setups, refer to \[HTTP Request node cookbook | Pagination\](/build/code-in-n8n/cookbook/http-request-node/pagination.md). n8n provides built-in variables for working with HTTP node requests and responses when using pagination: | Variable | Description | | ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | \`$pageCount\` | The pagination count. Tracks how many pages the node has fetched. | | \`$request\` | The request object sent by the HTTP node. | | \`$response\` | The response object from the HTTP call. Includes \`$response.body\`, \`$response.headers\`, and \`$response.statusCode\`. The contents of \`body\` and \`headers\` depend on the data sent by the API. | {% hint style="info" %} \*\*API differences\*\* Different APIs implement pagination in different ways. Check the API documentation for the API you're using for details. You need to find out things like: \* Does the API provide the URL for the next page? \* Are there API-specific limits on page size or page number? \* The structure of the data that the API returns. {% endhint %} ### Proxy [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest.md#proxy) Use this option if you need to specify an HTTP proxy. Enter the \*\*Proxy\*\* the request should use. This takes precedence over global settings defined with the \[\`HTTP\_PROXY\`, \`HTTPS\_PROXY\`, or \`ALL\_PROXY\` environment variables\](/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/deployment.md). ### Timeout [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest.md#timeout) Use this option to set how long the node should wait for the server to send response headers (and start the response body). The node aborts requests that exceed this value for the initial response. Enter the \*\*Timeout\*\* time to wait in milliseconds. ## Tool-only options [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest.md#tool-only-options) The following options are only available when attached to an \[AI agent\](/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/tools-agent.md) as a \[tool\](/build/integrate-ai/understand-ai-components/how-tools-work.md){ data-preview }. ### Optimize Response [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest.md#optimize-response) Whether to optimize the tool response to reduce the amount of data passed to the LLM. Optimizing the response can reduce costs and can help the LLM ignore unimportant details, often leading to better results. When optimizing responses, you select an expected response type, which determines other options you can configure. The supported response types are: #### JSON [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest.md#json) When expecting a \*\*JSON\*\* response, you can configure which parts of the JSON data to use as a response with the following choices: \* \*\*Field Containing Data\*\*: This field identifies a specific part of the JSON object that contains your relevant data. You can leave this blank to use the entire response. \* \*\*Include Fields\*\*: This is how you choose which fields you want in your response object. There are three choices: \* \*\*All\*\*: Include all fields in the response object. \* \*\*Selected\*\*: Include only the fields specified below. \* \*\*Fields\*\*: A comma-separated list of fields to include in the response. You can use dot notation to specify nested fields. You can drag fields from the Input panel to add them to the field list. \* \*\*Exclude\*\*: Include all fields \*except\* the fields specified below. \* \*\*Fields\*\*: A comma-separated list of fields to exclude from the response. You can use dot notation to specify nested fields. You can drag fields from the Input panel to add them to the field list. #### HTML [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest.md#html) When expecting \*\*HTML\*\*, you can identify the part of an HTML document relevant to the LLM and optimize the response with the following options: \* \*\*Selector (CSS)\*\*: A specific element or element type to include in the response HTML. Uses the \`body\` element by default. \* \*\*Return Only Content\*\*: Whether to strip HTML tags and attributes from the response, leaving only the actual content. This uses fewer tokens and may be easier for the model to understand. \* \*\*Elements To Omit\*\*: A comma-separated list of CSS selectors to exclude when extracting content. \* \*\*Truncate Response\*\*: Whether to limit the response size to save tokens. \* \*\*Max Response Characters\*\*: The maximum number of characters to include in the HTML response. The default value is 1000. #### Text [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest.md#text) When expecting a generic \*\*Text\*\* response, you can optimize the results with the following options: \* \*\*Truncate Response\*\*: Whether to limit the response size to save tokens. \* \*\*Max Response Characters\*\*: The maximum number of characters to include in the HTML response. The default value is 1000. ## Import curl command [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest.md#import-curl-command) \[curl\](https://curl.se/) is a command line tool and library for transferring data with URLs. You can use curl to call REST APIs. If the API documentation of the service you want to use provides curl examples, you can copy them out of the documentation and into n8n to configure the HTTP Request node. Import a curl command: {% hint style="info" %} \*\*Import format\*\* This option always imports any parameter values as strings. If you wish to preserve the type of numbers and booleans in your request, switch \*\*Using Fields Below\*\* to \*\*Using JSON\*\* and paste your JSON object containing the parameters. {% endhint %} 1. From the HTTP Request node's \*\*Parameters\*\* tab, select \*\*Import cURL\*\*. The \*\*Import cURL command\*\* modal opens. 2. Paste your curl command into the text box. 3. Select \*\*Import\*\*. n8n loads the request configuration into the node fields. This overwrites any existing configuration. ## Templates and examples [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest.md#templates-and-examples) \[Browse n8n-nodes-base.httprequest integration templates\](https://n8n.io/integrations/http-request) or \[search all templates\](https://n8n.io/workflows/) ## Common issues [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest.md#common-issues) For common questions or issues and suggested solutions, refer to \[Common Issues\](/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/common-issues.md). --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/privacy-and-security/privacy.md). # Privacy This page describes n8n's data privacy practices. ## GDPR [](https://docs.n8n.io/privacy-and-security/privacy.md#gdpr) \### Data processing agreement [](https://docs.n8n.io/privacy-and-security/privacy.md#data-processing-agreement) For Cloud versions of n8n, n8n is considered both a Controller and a Processor as defined by the GDPR. As a Processor, n8n implements policies and practices that secure the personal data you send to the platform, and includes a \[Data Processing Agreement\](https://n8n.io/legal/#data) as part of the company's standard \[Terms of Service\](https://n8n.io/legal/#terms). The n8n Data Processing Agreement includes the \[Standard Contractual Clauses (SCCs)\](https://ec.europa.eu/info/law/law-topic/data-protection/international-dimension-data-protection/standard-contractual-clauses-scc\_en). These clarify how n8n handles your data, and they update n8n's GDPR policies to cover the latest standards set by the European Commission. You can find a list of n8n sub-processors \[here\](https://n8n.io/legal/sub-processors/). {% hint style="info" %} \*\*Self-hosted n8n\*\* For self-hosted versions, n8n is neither a Controller nor a Processor, as we don't manage your data {% endhint %} ### Submitting an account deletion request [](https://docs.n8n.io/privacy-and-security/privacy.md#submitting-an-account-deletion-request) Email to make an account deletion request. ### Sub-processors [](https://docs.n8n.io/privacy-and-security/privacy.md#sub-processors) The sub-processor list has moved to \[n8n.io/legal/sub-processors\](https://n8n.io/legal/sub-processors/). ### GDPR for self-hosted users [](https://docs.n8n.io/privacy-and-security/privacy.md#gdpr-for-self-hosted-users) If you self-host n8n, you are responsible for deleting user data. If you need to delete data on behalf of one of your users, you can delete the respective execution. n8n recommends configuring n8n to prune execution data automatically every few days to avoid effortful GDPR request handling as much as possible. Configure this using the \`EXECUTIONS\_DATA\_MAX\_AGE\` environment variable. Refer to \[Environment variables\](/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables.md) for more information. ## Data collection [](https://docs.n8n.io/privacy-and-security/privacy.md#data-collection) n8n collects selected usage and performance data to help diagnose problems and improve the platform. Read about how n8n stores and processes this information in the \[privacy policy\](https://n8n.io/legal/#privacy). The data gathered is different in self-hosted n8n and n8n Cloud. ### Data collection in self-hosted n8n [](https://docs.n8n.io/privacy-and-security/privacy.md#data-collection-in-self-hosted-n8n) n8n takes care to keep self-hosted data anonymous and avoids collecting sensitive data. #### What n8n collects [](https://docs.n8n.io/privacy-and-security/privacy.md#what-n8n-collects) \* Error codes and messages of failed executions (excluding any payload data, and not for custom nodes) \* Error reports for app crashes and API issues \* The graph of a workflow (types of nodes used and how they're connected) \* From node parameters: \* The 'resource' and 'operation' that a node is set to (if applicable) \* For HTTP request nodes, the domain, path, and method (with personal data anonymized) \* Data around workflow executions: \* Status \* The user ID of the user who ran the execution \* The first time a workflow loads data from an external source \* The first successful production (non-manual) workflow execution \* The domain of webhook calls, if specified (excluding subdomain). \* Details on how the UI is used (for example, navigation, nodes panel searches) \* Diagnostic information: \* n8n version \* Selected settings: \* DB\\\_TYPE \* N8N\\\_VERSION\\\_NOTIFICATIONS\\\_ENABLED \* N8N\\\_DISABLE\\\_PRODUCTION\\\_MAIN\\\_PROCESS \* \[Execution variables\](/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/executions.md) \* OS, RAM, and CPUs \* Anonymous instance ID \* IP address #### What n8n doesn't collect [](https://docs.n8n.io/privacy-and-security/privacy.md#what-n8n-doesnt-collect) n8n doesn't collect private or sensitive information, such as: \* Personally identifiable information (except IP address) \* Credential information \* Node parameters (except 'resource' and 'operation') \* Execution data \* Sensitive settings (for example, endpoints, ports, DB connections, username/password) \* Error payloads #### How collection works [](https://docs.n8n.io/privacy-and-security/privacy.md#how-collection-works) Most data is sent to n8n as events that generate it occur. Workflow execution counts and an instance pulse are sent periodically (every 6 hours). #### Opting out of telemetry [](https://docs.n8n.io/privacy-and-security/privacy.md#opting-out-of-telemetry) Telemetry collection is enabled by default. To disable it you can configure the following environment variables. To opt out of telemetry events: \`\`\`bash export N8N\_DIAGNOSTICS\_ENABLED=false \`\`\` To opt out of checking for new versions of n8n: \`\`\`bash export N8N\_VERSION\_NOTIFICATIONS\_ENABLED=false \`\`\` To disable the templates feature (prevents background health check calls): \`\`\`bash export N8N\_TEMPLATES\_ENABLED=false \`\`\` See \[configuration\](/deploy/host-n8n/configure-n8n/basic-configuration.md) for more info on how to set environment variables. ### Data collection in n8n Cloud [](https://docs.n8n.io/privacy-and-security/privacy.md#data-collection-in-n8n-cloud) n8n Cloud collects everything listed in \[Data collection in self-hosted n8n\](#data-collection-in-self-hosted-n8n). Additionally, in n8n Cloud, n8n uses \[PostHog\](https://posthog.com/) to track events and visualise usage, including using session recordings. Session recordings comprise the data seen by a user on screen, with the exception of credential values. n8n's product team uses this data to improve the product. All recordings are deleted after 21 days. ### AI in n8n [](https://docs.n8n.io/privacy-and-security/privacy.md#ai-in-n8n) To provide enhanced assistance, n8n integrates AI-powered features that leverage Large Language Models (LLMs). #### How n8n uses AI [](https://docs.n8n.io/privacy-and-security/privacy.md#how-n8n-uses-ai) To assist and improve user experience, n8n may send specific context data to LLMs. This context data is strictly limited to information about the current workflow. n8n does not send any values from credential fields or actual output data to AI services. The data will not be incorporated, used, or retained to train the models of the AI services. Any data will be deleted after 30 days. #### AI usage settings [](https://docs.n8n.io/privacy-and-security/privacy.md#ai-usage-settings) {% hint style="info" %} Available in n8n v2.7.0 and above. {% endhint %} You can manage your AI usage settings by navigating to \*\*Settings\*\* > \*\*AI Usage\*\* in your n8n instance. More details can be found on the \[AI Assistant documentation page\](/build/ways-of-building-workflows/use-the-ai-assistant.md#ai-usage-settings). #### When n8n shares data [](https://docs.n8n.io/privacy-and-security/privacy.md#when-n8n-shares-data) Data is only sent to AI services if workspaces have opted in to use the assistant. The Assistant is enabled by default for n8n Cloud users. When a workspace opts in to use the assistant, node-specific data is transmitted only during direct interactions and active sessions with the AI assistant, ensuring no unnecessary data sharing occurs. #### What n8n shares [](https://docs.n8n.io/privacy-and-security/privacy.md#what-n8n-shares) \* \*\*General Workflow Information\*\*: This includes details about which nodes are present in your workflow, the number of items currently in the workflow, and whether the workflow is active. \* \*\*Input & Output Schemas of Nodes\*\*: This includes the schema of all nodes with incoming data and the output schema of a node in question. We do not send the actual data value of the schema. \* \*\*Node Configuration\*\*: This includes the operations, options, and settings chosen in the referenced node. \* \*\*Code and Expressions\*\*: This includes any code or expressions in the node in question to help with debugging potential issues and optimizations. #### What n8n doesn't share [](https://docs.n8n.io/privacy-and-security/privacy.md#what-n8n-doesnt-share) \* \*\*Credentials\*\*: Any values of the credential fields of your nodes. \* \*\*Output Data\*\*: The actual data processed by your workflows. \* \*\*Sensitive Information\*\*: Any personally identifiable information or other sensitive data that could compromise your privacy or security that you have not explicitly mentioned in node parameters or your code of a \[Code Node\](/integrations/builtin/core-nodes/n8n-nodes-base.code.md). ### Documentation telemetry [](https://docs.n8n.io/privacy-and-security/privacy.md#documentation-telemetry) n8n's documentation (this website) uses cookies to recognize your repeated visits and preferences, as well as to measure the effectiveness of n8n's documentation and whether users find what they're searching for. With your consent, you're helping n8n to make our documentation better. You can control cookie consent using the cookie widget. ## Retention and deletion of personal identifiable data [](https://docs.n8n.io/privacy-and-security/privacy.md#retention-and-deletion-of-personal-identifiable-data) PID (personal identifiable data) is data that's personal to you and would identify you as an individual. ### n8n Cloud [](https://docs.n8n.io/privacy-and-security/privacy.md#n8n-cloud) \#### PID retention [](https://docs.n8n.io/privacy-and-security/privacy.md#pid-retention) n8n only retains data for as long as necessary to provide the core service. For n8n Cloud, n8n stores your workflow code, credentials, and other data indefinitely, until you choose to delete it or close your account. The platform stores execution data according to the retention rules on your account. n8n deletes most internal application logs and logs tied to subprocessors within 90 days. The company retains a subset of logs for longer periods where required for security investigations. #### PID deletion [](https://docs.n8n.io/privacy-and-security/privacy.md#pid-deletion) If you choose to delete your n8n account, n8n deletes all customer data and event data associated with your account. n8n deletes customer data in backups within 90 days. ### Self-hosted [](https://docs.n8n.io/privacy-and-security/privacy.md#self-hosted) Self-hosted users should have their own PID policy and data deletion processes. Refer to \[What you can do\](/privacy-and-security/what-you-can-do.md) for more information. ## Payment processor [](https://docs.n8n.io/privacy-and-security/privacy.md#payment-processor) n8n uses Paddle.com to process payments. When you sign up for a paid plan, Paddle transmits and stores the details of your payment method according to their security policy. n8n stores no information about your payment method. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/privacy-and-security/what-you-can-do.md). # What you can do It's also your responsibility as a customer to ensure you are securing your code and data. This document lists some steps you can take. ## All users [](https://docs.n8n.io/privacy-and-security/what-you-can-do.md#all-users) \* Report security issues and \[terms of service\](https://n8n.io/legal/#terms) violations to . \* If more than one person uses your n8n instance, set up \[User management\](/administer/manage-users-and-access.md) and follow the \[Best practices\](/administer/manage-users-and-access/follow-best-practices.md). \* Use OAuth to connect integrations whenever possible. ## Self-hosted users [](https://docs.n8n.io/privacy-and-security/what-you-can-do.md#self-hosted-users) If you self-host n8n, there are additional steps you can take: \* Set up a reverse proxy to handle TLS, ensuring data is encrypted in transit. \* Ensure data is encrypted at rest by using encrypted partitions, or encryption at the hardware level, and ensuring n8n and its database is written to that location. \* Run a \[Security audit\](/deploy/host-n8n/configure-n8n/security/run-security-audits.md). \* Be aware of the \[Risks\](/integrations/community-nodes/risks.md) when installing community nodes, or choose to disable them. \* Make sure users can't import external modules in the Code node. Refer to \[Environment variables | Nodes\](/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/nodes.md) for more information. \* Choose to exclude certain nodes. For example, you can disable nodes like Execute Command or SSH. Refer to \[Environment variables | Nodes\](/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/nodes.md) for more information. \* For maximum privacy, you can \[Isolate n8n\](/deploy/host-n8n/configure-n8n/basic-configuration/configuration-examples/isolate-n8n.md). ### GDPR for self-hosted users [](https://docs.n8n.io/privacy-and-security/what-you-can-do.md#gdpr-for-self-hosted-users) If you self-host n8n, you are responsible for deleting user data. If you need to delete data on behalf of one of your users, you can delete the respective execution. n8n recommends configuring n8n to prune execution data automatically every few days to avoid effortful GDPR request handling as much as possible. Configure this using the \`EXECUTIONS\_DATA\_MAX\_AGE\` environment variable. Refer to \[Environment variables\](/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables.md) for more information. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/build/flow-logic.md). # Flow logic n8n allows you to represent complex logic in your workflows. ## Related sections [](https://docs.n8n.io/build/flow-logic.md#related-sections) You need some understanding of \[Data\](/build/work-with-data/overview.md) in n8n, including \[Data structure\](/build/work-with-data/understand-n8ns-data-structure.md) and \[Data flow within nodes\](/build/work-with-data/understand-n8ns-data-structure.md#how-data-flows-within-nodes). When building your logic, you'll use n8n's \[Core nodes\](/integrations/builtin/core-nodes.md), including: \* Splitting: \[IF\](/integrations/builtin/core-nodes/n8n-nodes-base.if.md) and \[Switch\](/integrations/builtin/core-nodes/n8n-nodes-base.switch.md). \* Merging: \[Merge\](/integrations/builtin/core-nodes/n8n-nodes-base.merge.md), \[Compare Datasets\](/integrations/builtin/core-nodes/n8n-nodes-base.comparedatasets.md), and \[Code\](/integrations/builtin/core-nodes/n8n-nodes-base.code.md). \* Looping: \[IF\](/integrations/builtin/core-nodes/n8n-nodes-base.if.md) and \[Loop Over Items\](/integrations/builtin/core-nodes/n8n-nodes-base.splitinbatches.md). \* Waiting: \[Wait\](/integrations/builtin/core-nodes/n8n-nodes-base.wait.md). \* Creating sub-workflows: \[Execute Workflow\](/integrations/builtin/core-nodes/n8n-nodes-base.executeworkflow.md) and \[Execute Workflow Trigger\](/integrations/builtin/core-nodes/n8n-nodes-base.executeworkflowtrigger.md). \* Error handling: \[Stop And Error\](/integrations/builtin/core-nodes/n8n-nodes-base.stopanderror.md) and \[Error Trigger\](/integrations/builtin/core-nodes/n8n-nodes-base.errortrigger.md). --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/credentials.md). # Credentials This section contains step-by-step information about authenticating the different nodes in n8n. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/trigger-nodes.md). # Trigger nodes This section provides information about \[n8n's Triggers\](#user-content-fn-1)\[^1\]. \[^1\]: A trigger node is a special node responsible for executing the workflow in response to certain conditions. All production workflows need at least one trigger to determine when the workflow should run. --- # What you can do | Privacy and security | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/privacy-and-security/what-you-can-do.md) . It's also your responsibility as a customer to ensure you are securing your code and data. This document lists some steps you can take. [](https://docs.n8n.io/privacy-and-security/what-you-can-do#all-users) All users ------------------------------------------------------------------------------------- * Report security issues and [terms of service](https://n8n.io/legal/#terms) violations to security@n8n.io. * If more than one person uses your n8n instance, set up [User management](https://docs.n8n.io/administer/manage-users-and-access) and follow the [Best practices](https://docs.n8n.io/administer/manage-users-and-access/follow-best-practices) . * Use OAuth to connect integrations whenever possible. [](https://docs.n8n.io/privacy-and-security/what-you-can-do#self-hosted-users) Self-hosted users ----------------------------------------------------------------------------------------------------- If you self-host n8n, there are additional steps you can take: * Set up a reverse proxy to handle TLS, ensuring data is encrypted in transit. * Ensure data is encrypted at rest by using encrypted partitions, or encryption at the hardware level, and ensuring n8n and its database is written to that location. * Run a [Security audit](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/run-security-audits) . * Be aware of the [Risks](https://docs.n8n.io/integrations/community-nodes/risks) when installing community nodes, or choose to disable them. * Make sure users can't import external modules in the Code node. Refer to [Environment variables | Nodes](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/nodes) for more information. * Choose to exclude certain nodes. For example, you can disable nodes like Execute Command or SSH. Refer to [Environment variables | Nodes](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/nodes) for more information. * For maximum privacy, you can [Isolate n8n](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/configuration-examples/isolate-n8n) . ### [](https://docs.n8n.io/privacy-and-security/what-you-can-do#gdpr-for-self-hosted-users) GDPR for self-hosted users If you self-host n8n, you are responsible for deleting user data. If you need to delete data on behalf of one of your users, you can delete the respective execution. n8n recommends configuring n8n to prune execution data automatically every few days to avoid effortful GDPR request handling as much as possible. Configure this using the `EXECUTIONS_DATA_MAX_AGE` environment variable. Refer to [Environment variables](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables) for more information. [PreviousIncident response](https://docs.n8n.io/privacy-and-security/incident-response) [NextSustainable use license](https://docs.n8n.io/privacy-and-security/sustainable-use-license) Last updated 9 days ago Was this helpful? * [All users](https://docs.n8n.io/privacy-and-security/what-you-can-do#all-users) * [Self-hosted users](https://docs.n8n.io/privacy-and-security/what-you-can-do#self-hosted-users) * [GDPR for self-hosted users](https://docs.n8n.io/privacy-and-security/what-you-can-do#gdpr-for-self-hosted-users) Was this helpful? --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/deploy/readme.md). # Deploy n8n offers two different deployment methods. \[n8n Cloud\](/deploy/use-n8n-cloud.md) gives fast, managed setup on an instance run by n8n. \[Self-hosted n8n\](/deploy/host-n8n.md) lets you run n8n on your own machine or infrastructure.\\ \\ \*\*Deploy\*\* documentation helps you deploy, configure, secure, and maintain n8n in either model. | Deployment option | Go to section | | --- | --- | | **Use n8n Cloud**
Managed by n8n. Get started quickly, with less operational work. | [/pages/TfRz19xNcFbNxlcQq9L7](https://docs.n8n.io/pages/TfRz19xNcFbNxlcQq9L7) | | **Self-host n8n**
Run n8n yourself with Docker, npm, Docker Compose, or a supported platform. | [/pages/dqi8Y1iZswob8wzg3QaO](https://docs.n8n.io/pages/dqi8Y1iZswob8wzg3QaO) | \### Compare deployment options Below is a high-level overview of each option. If you're still deciding, look at \[Choose your n8n\](https://n8n.gitbook.io/n8n-docs-next/fTXFsp54tRnnn2McXCeU/choose-how-to-use-n8n) for more guidance. #### Use n8n Cloud n8n Cloud is the managed option. n8n runs the instance for you. Choose Cloud if you want to: \* Start fast with minimal setup \* Reduce infrastructure and maintenance work \* Use Cloud-specific admin and configuration tools {% content-ref url="/pages/TfRz19xNcFbNxlcQq9L7" %} \[Use n8n Cloud\](/deploy/use-n8n-cloud.md) {% endcontent-ref %} #### Self-host n8n Self-hosting gives you control over how n8n runs and how your environment is managed. Choose self-hosting if you want to: \* Run n8n on your own infrastructure \* Finely control upgrades, configuration, and security \* Design for custom scaling or platform requirements | Self-hosted topic | Open | | --- | --- | | **Host n8n overview**
Start with the main self-hosted landing page. | [/pages/dqi8Y1iZswob8wzg3QaO](https://docs.n8n.io/pages/dqi8Y1iZswob8wzg3QaO) | | **Install options**
Set up n8n with Docker, npm, Docker Compose, or a cloud provider. | [/pages/tmlZdl7QpnGuCXup9vMd](https://docs.n8n.io/pages/tmlZdl7QpnGuCXup9vMd) | | **Configure n8n**
Manage databases, environment variables, users, licenses, and security settings. | [/pages/rc1k6jBpVgSdbcxQtXLJ](https://docs.n8n.io/pages/rc1k6jBpVgSdbcxQtXLJ) | | **Keep n8n running**
Monitor, log, trace, and update your instance. | [/pages/2XQWgN6U1L22KGt19WnT](https://docs.n8n.io/pages/2XQWgN6U1L22KGt19WnT) | | **Understand the architecture**
Learn how n8n works and how the database is structured. | [/pages/XddcCvbiPK7AMLl8LN5w](https://docs.n8n.io/pages/XddcCvbiPK7AMLl8LN5w) | {% content-ref url="/pages/dqi8Y1iZswob8wzg3QaO" %} \[Host n8n\](/deploy/host-n8n.md) {% endcontent-ref %} --- # Use the command line | Deploy | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line.md) . The **Server CLI** is a built-in command-line interface that runs on the same machine as your n8n installation. It provides direct database access for administrative tasks and can execute most commands even when n8n isn't running. **n8n CLI** Looking to interact with n8n programmatically from a remote machine or integrate with AI agents? Check out the [n8n CLI](https://docs.n8n.io/connect/) . [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line#when-to-use-server-cli-vs-n8n-cli) When to use Server CLI vs n8n CLI --------------------------------------------------------------------------------------------------------------------------------------------------- Feature Server CLI n8n CLI **Where it runs** Same machine as n8n Any machine with network access **Authentication** Direct database access API key **Requires running n8n** No (most commands) Yes **Best for** Instance operators, backups, migrations Programmers, AI agents, remote management **Security model** Bypasses access controls Respects user permissions and API key scope **Use case examples** Backup/restore, license management, emergency password resets Workflow automation, credentials management through code [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line#running-cli-commands) Running CLI commands ------------------------------------------------------------------------------------------------------------------------- You can use CLI commands with self-hosted n8n. Depending on how you choose to install n8n, there are differences in how to run the commands: * npm: the `n8n` command is directly available. The documentation uses this in the examples below. * Docker: the `n8n` command is available within your Docker container: Copy docker exec -u node -it [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line#start-a-workflow) Start a workflow ----------------------------------------------------------------------------------------------------------------- You can start workflows directly using the CLI. Execute a saved workflow by its ID: [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line#publish-or-unpublish-a-workflow) Publish or unpublish a workflow ----------------------------------------------------------------------------------------------------------------------------------------------- You can publish or unpublish a workflow using the CLI. In n8n 2.0, the [previous active/inactive toggle](https://docs.n8n.io/changelog/v20-breaking-changes) was replaced by a publish/unpublish model. Use `publish:workflow` and `unpublish:workflow` to change a workflow's published state from the CLI. **Restart required** These commands operate on your n8n database. If you execute them while n8n is running, the changes don't take effect until you restart n8n. ### [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line#publish-a-workflow) Publish a workflow Use `publish:workflow` to publish a workflow by its ID. You can optionally publish a specific historical version by passing its `versionId`. Command flags: Flag Description \--help Help prompt. \--id The ID of the workflow to publish. Required. \--versionId Optional version ID to publish. If omitted, the current draft is published. **No** `**--all**` **flag** Unlike the deprecated `update:workflow` command, `publish:workflow` doesn't support `--all`. This is intentional: it prevents accidental bulk publishing of workflows in production environments. Publish workflows individually by ID. Publish the current draft of a workflow by ID: Publish a specific historical version of a workflow: ### [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line#unpublish-a-workflow) Unpublish a workflow Use `unpublish:workflow` to unpublish a workflow by its ID, or all workflows at once. Command flags: Flag Description \--help Help prompt. \--id The ID of the workflow to unpublish. Can't be used with `--all`. \--all Unpublish all workflows. Can't be used with `--id`. Unpublish a workflow by its ID: Unpublish all workflows: ### [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line#updateworkflow-deprecated) update:workflow (deprecated) **Deprecated in n8n 2.0** The `update:workflow` command is deprecated and will be removed. Use [`publish:workflow`](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line#publish-a-workflow) and [`unpublish:workflow`](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line#unpublish-a-workflow) instead. See the [n8n v2.0 breaking changes](https://docs.n8n.io/changelog/v20-breaking-changes) for details. Set the active status of a workflow by its ID to false: Set the active status of a workflow by its ID to true: Set the active status to false for all the workflows: Set the active status to true for all the workflows: [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line#export-entities) Export entities --------------------------------------------------------------------------------------------------------------- You can export your database entities from n8n using the CLI. This tooling allows you to export all entity types from one database type, such as SQLite, and import them into another database type, such as Postgres. Command flags: Flag Description \--help Help prompt. \--outputDir Output directory path \--includeExecutionHistoryDataTables Include execution history data tables, these are excluded by default as they can be very large [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line#export-workflows-and-credentials) Export workflows and credentials ------------------------------------------------------------------------------------------------------------------------------------------------- You can export your workflows and credentials from n8n using the CLI. Command flags: Flag Description \--help Help prompt. \--all Exports all workflows/credentials. \--backup Sets --all --pretty --separate for backups. You can optionally set --output. \--id The ID of the workflow to export. \--output, -o Outputs file name or directory if using separate files. \--pretty Formats the output in an easier to read fashion. \--separate Exports one file per workflow (useful for versioning). Must set a directory using --output. \--decrypted Exports the credentials in a plain text format. (Credentials only.) \--version The version ID of a specific historical version to export. (Workflows only, can't be used with `--all` or `--published`.) \--published Exports the published/active version of the workflow instead of the current draft. When combined with `--all`, unpublished workflows are skipped. (Workflows only, can't be used with `--version`.) ### [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line#workflows) Workflows Export all your workflows to the standard output (terminal): Export a workflow by its ID and specify the output file name: Export all workflows to a specific directory in a single file: Export all the workflows to a specific directory using the `--backup` flag (details above): #### [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line#export-a-specific-workflow-version) Export a specific workflow version You can export a specific historical version of a workflow by passing its `versionId` with `--version`: #### [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line#export-the-published-version-of-a-workflow) Export the published version of a workflow Use `--published` to export the currently published/active version of a workflow rather than the current draft: You can combine `--published` with `--all` to export every workflow's published version. Workflows that don't have a published version are skipped: **Version metadata** When exporting a workflow, n8n includes a `versionMetadata` property containing the workflow's historical name and description for that version. The import command preserves this data in the workflow history table on import. The current workflow's name and description aren't overridden. ### [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line#credentials) Credentials Export all your credentials to the standard output (terminal): Export credentials by their ID and specify the output file name: Export all credentials to a specific directory in a single file: Export all the credentials to a specific directory using the `--backup` flag (details above): Export all the credentials in plain text format. You can use this to migrate from one installation to another that has a different secret key in the configuration file. **Sensitive information** All sensitive information is visible in the files. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line#import-entities) Import entities --------------------------------------------------------------------------------------------------------------- You can import entities from a previous `export:entities` command using this command, it allows importing of entities into a database type that differs from the exported database type. Current supported database types include: SQLite, Postgres. The database is expected to be empty prior to import, this can be forced with the `--truncateTables` parameter. Command flags: Flag Description \--help Help prompt. \--inputDir Input directory that holds output files for import \--truncateTables Truncate tables before import [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line#import-workflows-and-credentials) Import workflows and credentials ------------------------------------------------------------------------------------------------------------------------------------------------- You can import your workflows and credentials from n8n using the CLI. **Update the IDs** When exporting workflows and credentials, n8n also exports their IDs. If you have workflows and credentials with the same IDs in your existing database, they will be overwritten. To avoid this, delete or change the IDs before importing. Available flags: Flag Description \--help Help prompt. \--input Input file name or directory if you use --separate. \--projectId Import the workflow or credential to the specified project. Can't be used with `--userId`. \--separate Imports `*.json` files from directory provided by --input. \--userId Import the workflow or credential to the specified user. Can't be used with `--projectId`. \--skipMigrationChecks Skip migration validation checks. \--activeState Controls the active state of imported workflows. Accepts `false` (default, deactivates all imported workflows) or `fromJson` (uses the `active` field from each workflow's JSON; multi-main mode only). **Migrating to SQLite** n8n limits workflow and credential names to 128 characters, but SQLite doesn't enforce size limits. This might result in errors like **Data too long for column name** during the import process. In this case, you can edit the names from the n8n interface and export again, or edit the JSON file directly before importing. ### [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line#workflows-1) Workflows **Known issue: cron triggers keep running after import** The behaviour of importing a previously active workflow differs depending on the mode you are running. This is a known bug. On multi-main and queue-mode instances the previously active workflow's cron triggers are deactivated on import. On non multi-main instances the previously active workflows cron triggers will remain running until you restart the n8n instance. Import workflows from a specific file: Import all the workflow files as JSON from the specified directory: **Version metadata on import** If the imported file includes a `versionMetadata` property (added by exports that target a specific version or the published version), n8n preserves that historical name and description in the workflow history table. The current workflow entity's name and description are kept as-is. By default, `import:workflow` deactivates every imported workflow. To preserve the `active` field from each JSON file instead, pass `--activeState=fromJson` (only supported in multi-main & queue mode): ### [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line#credentials-1) Credentials Import credentials from a specific file: Import all the credentials files as JSON from the specified directory: [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line#license) License ----------------------------------------------------------------------------------------------- ### [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line#clear) Clear Clear your existing license from n8n's database and reset n8n to default features: If your license includes floating entitlements, running this command will also attempt to release them back to the pool, making them available for other instances. ### [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line#info) Info Display information about the existing license: [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line#user-management) User management --------------------------------------------------------------------------------------------------------------- You can reset user management using the n8n CLI. This returns user management to its pre-setup state. It removes all user accounts. Use this if you forget your password, and don't have SMTP set up to do password resets by email. ### [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line#disable-mfa-for-a-user) Disable MFA for a user If a user loses their recovery codes you can disable MFA for a user with this command. The user will then be able to log back in to set up MFA again. ### [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line#disable-ldap) Disable LDAP You can reset the LDAP settings using the command below. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line#uninstall-community-nodes-and-credentials) Uninstall community nodes and credentials ------------------------------------------------------------------------------------------------------------------------------------------------------------------- You can manage [community nodes](https://docs.n8n.io/integrations/community-nodes/installation-and-management) using the n8n CLI. For now, you can only uninstall community nodes and credentials, which is useful if a community node causes instability. Command flags: Flag Description \--help Show CLI help. \--credential The credential type. Get this value by visiting the node's `.credential.ts` file and getting the value of `name`. \--package Package name of the community node. \--uninstall Uninstalls the node. \--userId The ID of the user who owns the credential. On self-hosted, query the database. On cloud, query the API with your API key. ### [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line#nodes) Nodes Uninstall a community node by package name: For example, to uninstall the [Evolution API community node](https://www.npmjs.com/package/n8n-nodes-evolution-api) , type: ### [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line#credentials-2) Credentials Uninstall a community node credential: For example, to uninstall the [Evolution API community node credential](https://www.npmjs.com/package/n8n-nodes-evolution-api) , visit the [repository](https://github.com/oriondesign2015/n8n-nodes-evolution-api) and navigate to the [`credentials.ts` file](https://github.com/oriondesign2015/n8n-nodes-evolution-api/blob/main/credentials/EvolutionApi.credentials.ts) to find the `name`: [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line#security-audit) Security audit ------------------------------------------------------------------------------------------------------------- You can run a [security audit](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/run-security-audits) on your n8n instance, to detect common security issues. [PreviousExternal hooks](https://docs.n8n.io/deploy/host-n8n/configure-n8n/external-hooks) [NextUser management](https://docs.n8n.io/deploy/host-n8n/configure-n8n/user-management) Last updated 9 days ago Was this helpful? * [When to use Server CLI vs n8n CLI](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line#when-to-use-server-cli-vs-n8n-cli) * [Running CLI commands](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line#running-cli-commands) * [Start a workflow](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line#start-a-workflow) * [Publish or unpublish a workflow](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line#publish-or-unpublish-a-workflow) * [Publish a workflow](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line#publish-a-workflow) * [Unpublish a workflow](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line#unpublish-a-workflow) * [update:workflow (deprecated)](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line#updateworkflow-deprecated) * [Export entities](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line#export-entities) * [Export workflows and credentials](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line#export-workflows-and-credentials) * [Workflows](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line#workflows) * [Credentials](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line#credentials) * [Import entities](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line#import-entities) * [Import workflows and credentials](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line#import-workflows-and-credentials) * [Workflows](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line#workflows-1) * [Credentials](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line#credentials-1) * [License](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line#license) * [Clear](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line#clear) * [Info](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line#info) * [User management](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line#user-management) * [Disable MFA for a user](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line#disable-mfa-for-a-user) * [Disable LDAP](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line#disable-ldap) * [Uninstall community nodes and credentials](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line#uninstall-community-nodes-and-credentials) * [Nodes](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line#nodes) * [Credentials](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line#credentials-2) * [Security audit](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line#security-audit) Was this helpful? Copy n8n execute --id Copy n8n publish:workflow --id= Copy n8n publish:workflow --id= --versionId= Copy n8n unpublish:workflow --id= Copy n8n unpublish:workflow --all Copy n8n update:workflow --id= --active=false Copy n8n update:workflow --id= --active=true Copy n8n update:workflow --all --active=false Copy n8n update:workflow --all --active=true Copy n8n export:entities --outputDir=./outputs --includeExecutionHistoryDataTables=true Copy n8n export:workflow --all Copy n8n export:workflow --id= --output=file.json Copy n8n export:workflow --all --output=backups/latest/file.json Copy n8n export:workflow --backup --output=backups/latest/ Copy n8n export:workflow --id= --version= --output=workflow-v1.json Copy n8n export:workflow --id= --published --output=published.json Copy n8n export:workflow --all --published --output=workflows.json Copy n8n export:credentials --all Copy n8n export:credentials --id= --output=file.json Copy n8n export:credentials --all --output=backups/latest/file.json Copy n8n export:credentials --backup --output=backups/latest/ Copy n8n export:credentials --all --decrypted --output=backups/decrypted.json Copy n8n import:entities --inputDir ./outputs --truncateTables true Copy n8n import:workflow --input=file.json Copy n8n import:workflow --separate --input=backups/latest/ Copy n8n import:workflow --separate --input=backups/latest/ --activeState=fromJson Copy n8n import:credentials --input=file.json Copy n8n import:credentials --separate --input=backups/latest/ Copy n8n license:clear Copy n8n license:info Copy n8n user-management:reset Copy n8n mfa:disable --email=johndoe@example.com Copy n8n ldap:reset Copy n8n community-node --uninstall --package Copy n8n community-node --uninstall --package n8n-nodes-evolution-api Copy n8n community-node --uninstall --credential --userId Copy n8n community-node --uninstall --credential evolutionApi --userId 1234 Copy n8n audit --- # Models | Connect | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/connect/n8n-api/models.md) . audit Show properties create-credential-response Show properties credentialSharedItem Show properties credentialListItem Show properties credentialList Show properties credentialCreate Show properties credential Show properties update-credential-request Show properties credentialTestResponse Show properties execution Show properties executionList Show properties tag Show properties executionTags Show properties tagIds Show properties tagList Show properties node Show properties workflowNodeGroup Show properties workflowSettings Show properties sharedWorkflow Show properties activeVersion Show properties workflow Show properties workflowList Show properties workflowCreate Show properties workflowVersion Show properties workflowTags Show properties user Show properties userList Show properties pull Show properties sourceControlledFile Show properties pullResult Show properties project Show properties variable Show properties variableList Show properties variable.create Show properties dataTable Show properties dataTableList Show properties createDataTableRequest Show properties updateDataTableRequest Show properties dataTableRow Show properties dataTableRowList Show properties insertRowsRequest Show properties updateRowsRequest Show properties upsertRowRequest Show properties dataTableColumn Show properties dataTableColumnName Show properties createColumnRequest Show properties updateColumnRequest Show properties projectList Show properties projectMember Show properties projectMemberList Show properties communityPackage Show properties communityPackageList Show properties installCommunityPackageRequest Show properties insights Show properties folder Show properties folder.create Show properties folder.update Show properties exportWorkflowsRequest Show properties importBlockingIssue Show properties error Show properties role Show properties credentialType Show properties Error Show properties Role Show properties Execution Show properties Node Show properties WorkflowNodeGroup Show properties Tag Show properties Workflow Show properties WorkflowSettings Show properties ExecutionList Show properties WorkflowList Show properties Credential Show properties CredentialType Show properties Audit Show properties Pull Show properties PullResult Show properties SourceControlledFile Show properties UserList Show properties User Show properties [PreviousN8n Package](https://docs.n8n.io/connect/n8n-api/n8n-package) [Nextn8n CLI](https://docs.n8n.io/connect/n8n-cli) Last updated 10 days ago Was this helpful? Was this helpful? --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/build/code-in-n8n/cookbook.md). # Cookbook {% content-ref url="/pages/1zlHWdXLeVVAyWbPXa7Q" %} \[Built-in methods and variables examples\](/build/code-in-n8n/cookbook/built-in-methods-and-variables-examples.md) {% endcontent-ref %} {% content-ref url="/pages/6Ae6rPvaN7mHsgPbSFVl" %} \[Code node\](/build/code-in-n8n/cookbook/code-node.md) {% endcontent-ref %} {% content-ref url="/pages/toPYKvKl0RaKSZXKHSP6" %} \[HTTP Request node\](/build/code-in-n8n/cookbook/http-request-node.md) {% endcontent-ref %} --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/build/work-with-data/handle-special-data-types.md). # Handle special data types {% content-ref url="/pages/MWLfhPpIjfFvGCqtPpdL" %} \[Work with files and images\](/build/work-with-data/handle-special-data-types/work-with-files-and-images.md) {% endcontent-ref %} {% content-ref url="/pages/bMBBXqp9mH5jFoXxSZvY" %} \[Work with dates and times\](/build/work-with-data/handle-special-data-types/work-with-dates-and-times.md) {% endcontent-ref %} {% content-ref url="/pages/k0MFuZrfnaejcboQ4c21" %} \[Query JSON data\](/build/work-with-data/handle-special-data-types/query-json-data.md) {% endcontent-ref %} --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/build/flow-logic/wait.md). # Wait Waiting allows you to pause a workflow mid-execution, then resume where the workflow left off, with the same data. This is useful if you need to rate limit your calls to a service, or wait for an external event to complete. You can wait for a specified duration, or until a webhook fires. Making a workflow wait uses the \[Wait\](/integrations/builtin/core-nodes/n8n-nodes-base.wait.md) node. Refer to the node documentation for usage details. n8n provides a workflow template with a basic example of \[Rate limiting and waiting for external events\](https://n8n.io/workflows/1749-rate-limiting-and-waiting-for-external-events/). --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables.md). # Use environment variables This section lists the environment variables that you can use to change n8n's configuration settings when self-hosting n8n. For the complete and most up-to-date list of all environment variables, see the full reference in the n8n docs repository: \[Full environment variables index\](https://github.com/n8n-io/n8n-docs/tree/main/docs/hosting/configuration/environment-variables). {% hint style="info" %} \*\*File-based configuration\*\* You can provide a \[configuration file\](/deploy/host-n8n/configure-n8n/basic-configuration.md) for n8n. You can also append \`\_FILE\` to certain variables to provide their configuration in a separate file. {% endhint %} --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.caltrigger.md). # Cal Trigger \[Cal\](https://cal.com/) is the event-juggling scheduler for everyone. Focus on meeting, not making meetings. {% hint style="info" %} \*\*Credentials\*\* You can find authentication information for this node \[here\](/integrations/builtin/credentials/cal.md). {% endhint %} {% hint style="info" %} \*\*Examples and templates\*\* For usage examples and templates to help you get started, refer to n8n's \[Cal Trigger integrations\](https://n8n.io/integrations/cal-trigger/) page. {% endhint %} ## Events [](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.caltrigger.md#events) \* Booking cancelled \* Booking created \* Booking rescheduled \* Meeting ended --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.keaptrigger.md). # Keap Trigger \[Keap\](https://keap.com/) is an e-mail marketing and sales platform for small businesses, including products to manage and optimize the customer lifecycle, customer relationship management, marketing automation, lead capture, and e-commerce. {% hint style="info" %} \*\*Credentials\*\* You can find authentication information for this node \[here\](/integrations/builtin/credentials/keap.md). {% endhint %} {% hint style="info" %} \*\*Examples and templates\*\* For usage examples and templates to help you get started, refer to n8n's \[Keap Trigger integrations\](https://n8n.io/integrations/keap-trigger/) page. {% endhint %} --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.formstacktrigger.md). # Formstack Trigger \[Formstack\](https://www.formstack.com/) is a workplace productivity platform that helps organizations streamline digital work through no-code online forms, documents, and signatures. {% hint style="info" %} \*\*Credentials\*\* You can find authentication information for this node \[here\](/integrations/builtin/credentials/formstacktrigger.md). {% endhint %} {% hint style="info" %} \*\*Examples and templates\*\* For usage examples and templates to help you get started, refer to n8n's \[Formstack Trigger integrations\](https://n8n.io/integrations/formstack-trigger/) page. {% endhint %} --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.emeliatrigger.md). # Emelia Trigger \[Emelia\](https://emelia.io) is a cold-mailing tool. {% hint style="info" %} \*\*Credentials\*\* You can find authentication information for this node \[here\](/integrations/builtin/credentials/emelia.md). {% endhint %} {% hint style="info" %} \*\*Examples and templates\*\* For usage examples and templates to help you get started, refer to n8n's \[Emelia Trigger integrations\](https://n8n.io/integrations/emelia-trigger/) page. {% endhint %} ## Events [](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.emeliatrigger.md#events) \* Email Bounced \* Email Opened \* Email Replied \* Email Sent \* Link Clicked \* Unsubscribed Contact --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.surveymonkeytrigger.md). # SurveyMonkey Trigger \[SurveyMonkey\](https://www.surveymonkey.com/) is an online cloud-based SaaS survey platform that also provides a suite of paid back-end programs. {% hint style="info" %} \*\*Credentials\*\* You can find authentication information for this node \[here\](/integrations/builtin/credentials/surveymonkey.md). {% endhint %} {% hint style="info" %} \*\*Examples and templates\*\* For usage examples and templates to help you get started, refer to n8n's \[SurveyMonkey Trigger integrations\](https://n8n.io/integrations/surveymonkey-trigger/) page. {% endhint %} --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/app-nodes.md). # App nodes This section provides information about n8n's Actions. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.gumroadtrigger.md). # Gumroad Trigger \[Gumroad\](https://gumroad.com) is an online platform that enables creators to sell products directly to consumers. {% hint style="info" %} \*\*Credentials\*\* You can find authentication information for this node \[here\](/integrations/builtin/credentials/gumroad.md). {% endhint %} {% hint style="info" %} \*\*Examples and templates\*\* For usage examples and templates to help you get started, refer to n8n's \[Gumroad Trigger integrations\](https://n8n.io/integrations/gumroad-trigger/) page. {% endhint %} --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.amqptrigger.md). # AMQP Trigger \[AMQP\](https://www.amqp.org/) is an open standard application layer protocol for message-oriented middleware. The defining features of AMQP are message orientation, queuing, routing, reliability and security. This node supports AMQP 1.0 compatible message brokers. {% hint style="info" %} \*\*Credentials\*\* You can find authentication information for this node \[here\](/integrations/builtin/credentials/amqp.md). {% endhint %} {% hint style="info" %} \*\*Examples and templates\*\* For usage examples and templates to help you get started, refer to n8n's \[AMQP integrations\](https://n8n.io/integrations/amqp-trigger/) page. {% endhint %} --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.eventbritetrigger.md). # Eventbrite Trigger \[Eventbrite\](https://www.eventbrite.com/) is an event management and ticketing website. The service allows users to browse, create, and promote local events. {% hint style="info" %} \*\*Credentials\*\* You can find authentication information for this node \[here\](/integrations/builtin/credentials/eventbrite.md). {% endhint %} {% hint style="info" %} \*\*Examples and templates\*\* For usage examples and templates to help you get started, refer to n8n's \[Eventbrite Trigger integrations\](https://n8n.io/integrations/eventbrite-trigger/) page. {% endhint %} --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/credentials/alibaba.md). # Qwen Cloud credentials You can use these credentials to authenticate the following nodes: \* \[Qwen Cloud\](/integrations/builtin/app-nodes/n8n-nodes-langchain.alibabacloud.md) \* \[Qwen Cloud Chat Model\](/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatalibabacloud.md) ## Prerequisites [](https://docs.n8n.io/integrations/builtin/credentials/alibaba.md#prerequisites) Create a \[Qwen Cloud\](https://qwencloud.com/) account. ## Supported authentication methods [](https://docs.n8n.io/integrations/builtin/credentials/alibaba.md#supported-authentication-methods) \* API key ## Related resources [](https://docs.n8n.io/integrations/builtin/credentials/alibaba.md#related-resources) Refer to \[Qwen Cloud API key documentation\](https://docs.qwencloud.com/developer-guides/administration/api-keys) for more information about the service. View n8n's \[Advanced AI\](/build/integrate-ai.md) documentation. ## Using API key [](https://docs.n8n.io/integrations/builtin/credentials/alibaba.md#using-api-key) To configure this credential, you'll need: \* An \*\*API Key\*\* 1. Sign in to \[Qwen Cloud\](https://qwencloud.com/). 2. Go to \*\*API Keys\*\*. 3. Use the workspace switcher at the bottom of the sidebar to select the workspace where you want to create the key. 4. Select \*\*Create API key\*\*. 5. Enter a description, then select \*\*Generate Key\*\*. 6. Copy the API key. It displays only once. 7. Enter the API key in your n8n credential. 8. For Qwen Cloud accounts, set \*\*Region\*\* to \*\*Singapore\*\*. Select another region only if you're using Alibaba Cloud Model Studio. Refer to \[Qwen Cloud API key documentation\](https://docs.qwencloud.com/developer-guides/administration/api-keys) for more information. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/build/work-with-data/reference-data/link-data-items.md). # Link data items An item is a single piece of data. Nodes receive one or more items, operate on them, and output new items. Each item links back to the items in the previous nodes that generated it. Usually this just works. You need to understand this behavior in detail if you're: \* Using the Code node for complex behaviors with input and output data. \* Building a programmatic-style node. This section provides: \* A conceptual overview of \[Item linking concepts\](/build/work-with-data/reference-data/link-data-items/how-items-link-through-workflows.md). \* Information on \[Item linking for node creators\](/build/work-with-data/reference-data/link-data-items/item-linking-for-node-creators.md). \* Support for end users who need to \[work with the data path\](/build/work-with-data/reference-data/link-data-items/preserving-linking-in-the-code-node.md) to retrieve item data from previous nodes and link items when using the Code node. \* Guidance on troubleshooting \[errors\](/build/work-with-data/reference-data/link-data-items/item-linking-errors.md). --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.graphql.md). # GraphQL \[GraphQL\](https://graphql.org/) is an open-source data query and manipulation language for APIs, and a runtime for fulfilling queries with existing data. Use the GraphQL node to query a GraphQL endpoint. ## Node parameters [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.graphql.md#node-parameters) {% hint style="info" %} \*\*This node can be used as an AI tool\*\* This node can be used to enhance the capabilities of an AI agent. When used in this way, many parameters can be set automatically, or with information directed by AI - find out more in the \[AI tool parameters documentation\](/build/integrate-ai/ai-examples/use-ai-for-parameters.md). {% endhint %} ### Authentication [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.graphql.md#authentication) Select the type of authentication to use. If you select anything other than \*\*None\*\*, the \*\*Credential for\*\* parameter appears for you to select an existing or create a new authentication credential for that authentication type. ### HTTP Request Method [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.graphql.md#http-request-method) Select the underlying HTTP Request method the node should use. Choose from: \* \*\*GET\*\* \* \*\*POST\*\*: If you select this method, you'll also need to select the \*\*Request Format\*\* the node should use for the query payload. Choose from: \* \*\*GraphQL (Raw)\*\* \* \*\*JSON\*\* ### Endpoint [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.graphql.md#endpoint) Enter the GraphQL Endpoint you'd like to hit. ### Ignore SSL Issues [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.graphql.md#ignore-ssl-issues) When you turn on this control, n8n ignores SSL certificate validation failure. ### Query [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.graphql.md#query) Enter the GraphQL query you want to execute. Refer to \[Related Resources\](#related-resources) for information on writing your query. ### Response Format [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.graphql.md#response-format) Select the format you'd like to receive query results in. Choose between: \* \*\*JSON\*\* \* \*\*String\*\*: If you select this format, enter a \*\*Response Data Property Name\*\* to define the property the string is written to. ## Headers [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.graphql.md#headers) Enter any \*\*Headers\*\* you want to pass as part of the query as \*\*Name\*\* / \*\*Value\*\* pairs. ## Templates and examples [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.graphql.md#templates-and-examples) \[Browse GraphQL integration templates\](https://n8n.io/integrations/graphql) or \[search all templates\](https://n8n.io/workflows/) ## Related resources [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.graphql.md#related-resources) To use the GraphQL node, you need to understand GraphQL query language. GraphQL have their own \[Introduction to GraphQL\](https://graphql.org/learn/) tutorial. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/build/integrate-ai/understand-ai-components.md). # Understand AI components {% content-ref url="/pages/PveFTd76hqikcmbxPJsW" %} \[What chains do\](/build/integrate-ai/understand-ai-components/what-chains-do.md) {% endcontent-ref %} {% content-ref url="/pages/7UeVW5VL0G9CNx14Zukf" %} \[What agents do\](/build/integrate-ai/understand-ai-components/what-agents-do.md) {% endcontent-ref %} {% content-ref url="/pages/DXu9pNFpJkQ2hH8QQYeo" %} \[How memory works\](/build/integrate-ai/understand-ai-components/how-memory-works.md) {% endcontent-ref %} {% content-ref url="/pages/Id2ITQoYieJj3G1mUSce" %} \[How tools work\](/build/integrate-ai/understand-ai-components/how-tools-work.md) {% endcontent-ref %} {% content-ref url="/pages/1vhYgHXWojCMhL8hxvLV" %} \[Store and search data with vectors\](/build/integrate-ai/understand-ai-components/store-and-search-data-with-vectors.md) {% endcontent-ref %} {% content-ref url="/pages/X5ekt2uchUMib2LXENQB" %} \[Retrieve relevant context\](/build/integrate-ai/understand-ai-components/retrieve-relevant-context.md) {% endcontent-ref %} {% content-ref url="/pages/KuC1jxKoLjZ72H1CFKAd" %} \[Agents vs chains\](/build/integrate-ai/understand-ai-components/agents-vs-chains.md) {% endcontent-ref %} --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/connect/create-nodes/build-your-node/reference.md). # Reference This section contains reference information, including details about: \* \[Node UI elements\](/connect/create-nodes/build-your-node/reference/node-ui-elements.md) \* \[Organizing your node files\](/connect/create-nodes/plan-your-node/choose-node-file-structure.md) \* Key parameters in your node's \[base file\](/connect/create-nodes/build-your-node/reference/base-files.md) and \[credentials file\](/connect/create-nodes/build-your-node/reference/credentials-files.md). \* \[UX guidelines\](/connect/create-nodes/build-your-node/reference/ux-guidelines.md) and \[verification guidelines\](/connect/create-nodes/build-your-node/reference/verification-guidelines.md) for submitting your node for \[verification by n8n\](/integrations/community-nodes/installation-and-management/install-verified-community-nodes.md). --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/cluster-nodes.md). # Cluster nodes \[Cluster nodes\](/key-concept-glossary.md#cluster-node-n8n) are node groups that work together to provide functionality in an n8n workflow. Instead of using a single node, you use a \[root node\](/key-concept-glossary.md#root-node-n8n) and one or more \[sub-nodes\](/key-concept-glossary.md#sub-node-n8n) that extend the functionality of the node. !\[Screenshot of a workflow with a root node and two sub-nodes\](/spaces/GixZThfitWP21x2gQFpD/files/GbA7RoHTpD75RG5oDkF8) ## Root nodes [](https://docs.n8n.io/integrations/builtin/cluster-nodes.md#root-nodes) Each cluster starts with one \[root node\](#user-content-fn-1)\[^1\]. ## Sub-nodes [](https://docs.n8n.io/integrations/builtin/cluster-nodes.md#sub-nodes) Each root node can have one or more sub-nodes\[^2\] attached to it. \[^1\]: Each n8n cluster node contains a single root nodes that defines the main functionality of the cluster. One or more sub nodes attach to the root node to extend its functionality. \[^2\]: n8n cluster nodes consist of one or more sub nodes connected to a root node. Sub nodes extend the functionality of the root node, providing access to specific services or resources or offering specific types of dedicated processing, like calculator functionality, for example. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/build/work-with-data/transform-data/approaches-for-transforming-data.md). # Approaches for transforming data Data transformation in n8n involves modifying, restructuring, or enriching data as it moves through your workflow. This includes changing data formats, filtering or aggregating values, adding computed fields, and converting data structures to work with different nodes. n8n uses a predefined \[data structure\](/build/work-with-data/understand-n8ns-data-structure.md) that allows all nodes to process incoming data correctly. When your data doesn't match this structure, or when you need to modify it for your use case, you'll need to transform it. n8n provides several approaches for data transformation: \* \[Expressions\](/build/work-with-data/expressions-versus-data-nodes.md#expressions) allow you to transform data directly in node parameters using n8n's expression syntax (\`{{ }}\`) \* The \[Code node\](/build/work-with-data/expressions-versus-data-nodes.md#code-node) lets you write custom JavaScript or Python for complex transformations. \* The \[AI Transform node\](/build/work-with-data/expressions-versus-data-nodes.md#ai-transform-node) generates transformation code from natural language prompts. \* Advanced transformation techniques: For sophisticated data manipulation, n8n supports: \* \*\*Ternary operators\*\*: Conditional logic directly in expressions (\`condition ? valueIfTrue : valueIfFalse\`) \* \*\*Chained functions\*\*: Combine multiple transformation functions \* \*\*Complex expressions\*\*: Use JavaScript methods and operators within expression syntax \* Specialized transformation nodes for common structural transformations: \* \[Aggregate\](/integrations/builtin/core-nodes/n8n-nodes-base.aggregate.md): group separate items together \* \[Limit\](/integrations/builtin/core-nodes/n8n-nodes-base.limit.md): restrict the number of items \* \[Remove Duplicates\](/integrations/builtin/core-nodes/n8n-nodes-base.removeduplicates.md): eliminate identical items \* \[Sort\](/integrations/builtin/core-nodes/n8n-nodes-base.sort.md): order items or randomize \* \[Split Out\](/integrations/builtin/core-nodes/n8n-nodes-base.splitout.md): separate lists into individual items \* \[Summarize\](/integrations/builtin/core-nodes/n8n-nodes-base.summarize.md): aggregate data like Excel pivot tables For a comparison of these approaches, see \[Expressions versus data nodes\](/build/work-with-data/expressions-versus-data-nodes.md). --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/build/code-in-n8n/use-built-in-shortcuts/jmespath.md). # JMESPath This is an n8n-provided method for working with the \[JMESPath\](/build/work-with-data/handle-special-data-types/query-json-data.md) library. {% hint style="info" %} \*\*Python support\*\* You can use Python in the Code node. It isn't available in expressions. {% endhint %} {% tabs %} {% tab title="JavaScript" %} | Method | Description | Available in Code node? | | ------------- | ------------------------------------------------- | :---------------------: | | \`$jmespath()\` | Perform a search on a JSON object using JMESPath. | āœ… | | {% endtab %} | | | {% tab title="Python" %} | Method | Description | | ------------- | ------------------------------------------------- | | \`\_jmespath()\` | Perform a search on a JSON object using JMESPath. | | {% endtab %} | | | {% endtabs %} | | --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/community-nodes/installation-and-management/manual-installation.md). # Manual installation You can manually install community nodes from the npm registry on self-hosted n8n. You need to manually install community nodes in the following circumstances: \* Your n8n instance runs in queue mode. \* You want to install \[private packages\](https://docs.npmjs.com/creating-and-publishing-private-packages). ## Install a community node [](https://docs.n8n.io/integrations/community-nodes/installation-and-management/manual-installation.md#install-a-community-node) Access your Docker shell: \`\`\`sh docker exec -it n8n sh \`\`\` Create \`~/.n8n/nodes\` if it doesn't already exist, and navigate into it: \`\`\`sh mkdir ~/.n8n/nodes cd ~/.n8n/nodes \`\`\` Install the node: \`\`\`sh npm i n8n-nodes-nodeName \`\`\` Then restart n8n. ## Uninstall a community node [](https://docs.n8n.io/integrations/community-nodes/installation-and-management/manual-installation.md#uninstall-a-community-node) Access your Docker shell: \`\`\`sh docker exec -it n8n sh \`\`\` Run npm uninstall: \`\`\`sh npm uninstall n8n-nodes-nodeName \`\`\` ## Upgrade a community node [](https://docs.n8n.io/integrations/community-nodes/installation-and-management/manual-installation.md#upgrade-a-community-node) {% hint style="warning" %} \*\*Breaking changes in versions\*\* Node developers may introduce breaking changes in new versions of their nodes. A breaking change is an update that breaks previous functionality. Depending on the node versioning approach that a node developer chooses, upgrading to a version with a breaking change could cause all workflows using the node to break. Be careful when upgrading your nodes. If you find that an upgrade causes issues, you can \[downgrade\](#upgrade-or-downgrade-to-a-specific-version). {% endhint %} ### Upgrade to the latest version [](https://docs.n8n.io/integrations/community-nodes/installation-and-management/manual-installation.md#upgrade-to-the-latest-version) Access your Docker shell: \`\`\`sh docker exec -it n8n sh \`\`\` Run npm update: \`\`\`sh npm update n8n-nodes-nodeName \`\`\` ### Upgrade or downgrade to a specific version [](https://docs.n8n.io/integrations/community-nodes/installation-and-management/manual-installation.md#upgrade-or-downgrade-to-a-specific-version) Access your Docker shell: \`\`\`sh docker exec -it n8n sh \`\`\` Run npm uninstall to remove the current version: \`\`\`sh npm uninstall n8n-nodes-nodeName \`\`\` Run npm install with the version specified: \`\`\`sh # Replace 2.1.0 with your version number [](https://docs.n8n.io/integrations/community-nodes/installation-and-management/manual-installation.md#replace-210-with-your-version-number) npm install n8n-nodes-nodeName@2.1.0 \`\`\` --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/run-security-audits.md). # Run security audits You can run a security audit on your n8n instance, to detect common security issues. ## Run an audit [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/run-security-audits.md#run-an-audit) You can run an audit using the CLI, the public API, or the n8n node. ### CLI [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/run-security-audits.md#cli) Run \`n8n audit\`. ### API [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/run-security-audits.md#api) Make a \`POST\` call to the \`/audit\` endpoint. You must authenticate as the instance owner. ### n8n node [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/run-security-audits.md#n8n-node) Add the \[n8n node\](/integrations/builtin/core-nodes/n8n-nodes-base.n8n.md) to your workflow. Select \*\*Resource\*\* > \*\*Audit\*\* and \*\*Operation\*\* > \*\*Generate\*\*. ## Report contents [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/run-security-audits.md#report-contents) The audit generates five risk reports: ### Credentials [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/run-security-audits.md#credentials) This report shows: \* Credentials not used in a workflow. \* Credentials not used in an active workflow. \* Credentials not use in a recently active workflow. ### Database [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/run-security-audits.md#database) This report shows: \* Expressions used in \*\*Execute Query\*\* fields in SQL nodes. \* Expressions used in \*\*Query Parameters\*\* fields in SQL nodes. \* Unused \*\*Query Parameters\*\* fields in SQL nodes. ### File system [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/run-security-audits.md#file-system) This report lists nodes that interact with the file system. ### Nodes [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/run-security-audits.md#nodes) This report shows: \* Official risky nodes. These are n8n built in nodes. You can use them to fetch and run any code on the host system, which exposes the instance to exploits. You can view the list in \[n8n code | Audit constants\](https://github.com/n8n-io/n8n/blob/master/packages/cli/src/security-audit/constants.ts#L51), under \`OFFICIAL\_RISKY\_NODE\_TYPES\`. \* Community nodes. \* Custom nodes. ### Instance [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/run-security-audits.md#instance) This report shows: \* Unprotected webhooks in the instance. \* Missing security settings \* If your instance is outdated. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.debughelper.md). # Debug Helper Use the Debug Helper node to trigger different error types or generate random datasets to help test n8n workflows. ## Operations [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.debughelper.md#operations) Define the operation by selecting the \*\*Category\*\*: \* \*\*Do Nothing\*\*: Don't do anything. \* \[\*\*Throw Error\*\*\](#throw-error): Throw an error with the specified type and message. \* \[\*\*Out Of Memory\*\*\](#out-of-memory): Generate a specific memory size to simulate being out of memory. \* \[\*\*Generate Random Data\*\*\](#generate-random-data): Generate some random data in a selected format. ## Node parameters [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.debughelper.md#node-parameters) The node parameters depend on the \*\*Category\*\* selected. The \*\*Do Nothing\*\* Category has no other parameters. ### Throw Error [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.debughelper.md#throw-error) \* \*\*Error Type\*\*: Select the type of error to throw. Choose from: \* \*\*NodeApiError\*\* \* \*\*NodeOperationError\*\* \* \*\*Error\*\* \* \*\*Error Message\*\*: Enter the error message to throw. ### Out Of Memory [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.debughelper.md#out-of-memory) The Out of Memory Category adds one parameter, the \*\*Memory Size to Generate\*\*. Enter the approximate amount of memory to generate. ### Generate Random Data [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.debughelper.md#generate-random-data) \* \*\*Data Type\*\*: Choose the type of random data you'd like to generate. Options include: \* \*\*Address\*\* \* \*\*Coordinates\*\* \* \*\*Credit Card\*\* \* \*\*Email\*\* \* \*\*IPv4\*\* \* \*\*IPv6\*\* \* \*\*MAC\*\* \* \*\*Nanoids\*\*: If you select this data type, you'll also need to enter: \* \*\*Nanoid Alphabet\*\*: The alphabet the generator will use to generate the nanoids. \* \*\*Nanoid Length\*\*: The length of each nanoid. \* \*\*URL\*\* \* \*\*User Data\*\* \* \*\*UUID\*\* \* \*\*Version\*\* \* \*\*Seed\*\*: If you'd like to generate the data using a specific seed, enter it here. This ensures the data gets generated consistently. If you'd rather use random data generation, leave this field empty. \* \*\*Number of Items to Generate\*\*: Enter the number of random items you'd like to generate. \* \*\*Output as Single Array\*\*: Whether to generate the data as a single array (turned on) or multiple items (turned off). ## Templates and examples [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.debughelper.md#templates-and-examples) \[Browse Debug Helper integration templates\](https://n8n.io/integrations/debughelper) or \[search all templates\](https://n8n.io/workflows/) --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-langchain.guardrails.md). # Guardrails Use the Guardrails node to enforce safety, security, and content policies on text. You can use it to validate user input \*before\* sending it to an AI model, or to check the \*output\* from an AI model before using it in your workflow. {% hint style="info" %} \*\*Chat Model Connection Required for LLM-based Guardrails\*\* This node requires a Chat Model node to be connected to its Model input when using the \*\*Check Text for Violations\*\* operation with LLM-based guardrails. Many guardrail checks (like Jailbreak, NSFW, and Topical Alignment) are LLM-based and use this connection to evaluate the input text. {% endhint %} ## Node parameters [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-langchain.guardrails.md#node-parameters) Use these parameters to configure the Guardrails node. ### Operation [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-langchain.guardrails.md#operation) The operation mode for this node to define its behavior. \* \*\*Check Text for Violations\*\*: Provides a full set of guardrails. Any violation will send items to \*\*Fail\*\* branch. \* \*\*Sanitize Text\*\*: Provides a subset of guardrails that can detect URLs, regular expressions, secret keys, or personally identifiable information (PII), such as phone numbers and credit card numbers. The node replaces detected violations with placeholders. ### Text To Check [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-langchain.guardrails.md#text-to-check) The text the guardrails evaluate. Typically, you map this text using an expression from a previous node, such as text from a user query or a response from an AI model. ### Guardrails [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-langchain.guardrails.md#guardrails) Select one or more guardrails to apply to the \*\*Text To Check\*\*. When you add a guardrail from the list, its specific configuration options appear below. \* \*\*Keywords:\*\* Checks if specified keywords appear in the input text. \* \*\*Keywords\*\*: A comma-separated list of words to block. \* \*\*Jailbreak:\*\* Detects attempts to bypass AI safety measures or exploit the model. \* \*\*Customize Prompt\*\*: (Boolean) If you turn this on, a text input appears with the default prompt for the jailbreak detection model. You can change this prompt to fine-tune the guardrail. \* \*\*Threshold\*\*: A value between 0.0 and 1.0. This represents the confidence level required from the AI model to flag the input as a jailbreak attempt. A higher threshold is stricter. \* \*\*NSFW:\*\* Detects attempts to generate Not Safe For Work (NSFW) content. \* \*\*Customize Prompt\*\*: (Boolean) If you turn this on, a text input appears with the default prompt for the NSFW detection model. You can change this prompt to fine-tune the guardrail. \* \*\*Threshold\*\*: A value between 0.0 and 1.0 representing the confidence level required to flag the content as NSFW. \* \*\*PII:\*\* Detects personally identifiable information (PII) in the text. \* \*\*Type\*\*: Choose which PII entities to scan for: \* \*\*All\*\*: Scans for all available entity types. \* \*\*Selected\*\*: Allows you to choose specific entities from a list. \* \*\*Entities\*\*: (Appears if \*\*Type\*\* is \*\*Selected\*\*) A multi-select list of PII types to detect (for example, \`CREDIT\_CARD\`, \`EMAIL\_ADDRESS\`, \`PHONE\_NUMBER\`, and \`US\_SSN\`). \* \*\*Secret Keys:\*\* Detects the presence of secret keys or API credentials in the text. \* \*\*Permissiveness\*\*: How strict or permissive the detection should be when flagging secret keys: \* \*\*Strict\*\* \* \*\*Permissive\*\* \* \*\*Balanced\*\* \* \*\*Topical Alignment:\*\* Ensures the conversation stays within a predefined scope or topic (also known as "business scope"). \* \*\*Prompt\*\*: A preset prompt that defines the \*allowed\* topic. The guardrail checks if the \*\*Text To Check\*\* aligns with this prompt. \* \*\*Threshold\*\*: A value between 0.0 and 1.0 representing the confidence level required to flag the input as \*off-topic\*. \* \*\*URLs:\*\* Manages URLs the node finds in the input text. It detects all URLs as violations, unless you specify them in \*\*Block All URLs Except\*\*. \* \*\*Block All URLs Except\*\*: (Optional) A comma-separated list of URLs that you permit. \* \*\*Allowed Schemes\*\*: Select the URL schemes to permit (for example, \`https\`, \`http\`, \`ftp\`, and \`mailto\`). \* \*\*Block userinfo\*\*: (Boolean) If you turn this on, the node blocks URLs containing user credentials (for example, \`user:pass@example.com\`) to prevent credential injection. \* \*\*Allow subdomain\*\*: (Boolean) If you turn this on, the node automatically allows subdomains of any URL in the \*\*Block All URLs Except\*\* list (for example, \`sub.example.com\` would be allowed if \`example.com\` is in the list). \* \*\*Custom:\*\* Define your own custom, LLM-based guardrail. \* \*\*Name\*\*: A descriptive name for your custom guardrail (for example, "Check for rude language"). \* \*\*Prompt\*\*: A prompt that instructs the AI model what to check for. \* \*\*Threshold\*\*: A value between 0.0 and 1.0 representing the confidence level required to flag the input as a violation. \* \*\*Custom Regex\*\*: Define your own custom regular expression patterns. \* \*\*Name\*\*: A name for your custom pattern. The node uses this name as a placeholder in the \*\*Sanitize Text\*\* mode. \* \*\*Regex\*\*: Your regular expression pattern. ### Customize System Message [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-langchain.guardrails.md#customize-system-message) If you turn this on, a text input appears with a message that the guardrail uses to enforce thresholds and JSON output according to schema. Change it to modify the global guardrails behavior. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.aggregate.md). # Aggregate Use the Aggregate node to take separate items, or portions of them, and group them together into individual items. ## Node parameters [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.aggregate.md#node-parameters) To begin using the node, select the \*\*Aggregate\*\* you'd like to use: \* \[\*\*Individual Fields\*\*\](#individual-fields): Aggregate individual fields separately. \* \[\*\*All Item Data\*\*\](#all-item-data): Aggregate all item data into a single list. ### Individual Fields [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.aggregate.md#individual-fields) \* \*\*Input Field Name\*\*: Enter the name of the field in the input data to aggregate together. \* \*\*Rename Field\*\*: This toggle controls whether to give the field a different name in the aggregated output data. Turn this on to add a different field name. If you're aggregating multiple fields, you must provide new output field names. You can't leave multiple fields undefined. \* \*\*Output Field Name\*\*: This field is displayed when you turn on \*\*Rename Field\*\*. Enter the field name for the aggregated output data. Refer to \[Node options\](#node-options) for more configuration options. ### All Item Data [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.aggregate.md#all-item-data) \* \*\*Put Output in Field\*\*: Enter the name of the field to output the data in. \* \*\*Include\*\*: Select which fields to include in the output. Choose from: \* \*\*All fields\*\*: The output includes data from all fields with no further parameters. \* \*\*Specified Fields\*\*: If you select this option, enter a comma-separated list of fields the output should include data from in the \*\*Fields To Include\*\* parameter. The output will include only the fields in this list. \* \*\*All Fields Except\*\*: If you select this option, enter a comma-separated list of fields the output should exclude data from in the \*\*Fields To Exclude\*\* parameter. The output will include all fields not in this list. Refer to \[Node options\](#node-options) for more configuration options. ## Node options [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.aggregate.md#node-options) You can further configure this node using these \*\*Options\*\*: \* \*\*Disable Dot Notation\*\*: The node displays this toggle when you select the \*\*Individual Fields\*\* Aggregate. It controls whether to disallow referencing child fields using \`parent.child\` in the field name (turned on), or allow it (turned off, default). \* \*\*Merge Lists\*\*: The node displays this toggle when you select the \*\*Individual Fields\*\* Aggregate. Turn it on if the field to aggregate is a list and you want to output a single flat list rather than a list of lists. \* \*\*Include Binaries\*\*: The node displays this toggle for both Aggregate types. Turn it on if you want to include binary data from the input in the new output. \* \*\*Keep Missing And Null Values\*\*: The node displays this toggle when you select the \*\*Individual Fields\*\* Aggregate. Turn it on to add a null (empty) entry in the output list when there is a null or missing value in the input. If turned off, the output ignores null or empty values. ## Templates and examples [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.aggregate.md#templates-and-examples) \[Browse Aggregate integration templates\](https://n8n.io/integrations/aggregate) or \[search all templates\](https://n8n.io/workflows/) ## Related resources [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.aggregate.md#related-resources) Learn more about \[data structure and data flow\](/build/work-with-data/overview.md) in n8n workflows. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/build/flow-logic/loop.md). # Loop Looping is useful when you want to process multiple items or perform an action repeatedly, such as sending a message to every contact in your address book. n8n handles this repetitive processing automatically, meaning you don't need to specifically build loops into your workflows. There are \[some nodes\](#node-exceptions) where this isn't true. ## Using loops in n8n [](https://docs.n8n.io/build/flow-logic/loop.md#using-loops-in-n8n) n8n nodes take any number of items as input, process these items, and output the results. You can think of each item as a single data point, or a single row in the output table of a node. !\[The Customer Datastore node output\](/files/F1i1d8EgDWRNLX23urHC) Nodes usually run once for each item. For example, if you wanted to send the name and notes of the customers in the Customer Datastore node as a message on Slack, you would: 1. Connect the Slack node to the Customer Datastore node. 2. Configure the parameters. 3. Execute the node. You would receive five messages: one for each item. This is how you can process multiple items without having to explicitly connect nodes in a loop. ### Executing nodes once [](https://docs.n8n.io/build/flow-logic/loop.md#executing-nodes-once) For situations where you don't want a node to process all received items, for example sending a Slack message only to the first customer, you can do so by toggling the \*\*Execute Once\*\* parameter in the \*\*Settings\*\* tab of that node This setting is helpful when the incoming data contains multiple items and you want to only process the first one. ## Creating loops [](https://docs.n8n.io/build/flow-logic/loop.md#creating-loops) n8n typically handles the iteration for all incoming items. However, there are certain scenarios where you will have to create a loop to iterate through all items. Refer to \[Node exceptions\](#node-exceptions) for a list of nodes that don't automatically iterate over all incoming items. ### Loop until a condition is met [](https://docs.n8n.io/build/flow-logic/loop.md#loop-until-a-condition-is-met) To create a loop in an n8n workflow, connect the output of one node to the input of a previous node. Add an \[IF\](/integrations/builtin/core-nodes/n8n-nodes-base.if.md) node to check when to stop the loop. Here is an \[example workflow\](https://n8n.io/workflows/1130) that implements a loop with an \`IF\` node: !\[Editor UI view of sample workflow\](/files/yiIOS2qrcUBx4Z7eTDu1) ### Loop until all items are processed [](https://docs.n8n.io/build/flow-logic/loop.md#loop-until-all-items-are-processed) Use the \[Loop Over Items\](/integrations/builtin/core-nodes/n8n-nodes-base.splitinbatches.md) node when you want to loop until all items are processed. To process each item individually, set \*\*Batch Size\*\* to \`1\`. You can batch the data in groups and process these batches. This approach is useful for avoiding API rate limits when processing large incoming data or when you want to process a specific group of returned items. The Loop Over Items node stops executing after all the incoming items get divided into batches and passed on to the next node in the workflow so it's not necessary to add an IF node to stop the loop. ## Node exceptions [](https://docs.n8n.io/build/flow-logic/loop.md#node-exceptions) Nodes and operations where you need to design a loop into your workflow: \* \[CrateDB\](/integrations/builtin/app-nodes/n8n-nodes-base.cratedb.md) executes once for \`insert\` and \`update\`. \* \[Code\](/integrations/builtin/core-nodes/n8n-nodes-base.code.md) node in \*\*Run Once for All Items\*\* mode: processes all the items based on the entered code snippet. \* \[Execute Workflow\](/integrations/builtin/core-nodes/n8n-nodes-base.executeworkflow.md) node in \*\*Run Once for All Items\*\* mode. \* \[HTTP Request\](/integrations/builtin/core-nodes/n8n-nodes-base.httprequest.md): you must handle pagination yourself. If your API call returns paginated results you must create a loop to fetch one page at a time. \* \[Microsoft SQL\](/integrations/builtin/app-nodes/n8n-nodes-base.microsoftsql.md) executes once for \`insert\`, \`update\`, and \`delete\`. \* \[MongoDB\](/integrations/builtin/app-nodes/n8n-nodes-base.mongodb.md) executes once for \`insert\` and \`update\`. \* \[QuestDB\](/integrations/builtin/app-nodes/n8n-nodes-base.questdb.md) executes once for \`insert\`. \* \[Redis\](/integrations/builtin/app-nodes/n8n-nodes-base.redis.md): \* Info: this operation executes only once, regardless of the number of items in the incoming data. \* \[RSS Read\](/integrations/builtin/core-nodes/n8n-nodes-base.rssfeedread.md) executes once for the requested URL. \* \[TimescaleDB\](/integrations/builtin/app-nodes/n8n-nodes-base.timescaledb.md) executes once for \`insert\` and \`update\`. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executecommand.md). # Execute Command The Execute Command node runs shell commands on the host machine that runs n8n. {% hint style="warning" %} \*\*Security considerations\*\* The Execute Command node can introduce significant security risks in environments that operate with untrusted users. Because of this, the node is \[disabled\](/deploy/host-n8n/configure-n8n/security/block-specific-nodes.md#exclude-nodes) by default starting from version 2.0. {% endhint %} {% hint style="info" %} \*\*Which shell runs the command?\*\* This node executes the command in the default shell of the host machine. For example, \`cmd\` on Windows and \`zsh\` on macOS. If you run n8n with Docker, your command will run in the n8n container and not the Docker host. If you're using \[queue mode\](/deploy/host-n8n/configure-n8n/scaling/enable-queue-mode.md), the command runs on the worker that's executing the task in production mode. When running manual executions, it runs on the main instance, unless you set \`OFFLOAD\_MANUAL\_EXECUTIONS\_TO\_WORKERS\` to \`true\`. {% endhint %} {% hint style="info" %} \*\*Not available on Cloud\*\* This node isn't available on n8n Cloud. {% endhint %} ## Node parameters [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executecommand.md#node-parameters) Configure the node using the following parameters. ### Execute Once [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executecommand.md#execute-once) Choose whether you want the node to execute only once (turned on) or once for every item it receives as input (turned off). ### Command [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executecommand.md#command) Enter the command to execute on the host machine. Refer to sections below for examples of running \[multiple commands\](#run-multiple-commands) and \[cURL commands\](#run-curl-command). #### Run multiple commands [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executecommand.md#run-multiple-commands) Use one of two methods to run multiple commands in one Execute Command node: \* Enter each command on one line separated by \`&&\`. For example, you can combine the change directory (cd) command with the list (ls) command using \`&&\`. \`\`\`bash cd bin && ls \`\`\` \* Enter each command on a separate line. For example, you can write the list (ls) command on a new line after the change directory (cd) command. \`\`\`bash cd bin ls \`\`\` #### Run cURL command [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executecommand.md#run-curl-command) You can also use the \[HTTP Request\](/integrations/builtin/core-nodes/n8n-nodes-base.httprequest.md) node to make a cURL request. If you want to run the curl command in the Execute Command node, you will have to build a Docker image based on the existing n8n image. The default n8n Docker image uses Alpine Linux. You will have to install the curl package. 1. Create a file named \`Dockerfile\`. 2. Add the below code snippet to the Dockerfile. \`\`\`shell FROM docker.n8n.io/n8nio/n8n USER root RUN apk --update add curl USER node \`\`\` 3. In the same folder, execute the command below to build the Docker image. \`\`\`shell docker build -t n8n-curl \`\`\` 4. Replace the Docker image you used before. For example, replace \`docker.n8n.io/n8nio/n8n\` with \`n8n-curl\`. 5. Run the newly created Docker image. You'll now be able to execute ssh using the Execute Command Node. ## Templates and examples [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executecommand.md#templates-and-examples) \[Browse n8n-nodes-base.executecommand integration templates\](https://n8n.io/integrations/execute-command) or \[search all templates\](https://n8n.io/workflows/) ## Common issues [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executecommand.md#common-issues) For common questions or issues and suggested solutions, refer to \[Common Issues\](/integrations/builtin/core-nodes/n8n-nodes-base.executecommand/common-issues.md). --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.if.md). # If Use the If node to split a workflow conditionally based on comparison operations. ## Add conditions [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.if.md#add-conditions) Create comparison \*\*Conditions\*\* for your If node. \* Use the data type dropdown to select the data type and comparison operation type for your condition. For example, to filter for dates after a particular date, select \*\*Date & Time > is after\*\*. \* The fields and values to enter into the condition change based on the data type and comparison you select. Refer to \[Available data type comparisons\](#available-data-type-comparisons) for a full list of all comparisons by data type. Select \*\*Add condition\*\* to create more conditions. ### Combining conditions [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.if.md#combining-conditions) You can choose to keep data: \* When it meets all conditions: Create two or more conditions and select \*\*AND\*\* in the dropdown between them. \* When it meets any of the conditions: Create two or more conditions and select \*\*OR\*\* in the dropdown between them. ## Templates and examples [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.if.md#templates-and-examples) \[Browse If integration templates\](https://n8n.io/integrations/if) or \[search all templates\](https://n8n.io/workflows/) ## Branch execution with If and Merge nodes [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.if.md#branch-execution-with-if-and-merge-nodes) {% hint style="info" %} \*\*0.236.0 and below\*\* n8n removed this execution behavior in version 1.0. This section applies to workflows using the \*\*v0 (legacy)\*\* workflow execution order. By default, this is all workflows built before version 1.0. You can change the execution order in your \[workflow settings\](/build/manage-workflows/configure-workflow-settings.md). {% endhint %} If you add a Merge node to a workflow containing an If node, it can result in both output data streams of the If node executing. One data stream triggers the Merge node, which then goes and executes the other data stream. For example, in the screenshot below there's a workflow containing an Edit Fields node, If node, and Merge node. The standard If node behavior is to execute one data stream (in the screenshot, this is the \*\*true\*\* output). However, due to the Merge node, both data streams execute, despite the If node not sending any data down the \*\*false\*\* data stream. !\[Screenshot of a workflow. The workflow has an Edit Fields node, followed by an If node. It ends with a Merge node.\](/spaces/GixZThfitWP21x2gQFpD/files/aooCX8gUoqPEvfpHVvnx) ## Related resources [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.if.md#related-resources) Refer to \[Splitting with conditionals\](/build/flow-logic/split-with-conditionals.md) for more information on using conditionals to create complex logic in n8n. If you need more than two conditional outputs, use the \[Switch node\](/integrations/builtin/core-nodes/n8n-nodes-base.switch.md). ## String [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.if.md#string) String data type supports these comparisons: \* exists \* does not exist \* is empty \* is not empty \* is equal to \* is not equal to \* contains \* does not contain \* starts with \* does not start with \* ends with \* does not end with \* matches regex \* does not match regex ## Number [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.if.md#number) Number data type supports these comparisons: \* exists \* does not exist \* is empty \* is not empty \* is equal to \* is not equal to \* is greater than \* is less than \* is greater than or equal to \* is less than or equal to ## Date & Time [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.if.md#date-and-time) Date & Time data type supports these comparisons: \* exists \* does not exist \* is empty \* is not empty \* is equal to \* is not equal to \* is after \* is before \* is after or equal to \* is before or equal to ## Boolean [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.if.md#boolean) Boolean data type supports these comparisons: \* exists \* does not exist \* is empty \* is not empty \* is true \* is false \* is equal to \* is not equal to ## Array [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.if.md#array) Array data type supports these comparisons: \* exists \* does not exist \* is empty \* is not empty \* contains \* does not contain \* length equal to \* length not equal to \* length greater than \* length less than \* length greater than or equal to \* length less than or equal to ## Object [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.if.md#object) Object data type supports these comparisons: \* exists \* does not exist \* is empty \* is not empty --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.extractfromfile.md). # Extract From File A common pattern in n8n workflows is to receive a file, either from an \[HTTP Request node\](https://github.com/n8n-io/n8n-docs/blob/main/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/README.md) (for files you are fetching from a website), a \[Webhook Node\](https://github.com/n8n-io/n8n-docs/blob/main/integrations/builtin/core-nodes/n8n-nodes-base.webhook/README.md) (for files which are sent to your workflow from elsewhere), or from a local source. Data obtained in this way is often in a binary format, for example a spreadsheet or PDF. The Extract From File node extracts data from a binary format file and converts it to JSON, which can then be easily manipulated by the rest of your workflow. For converting JSON back into a binary file type, please see the \[Convert to File\](/integrations/builtin/core-nodes/n8n-nodes-base.converttofile.md) node. ## Operations [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.extractfromfile.md#operations) Use the \*\*Operations\*\* drop-down to select the format of the source file to extract data from. \* \*\*Extract From CSV\*\*: The "Comma Separated Values" file type is commonly used for tabulated data. \* \*\*Extract From HTML\*\*: Extract fields from standard web page HTML format files. \* \*\*Extract From JSON\*\*: Extract JSON data from a binary file. \* \*\*Extract From ICS\*\*: Extract fields from iCalendar format files. \* \*\*Extract From ODS\*\*: Extract fields from ODS spreadsheet files. \* \*\*Extract From PDF\*\*: Extract fields from Portable Document Format files. \* \*\*Extract From RTF\*\*: Extract fields from Rich Text Format files. \* \*\*Extract From Text File\*\*: Extract fields from a standard text file format. \* \*\*Extract From XLS\*\*: Extract fields from a Microsoft Excel file (older format). \* \*\*Extract From XLSX\*\*: Extract fields from a Microsoft Excel file. \* \*\*Move File to Base64 String\*\*: Converts binary data to a text-friendly \[base64\](https://datatracker.ietf.org/doc/html/rfc4648#section-4) format. ## Example workflow [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.extractfromfile.md#example-workflow) In this example, a Webhook node is used to trigger the workflow. When a CSV file is sent to the webhook address, the file data is output and received by the Extract From File node. {% @n8n-blocks/n8n-workflow-demo content="%7B%0A%20%20%22name%22%3A%20%22Extract%20from%20file%20example%22%2C%0A%20%20%22nodes%22%3A%20%5B%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%22parameters%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%22httpMethod%22%3A%20%22POST%22%2C%0A%20%20%20%20%20%20%20%20%22path%22%3A%20%2206696ea7-9dc7-464a-873b-3feb095b0874%22%2C%0A%20%20%20%20%20%20%20%20%22options%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%22rawBody%22%3A%20true%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%22type%22%3A%20%22n8n-nodes-base.webhook%22%2C%0A%20%20%20%20%20%20%22typeVersion%22%3A%202%2C%0A%20%20%20%20%20%20%22position%22%3A%20%5B%0A%20%20%20%20%20%20%20%20-380%2C%0A%20%20%20%20%20%20%20%20-80%0A%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%22id%22%3A%20%22dfbd51af-6050-47c5-a26c-74cba77f65f7%22%2C%0A%20%20%20%20%20%20%22name%22%3A%20%22Webhook%22%2C%0A%20%20%20%20%20%20%22webhookId%22%3A%20%2206696ea7-9dc7-464a-873b-3feb095b0874%22%0A%20%20%20%20%7D%2C%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%22parameters%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%22options%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%22headerRow%22%3A%20false%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%22type%22%3A%20%22n8n-nodes-base.extractFromFile%22%2C%0A%20%20%20%20%20%20%22typeVersion%22%3A%201%2C%0A%20%20%20%20%20%20%22position%22%3A%20%5B%0A%20%20%20%20%20%20%20%20-160%2C%0A%20%20%20%20%20%20%20%20-80%0A%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%22id%22%3A%20%221b1e4643-8269-402b-83af-dfd90fd6a0b5%22%2C%0A%20%20%20%20%20%20%22name%22%3A%20%22Extract%20from%20File%22%0A%20%20%20%20%7D%0A%20%20%5D%2C%0A%20%20%22pinData%22%3A%20%7B%7D%2C%0A%20%20%22connections%22%3A%20%7B%0A%20%20%20%20%22Webhook%22%3A%20%7B%0A%20%20%20%20%20%20%22main%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%5B%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%22node%22%3A%20%22Extract%20from%20File%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22main%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22index%22%3A%200%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%20%20%22active%22%3A%20true%2C%0A%20%20%22settings%22%3A%20%7B%0A%20%20%20%20%22executionOrder%22%3A%20%22v1%22%0A%20%20%7D%2C%0A%20%20%22versionId%22%3A%20%22dd2bf7f1-692a-41a8-9c2e-7931de57fa13%22%2C%0A%20%20%22meta%22%3A%20%7B%0A%20%20%20%20%22instanceId%22%3A%20%221060f46e51fc7902c377ab29d7cbfb87696ddf6b3c5c27cbbb65c3cb36e21baf%22%0A%20%20%7D%2C%0A%20%20%22id%22%3A%20%229i3iDZf5MpjlJ2sh%22%2C%0A%20%20%22tags%22%3A%20%5B%5D%0A%7D" url="" %} Set to operate as 'Extract from CSV', the node then outputs the data as a series of JSON 'row' objects: \`\`\` { "row": { "0": "apple", "1": "1", "2": "2", "3": "3" } ... \`\`\` {% hint style="info" %} \*\*Receiving files with a webhook\*\* Select the Webhook Node's \*\*Add Options\*\* button and select \*\*Raw body\*\*, then enable that setting to get the node to output the binary file that the subsequent node is expecting. {% endhint %} ## Node parameters [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.extractfromfile.md#node-parameters) \### Input Binary Field [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.extractfromfile.md#input-binary-field) Enter the name of the field from the node input data that contains the binary file. The default is 'data'. ### Destination Output Field [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.extractfromfile.md#destination-output-field) Enter the name of the field in the node output that will contain the extracted data. This parameter is only available for these operations: \* Extract From JSON \* Extract From ICS \* Extract From Text File \* Move File to Base64 String ## Templates and examples [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.extractfromfile.md#templates-and-examples) \[Browse Extract From File integration templates\](https://n8n.io/integrations/extract-from-file) or \[search all templates\](https://n8n.io/workflows/) --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/credentials/azureopenai.md). # Azure OpenAI credentials You can use these credentials to authenticate the following nodes: \* \[Chat Azure OpenAI\](/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatazureopenai.md) \* \[Embeddings Azure OpenAI\](/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.embeddingsazureopenai.md) ## Prerequisites [](https://docs.n8n.io/integrations/builtin/credentials/azureopenai.md#prerequisites) \* Create an \[Azure\](https://azure.microsoft.com) subscription. \* Access to Azure OpenAI within that subscription. You may need to \[request access\](https://aka.ms/oai/access) if your organization doesn't yet have it. ## Supported authentication methods [](https://docs.n8n.io/integrations/builtin/credentials/azureopenai.md#supported-authentication-methods) \* API key \* Azure Entra ID (OAuth2) ## Related resources [](https://docs.n8n.io/integrations/builtin/credentials/azureopenai.md#related-resources) Refer to \[Azure OpenAI's API documentation\](https://learn.microsoft.com/en-us/azure/ai-services/openai/reference) for more information about the service. ## Using API key [](https://docs.n8n.io/integrations/builtin/credentials/azureopenai.md#using-api-key) To configure this credential, you'll need: \* A \*\*Resource Name\*\*: the \*\*Name\*\* you give the resource \* An \*\*API key\*\*: \*\*Key 1\*\* works well. This can be accessed before deployment in \*\*Keys and Endpoint\*\*. \* The \*\*API Version\*\* the credentials should use. See the \[Azure OpenAI API preview lifecycle documentation\](https://learn.microsoft.com/en-us/azure/ai-services/openai/api-version-deprecation) for more information about API versioning in Azure OpenAI. To get the information above, \[create and deploy an Azure OpenAI Service resource\](https://learn.microsoft.com/en-us/azure/ai-services/openai/how-to/create-resource). {% hint style="info" %} \*\*Model name for Azure OpenAI nodes\*\* Once you deploy the resource, use the \*\*Deployment name\*\* as the model name for the Azure OpenAI nodes where you're using this credential. {% endhint %} ## Using Azure Entra ID (OAuth2) [](https://docs.n8n.io/integrations/builtin/credentials/azureopenai.md#using-azure-entra-id-oauth2) {% hint style="info" %} \*\*Note for n8n Cloud users\*\* Cloud users don't need to provide connection details. Select \*\*Connect my account\*\* to connect through your browser. {% endhint %} For self-hosted users, there are two main steps to configure OAuth2 from scratch: 1. \[Register an application\](#register-an-application) with the Microsoft Identity Platform. 2. \[Generate a client secret\](#generate-a-client-secret) for that application. Follow the detailed instructions for each step below. For more detail on the Microsoft OAuth2 web flow, refer to \[Microsoft authentication and authorization basics\](https://learn.microsoft.com/en-us/graph/auth/auth-concepts). ### Register an application [](https://docs.n8n.io/integrations/builtin/credentials/azureopenai.md#register-an-application) Register an application with the Microsoft Identity Platform: 1. Open the \[Microsoft Application Registration Portal\](https://aka.ms/appregistrations). 2. Select \*\*Register an application\*\*. 3. Enter a \*\*Name\*\* for your app. 4. In \*\*Supported account types\*\*, select \*\*Accounts in any organizational directory (Any Azure AD directory - Multi-tenant) and personal Microsoft accounts (for example, Skype, Xbox)\*\*. 5. In \*\*Register an application\*\*: 1. Copy the \*\*OAuth Callback URL\*\* from your n8n credential. 2. Paste it into the \*\*Redirect URI (optional)\*\* field. 3. Select \*\*Select a platform\*\* > \*\*Web\*\*. 6. Select \*\*Register\*\* to finish creating your application. 7. Copy the \*\*Application (client) ID\*\* and paste it into n8n as the \*\*Client ID\*\*. Refer to \[Register an application with the Microsoft Identity Platform\](https://learn.microsoft.com/en-us/graph/auth-register-app-v2) for more information. ### Generate a client secret [](https://docs.n8n.io/integrations/builtin/credentials/azureopenai.md#generate-a-client-secret) With your application created, generate a client secret for it: 1. On your Microsoft application page, select \*\*Certificates & secrets\*\* in the left navigation. 2. In \*\*Client secrets\*\*, select \*\*+ New client secret\*\*. 3. Enter a \*\*Description\*\* for your client secret, such as \`n8n credential\`. 4. Select \*\*Add\*\*. 5. Copy the \*\*Secret\*\* in the \*\*Value\*\* column. 6. Paste it into n8n as the \*\*Client Secret\*\*. 7. Select \*\*Connect my account\*\* in n8n to finish setting up the connection. 8. Log in to your Microsoft account and allow the app to access your info. Refer to Microsoft's \[Add credentials\](https://learn.microsoft.com/en-us/graph/auth-register-app-v2#add-credentials) for more information on adding a client secret. ## Setting custom scopes [](https://docs.n8n.io/integrations/builtin/credentials/azureopenai.md#setting-custom-scopes) Azure Entra ID credentials use the following scopes by default: \* \[\`openid\`\](https://learn.microsoft.com/en-us/entra/identity-platform/scopes-oidc#the-openid-scope) \* \[\`offline\_access\`\](https://learn.microsoft.com/en-us/entra/identity-platform/scopes-oidc#the-offline\_access-scope) \* \[\`AccessReview.ReadWrite.All\`\](https://learn.microsoft.com/en-us/graph/permissions-reference#accessreviewreadwriteall) \* \[\`Directory.ReadWrite.All\`\](https://learn.microsoft.com/en-us/graph/permissions-reference#directoryreadwriteall) \* \[\`NetworkAccessPolicy.ReadWrite.All\`\](https://learn.microsoft.com/en-us/graph/permissions-reference#networkaccesspolicyreadwriteall) \* \[\`DelegatedAdminRelationship.ReadWrite.All\`\](https://learn.microsoft.com/en-us/graph/permissions-reference#delegatedadminrelationshipreadwriteall) \* \[\`EntitlementManagement.ReadWrite.All\`\](https://learn.microsoft.com/en-us/graph/permissions-reference#entitlementmanagementreadwriteall) \* \[\`User.ReadWrite.All\`\](https://learn.microsoft.com/en-us/graph/permissions-reference#userreadwriteall) \* \[\`Directory.AccessAsUser.All\`\](https://learn.microsoft.com/en-us/graph/permissions-reference#directoryaccessasuserall) \* \[\`Sites.FullControl.All\`\](https://learn.microsoft.com/en-us/graph/permissions-reference#sitesfullcontrolall) \* \[\`GroupMember.ReadWrite.All\`\](https://learn.microsoft.com/en-us/graph/permissions-reference#groupmemberreadwriteall) To select different scopes for your credentials, enable the \*\*Custom Scopes\*\* slider and edit the \*\*Enabled Scopes\*\* list. Keep in mind that some features may not work as expected with more restrictive scopes. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.html.md). # HTML The HTML node provides operations to help you work with HTML in n8n. {% hint style="info" %} \*\*HTML Extract node\*\* The HTML node replaces the HTML Extract node from version 0.213.0 on. If you're using an older version of n8n, you can still view the \[HTML Extract node documentation\](https://github.com/n8n-io/n8n-docs/blob/86fe33b681621e618e3adcab9a27e8605dbc23ad/docs/integrations/builtin/core-nodes/n8n-nodes-base.htmlextract.md). {% endhint %} {% hint style="warning" %} \*\*Cross-site scripting\*\* When using the HTML node to generate an HTML template you can introduce \[XSS (cross-site scripting)\](https://owasp.org/www-community/attacks/xss/). This is a security risk. Be careful with un-trusted inputs. {% endhint %} ## Operations [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.html.md#operations) \* \[\*\*Generate HTML template\*\*\](#generate-html-template): Use this operation to create an HTML template. This allows you to take data from your workflow and output it as HTML. \* \[\*\*Extract HTML content\*\*\](#extract-html-content): Extract contents from an HTML-formatted source. The source can be in JSON or a binary file (\`.html\`). \* \[\*\*Convert to HTML Table\*\*\](#convert-to-html-table): Convert content to an HTML table. The node parameters and options depend on the operation you select. Refer to the sections below for more details on configuring each operation. ## Generate HTML template [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.html.md#generate-html-template) Create an HTML template. This allows you to take data from your workflow and output it as HTML. You can include: \* Standard HTML \* CSS in \` --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/build/code-in-n8n/cookbook/http-request-node/pagination.md). # Pagination The HTTP Request node supports pagination. This page provides some example configurations, including using the \[HTTP node variables\](/build/code-in-n8n/use-built-in-shortcuts/http-node.md). Refer to \[HTTP Request\](/integrations/builtin/core-nodes/n8n-nodes-base.httprequest.md) for more information on the node. {% hint style="info" %} \*\*API differences\*\* Different APIs implement pagination in different ways. Check the API documentation for the API you're using for details. You need to find out things like: \* Does the API provide the URL for the next page? \* Are there API-specific limits on page size or page number? \* The structure of the data that the API returns. {% endhint %} ## Enable pagination [](https://docs.n8n.io/build/code-in-n8n/cookbook/http-request-node/pagination.md#enable-pagination) In the HTTP Request node, select \*\*Add Option\*\* > \*\*Pagination\*\*. ## Use a URL from the response to get the next page using \`$response\` [](https://docs.n8n.io/build/code-in-n8n/cookbook/http-request-node/pagination.md#use-a-url-from-the-response-to-get-the-next-page-using-dollarresponse) If the API returns the URL of the next page in its response: 1. Set \*\*Pagination Mode\*\* to \*\*Response Contains Next URL\*\*. n8n displays the parameters for this option. 2. In \*\*Next URL\*\*, use an expression\[^1\] to set the URL. The exact expression depends on the data returned by your API. For example, if the API includes a parameter called \`next-page\` in the response body: \`\`\`javascript {{ $response.body\["next-page"\] }} \`\`\` ## Get the next page by number using \`$pageCount\` [](https://docs.n8n.io/build/code-in-n8n/cookbook/http-request-node/pagination.md#get-the-next-page-by-number-using-dollarpagecount) If the API you're using supports targeting a specific page by number: 1. Set \*\*Pagination Mode\*\* to \*\*Update a Parameter in Each Request\*\*. 2. Set \*\*Type\*\* to \*\*Query\*\*. 3. Enter the \*\*Name\*\* of the query parameter. This depends on your API and is usually described in its documentation. For example, some APIs use a query parameter named \`page\` to set the page. So \*\*Name\*\* would be \`page\`. 4. Hover over \*\*Value\*\* and toggle \*\*Expression\*\* on. 5. Enter \`{{ $pageCount + 1 }}\` \`$pageCount\` is the number of pages the HTTP Request node has fetched. It starts at zero. Most API pagination counts from one (the first page is page one). This means that adding \`+1\` to \`$pageCount\` means the node fetches page one on its first loop, page two on its second, and so on. ## Navigate pagination through body parameters [](https://docs.n8n.io/build/code-in-n8n/cookbook/http-request-node/pagination.md#navigate-pagination-through-body-parameters) If the API you're using allows you to paginate through the body parameters: 1. Set the HTTP Request Method to \*\*POST\*\* 2. Set \*\*Pagination Mode\*\* to \*\*Update a Parameter in Each Request\*\*. 3. Select \*\*Body\*\* in the \*\*Type\*\* parameter. 4. Enter the \*\*Name\*\* of the body parameter. This depends on the API you're using. \`page\` is a common key name. 5. Hover over \*\*Value\*\* and toggle \*\*Expression\*\* on. 6. Enter \`{{ $pageCount + 1 }}\` ## Set the page size in the query [](https://docs.n8n.io/build/code-in-n8n/cookbook/http-request-node/pagination.md#set-the-page-size-in-the-query) If the API you're using supports choosing the page size in the query: 1. Select \*\*Send Query Parameters\*\* in main node parameters (this is the parameters you see when you first open the node, not the settings within options). 2. Enter the \*\*Name\*\* of the query parameter. This depends on your API. For example, a lot of APIs use a query parameter named \`limit\` to set page size. So \*\*Name\*\* would be \`limit\`. 3. In \*\*Value\*\*, enter your page size. \[^1\]: In n8n, expressions allow you to populate node parameters dynamically by executing JavaScript code. Instead of providing a static value, you can use the n8n expression syntax to define the value using data from previous nodes, other workflows, or your n8n environment. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/build/flow-logic/convert-to-sub-workflows.md). # Convert to sub-workflows {% hint style="info" %} \*\*Feature availability\*\* Available on all plans from n8n version 1.97.0. {% endhint %} Use sub-workflow conversion to refactor your workflows into reusable parts. Expressions referencing other nodes are automatically updated and added as parameters in the \[Execute Workflow Trigger\](/integrations/builtin/core-nodes/n8n-nodes-base.executeworkflowtrigger.md) node. See \[sub-workflows\](/build/flow-logic/break-workflows-into-smaller-parts.md) for a general introduction to the concept. ## Selecting nodes for a sub-workflow [](https://docs.n8n.io/build/flow-logic/convert-to-sub-workflows.md#selecting-nodes-for-a-sub-workflow) To convert part of a workflow to a sub-workflow, you must select the nodes in the original workflow that you want to convert. Do this by selecting a group of valid nodes. The selection must be continuous and must connect to the rest of the workflow from at most one start node and one end node. The selection must fulfill these conditions: \* Must not include trigger nodes. \* Only a single node in the selection can have incoming connections from nodes \*outside\* of the selection. \* That node can have multiple incoming connections, but only a single input \*branch\* (which means it can't be a \[Merge node\](/integrations/builtin/core-nodes/n8n-nodes-base.merge.md) for example). \* That node can't have incoming connections from other nodes in the selection. \* Only a single node in the selection can have outgoing connections to nodes \*outside\* of the selection. \* That node can have multiple outgoing connections, but only a single output branch (it can't be an \[If node\](/integrations/builtin/core-nodes/n8n-nodes-base.if.md) for example). \* That node can't have outgoing connections to other nodes in the selection. \* The selection must include all nodes between the input and output nodes. ## How to convert part of a workflow to a sub-workflow [](https://docs.n8n.io/build/flow-logic/convert-to-sub-workflows.md#how-to-convert-part-of-a-workflow-to-a-sub-workflow) Select the desired nodes on the canvas. Right-click the canvas background and select \*\*Convert to sub-workflow\*\*. ## Things to keep in mind [](https://docs.n8n.io/build/flow-logic/convert-to-sub-workflows.md#things-to-keep-in-mind) Most sub-workflow conversions work without issues, but there are some caveats and limitations to keep in mind: \* \*\*You must set type constraints for input and output manually\*\*: By default, sub-workflow input and output allow all types. You can set expected types in sub-workflow's \[Execute Sub-workflow Trigger node\](/integrations/builtin/core-nodes/n8n-nodes-base.executeworkflowtrigger.md) and \[Edit Fields (set) node\](/integrations/builtin/core-nodes/n8n-nodes-base.set.md) (labeled as \*\*Return\*\* and only included if the sub-workflow has outputs). \* \*\*Limited support for AI nodes\*\*: When dealing with sub-nodes like AI tools, you must select them all and may need to duplicate any nodes shared with other AI Agents before conversion. \* \*\*Uses v1 execution ordering:\*\* New workflows use \[\`v1\` execution ordering\](/build/flow-logic/understand-execution-order.md) regardless of the parent workflow's settings - you can change this back in the settings. \* \*\*Accessor functions like \`first()\`, \`last()\`, and \`all()\` require extra care\*\*: Expressions using these functions don't always translate cleanly to a sub-workflow context. n8n may transform them to try to preserve their functionality, but you should check that they work as intended in their new context. **Sub-node parameter suffixes** n8n adds suffixes like `_firstItem`, `_lastItem`, and `_allItems` to variable names accessed by these functions. This helps preserve information about the original expression, since item ordering may be different in the sub-workflow context. \* \*\*The \`itemMatching\` function requires a fixed index\*\*: You can't use expressions for the index value when using the \[\`itemMatching\` function\](/build/work-with-data/reference-data/reference-previous-nodes.md). You must pass it a fixed number. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/build/flow-logic/merge-data.md). # Merge data Merging brings multiple data streams together. You can achieve this using different nodes depending on your workflow requirements. \* Merge data from different data streams or nodes: Use the \[Merge\](/integrations/builtin/core-nodes/n8n-nodes-base.merge.md) node to combine data from various sources into one. \* Merge data from multiple node executions: Use the \[Code\](/integrations/builtin/core-nodes/n8n-nodes-base.code.md) node for complex scenarios where you need to merge data from multiple executions of a node or multiple nodes. \* Compare and merge data: Use the \[Compare Datasets\](/integrations/builtin/core-nodes/n8n-nodes-base.comparedatasets.md) node to compare, merge, and output data streams based on the comparison. Explore each method in more detail in the sections below. ## Merge data from different data streams [](https://docs.n8n.io/build/flow-logic/merge-data.md#merge-data-from-different-data-streams) If your workflow \[splits\](/build/flow-logic/split-with-conditionals.md), you combine the separate streams back into one stream. Here's an \[example workflow\](https://n8n.io/workflows/1747-joining-different-datasets/) showing different types of merging: appending data sets, keeping only new items, and keeping only existing items. The \[Merge node\](/integrations/builtin/core-nodes/n8n-nodes-base.merge.md) documentation contains details on each of the merge operations. {% @n8n-blocks/n8n-workflow-demo content="" url="" %} ## Merge data from different nodes [](https://docs.n8n.io/build/flow-logic/merge-data.md#merge-data-from-different-nodes) You can use the Merge node to combine data from two previous nodes, even if the workflow hasn't split into separate data streams. This can be useful if you want to generate a single dataset from the data generated by multiple nodes. ![](https://docs.n8n.io/files/9BsWPSDgOu761D1XJl2n) Merging data from two previous nodes \## Merge data from multiple node executions [](https://docs.n8n.io/build/flow-logic/merge-data.md#merge-data-from-multiple-node-executions) Use the Code node to merge data from multiple node executions. This is useful in some \[Looping\](/build/flow-logic/loop.md) scenarios. {% hint style="info" %} \*\*Node executions and workflow executions\*\* This section describes merging data from multiple node executions. This is when a node executes multiple times during a single workflow execution. {% endhint %} Refer to this \[example workflow\](https://n8n.io/workflows/1814-merge-multiple-runs-into-one/) using Loop Over Items and Wait to artificially create multiple executions. {% @n8n-blocks/n8n-workflow-demo content="" url="" %} ## Compare, merge, and split again [](https://docs.n8n.io/build/flow-logic/merge-data.md#compare-merge-and-split-again) The \[Compare Datasets\](/integrations/builtin/core-nodes/n8n-nodes-base.comparedatasets.md) node compares data streams before merging them. It outputs up to four different data streams. Refer to this \[example workflow\](https://n8n.io/workflows/1943-comparing-data-with-the-compare-datasets-node/) for an example. {% @n8n-blocks/n8n-workflow-demo content="" url="" %} --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/build/flow-logic/handle-errors-gracefully.md). # Handle errors gracefully When designing your flow logic, it's a good practice to consider potential errors, and set up methods to handle them gracefully. With an error workflow, you can control how n8n responds to a workflow execution failure. {% hint style="info" %} \*\*Investigating errors\*\* To investigate failed executions, you can: \* Review your \[Executions\](/build/understand-workflows/understand-executions.md), for a \[single workflow\](/build/understand-workflows/understand-executions/view-executions-for-a-single-workflow.md) or \[all workflows you have access to\](/build/understand-workflows/understand-executions/view-all-executions.md). You can \[load data from previous execution\](/build/understand-workflows/understand-executions/debug-executions.md) into your current workflow. \* Enable \[Log streaming\](/administer/observe-and-log/stream-logs-to-external-systems.md). {% endhint %} ## Create and set an error workflow [](https://docs.n8n.io/build/flow-logic/handle-errors-gracefully.md#create-and-set-an-error-workflow) For each workflow, you can set an error workflow in \*\*Workflow Settings\*\*. It runs if an execution fails. This means you can, for example, send email or Slack alerts when a workflow execution errors. The error workflow must start with the \[Error Trigger\](/integrations/builtin/core-nodes/n8n-nodes-base.errortrigger.md). You can use the same error workflow for multiple workflows. 1. Create a new workflow, with the Error Trigger as the first node. 2. Give the workflow a name, for example \`Error Handler\`. 3. Select \*\*Save\*\*. 4. In the workflow where you want to use this error workflow: 1. Select \*\*Options\*\* ![Options menu icon](https://docs.n8n.io/spaces/GixZThfitWP21x2gQFpD/files/LxEoziLuMlenJM8dOV4r) > \*\*Settings\*\*. 2. In \*\*Error workflow\*\*, select the workflow you just created. For example, if you used the name Error Handler, select \*\*Error handler\*\*. 3. Select \*\*Save\*\*. Now, when this workflow errors, the related error workflow runs. ## Error data [](https://docs.n8n.io/build/flow-logic/handle-errors-gracefully.md#error-data) The default error data received by the Error Trigger is: \`\`\`json \[ { "execution": { "id": "231", "url": "https://n8n.example.com/execution/231", "retryOf": "34", "error": { "message": "Example Error Message", "stack": "Stacktrace" }, "lastNodeExecuted": "Node With Error", "mode": "manual" }, "workflow": { "id": "1", "name": "Example Workflow" } } \] \`\`\` All information is always present, except: \* \`execution.id\`: requires the execution to be saved in the database. Not present if the error is in the trigger node of the main workflow, as the workflow doesn't execute. \* \`execution.url\`: requires the execution to be saved in the database. Not present if the error is in the trigger node of the main workflow, as the workflow doesn't execute. \* \`execution.retryOf\`: only present when the execution is a retry of a failed execution. If the error is caused by the trigger node of the main workflow, rather than a later stage, the data sent to the error workflow is different. There's less information in \`execution{}\` and more in \`trigger{}\`: \`\`\`json { "trigger": { "error": { "context": {}, "name": "WorkflowActivationError", "cause": { "message": "", "stack": "" }, "timestamp": 1654609328787, "message": "", "node": { . . . } }, "mode": "trigger" }, "workflow": { "id": "", "name": "" } } \`\`\` ## Cause a workflow execution failure using Stop And Error [](https://docs.n8n.io/build/flow-logic/handle-errors-gracefully.md#cause-a-workflow-execution-failure-using-stop-and-error) When you create and set an error workflow, n8n runs it when an execution fails. Usually, this is due to things like errors in node settings, or the workflow running out of memory. You can add the \[Stop And Error\](/integrations/builtin/core-nodes/n8n-nodes-base.stopanderror.md) node to your workflow to force executions to fail under your chosen circumstances, and trigger the error workflow. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.evaluation.md). # Evaluation The Evaluation node performs various operations related to \[evaluations\](/build/integrate-ai/test-and-improve-ai-workflows/understand-why-to-test.md) to validate your AI workflow reliability. Use the Evaluation node in these scenarios: \* To conditionally execute logic based on whether the workflow is under evaluation \* To write evaluation outcomes back to a Google Sheet datasetor \* To log scoring metrics for your evaluation performance to n8n's evaluations tab {% hint style="info" %} \*\*Credentials for Google Sheets\*\* The Evaluation node's \*\*Set Outputs\*\* operation records evaluation results to data tables or Google Sheets. To use Google Sheets as a recording location, configure a \[Google Sheets credential\](/integrations/builtin/credentials/google.md). {% endhint %} ## Operations [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.evaluation.md#operations) The Evaluation node offers the following operations: \* \[\*\*Set Outputs\*\*\](#set-outputs): Write the results of an evaluation back to a data table or Google Sheet dataset. \* \[\*\*Set Metrics\*\*\](#set-metrics): Record metrics scoring the evaluation performance to n8n's \*\*Evaluations\*\* tab. \* \[\*\*Check If Evaluating\*\*\](#check-if-evaluating): Branches the workflow execution logic depending on whether the current execution is an evaluation. The parameters and options available depend on the operation you select. ### Set Outputs [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.evaluation.md#set-outputs) The \*\*Set Outputs\*\* operation has the following parameters: \* \*\*Source:\*\* Select the location to which you want to output the evaluation results. Default value is \*\*Data table\*\*. Source settings differ depending on \*\*Source\*\* selection. \* When \*\*Source\*\* is \*\*Data table\*\*: \* \*\*Data table:\*\* Select a data table by name or ID \* When \*\*Source\*\* is \*\*Google Sheets\*\*: \* \*\*Credential to connect with\*\*: Create or select an existing \[Google Sheets credentials\](/integrations/builtin/credentials/google.md). \* \*\*Document Containing Dataset\*\*: Choose the spreadsheet document you want to write the evaluation results to. Usually this is the same document you select in the \[Evaluation Trigger\](/integrations/builtin/core-nodes/n8n-nodes-base.evaluationtrigger.md) node. \* Select \*\*From list\*\* to choose the spreadsheet title from the dropdown list, \*\*By URL\*\* to enter the url of the spreadsheet, or \*\*By ID\*\* to enter the \`spreadsheetId\`. \* You can find the \`spreadsheetId\` in a Google Sheets URL: \`https://docs.google.com/spreadsheets/d/spreadsheetId/edit#gid=0\`. \* \*\*Sheet Containing Dataset\*\*: Choose the sheet you want to write the evaluation results to. Usually this is the same sheet you select in the \[Evaluation Trigger\](/integrations/builtin/core-nodes/n8n-nodes-base.evaluationtrigger.md) node. \* Select \*\*From list\*\* to choose the sheet title from the dropdown list, \*\*By URL\*\* to enter the url of the sheet, \*\*By ID\*\* to enter the \`sheetId\`, or \*\*By Name\*\* to enter the sheet title. \* You can find the \`sheetId\` in a Google Sheets URL: \`https://docs.google.com/spreadsheets/d/aBC-123\_xYz/edit#gid=sheetId\`. You define the items to write to the data table or Google Sheet in the \*\*Outputs\*\* section. For each output, you set the following: \* \*\*Name\*\*: The Google Sheet column name to write the evaluation results to. \* \*\*Value\*\*: The value to write to the Google Sheet. ### Set Metrics [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.evaluation.md#set-metrics) The \*\*Set Metrics\*\* operation includes a \*\*Metrics to Return\*\* section where you define the metrics to record and track for your evaluations. You can see the metric results in your workflow's \*\*Evaluations\*\* tab. For each metric you wish to record, you set the following details: \* \*\*Name\*\*: The name to use for the metric. \* \*\*Value\*\*: The numeric value to record. Once you run your evaluation, you can drag and drop values from previous nodes here. Metric values must be numeric. ### Check If Evaluating [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.evaluation.md#check-if-evaluating) The \*\*Check If Evaluating\*\* operation doesn't have any parameters. This operation provides branching output connectors so that you can conditionally execute logic depending on whether the current execution is an evaluation or not. ## Templates and examples [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.evaluation.md#templates-and-examples) \[Browse Evaluation node documentation integration templates\](https://n8n.io/integrations/evaluation) or \[search all templates\](https://n8n.io/workflows/) ## Related resources [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.evaluation.md#related-resources) To learn more about n8n evaluations, check out the \[evaluations documentation\](/build/integrate-ai/test-and-improve-ai-workflows/understand-why-to-test.md) n8n provides a trigger node for evaluations. You can find the node docs \[here\](/integrations/builtin/core-nodes/n8n-nodes-base.evaluationtrigger.md). For common questions or issues and suggested solutions, refer to the evaluations \[tips and common issues\](/build/integrate-ai/test-and-improve-ai-workflows/fix-common-issues.md) page. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.n8n.md). # n8n A node to integrate with n8n itself. This node allows you to consume the \[n8n API\](/connect/n8n-api.md) in your workflows. Refer to the \[n8n REST API documentation\](/connect/n8n-api.md) for more information on using the n8n API. Refer to \[API endpoint reference\](/connect/n8n-api/user.md) for working with the API endpoints directly. {% hint style="info" %} \*\*Credentials\*\* You can find authentication information for this node in the \[API authentication\](/connect/n8n-api/authentication.md) documentation. {% endhint %} {% hint style="warning" %} \*\*SSL\*\* This node doesn't support SSL. If your server requires an SSL connection, use the \[HTTP Request node\](/integrations/builtin/core-nodes/n8n-nodes-base.httprequest.md) to call the \[n8n API\](/connect/n8n-api.md). The HTTP Request node has options to \[provide the SSL certificate\](/integrations/builtin/credentials/httprequest.md#provide-an-ssl-certificate). {% endhint %} ## Operations [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.n8n.md#operations) \* Audit \* \[\*\*Generate\*\* a security audit\](#generate-audit) \* Credential \* \[\*\*Create\*\* a credential\](#create-credential) \* \[\*\*Delete\*\* a credential\](#delete-credential) \* \[\*\*Get Schema\*\*\](#get-credential-schema): Use this operation to get credential data schema for type \* Execution \* \[\*\*Get\*\* an execution\](#get-execution) \* \[\*\*Get Many\*\* executions\](#get-many-executions) \* \[\*\*Delete\*\* an execution\](#delete-execution) \* Workflow \* \[\*\*Publish\*\* a workflow\](#activate-deactivate-delete-and-get-workflow) \* \[\*\*Create\*\* a workflow\](#create-workflow) \* \[\*\*Deactivate\*\* a workflow\](#activate-deactivate-delete-and-get-workflow) \* \[\*\*Delete\*\* a workflow\](#activate-deactivate-delete-and-get-workflow) \* \[\*\*Get\*\* a workflow\](#activate-deactivate-delete-and-get-workflow) \* \[\*\*Get Many\*\* workflows\](#get-many-workflows) \* \[\*\*Update\*\* a workflow\](#update-workflow) ## Generate audit [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.n8n.md#generate-audit) This operation has no parameters. Configure it with these options: \* \*\*Categories\*\*: Select the risk categories you want the audit to include. Options include: \* \*\*Credentials\*\* \* \*\*Database\*\* \* \*\*Filesystem\*\* \* \*\*Instance\*\* \* \*\*Nodes\*\* \* \*\*Days Abandoned Workflow\*\*: Use this option to set the number of days without execution after which a workflow should be considered abandoned. Enter a number of days. The default is \`90\`. ## Create credential [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.n8n.md#create-credential) Configure this operation with these parameters: \* \*\*Name\*\*: Enter the name of the credential you'd like to create. \* \*\*Credential Type\*\*: Enter the credential's type. The available types depend on nodes installed on the n8n instance. Some built-in types include \`githubApi\`, \`notionApi\`, and \`slackApi\`. \* \*\*Data\*\*: Enter a valid JSON object with the required properties for this \*\*Credential Type\*\*. To see the expected format, use the \*\*Get Schema\*\* operation. ## Delete credential [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.n8n.md#delete-credential) Configure this operation with this parameter: \* \*\*Credential ID\*\*: Enter the ID of the credential you want to delete. ## Get credential schema [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.n8n.md#get-credential-schema) Configure this operation with this parameter: \* \*\*Credential Type\*\*: Enter the credential's type. The available types depend on nodes installed on the n8n instance. Some built-in types include \`githubApi\`, \`notionApi\`, and \`slackApi\`. ## Get execution [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.n8n.md#get-execution) Configure this operation with this parameter: \* \*\*Execution ID\*\*: Enter the ID of the execution you want to retrieve. ### Get execution option [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.n8n.md#get-execution-option) You can further configure this operation with this \*\*Option\*\*: \* \*\*Include Execution Details\*\*: Use this control to set whether to include the detailed execution data (turned on) or not (turned off). ## Get many executions [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.n8n.md#get-many-executions) Configure this operation with these parameters: \* \*\*Return All\*\*: Set whether to return all results (turned on) or whether to limit the results to the entered \*\*Limit\*\* (turned on). \* \*\*Limit\*\*: Set the number of results to return if the \*\*Return All\*\* control is turned off. ### Get many executions filters [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.n8n.md#get-many-executions-filters) You can further configure this operation with these \*\*Filters\*\*: \* \*\*Workflow\*\*: Filter the executions by workflow. Options include: \* \*\*From list\*\*: Select a workflow to use as a filter. \* \*\*By URL\*\*: Enter a workflow URL to use as a filter. \* \*\*By ID\*\*: Enter a workflow ID to use as a filter. \* \*\*Status\*\*: Filter the executions by status. Options include: \* \*\*Error\*\* \* \*\*Success\*\* \* \*\*Waiting\*\* ### Get many execution options [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.n8n.md#get-many-execution-options) You can further configure this operation with this \*\*Option\*\*: \* \*\*Include Execution Details\*\*: Use this control to set whether to include the detailed execution data (turned on) or not (turned off). ## Delete execution [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.n8n.md#delete-execution) Configure this operation with this parameter: \* \*\*Execution ID\*\*: Enter the ID of the execution you want to delete. ## Activate, deactivate, delete, and get workflow [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.n8n.md#activate-deactivate-delete-and-get-workflow) The \*\*Activate\*\*, \*\*Deactivate\*\*, \*\*Delete\*\*, and \*\*Get\*\* workflow operations all include the same parameter for you to select the \*\*Workflow\*\* you want to perform the operation on. Options include: \* \*\*From list\*\*: Select the workflow from the list. \* \*\*By URL\*\*: Enter the URL of the workflow. \* \*\*By ID\*\*: Enter the ID of the workflow. ## Create workflow [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.n8n.md#create-workflow) Configure this operation with this parameter: \* \*\*Workflow Object\*\*: Enter a valid JSON object with the new workflow's details. The object requires these fields: \* \`name\` \* \`nodes\` \* \`connections\` \* \`settings\` Refer to \[n8n API reference\](/connect/n8n-api/user.md) for more information. ## Get many workflows [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.n8n.md#get-many-workflows) Configure this operation with these parameters: \* \*\*Return All\*\*: Set whether to return all results (turned on) or whether to limit the results to the entered \*\*Limit\*\* (turned on). \* \*\*Limit\*\*: Set the number of results to return if the \*\*Return All\*\* control is turned off. ### Get many workflows filters [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.n8n.md#get-many-workflows-filters) You can further configure this operation with these \*\*Filters\*\*: \* \*\*Return Only Active Workflows\*\*: Select whether to return only active workflows (turned on) or active and inactive workflows (turned off). \* \*\*Tags\*\*: Enter a comma-separated list of tags the returned workflows must have. ## Update workflow [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.n8n.md#update-workflow) Configure this operation with these parameters: \* \*\*Workflow\*\*: Select the workflow you want to update. Options include: \* \*\*From list\*\*: Select the workflow from the list. \* \*\*By URL\*\*: Enter the URL of the workflow. \* \*\*By ID\*\*: Enter the ID of the workflow. \* \*\*Workflow Object\*\*: Enter a valid JSON object to update the workflow with. The object requires these fields: \* \`name\` \* \`nodes\` \* \`connections\` \* \`settings\` Refer to the \[n8n API | Update a workflow documentation\](https://docs.n8n.io/api/api-reference/#tag/Workflow/paths/~1workflows~1%7Bid%7D/put) for more information. ## Templates and examples [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.n8n.md#templates-and-examples) \[Browse n8n integration templates\](https://n8n.io/integrations/n8n) or \[search all templates\](https://n8n.io/workflows/) --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.crypto.md). # Crypto Use the Crypto node to perform cryptographic operations in workflows. {% hint style="info" %} \*\*Credentials\*\* You can find authentication information for this node \[here\](https://github.com/n8n-io/n8n-docs/blob/main/integrations/builtin/credentials/crypto.md). {% endhint %} ## Actions [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.crypto.md#actions) \* \[\*\*Decrypt\*\* a string\](#decrypt-parameters) with a passphrase or private key \* \[\*\*Encrypt\*\* a string\](#encrypt-parameters) with a passphrase or public key \* \[\*\*Generate\*\* a random string\](#generate-parameters) \* \[\*\*Hash\*\* a text or file\](#hash-parameters) in a specified format \* \[\*\*Hmac\*\* a text or file\](#hmac-parameters) in a specified format \* \[\*\*Sign\*\* a string\](#sign-parameters) using a private key ## Node parameters [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.crypto.md#node-parameters) {% hint style="info" %} \*\*This node can be used as an AI tool\*\* This node can be used to enhance the capabilities of an AI agent. When used in this way, many parameters can be set automatically, or with information directed by AI - find out more in the \[AI tool parameters documentation\](/build/integrate-ai/ai-examples/use-ai-for-parameters.md). {% endhint %} Node parameters depend on the action you select. The \*\*Hmac\*\*, \*\*Sign\*\*, \*\*Encrypt\*\*, and \*\*Decrypt\*\* actions need \[Crypto credentials\](https://github.com/n8n-io/n8n-docs/blob/main/integrations/builtin/credentials/crypto.md). Each action uses the credential field it needs: \* \*\*Hmac\*\* uses the \*\*Hmac Secret\*\*. \* \*\*Sign\*\* uses the \*\*Private Key\*\*. \* \*\*Encrypt\*\* and \*\*Decrypt\*\* use the \*\*Encryption Passphrase\*\* for symmetric mode, or the \*\*Encryption Public Key\*\* and \*\*Encryption Private Key\*\* for asymmetric mode. ### Decrypt parameters [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.crypto.md#decrypt-parameters) \* \*\*Mode\*\*: Select the mode to use. This must match the mode used to encrypt the value. Choose from: \* \*\*Symmetric (Passphrase)\*\*: Decrypt with a passphrase using an authenticated cipher. \* \*\*Asymmetric (RSA)\*\*: Decrypt with an RSA private key. \* \*\*Cipher\*\*: When you select \*\*Symmetric (Passphrase)\*\*, choose the authenticated cipher to use. This must match the cipher used to encrypt the value. Choose from: \* \*\*AES-256-GCM\*\* \* \*\*AES-192-GCM\*\* \* \*\*AES-128-GCM\*\* \* \*\*ChaCha20-Poly1305\*\* \* \*\*Value\*\*: Enter the base64 string produced by the \*\*Encrypt\*\* action. \* \*\*Property Name\*\*: Enter the name of the property you want to write the decrypted value to. ### Encrypt parameters [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.crypto.md#encrypt-parameters) \* \*\*Mode\*\*: Select the mode to use. Choose from: \* \*\*Symmetric (Passphrase)\*\*: Encrypt with a passphrase using an authenticated cipher. \* \*\*Asymmetric (RSA)\*\*: Encrypt with an RSA public key. \* \*\*Cipher\*\*: When you select \*\*Symmetric (Passphrase)\*\*, choose the authenticated cipher to use. You must select the same cipher when you decrypt the value. Choose from: \* \*\*AES-256-GCM\*\* \* \*\*AES-192-GCM\*\* \* \*\*AES-128-GCM\*\* \* \*\*ChaCha20-Poly1305\*\* \* \*\*Value\*\*: Enter the value you want to encrypt. \* \*\*Property Name\*\*: Enter the name of the property you want to write the encrypted value to. The node writes the result as a base64 string. {% hint style="info" %} \*\*RSA payload size\*\* Asymmetric (RSA) mode can only encrypt small payloads, around 190 bytes with a 2048-bit key. Use symmetric mode for larger data. {% endhint %} ### Generate parameters [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.crypto.md#generate-parameters) \* \*\*Property Name\*\*: Enter the name of the property to write the random string to. \* \*\*Type\*\*: Select the encoding type to use to generate the string. Choose from: \* \*\*ASCII\*\* \* \*\*BASE64\*\* \* \*\*HEX\*\* \* \*\*UUID\*\* \* \*\*Length\*\*: When you select \*\*ASCII\*\*, \*\*BASE64\*\*, or \*\*HEX\*\*, enter the length of the generated string. The default is \`32\`. ### Hash parameters [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.crypto.md#hash-parameters) \* \*\*Type\*\*: Select the hash type to use. Choose from: \* \*\*MD5\*\* \* \*\*SHA256\*\* \* \*\*SHA3-256\*\* \* \*\*SHA3-384\*\* \* \*\*SHA3-512\*\* \* \*\*SHA384\*\* \* \*\*SHA512\*\* \* \*\*Binary File\*\*: Turn this parameter on if the data you want to hash is from a binary file. \* \*\*Value\*\*: If you turn off \*\*Binary File\*\*, enter the value you want to hash. \* \*\*Binary Property Name\*\*: If you turn on \*\*Binary File\*\*, enter the name of the binary property that contains the data you want to hash. \* \*\*Property Name\*\*: Enter the name of the property you want to write the hash to. \* \*\*Encoding\*\*: Select the encoding type to use. Choose from: \* \*\*BASE64\*\* \* \*\*HEX\*\* ### Hmac parameters [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.crypto.md#hmac-parameters) \* \*\*Binary File\*\*: Turn this parameter on if the data you want to create an Hmac for is from a binary file. \* \*\*Value\*\*: If you turn off \*\*Binary File\*\*, enter the value you want to create an Hmac for. \* \*\*Binary Property Name\*\*: If you turn on \*\*Binary File\*\*, enter the name of the binary property that contains the data you want to create an Hmac for. \* \*\*Type\*\*: Select the hash type to use. Choose from: \* \*\*MD5\*\* \* \*\*SHA256\*\* \* \*\*SHA3-256\*\* \* \*\*SHA3-384\*\* \* \*\*SHA3-512\*\* \* \*\*SHA384\*\* \* \*\*SHA512\*\* \* \*\*Property Name\*\*: Enter the name of the property you want to write the Hmac to. \* \*\*Encoding\*\*: Select the encoding type to use. Choose from: \* \*\*BASE64\*\* \* \*\*HEX\*\* This action uses the \*\*Hmac Secret\*\* from your \[Crypto credentials\](https://github.com/n8n-io/n8n-docs/blob/main/integrations/builtin/credentials/crypto.md). ### Sign parameters [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.crypto.md#sign-parameters) \* \*\*Value\*\*: Enter the value you want to sign. \* \*\*Property Name\*\*: Enter the name of the property you want to write the signed value to. \* \*\*Algorithm Name or ID\*\*: Choose an algorithm name from the list or specify an ID using an \[expression\](/build/work-with-data/expressions-versus-data-nodes.md). \* \*\*Encoding\*\*: Select the encoding type to use. Choose from: \* \*\*BASE64\*\* \* \*\*HEX\*\* This action uses the \*\*Private Key\*\* from your \[Crypto credentials\](https://github.com/n8n-io/n8n-docs/blob/main/integrations/builtin/credentials/crypto.md). ## Templates and examples [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.crypto.md#templates-and-examples) \[Browse Crypto integration templates\](https://n8n.io/integrations/crypto) or \[search all templates\](https://n8n.io/workflows/) --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/build/flow-logic/split-with-conditionals.md). # Split with conditionals Splitting uses the \[IF\](/integrations/builtin/core-nodes/n8n-nodes-base.if.md) or \[Switch\](/integrations/builtin/core-nodes/n8n-nodes-base.switch.md) nodes. It turns a single-branch workflow into a multi-branch workflow. This is a key piece of representing complex logic in n8n. Compare these workflows: !\["Diagram representing two workflows. One has three steps and follows a linear process, with a user submitting a bug, and the workflow emailing a support team. The second workflow starts the same way, but then splits depending on whether the user marked the issue as urgent. It then splits again depending on the user's support plan"\](/files/esOmXpNWeeHGtfP1EoEb) This is the power of splitting and conditional nodes in n8n. Refer to the \[IF\](/integrations/builtin/core-nodes/n8n-nodes-base.if.md) or \[Switch\](/integrations/builtin/core-nodes/n8n-nodes-base.switch.md) documentation for usage details. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.switch.md). # Switch Use the Switch node to route a workflow conditionally based on comparison operations. It's similar to the \[IF\](/integrations/builtin/core-nodes/n8n-nodes-base.if.md) node, but supports multiple output routes. ## Node parameters [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.switch.md#node-parameters) Select the \*\*Mode\*\* the node should use: \* \*\*Rules\*\*: Select this mode to build a matching rule for each output. \* \*\*Expression\*\*: Select this mode to write an expression to return the output index programmatically. Node configuration depends on the \*\*Mode\*\* you select. ### Rules [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.switch.md#rules) To configure the node with this operation, use these parameters: \* Create \*\*Routing Rules\*\* to define comparison conditions. \* Use the data type dropdown to select the data type and comparison operation type for your condition. For example, to create a rules for dates after a particular date, select \*\*Date & Time > is after\*\*. \* The fields and values to enter into the condition change based on the data type and comparison you select. Refer to \[Available data type comparisons\](#available-data-type-comparisons) for a full list of all comparisons by data type. \* \*\*Rename Output\*\*: Turn this control on to rename the output field to put matching data into. Enter your desired \*\*Output Name\*\*. Select \*\*Add Routing Rule\*\* to add more rules. #### Rule options [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.switch.md#rule-options) You can further configure the node with this operation using these \*\*Options\*\*: \* \*\*Fallback Output\*\*: Choose how to route the workflow when an item doesn't match any of the rules or conditions. \* \*\*None\*\*: Ignore the item. This is the default behavior. \* \*\*Extra Output\*\*: Send items to an extra, separate output. \* \*\*Output 0\*\*: Send items to the same output as those matching the first rule. \* \*\*Ignore Case\*\*: Set whether to ignore letter case when evaluating conditions (turned on) or enforce letter case (turned off). \* \*\*Less Strict Type Validation\*\*: Set whether you want n8n to attempt to convert value types based on the operator you choose (turned on) or not (turned off). \* \*\*Send data to all matching outputs\*\*: Set whether to send data to all outputs meeting conditions (turned on) or whether to send the data to the first output matching the conditions (turned off). ### Expression [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.switch.md#expression) To configure the node with this operation, use these parameters: \* \*\*Number of Outputs\*\*: Set how many outputs the node should have. \* \*\*Output Index\*\*: Create an expression to calculate which input item should be routed to which output. The expression must return a number. ## Templates and examples [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.switch.md#templates-and-examples) \[Browse Switch integration templates\](https://n8n.io/integrations/switch) or \[search all templates\](https://n8n.io/workflows/) ## Related resources [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.switch.md#related-resources) Refer to \[Splitting with conditionals\](/build/flow-logic/split-with-conditionals.md) for more information on using conditionals to create complex logic in n8n. ## String [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.switch.md#string) String data type supports these comparisons: \* exists \* does not exist \* is empty \* is not empty \* is equal to \* is not equal to \* contains \* does not contain \* starts with \* does not start with \* ends with \* does not end with \* matches regex \* does not match regex ## Number [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.switch.md#number) Number data type supports these comparisons: \* exists \* does not exist \* is empty \* is not empty \* is equal to \* is not equal to \* is greater than \* is less than \* is greater than or equal to \* is less than or equal to ## Date & Time [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.switch.md#date-and-time) Date & Time data type supports these comparisons: \* exists \* does not exist \* is empty \* is not empty \* is equal to \* is not equal to \* is after \* is before \* is after or equal to \* is before or equal to ## Boolean [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.switch.md#boolean) Boolean data type supports these comparisons: \* exists \* does not exist \* is empty \* is not empty \* is true \* is false \* is equal to \* is not equal to ## Array [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.switch.md#array) Array data type supports these comparisons: \* exists \* does not exist \* is empty \* is not empty \* contains \* does not contain \* length equal to \* length not equal to \* length greater than \* length less than \* length greater than or equal to \* length less than or equal to ## Object [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.switch.md#object) Object data type supports these comparisons: \* exists \* does not exist \* is empty \* is not empty --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/build/work-with-data/reference-data.md). # Reference data Referencing data, or data mapping, means accessing information from previous nodes in your workflow. This allows you to use output from earlier steps as input for later nodes, creating dynamic workflows that pass data through multiple operations. When you reference data, you're not changing it. You're pointing to values that already exist so you can use them in node parameters, expressions, or custom code. If you want to change the data you're referencing, see \[Transforming data\](/build/work-with-data/transform-data/approaches-for-transforming-data.md). ## How to reference data [](https://docs.n8n.io/build/work-with-data/reference-data.md#how-to-reference-data) The main way to reference data is using \[expressions\](/build/work-with-data/expressions-versus-data-nodes.md#expressions). You can create expressions by typing them in a parameter's field or dragging and dropping fields from the Input panel in the UI. Expressions will automatically figure out the correct item to use using \[item linking\](/build/work-with-data/reference-data/link-data-items.md). --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.boxtrigger.md). # Box Trigger \[Box\](https://www.box.com/) is a cloud computing company which provides file sharing, collaborating, and other tools for working with files uploaded to its servers. {% hint style="info" %} \*\*Credentials\*\* You can find authentication information for this node \[here\](/integrations/builtin/credentials/box.md). {% endhint %} {% hint style="info" %} \*\*Examples and templates\*\* For usage examples and templates to help you get started, refer to n8n's \[Box Trigger integrations\](https://n8n.io/integrations/box-trigger/) page. {% endhint %} ## Find your Box Target ID [](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.boxtrigger.md#find-your-box-target-id) To get your Target ID in Box: 1. Open the file/folder that you would like to monitor. 2. Copy the string of characters after \`folder/\` in your URL. This is the target ID. For example, if the URL is \`https://app.box.com/folder/12345\`, then \`12345\` is the target ID. 3. Paste it in the \*\*Target ID\*\* field in n8n. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/build/work-with-data/overview.md). # Overview In n8n, data flows through your workflow from node to node. Each node receives data, processes it, and passes the results to the next node. Understanding how data moves and transforms in your workflows is essential for building effective workflows. ## How data works in n8n [](https://docs.n8n.io/build/work-with-data/overview.md#how-data-works-in-n8n) \*\*Data flows through nodes\*\*: When you connect nodes, data automatically passes from one to the next. Each node processes the incoming data and outputs results based on its configuration. \*\*View data at every stage\*\*: You can inspect data at any point in your workflow: \* \*\*Node details view\*\*: Double-click any node to see its input and output data. Choose between \*\*Schema\*\*, \*\*Table\*\* and \*\*JSON\*\* views. Schema view shows a simplified structure from the first item only, Table and JSON display the full dataset. \* \*\*Execution logs\*\*: Review past workflow runs to see the data that passed through each node. \*\*Reference previous data\*\*: Use \[data mapping\](/build/work-with-data/reference-data.md) to reference data from earlier nodes in your workflow. You can: \* Select values from previous nodes using the UI \* Write \[expressions\](/build/work-with-data/expressions-versus-data-nodes.md) to dynamically access and combine data \* Reference specific nodes by name to get their output \*\*Transform data\*\*: n8n provides multiple ways to modify data: \* Use dedicated transformation nodes (Aggregate, Split Out, Sort, and more) \* Write \[expressions\](/build/work-with-data/transform-data/expressions-for-data-transformation.md) directly in node parameters \* Use the \[Code node\](/build/work-with-data/expressions-versus-data-nodes.md#code-node) for custom JavaScript or Python logic \* Apply the \[AI Transform node\](/build/work-with-data/expressions-versus-data-nodes.md#ai-transform-node) for AI-assisted transformations \*\*Understand the data structure\*\*: n8n uses a \[consistent data structure\](/build/work-with-data/understand-n8ns-data-structure.md) across all nodes, making it predictable how data flows and transforms throughout your workflows. ## In this section [](https://docs.n8n.io/build/work-with-data/overview.md#in-this-section) \* \[How n8n structures data\](/build/work-with-data/understand-n8ns-data-structure.md) \* \[Transforming data\](/build/work-with-data/transform-data/approaches-for-transforming-data.md) \* \[Processing data using code\](/build/work-with-data/expressions-versus-data-nodes.md#code-node) \* \[Pinning, mocking, and editing data\](/build/work-with-data/pin-and-mock-data.md) during workflow development \* \[Referencing data\](/build/work-with-data/reference-data.md) and \[item linking\](/build/work-with-data/reference-data/link-data-items.md): how data items link to each other --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datatable.md). # Data Table Use the Data Table node to create and manage internal data tables. Data tables allow you to store structured data directly inside n8n and use it across workflows. You can use the Data Table node to: \* Create, list, and manage data tables \* Insert, update, delete, and upsert rows in data tables \* Query and retrieve rows using matching conditions {% hint style="info" %} \*\*Working with data tables\*\* As well as using the Data Tables node in a workflow, you can view and manage data tables manually from the \*\*Data Tables\*\* tab in your project \*\*Overview\*\*. For information about working with data tables in this tab, and guidance on when to use data tables and their limitations, see \[Data tables\](/build/work-with-data/data-tables.md). {% endhint %} ## Resources [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datatable.md#resources) The Data Table node supports the following resources: \* \*\*Data Table:\*\* Create, list, update, and delete tables. \* \*\*Row:\*\* Insert, retrieve, update, delete, and upsert rows within a table. ### Operations [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datatable.md#operations) See available operations below. For detailed information on parameters for different operation types, refer to the \[Table operations\](/integrations/builtin/core-nodes/n8n-nodes-base.datatable/tables.md) and \[Row operations\](/integrations/builtin/core-nodes/n8n-nodes-base.datatable/rows.md) pages. \* \*\*Rows\*\* \* \[\*\*Delete:\*\*\](/integrations/builtin/core-nodes/n8n-nodes-base.datatable/rows.md#delete-row) Delete one or more rows. \* \[\*\*Get:\*\*\](/integrations/builtin/core-nodes/n8n-nodes-base.datatable/rows.md#get-row) Get one or more rows from your table based on defined filters. \* \[\*\*If Row Exists:\*\*\](/integrations/builtin/core-nodes/n8n-nodes-base.datatable/rows.md#if-row-exists) Specify a set of conditions to match input items that exist in the data table. \* \[\*\*If Row Does Not Exist:\*\*\](/integrations/builtin/core-nodes/n8n-nodes-base.datatable/rows.md#if-row-does-not-exist) Specify a set of conditions to match input items that don't exist in the data table. \* \[\*\*Insert:\*\*\](/integrations/builtin/core-nodes/n8n-nodes-base.datatable/rows.md#insert-row) Insert rows into an existing table. \* \[\*\*Update:\*\*\](/integrations/builtin/core-nodes/n8n-nodes-base.datatable/rows.md#update-row) Update one or more rows. \* \[\*\*Upsert:\*\*\](/integrations/builtin/core-nodes/n8n-nodes-base.datatable/rows.md#upsert-row) Upsert one or more rows. If the row exists, it's updated; otherwise, a new row is created. \* \*\*Tables\*\* \* \[\*\*Create:\*\*\](/integrations/builtin/core-nodes/n8n-nodes-base.datatable/tables.md#create-a-data-table) Create a new data table. \* \[\*\*Delete:\*\*\](/integrations/builtin/core-nodes/n8n-nodes-base.datatable/tables.md#delete-a-data-table) Delete an existing data table. \* \[\*\*List:\*\*\](/integrations/builtin/core-nodes/n8n-nodes-base.datatable/tables.md#list-data-tables) List existing data tables. \* \[\*\*Update:\*\*\](/integrations/builtin/core-nodes/n8n-nodes-base.datatable/tables.md#update-a-data-table) Update an existing data table. ## Related resources [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datatable.md#related-resources) \[Data tables\](/build/work-with-data/data-tables.md) explains how to create and manage data tables. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.brevotrigger.md). # Brevo Trigger \[Brevo\](https://www.brevo.com/) is a digital marketing platform to help users grow their business. {% hint style="info" %} \*\*Credentials\*\* You can find authentication information for this node \[here\](/integrations/builtin/credentials/brevo.md). {% endhint %} {% hint style="info" %} \*\*Examples and templates\*\* For usage examples and templates to help you get started, refer to n8n's \[Brevo Trigger integrations\](https://n8n.io/integrations/brevo-trigger/) page. {% endhint %} ## Events [](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.brevotrigger.md#events) \* Email blocked \* Email clicked \* Email deferred \* Email delivered \* Email hard bounce \* Email invalid \* Email marked spam \* Email opened \* Email sent \* Email soft bounce \* Email unique open \* Email unsubscribed ## Related resources [](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.brevotrigger.md#related-resources) n8n provides an app node for Brevo. You can find the node docs \[here\](/integrations/builtin/app-nodes/n8n-nodes-base.brevo.md). View \[example workflows and related content\](https://n8n.io/integrations/brevo-trigger/) on n8n's website. Refer to \[Brevo's documentation\](https://developers.brevo.com/) for details about their API. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/build/work-with-data/reference-data/use-the-ui-mapper.md). # Use the UI mapper Data mapping means referencing data from previous nodes. It doesn't include changing (transforming) data, just referencing it. When you need data from a particular node in your workflow, you can \[reference nodes by name\](/build/work-with-data/reference-data/reference-previous-nodes.md). This is useful when your workflow has multiple branches or when you need to access data from several steps back. You can map data in the following ways: \* Using the expressions editor. \* By dragging and dropping data from the \*\*INPUT\*\* pane into node parameters. This generates the expression for you. !\[Creating expressions in the UI\](/files/ka34oQo4czLSfjmcTHXk) For information on errors with mapping and linking items, refer to \[Item linking errors\](/build/work-with-data/reference-data/link-data-items/item-linking-errors.md). See \[Common ways of referencing\](/build/work-with-data/reference-data/reference-previous-nodes.md#common-ways-of-referencing). --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.asanatrigger.md). # Asana Trigger \[Asana\](https://asana.com/) is a web and mobile application designed to help teams organize, track, and manage their work. {% hint style="info" %} \*\*Credentials\*\* You can find authentication information for this node \[here\](/integrations/builtin/credentials/asana.md). {% endhint %} {% hint style="info" %} \*\*Examples and templates\*\* For usage examples and templates to help you get started, refer to n8n's \[Asana Trigger integrations\](https://n8n.io/integrations/asana-trigger/) page. {% endhint %} ## Events [](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.asanatrigger.md#events) \* New Asana event ## Related resources [](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.asanatrigger.md#related-resources) n8n provides an app node for Asana. You can find the node docs \[here\](/integrations/builtin/app-nodes/n8n-nodes-base.asana.md). View \[example workflows and related content\](https://n8n.io/integrations/asana-trigger/) on n8n's website. Refer to \[Asana's documentation\](https://developers.asana.com/reference/rest-api-reference) for details about their API. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider.md). # Use a cloud provider Self-host with Docker Compose: \* \[Digital Ocean\](/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-digital-ocean.md) \* \[Heroku\](/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-heroku.md) \* \[Hetzner Cloud\](/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-hetzner.md) Self-host with Google Cloud Run (with access to n8n workflow tools for Google Workspace, e.g. Gmail, Drive): \* \[Google Cloud Run\](/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-google-cloud-run.md) Starting points for a Kubernetes setup: \* \[AWS\](/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-aws.md) \* \[Azure\](/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-azure.md) \* \[Google Kubernetes Engine (GKE)\](/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-google-kubernetes.md) Configuration guides to help you get started on other platforms: \* \[Docker Compose\](/deploy/host-n8n/install-options/use-a-cloud-provider/use-docker-compose.md) --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/credentials/activecampaign.md). # ActiveCampaign credentials You can use these credentials to authenticate the following nodes: \* \[ActiveCampaign\](/integrations/builtin/app-nodes/n8n-nodes-base.activecampaign.md) \* \[Active Campaign Trigger\](/integrations/builtin/trigger-nodes/n8n-nodes-base.activecampaigntrigger.md) ## Supported authentication methods [](https://docs.n8n.io/integrations/builtin/credentials/activecampaign.md#supported-authentication-methods) \* API key ## Related resources [](https://docs.n8n.io/integrations/builtin/credentials/activecampaign.md#related-resources) Refer to \[ActiveCampaign's API documentation\](https://help.activecampaign.com/hc/en-us/sections/360005740979-ActiveCampaign-API-Resources) for more information about working with the service. ## Using API key [](https://docs.n8n.io/integrations/builtin/credentials/activecampaign.md#using-api-key) To configure this credential, you'll need an \[ActiveCampaign\](https://www.activecampaign.com/) account and: \* An \*\*API URL\*\* \* An \*\*API Key\*\* To get both and set up the credential: 1. In ActiveCampaign, select \*\*Settings\*\* (the gear cog icon) from the left menu. 2. Select \*\*Developer\*\*. 3. Copy the \*\*API URL\*\* and enter it in your n8n credential. 4. Copy the \*\*API Key\*\* and enter it in your n8n credential. Refer to \[How to obtain your ActiveCampaign API URL and Key\](https://help.activecampaign.com/hc/en-us/articles/207317590-Getting-started-with-the-API#h\_01HJ6REM2YQW19KYPB189726ST) for more information or for instructions on resetting your API key. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.chargebeetrigger.md). # Chargebee Trigger \[Chargebee\](https://www.chargebee.com/) is a billing platform for subscription based SaaS and eCommerce businesses. Chargebee integrates with payment gateways to let you automate recurring payment collection along with invoicing, taxes, accounting, email notifications, SaaS Metrics and customer management. {% hint style="info" %} \*\*Credentials\*\* You can find authentication information for this node \[here\](/integrations/builtin/credentials/chargebee.md). {% endhint %} {% hint style="info" %} \*\*Examples and templates\*\* For usage examples and templates to help you get started, refer to n8n's \[Chargebee Trigger integrations\](https://n8n.io/integrations/chargebee-trigger/) page. {% endhint %} ## Add webhook URL in Chargebee [](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.chargebeetrigger.md#add-webhook-url-in-chargebee) To add a Webhook URL in Chargebee: 1. Open your Chargebee dashboard. 2. Go to \*\*Settings\*\* > \*\*Configure Chargebee\*\*. 3. Scroll down and select \*\*Webhooks\*\*. 4. Select the \*\*Add Webhook\*\* button. 5. Enter the \*\*Webhook Name\*\* and the \*\*Webhook URL\*\*. 6. Select \*\*Create\*\*. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.coppertrigger.md). # Copper Trigger \[Copper\](https://www.copper.com/) is a CRM that focuses on strong integration with Google Workspace. It's mainly targeted towards small and medium-sized businesses. {% hint style="info" %} \*\*Credentials\*\* You can find authentication information for this node \[here\](/integrations/builtin/credentials/copper.md). {% endhint %} {% hint style="info" %} \*\*Examples and templates\*\* For usage examples and templates to help you get started, refer to n8n's \[Copper Trigger integrations\](https://n8n.io/integrations/copper-trigger/) page. {% endhint %} ## Events [](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.coppertrigger.md#events) \* Delete \* New \* Update ## Related resources [](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.coppertrigger.md#related-resources) n8n provides an app node for Copper. You can find the node docs \[here\](/integrations/builtin/app-nodes/n8n-nodes-base.copper.md). View \[example workflows and related content\](https://n8n.io/integrations/copper-trigger/) on n8n's website. Refer to \[Copper's documentation\](https://developer.copper.com/) for details about their API. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/connect/create-nodes/plan-your-node/choose-a-node-type.md). # Choose a node type There are two node types you can build for n8n: trigger nodes and action nodes. Both types provide integrations with external services. ## Trigger nodes [](https://docs.n8n.io/connect/create-nodes/plan-your-node/choose-a-node-type.md#trigger-nodes) \[Trigger nodes\](#user-content-fn-1)\[^1\] start a workflow and supply the initial data. A workflow can contain multiple trigger nodes but with each execution, only one of them will execute, depending on the triggering event. There are three types of trigger nodes in n8n: | Type | Description | Example Nodes | | ------- | ------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Webhook | Nodes for services that support webhooks. These nodes listen for events and trigger workflows in real time. | \[Zendesk Trigger\](https://github.com/n8n-io/n8n/tree/master/packages/nodes-base/nodes/Zendesk), \[Telegram Trigger\](https://github.com/n8n-io/n8n/tree/master/packages/nodes-base/nodes/Telegram), \[Brevo Trigger\](https://github.com/n8n-io/n8n/tree/master/packages/nodes-base/nodes/Brevo) | | Polling | Nodes for services that don't support webhooks. These nodes periodically check for new data, triggering workflows when they detect updates. | \[Airtable Trigger\](https://github.com/n8n-io/n8n/tree/master/packages/nodes-base/nodes/Airtable), \[Gmail Trigger\](https://github.com/n8n-io/n8n/tree/master/packages/nodes-base/nodes/Google/Gmail), \[Google Sheet Trigger\](https://github.com/n8n-io/n8n/tree/master/packages/nodes-base/nodes/Google/Sheet), \[RssFeed Read Trigger\](https://github.com/n8n-io/n8n/tree/master/packages/nodes-base/nodes/RssFeedRead) | | Others | Nodes that handle real-time responses not related to HTTP requests or polling. This includes message queue nodes and time-based triggers. | \[AMQP Trigger\](https://github.com/n8n-io/n8n/tree/master/packages/nodes-base/nodes/Amqp), \[RabbitMQ Trigger\](https://github.com/n8n-io/n8n/tree/master/packages/nodes-base/nodes/RabbitMQ), \[MQTT Trigger\](https://github.com/n8n-io/n8n/tree/master/packages/nodes-base/nodes/MQTT), \[Schedule Trigger\](https://github.com/n8n-io/n8n/tree/master/packages/nodes-base/nodes/Schedule), \[Email Trigger (IMAP)\](https://github.com/n8n-io/n8n/tree/master/packages/nodes-base/nodes/EmailReadImap) | ## Action nodes [](https://docs.n8n.io/connect/create-nodes/plan-your-node/choose-a-node-type.md#action-nodes) Action nodes perform operations as part of your workflow. These can include manipulating data, and triggering events in other systems. \[^1\]: A trigger node is a special node responsible for executing the workflow in response to certain conditions. All production workflows need at least one trigger to determine when the workflow should run. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.googledrivetrigger.md). # Google Drive Trigger \[Google Drive\](https://drive.google.com) is a file storage and synchronization service developed by Google. It allows users to store files on their servers, synchronize files across devices, and share files. {% hint style="info" %} \*\*Credentials\*\* You can find authentication information for this node \[here\](/integrations/builtin/credentials/google.md). {% endhint %} {% hint style="info" %} \*\*Examples and templates\*\* For usage examples and templates to help you get started, refer to n8n's \[Google Drive Trigger integrations\](https://n8n.io/integrations/google-drive-trigger/) page. {% endhint %} {% hint style="info" %} \*\*Manual Executions vs. Activation\*\* On manual executions this node will return the last event matching its search criteria. If no event matches the criteria (for example because you are watching for files to be created but no files have been created so far), an error is thrown. Once saved and activated, the node will regularly check for any matching events and will trigger your workflow for each event found. {% endhint %} ## Common issues [](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.googledrivetrigger.md#common-issues) For common questions or issues and suggested solutions, refer to \[Common issues\](/integrations/builtin/trigger-nodes/n8n-nodes-base.googledrivetrigger/common-issues.md). --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.clockifytrigger.md). # Clockify Trigger \[Clockify\](https://clockify.me/) is a free time tracker and timesheet app for tracking work hours across projects. {% hint style="info" %} \*\*Credentials\*\* You can find authentication information for this node \[here\](/integrations/builtin/credentials/clockify.md). {% endhint %} {% hint style="info" %} \*\*Examples and templates\*\* For usage examples and templates to help you get started, refer to n8n's \[Clockify Trigger integrations\](https://n8n.io/integrations/clockify-trigger/) page. {% endhint %} This node uses the workflow timezone setting to specify the range of time entries starting time. Configure the timezone in your \[Workflow Settings\](/build/manage-workflows/configure-workflow-settings.md) if you want this trigger node to retrieve the right time entries. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.aitransform.md). # AI Transform Use the AI Transform node to generate code snippets based on your prompt. The AI is context-aware, understanding the workflow’s nodes and their data types. {% hint style="info" %} \*\*Feature availability\*\* Available only on \[Cloud plans\](/deploy/use-n8n-cloud.md). {% endhint %} ## Node parameters [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.aitransform.md#node-parameters) \### Instructions [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.aitransform.md#instructions) Enter your prompt for the AI and click the \*\*Generate code\*\* button to automatically populate the \*\*Transformation Code\*\*. For example, you can specify how you want to process or categorize your data. Refer to \[Writing good prompts\](/build/code-in-n8n/get-coding-help-from-ai.md#writing-good-prompts) for more information. The prompt should be in plain English and under 500 characters. ### Transformation Code [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.aitransform.md#transformation-code) The code snippet generated by the node is read-only. To edit this code, adjust your prompt in \*\*Instructions\*\* or copy and paste it into a \[Code\](/integrations/builtin/core-nodes/n8n-nodes-base.code.md) node. ## Templates and examples [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.aitransform.md#templates-and-examples) \[Browse AI Transform integration templates\](https://n8n.io/integrations/ai-transform) or \[search all templates\](https://n8n.io/workflows/) --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.convertkittrigger.md). # ConvertKit Trigger \[ConvertKit\](https://www.convertkit.com/) is a fully featured email marketing platform. Use ConvertKit to build an email list, send email broadcasts, automate sequences, create segments, and build landing pages. {% hint style="info" %} \*\*Credentials\*\* You can find authentication information for this node \[here\](/integrations/builtin/credentials/convertkit.md). {% endhint %} {% hint style="info" %} \*\*Examples and templates\*\* For usage examples and templates to help you get started, refer to n8n's \[ConvertKit Trigger integrations\](https://n8n.io/integrations/convertkit-trigger/) page. {% endhint %} ## Events [](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.convertkittrigger.md#events) \* Form subscribe \* Link click \* Product purchase \* Purchase created \* Purchase complete \* Sequence complete \* Sequence subscribe \* Subscriber activated \* Subscriber unsubscribe \* Tag add \* Tag Remove ## Related resources [](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.convertkittrigger.md#related-resources) n8n provides an app node for ConvertKit. You can find the node docs \[here\](/integrations/builtin/app-nodes/n8n-nodes-base.convertkit.md). View \[example workflows and related content\](https://n8n.io/integrations/convertkit-trigger/) on n8n's website. Refer to \[ConvertKit's documentation\](https://developers.kit.com/v4#introduction) for details about their API. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/credentials/adalo.md). # Adalo credentials You can use these credentials to authenticate the following nodes: \* \[Adalo\](/integrations/builtin/app-nodes/n8n-nodes-base.adalo.md) {% hint style="info" %} \*\*API access\*\* You need a Team or Business plan to use the Adalo APIs. {% endhint %} ## Supported authentication methods [](https://docs.n8n.io/integrations/builtin/credentials/adalo.md#supported-authentication-methods) \* API key ## Related resources [](https://docs.n8n.io/integrations/builtin/credentials/adalo.md#related-resources) Refer to \[Adalo's API collections documentation\](https://help.adalo.com/integrations/the-adalo-api/collections) for more information about working with the service. ## Using API key [](https://docs.n8n.io/integrations/builtin/credentials/adalo.md#using-api-key) To configure this credential, you'll need an \[Adalo\](https://www.adalo.com/) account and: \* An \*\*API Key\*\* \* An \*\*App ID\*\* To get these, create an Adalo app: 1. From the app dropdown in the top navigation, select \*\*CREATE NEW APP\*\*. 2. Select the App Layout type that makes sense for you and select \*\*Next\*\*. \* If you're new to using the product, Adalo recommend using \*\*Mobile Only\*\*. 3. Select a template to get started with or select \*\*Blank\*\*, then select \*\*Next\*\*. 4. Enter an \*\*App Name\*\*, like \`n8n integration\`. 5. If applicable, select the \*\*Team\*\* for the app. 6. Select branding colors. 7. Select \*\*Create\*\*. The app editor opens. 8. In the left menu, select \*\*Settings\*\* (the gear cog icon). 9. Select \*\*App Access\*\*. 10. In the \*\*API Key\*\* section, select \*\*Generate Key\*\*. \* If you don't have the correct plan level, you'll see a prompt to upgrade instead. 11. Copy the key and enter it as the \*\*API Key\*\* in your n8n credential. 12. The URL includes the \*\*App ID\*\* after \`https://app.adalo.com/apps/\`. For example, if the URL for your app is \`https://app.adalo.com/apps/b78bdfcf-48dc-4550-a474-dd52c19fc371/app-settings\`, \`b78bdfcf-48dc-4550-a474-dd52c19fc371\` is the App ID. Copy this value and enter it in your n8n credential. Refer to \[Creating an app\](https://help.adalo.com/design/designing-your-app/creating-an-app) for more information on creating apps in Adalo. Refer to \[The Adalo API\](https://help.adalo.com/integrations/the-adalo-api) for more information on generating API keys. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/credentials/bannerbear.md). # Bannerbear credentials You can use these credentials to authenticate the following nodes: \* \[Bannerbear\](/integrations/builtin/app-nodes/n8n-nodes-base.bannerbear.md) ## Prerequisites [](https://docs.n8n.io/integrations/builtin/credentials/bannerbear.md#prerequisites) Create a \[Bannerbear\](https://www.BannerBear.com/) account. ## Supported authentication methods [](https://docs.n8n.io/integrations/builtin/credentials/bannerbear.md#supported-authentication-methods) \* API key ## Related resources [](https://docs.n8n.io/integrations/builtin/credentials/bannerbear.md#related-resources) Refer to \[Bannerbear's API documentation\](https://developers.bannerbear.com/) for more information about the service. ## Using API key [](https://docs.n8n.io/integrations/builtin/credentials/bannerbear.md#using-api-key) To configure this credential, you'll need: \* A \*\*Project API Key\*\*: To generate an API key, first create a Bannerbear project. Go to \*\*Settings > API Key\*\* to view the API key. Refer to the \[Bannerbear API Authentication documentation\](https://developers.bannerbear.com/#authentication) for more detailed steps. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/credentials/acuityscheduling.md). # Acuity Scheduling credentials You can use these credentials to authenticate the following nodes: \* \[Acuity Scheduling Trigger\](/integrations/builtin/trigger-nodes/n8n-nodes-base.acuityschedulingtrigger.md) ## Prerequisites [](https://docs.n8n.io/integrations/builtin/credentials/acuityscheduling.md#prerequisites) Create an \[Acuity Scheduling\](https://acuityscheduling.com/) account. ## Supported authentication methods [](https://docs.n8n.io/integrations/builtin/credentials/acuityscheduling.md#supported-authentication-methods) \* API key \* OAuth2 ## Related resources [](https://docs.n8n.io/integrations/builtin/credentials/acuityscheduling.md#related-resources) Refer to \[Acuity's API documentation\](https://developers.acuityscheduling.com/reference/quick-start) for more information about working with the service. ## Using API key [](https://docs.n8n.io/integrations/builtin/credentials/acuityscheduling.md#using-api-key) To configure this credential, you'll need: \* A numeric \*\*User ID\*\* \* An \*\*API Key\*\* Refer to the \[Acuity API Quick Start authentication instructions\](https://developers.acuityscheduling.com/reference/quick-start#authentication) to generate an API key and view your User ID. ## Using OAuth2 [](https://docs.n8n.io/integrations/builtin/credentials/acuityscheduling.md#using-oauth2) {% hint style="info" %} \*\*Note for n8n Cloud users\*\* Cloud users don't need to provide connection details. Select \*\*Connect my account\*\* to connect through your browser. {% endhint %} If you need to set this up from scratch, complete the \[Acuity OAuth2 Account Registration page\](https://acuityscheduling.com/oauth2/register). Use the \*\*Client ID\*\* and \*\*Client Secret\*\* provided from that registration. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/credentials/actionnetwork.md). # Action Network credentials You can use these credentials to authenticate the following nodes: \* \[Action Network\](/integrations/builtin/app-nodes/n8n-nodes-base.actionnetwork.md) ## Supported authentication methods [](https://docs.n8n.io/integrations/builtin/credentials/actionnetwork.md#supported-authentication-methods) \* API key ## Related resources [](https://docs.n8n.io/integrations/builtin/credentials/actionnetwork.md#related-resources) Refer to \[Action Network's API documentation\](https://actionnetwork.org/docs/) for more information about working with the service. ## Using API key [](https://docs.n8n.io/integrations/builtin/credentials/actionnetwork.md#using-api-key) To configure this credential, you'll need an \[Action Network\](https://actionnetwork.org/) account with \[API key access enabled\](#request-api-access) and: \* An \*\*API Key\*\* To get an API key: 1. Log in to your Action Network account. 2. From the \*\*Start Organizing\*\* menu, select \*\*Details >\*\* \[\*\*API & Sync\*\*\](https://actionnetwork.org/apis). 3. Select the list you want to generate an API key for. 4. Generate an API key for that list. 5. Copy the \*\*API Key\*\* and enter it in your n8n credential. Refer to the \[Action Network API Authentication instructions\](https://actionnetwork.org/docs/v2/#auth) for more information. ## Request API access [](https://docs.n8n.io/integrations/builtin/credentials/actionnetwork.md#request-api-access) Each user account and group on the Action Network has a separate API key to access that user or group's data. You must explicitly request API access from Action Network, which you can do in one of two ways: 1. If you're already a paying customer, \[contact them\](https://actionnetwork.org/contact) to request partner access. Partner access includes API key access. 2. If you're a developer, \[request a developer account\](https://actionnetwork.org/developers). Once your account request is granted, you'll have API key access. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/deploy/host-n8n/configure-n8n.md). # Configure n8n {% content-ref url="/pages/D6nQbN5MsPG3tDAln3tB" %} \[Basic configuration\](/deploy/host-n8n/configure-n8n/basic-configuration.md) {% endcontent-ref %} {% content-ref url="/pages/Q9ye9YCvkrdBZn6tvKjF" %} \[Choose n8n's database\](/deploy/host-n8n/configure-n8n/choose-n8ns-database.md) {% endcontent-ref %} {% content-ref url="/pages/O1byznxN1LxOdaAHa0aS" %} \[External hooks\](/deploy/host-n8n/configure-n8n/external-hooks.md) {% endcontent-ref %} {% content-ref url="/pages/Cv5f734flyiKZxQhF1Ct" %} \[Use the command line\](/deploy/host-n8n/configure-n8n/use-the-command-line.md) {% endcontent-ref %} {% content-ref url="/pages/7Emph05tu5JellItH8LV" %} \[User management\](/deploy/host-n8n/configure-n8n/user-management.md) {% endcontent-ref %} {% content-ref url="/pages/UvywXurTNZ4KD632dxJK" %} \[Change instance owner email\](/deploy/host-n8n/configure-n8n/change-instance-owner-email.md) {% endcontent-ref %} {% content-ref url="/pages/5zJ5MrOPv0rnpgvXkac8" %} \[Manage settings using environment variables\](/deploy/host-n8n/configure-n8n/manage-settings-using-environment-variables.md) {% endcontent-ref %} {% content-ref url="/pages/TvMvdEdlJ4JBXsxwF1Pc" %} \[Set up task runners\](/deploy/host-n8n/configure-n8n/set-up-task-runners.md) {% endcontent-ref %} {% content-ref url="/pages/Ljv5adv9oCTKuAvqhHNb" %} \[Manage your license\](/deploy/host-n8n/configure-n8n/manage-your-license.md) {% endcontent-ref %} {% content-ref url="/pages/9MH78dGe8tTsfGxGqLNY" %} \[Security\](/deploy/host-n8n/configure-n8n/security.md) {% endcontent-ref %} {% content-ref url="/pages/SZsPeev6baoyRzZBcevG" %} \[Scaling\](/deploy/host-n8n/configure-n8n/scaling.md) {% endcontent-ref %} --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.filter.md). # Filter Filter items based on a condition. If the item meets the condition, the Filter node passes it on to the next node in the Filter node output. If the item doesn't meet the condition, the Filter node omits the item from its output. ## Node parameters [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.filter.md#node-parameters) Create filter comparison \*\*Conditions\*\* to perform your filter. \* Use the data type dropdown to select the data type and comparison operation type for your condition. For example, to filter for dates after a particular date, select \*\*Date & Time > is after\*\*. \* The fields and values to enter into the condition change based on the data type and comparison you select. Refer to \[Available data type comparisons\](#available-data-type-comparisons) for a full list of all comparisons by data type. Select \*\*Add condition\*\* to create more conditions. ### Combining conditions [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.filter.md#combining-conditions) You can choose to keep items: \* When they meet all conditions: Create two or more conditions and select \*\*AND\*\* in the dropdown between them. \* When they meet any of the conditions: Create two or more conditions and select \*\*OR\*\* in the dropdown between them. You can't create a mix of AND and OR rules. ## Node options [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.filter.md#node-options) \* \*\*Ignore Case\*\*: Whether to ignore letter case (turned on) or be case sensitive (turned off). \* \*\*Less Strict Type Validation\*\*: Whether you want n8n to attempt to convert value types based on the operator you choose (turned on) or not (turned off). Turn this on when facing a "wrong type:" error in your node. ## Templates and examples [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.filter.md#templates-and-examples) \[Browse Filter integration templates\](https://n8n.io/integrations/filter) or \[search all templates\](https://n8n.io/workflows/) ## String [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.filter.md#string) String data type supports these comparisons: \* exists \* does not exist \* is empty \* is not empty \* is equal to \* is not equal to \* contains \* does not contain \* starts with \* does not start with \* ends with \* does not end with \* matches regex \* does not match regex ## Number [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.filter.md#number) Number data type supports these comparisons: \* exists \* does not exist \* is empty \* is not empty \* is equal to \* is not equal to \* is greater than \* is less than \* is greater than or equal to \* is less than or equal to ## Date & Time [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.filter.md#date-and-time) Date & Time data type supports these comparisons: \* exists \* does not exist \* is empty \* is not empty \* is equal to \* is not equal to \* is after \* is before \* is after or equal to \* is before or equal to ## Boolean [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.filter.md#boolean) Boolean data type supports these comparisons: \* exists \* does not exist \* is empty \* is not empty \* is true \* is false \* is equal to \* is not equal to ## Array [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.filter.md#array) Array data type supports these comparisons: \* exists \* does not exist \* is empty \* is not empty \* contains \* does not contain \* length equal to \* length not equal to \* length greater than \* length less than \* length greater than or equal to \* length less than or equal to ## Object [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.filter.md#object) Object data type supports these comparisons: \* exists \* does not exist \* is empty \* is not empty --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/credentials/asana.md). # Asana credentials You can use these credentials to authenticate the following nodes: \* \[Asana\](/integrations/builtin/app-nodes/n8n-nodes-base.asana.md) \* \[Asana Trigger\](/integrations/builtin/trigger-nodes/n8n-nodes-base.asanatrigger.md) ## Supported authentication methods [](https://docs.n8n.io/integrations/builtin/credentials/asana.md#supported-authentication-methods) \* Access token \* OAuth2 ## Related resources [](https://docs.n8n.io/integrations/builtin/credentials/asana.md#related-resources) Refer to \[Asana's Developer Guides\](https://developers.asana.com/docs/overview) for more information about working with the service. ## Using Access token [](https://docs.n8n.io/integrations/builtin/credentials/asana.md#using-access-token) To configure this credential, you'll need an \[Asana\](https://asana.com/) account and: \* A Personal \*\*Access Token\*\* (PAT) To get your PAT: 1. Open the Asana \[developer console\](https://app.asana.com/0/my-apps). 2. In the \*\*Personal access tokens\*\* section, select \*\*Create new token\*\*. 3. Enter a \*\*Token name\*\*, like \`n8n integration\`. 4. Check the box to agree to the \*\*Asana API terms\*\*. 5. Select \*\*Create token\*\*. 6. Copy the token and enter it as the \*\*Access Token\*\* in your n8n credential. Refer to the \[Asana Quick start guide\](https://developers.asana.com/docs/quick-start#setup) for more information. ## Using OAuth2 [](https://docs.n8n.io/integrations/builtin/credentials/asana.md#using-oauth2) To configure this credential, you'll need an \[Asana\](https://asana.com/) account. {% hint style="info" %} \*\*Note for n8n Cloud users\*\* Cloud users don't need to provide connection details. Select \*\*Connect my account\*\* to connect through your browser. {% endhint %} If you're \[self-hosting\](/deploy/host-n8n.md) n8n, you'll need to register an application to set up OAuth: 1. Open the Asana \[developer console\](https://app.asana.com/0/my-apps). 2. In the \*\*My apps\*\* section, select \*\*Create new app\*\*. 3. Enter an \*\*App name\*\* for your application, like \`n8n integration\`. 4. Select a purpose for your app. 5. Check the box to agree to the \*\*Asana API terms\*\*. 6. Select \*\*Create app\*\*. The page opens to the app's \*\*Basic Information\*\*. 7. Select \*\*OAuth\*\* from the left menu. 8. In n8n, copy the \*\*OAuth Redirect URL\*\*. 9. In Asana, select \*\*Add redirect URL\*\* and enter the URL you copied from n8n. 10. Copy the \*\*Client ID\*\* from Asana and enter it in your n8n credential. 11. Copy the \*\*Client Secret\*\* from Asana and enter it in your n8n credential. Refer to the \[Asana OAuth register an application documentation\](https://developers.asana.com/docs/oauth#register-an-application) for more information. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/credentials/alienvault.md). # AlienVault credentials You can use these credentials to authenticate when using the \[HTTP Request node\](/integrations/builtin/core-nodes/n8n-nodes-base.httprequest.md) to make a \[Custom API call\](/integrations/builtin/custom-api-actions-for-existing-nodes.md). ## Prerequisites [](https://docs.n8n.io/integrations/builtin/credentials/alienvault.md#prerequisites) Create an \[AlienVault\](https://otx.alienvault.com) account. ## Supported authentication methods [](https://docs.n8n.io/integrations/builtin/credentials/alienvault.md#supported-authentication-methods) \* API key ## Related resources [](https://docs.n8n.io/integrations/builtin/credentials/alienvault.md#related-resources) Refer to \[AlienVault's documentation\](https://otx.alienvault.com/api) for more information about the service. This is a credential-only node. Refer to \[Custom API operations\](/integrations/builtin/custom-api-actions-for-existing-nodes.md) to learn more. View \[example workflows and related content\](https://n8n.io/integrations/alienvault/) on n8n's website. ## Using API key [](https://docs.n8n.io/integrations/builtin/credentials/alienvault.md#using-api-key) To configure this credential, you'll need: \* An \*\*OTX Key\*\*: Once you have an AlienVault account, the \*\*OTX Key\*\* displays in your \*\*Settings\*\*. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/connect/create-nodes/build-your-node/set-up-your-development-environment.md). # Set up your development environment This document lists the essential dependencies for developing a node, as well as guidance on setting up your editor. ## Requirements [](https://docs.n8n.io/connect/create-nodes/build-your-node/set-up-your-development-environment.md#requirements) To build and test a node, you need: \* Node.js and npm. Minimum version Node 22.22.0. You can find instructions on how to install both using nvm (Node Version Manager) for Linux, Mac, and WSL (Windows Subsystem for Linux) \[here\](https://github.com/nvm-sh/nvm). For Windows users, refer to Microsoft's guide to \[Install NodeJS on Windows\](https://docs.microsoft.com/en-us/windows/dev-environment/javascript/nodejs-on-windows). \* A local instance of n8n. You can install n8n with \`npm install n8n -g\`, then follow the steps in \[Run your node locally\](/connect/create-nodes/test-your-node/run-your-node-locally.md) to test your node. \* When \[building verified community nodes\](/integrations/community-nodes/building-community-nodes.md), you must use the \[\`n8n-node\` tool\](/connect/create-nodes/build-your-node/using-the-n8n-node-tool.md) to create and test your node. You should also have \[git\](https://git-scm.com/) installed. This allows you to clone and use the \[n8n-node-starter\](https://github.com/n8n-io/n8n-nodes-starter). ## Editor setup [](https://docs.n8n.io/connect/create-nodes/build-your-node/set-up-your-development-environment.md#editor-setup) n8n recommends using \[VS Code\](https://code.visualstudio.com/) as your editor. Install these extensions: \* \[ESLint\](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint) \* \[EditorConfig\](https://marketplace.visualstudio.com/items?itemName=EditorConfig.EditorConfig) \* \[Prettier\](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode) By using VS Code and these extensions, you get access to the n8n node linter's warnings as you code. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/credentials/agilecrm.md). # Agile CRM credentials You can use these credentials to authenticate the following nodes: \* \[Agile CRM\](/integrations/builtin/app-nodes/n8n-nodes-base.agilecrm.md) ## Prerequisites [](https://docs.n8n.io/integrations/builtin/credentials/agilecrm.md#prerequisites) Create an \[Agile CRM\](https://www.agilecrm.com/) account. ## Supported authentication methods [](https://docs.n8n.io/integrations/builtin/credentials/agilecrm.md#supported-authentication-methods) \* API key ## Related resources [](https://docs.n8n.io/integrations/builtin/credentials/agilecrm.md#related-resources) Refer to \[Agile CRM's API documentation\](https://www.agilecrm.com/api) for more information about working with the service. ## Using API key [](https://docs.n8n.io/integrations/builtin/credentials/agilecrm.md#using-api-key) To configure this credential, you'll need: \* An \*\*Email Address\*\* registered with AgileCRM \* A REST \*\*API Key\*\*: Access your Agile CRM API key through \*\*Admin Settings > Developers & API >\*\* \[\*\*REST API key\*\*\](https://github.com/agilecrm/rest-api?tab=readme-ov-file#api-key). \* An Agile CRM \*\*Subdomain\*\* (for example, \`n8n\`) --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.activationtrigger.md). # Activation Trigger The Activation Trigger node gets triggered when an event gets fired by n8n or a workflow. {% hint style="warning" %} n8n has deprecated the Activation Trigger node and replaced it with two new nodes: the \[n8n Trigger node\](/integrations/builtin/core-nodes/n8n-nodes-base.n8ntrigger.md) and the \[Workflow Trigger node\](/integrations/builtin/core-nodes/n8n-nodes-base.workflowtrigger.md). For more details, check out the entry in the \[breaking changes\](https://github.com/n8n-io/n8n/blob/master/packages/cli/BREAKING-CHANGES.md#01170) page. {% endhint %} {% hint style="info" %} \*\*Keep in mind\*\* If you want to use the Activation Trigger node for a workflow, add the node to the workflow. You don't have to create a separate workflow. {% endhint %} The Activation Trigger node gets triggered for the workflow that it gets added to. You can use the Activation Trigger node to trigger a workflow to notify the state of the workflow. ## Node parameters [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.activationtrigger.md#node-parameters) \* Events \* \*\*Activation\*\*: Run when the workflow gets published \* \*\*Start\*\*: Run when n8n starts or restarts \* \*\*Update\*\*: Run when the workflow gets saved while it's active ## Templates and examples [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.activationtrigger.md#templates-and-examples) \[Browse Activation Trigger node documentation integration templates\](https://n8n.io/integrations/activation-trigger) or \[search all templates\](https://n8n.io/workflows/) --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.compression.md). # Compression Use the Compression node to compress and decompress files. Supports Zip and Gzip formats. ## Node parameters [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.compression.md#node-parameters) {% hint style="info" %} \*\*This node can be used as an AI tool\*\* This node can be used to enhance the capabilities of an AI agent. When used in this way, many parameters can be set automatically, or with information directed by AI - find out more in the \[AI tool parameters documentation\](/build/integrate-ai/ai-examples/use-ai-for-parameters.md). {% endhint %} The node parameters depend on which \*\*Operation\*\* you select. Choose to: \* \*\*Compress\*\*: Create a compressed file from your input data. \* \*\*Decompress\*\*: Decompress an existing compressed file. Refer to the sections below for parameters specific to each \*\*Operation\*\*. ### Compress [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.compression.md#compress) \* \*\*Input Binary Field(s)\*\*: Enter the name of the fields in the input data that contain the binary files you want to compress. To compress more than one file, use a comma-separated list. \* \*\*Output Format\*\*: Choose whether to format the compressed output as \*\*Zip\*\* or \*\*Gzip\*\*. \* \*\*File Name\*\*: Enter the name of the zip file the node creates. \* \*\*Put Output File in Field\*\*: Enter the name of the field in the output data to contain the file. ### Decompress [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.compression.md#decompress) \* \*\*Put Output File in Field\*\*: Enter the name of the fields in the input data that contain the binary files you want to decompress. To decompress more than one file, use a comma-separated list. \* \*\*Output Prefix\*\*: Enter a prefix to add to the output file name. ## Templates and examples [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.compression.md#templates-and-examples) \[Browse n8n-nodes-base.compression integration templates\](https://n8n.io/integrations/compression) or \[search all templates\](https://n8n.io/workflows/) --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/credentials/amqp.md). # AMQP credentials You can use these credentials to authenticate the following nodes: \* \[AMQP Sender\](/integrations/builtin/app-nodes/n8n-nodes-base.amqp.md) \* \[AMQP Trigger\](/integrations/builtin/trigger-nodes/n8n-nodes-base.amqptrigger.md) ## Prerequisites [](https://docs.n8n.io/integrations/builtin/credentials/amqp.md#prerequisites) Install an AMQP 1.0-compatible message broker like \[ActiveMQ\](https://activemq.apache.org/). Refer to \[AMQP Products\](https://www.amqp.org/about/examples) for a list of options. ## Supported authentication methods [](https://docs.n8n.io/integrations/builtin/credentials/amqp.md#supported-authentication-methods) \* AMQP connection ## Related resources [](https://docs.n8n.io/integrations/builtin/credentials/amqp.md#related-resources) Advanced Message Queuing Protocol (AMQP) is an open standard application layer protocol for message-oriented middleware. The defining features of AMQP are message orientation, queuing, routing, reliability and security. Refer to the \[OASIS AMQP Version 1.0 Standard\](https://docs.oasis-open.org/amqp/core/v1.0/amqp-core-overview-v1.0.html) for more information. Refer to your provider's documentation for more information about the service. Refer to \[ActiveMQ's API documentation\](https://activemq.apache.org/components/classic/documentation/rest) as one example. ## Using AMQP connection [](https://docs.n8n.io/integrations/builtin/credentials/amqp.md#using-amqp-connection) To configure this credential, you'll need: \* A \*\*Hostname\*\*: Enter the hostname of your AMQP message broker. \* A \*\*Port\*\*: Enter the port number the connection should use. \* A \*\*User\*\*: Enter the name of the user to establish the connection as. \* For example, the default username in ActiveMQ is \`admin\`. \* A \*\*Password\*\*: Enter the user's password. \* For example, the default password in ActiveMQ is \`admin\`. \* \*Optional:\* \*\*Transport Type\*\*: Enter either \`tcp\` or \`tls\`. Refer to your provider's documentation for more detailed instructions. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/credentials/azurecosmosdb.md). # Azure Cosmos DB credentials You can use these credentials to authenticate the following nodes: \* \[Azure Cosmos DB\](/integrations/builtin/app-nodes/n8n-nodes-base.azurecosmosdb.md) ## Prerequisites [](https://docs.n8n.io/integrations/builtin/credentials/azurecosmosdb.md#prerequisites) \* Create an \[Azure\](https://azure.microsoft.com) subscription. \* Create an \[Azure Cosmos DB account\](https://learn.microsoft.com/en-us/azure/cosmos-db/how-to-manage-database-account). ## Supported authentication methods [](https://docs.n8n.io/integrations/builtin/credentials/azurecosmosdb.md#supported-authentication-methods) \* API Key ## Related resources [](https://docs.n8n.io/integrations/builtin/credentials/azurecosmosdb.md#related-resources) Refer to \[Azure Cosmos DB's API documentation\](https://learn.microsoft.com/en-us/rest/api/cosmos-db/) for more information about the service. ## Using API Key [](https://docs.n8n.io/integrations/builtin/credentials/azurecosmosdb.md#using-api-key) To configure this credential, you'll need: \* An \*\*Account\*\*: The name of your Azure Cosmos DB account. \* A \*\*Key\*\*: A key for your Azure Cosmos DB account. Select \*\*Overview\*\* > \*\*Keys\*\* in the Azure portal for your Azure Cosmos DB. You can use either of the two account keys for this purpose. \* A \*\*Database\*\*: The name of the Azure Cosmos DB database to connect to. Refer to \[Get your primary key | Microsoft\](https://learn.microsoft.com/en-us/previous-versions/azure/cosmos-db/how-to-obtain-keys?tabs=azure-portal) for more detailed steps. ## Common issues [](https://docs.n8n.io/integrations/builtin/credentials/azurecosmosdb.md#common-issues) Here are the known common errors and issues with Azure Cosmos DB credentials. When attempting to add credentials for a Microsoft360 or Microsoft Entra account, users may see a message when following the procedure that this action requires admin approval. This message will appear when the account attempting to grant permissions for the credential is managed by a Microsoft Entra. In order to issue the credential, the administrator account needs to grant permission to the user (or "tenant") for that application. The procedure for this is covered in the \[Microsoft Entra documentation\](https://learn.microsoft.com/en-us/entra/identity/enterprise-apps/grant-admin-consent). --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.kobotoolboxtrigger.md). # KoboToolbox Trigger \[KoboToolbox\](https://www.kobotoolbox.org/) is a field survey and data collection tool to design interactive forms to be completed offline from mobile devices. It's available both as a free cloud solution or as a self-hosted version. {% hint style="info" %} \*\*Credentials\*\* You can find authentication information for this node \[here\](/integrations/builtin/credentials/kobotoolbox.md). {% endhint %} {% hint style="info" %} \*\*Examples and templates\*\* For usage examples and templates to help you get started, refer to n8n's \[KoboToolbox Trigger integrations\](https://n8n.io/integrations/kobotoolbox-trigger/) page. {% endhint %} This node starts a workflow upon new submissions of a specified form. The trigger node handles the creation/deletion of the hook, so you don't need to do any setup in KoboToolbox. It works the same way as the Get Submission operation in the \[KoboToolbox\](/integrations/builtin/app-nodes/n8n-nodes-base.kobotoolbox.md) node, including supporting the same reformatting options. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.figmatrigger.md). # Figma Trigger (Beta) \[Figma\](https://www.figma.com/) is a prototyping tool which is primarily web-based, with more offline features enabled by desktop applications for macOS and Windows. {% hint style="warning" %} \*\*Supported Figma Plans\*\* Figma doesn't support webhooks on the free "Starter" plan. Your team needs to be on the "Professional" plan to use this node. {% endhint %} {% hint style="info" %} \*\*Credentials\*\* You can find authentication information for this node \[here\](/integrations/builtin/credentials/figma.md). {% endhint %} {% hint style="info" %} \*\*Examples and templates\*\* For usage examples and templates to help you get started, refer to n8n's \[Figma Trigger integrations\](https://n8n.io/integrations/figma-trigger-beta/) page. {% endhint %} ## Events [](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.figmatrigger.md#events) \* \*\*File Commented\*\*: Triggers when someone comments on a file. \* \*\*File Deleted\*\*: Triggers when someone deletes an individual file, but not when someone deletes an entire folder with all files. \* \*\*File Updated\*\*: Triggers when someone saves or deletes a file. A save occurs when someone closes a file within 30 seconds after making changes. \* \*\*File Version Updated\*\*: Triggers when someone creates a named version in the version history of a file. \* \*\*Library Publish\*\*: Triggers when someone publishes a library file. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.ftp.md). # FTP The FTP node is useful to access and upload files to an FTP or SFTP server. {% hint style="info" %} \*\*Credentials\*\* You can find authentication information for this node \[here\](/integrations/builtin/credentials/ftp.md). {% endhint %} To connect to an SFTP server, use an SFTP credential. Refer to \[FTP credentials\](/integrations/builtin/credentials/ftp.md) for more information. ## Operations [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.ftp.md#operations) \* \[\*\*Delete\*\*\](#delete) a file or folder \* \[\*\*Download\*\*\](#download) a file \* \[\*\*List\*\*\](#list) folder content \* \[\*\*Rename\*\*\](#rename) or move a file or folder \* \[\*\*Upload\*\*\](#upload) a file {% hint style="info" %} \*\*Uploading files\*\* To attach a file for upload, you'll need to use an extra node such as the \[Read/Write Files from Disk\](/integrations/builtin/core-nodes/n8n-nodes-base.readwritefile.md) node or the \[HTTP Request\](/integrations/builtin/core-nodes/n8n-nodes-base.httprequest.md) node to pass the file as a data property. {% endhint %} ## Delete [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.ftp.md#delete) This operation includes one parameter: \*\*Path\*\*. Enter the remote path that you would like to connect to. ### Delete options [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.ftp.md#delete-options) The delete operation adds one new option: \*\*Folder\*\*. If you turn this option on, the node can delete both folders and files. This configuration also displays one more option: \* \*\*Recursive\*\*: If you turn this option on and you delete a folder or directory, the node will delete all files and directories within the target directory. ## Download [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.ftp.md#download) Configure this operation with these parameters: \* \*\*Path\*\*: Enter the remote path that you would like to connect to. \* \*\*Put Output File in Field\*\*: Enter the name of the output binary field to put the file in. {% hint style="info" %} \*\*Concurrent Reads with SFTP\*\* When using SFTP, you can enable concurrent reads. This improves download speeds but may not be supported by all SFTP servers. {% endhint %} ## List [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.ftp.md#list) Configure this operation with these parameters: \* \*\*Path\*\*: Enter the remote path that you would like to connect to. \* \*\*Recursive\*\*: Select whether to return an object representing all directories / objects recursively found within the FTP/SFTP server (turned on) or not (turned off). ## Rename [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.ftp.md#rename) Configure this operation with these parameters: \* \*\*Old Path\*\*: Enter the existing path of the file you'd like to rename in this field. \* \*\*New Path\*\*: Enter the new path for the renamed file in this field. ### Rename options [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.ftp.md#rename-options) This operation adds one new option: \*\*Create Directories\*\*. If you turn this option on, the node will recursively create the destination directory when renaming an existing file or folder. ## Upload [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.ftp.md#upload) Configure this operation with these parameters: \* \*\*Path\*\*: Enter the remote path that you would like to connect to. \* \*\*Binary File\*\*: Select whether you'll upload a binary file (turned on) or enter text content to be uploaded (turned off). Other parameters depend on your selection in this field. \* \*\*Input Binary Field\*\*: Displayed if you turn on \*\*Binary File\*\*. Enter the name of the input binary field that contains the file you'll upload in this field. \* \*\*File Content\*\*: Displayed if you turn off \*\*Binary File\*\* Enter the text content of the file you'll upload in this field. {% hint style="info" %} \*\*Uploading files\*\* To attach a file for upload, you'll need to use an extra node such as the \[Read/Write Files from Disk\](/integrations/builtin/core-nodes/n8n-nodes-base.readwritefile.md) node or the \[HTTP Request\](/integrations/builtin/core-nodes/n8n-nodes-base.httprequest.md) node to pass the file as a data property. {% endhint %} ## Templates and examples [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.ftp.md#templates-and-examples) \[Browse FTP integration templates\](https://n8n.io/integrations/ftp) or \[search all templates\](https://n8n.io/workflows/) --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executiondata.md). # Execution Data Use this node to save metadata for workflow executions. You can then search by this data in the \*\*Executions\*\* list. You can retrieve custom execution data during workflow execution using the Code node. Refer to \[Custom executions data\](/build/understand-workflows/understand-executions/customize-executions-data.md) for more information. {% hint style="info" %} \*\*Feature availability\*\* Custom executions data is available on: \* Cloud: Pro, Enterprise \* Self-Hosted: Enterprise, registered Community {% endhint %} ## Operations [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executiondata.md#operations) \* Save Execution Data for Search ## Data to Save [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executiondata.md#data-to-save) Add a \*\*Saved Field\*\* for each key/value pair of metadata you'd like to save. ## Limitations [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executiondata.md#limitations) The Execution Data node has the following restrictions when storing execution metadata: \* \`key\`: limited to 50 characters \* \`value\`: limited to 512 characters If either the \`key\` or \`value\` exceed the above limitations, n8n truncates to their maximum length and outputs a log entry. ## Templates and examples [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executiondata.md#templates-and-examples) \[Browse Execution Data integration templates\](https://n8n.io/integrations/execution-data) or \[search all templates\](https://n8n.io/workflows/) --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.awssnstrigger.md). # AWS SNS Trigger \[AWS SNS\](https://aws.amazon.com/sns/) is a notification service provided as part of Amazon Web Services. It provides a low-cost infrastructure for the mass delivery of messages, predominantly to mobile users. {% hint style="info" %} \*\*Credentials\*\* You can find authentication information for this node \[here\](/integrations/builtin/credentials/aws.md). {% endhint %} {% hint style="info" %} \*\*Examples and templates\*\* For usage examples and templates to help you get started, refer to n8n's \[AWS SNS Trigger integrations\](https://n8n.io/integrations/aws-sns-trigger/) page. {% endhint %} ## Events [](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.awssnstrigger.md#events) \* New AWS SNS event ## Related resources [](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.awssnstrigger.md#related-resources) n8n provides an app node for AWS SNS. You can find the node docs \[here\](/integrations/builtin/app-nodes/n8n-nodes-base.awssns.md). View \[example workflows and related content\](https://n8n.io/integrations/aws-sns-trigger/) on n8n's website. Refer to \[AWS SNS's documentation\](https://docs.aws.amazon.com/sns/latest/api/welcome.html) for details about their API. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/credentials/apitemplateio.md). # APITemplate.io credentials You can use these credentials to authenticate the following nodes: \* \[APITemplate.io\](/integrations/builtin/app-nodes/n8n-nodes-base.apitemplateio.md) ## Prerequisites [](https://docs.n8n.io/integrations/builtin/credentials/apitemplateio.md#prerequisites) Create an \[APITemplate.io\](https://apitemplate.io/) account. ## Supported authentication methods [](https://docs.n8n.io/integrations/builtin/credentials/apitemplateio.md#supported-authentication-methods) \* API key ## Related resources [](https://docs.n8n.io/integrations/builtin/credentials/apitemplateio.md#related-resources) Refer to \[APITemplate.io's API documentation\](https://apitemplate.io/apiv2/) for more information about the service. ## Using API key [](https://docs.n8n.io/integrations/builtin/credentials/apitemplateio.md#using-api-key) To configure this credential, you'll need: \* An \*\*API Key\*\*: Once you've created an APITemplate.io account, go to \*\*API Integration\*\* to copy the \*\*API Key\*\*. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/credentials/beeminder.md). # Beeminder credentials You can use these credentials to authenticate the following node: \* \[Beeminder\](/integrations/builtin/app-nodes/n8n-nodes-base.beeminder.md) ## Prerequisites [](https://docs.n8n.io/integrations/builtin/credentials/beeminder.md#prerequisites) Create a \[Beeminder\](https://www.beeminder.com/) account. ## Supported authentication methods [](https://docs.n8n.io/integrations/builtin/credentials/beeminder.md#supported-authentication-methods) \* API user token ## Related resources [](https://docs.n8n.io/integrations/builtin/credentials/beeminder.md#related-resources) Refer to \[Beeminder's API documentation\](https://api.beeminder.com/#beeminder-api-reference) for more information about the service. ## Using API user token [](https://docs.n8n.io/integrations/builtin/credentials/beeminder.md#using-api-user-token) To configure this credential, you'll need: \* A \*\*User\*\* name: Should match the user who the Auth Token is generated for. \* A personal \*\*Auth Token\*\* for that user. Generate this using either method below: \* In the GUI: From the \[Apps & API\](https://help.beeminder.com/article/110-apps-and-api#API-token) option within \*\*Account Settings\*\* \* In the API: From hitting the \[\`auth\_token\` API endpoint\](https://api.beeminder.com/#auth) --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/connect/create-nodes/test-your-node/run-your-node-locally.md). # Run your node locally You can test your node as you build it by running it in a local n8n instance. 1. Install n8n using npm: \`\`\`shell npm install n8n -g \`\`\` 2. When you are ready to test your node, publish it locally: \`\`\`shell # In your node directory npm run build npm link \`\`\` 3. Install the node into your local n8n instance: \`\`\`shell # In the nodes directory within your n8n installation # node-package-name is the name from the package.json npm link \`\`\` {% hint style="info" %} \*\*Check your directory\*\* \`\`\` Make sure you run \`npm link \` in the nodes directory within your n8n installation. The default location depends on your operating system: - For Windows: \`C:\\Users\\\\.n8n\\custom\` - For Linux: \`/home//.n8n/custom\` - For MacOS: \`/Users//.n8n/custom\` If your n8n installation set a different name using \`N8N\_CUSTOM\_EXTENSIONS\`, use that custom directory instead. Note: The \`.n8n\` folder is a hidden folder so it may not appear in your file browser. \`\`\` {% endhint %} 4. Start n8n: \`\`\` n8n start \`\`\` 5. Open n8n in your browser. You should see your nodes when you search for them in the nodes panel. {% hint style="info" %} \*\*Node names\*\* \`\`\` Make sure you search using the node name, not the package name. For example, if your npm package name is \`n8n-nodes-weather-nodes\`, and the package contains nodes named \`rain\`, \`sun\`, \`snow\`, you should search for \`rain\`, not \`weather-nodes\`. \`\`\` {% endhint %} #### Troubleshooting [](https://docs.n8n.io/connect/create-nodes/test-your-node/run-your-node-locally.md#troubleshooting) If there's no \`custom\` directory in your \`.n8n\` local installation, you have to create the \`custom\` directory manually and run \`npm init\`. The \`.n8n\` directory location depends on your operating system: \* For Windows: \`C:\\Users\\\\.n8n\\custom\` \* For Linux: \`/home//.n8n/custom\` \* For MacOS: \`/Users//.n8n/custom\` Note: The \`.n8n\` folder is a hidden folder so it may not appear in your file browser. \`\`\`shell # Navigate to your .n8n directory and run: mkdir custom cd custom npm init \`\`\` --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.activecampaigntrigger.md). # ActiveCampaign Trigger \[ActiveCampaign\](https://www.activecampaign.com/) is a cloud software platform for small-to-mid-sized business. The company offers software for customer experience automation, which combines the email marketing, marketing automation, sales automation, and CRM categories. {% hint style="info" %} \*\*Credentials\*\* You can find authentication information for this node \[here\](/integrations/builtin/credentials/activecampaign.md). {% endhint %} {% hint style="info" %} \*\*Examples and templates\*\* For usage examples and templates to help you get started, refer to n8n's \[ActiveCampaign Trigger integrations\](https://n8n.io/integrations/activecampaign-trigger/) page. {% endhint %} ## Events [](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.activecampaigntrigger.md#events) \* New ActiveCampaign event ## Related resources [](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.activecampaigntrigger.md#related-resources) n8n provides an app node for ActiveCampaign. You can find the node docs \[here\](/integrations/builtin/app-nodes/n8n-nodes-base.activecampaign.md). View \[example workflows and related content\](https://n8n.io/integrations/activecampaign-trigger/) on n8n's website. Refer to \[ActiveCampaign's documentation\](https://developers.activecampaign.com/reference/overview) for details about their API. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.emailimap.md). # Email Trigger (IMAP) Use the IMAP Email node to receive emails using an IMAP email server. This node is a trigger node. {% hint style="info" %} \*\*Credential\*\* You can find authentication information for this node \[here\](/integrations/builtin/credentials/imap.md). {% endhint %} ## Operations [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.emailimap.md#operations) \* Receive an email ## Node parameters [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.emailimap.md#node-parameters) Configure the node using the following parameters. ### Credential to connect with [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.emailimap.md#credential-to-connect-with) Select or create an \[IMAP credential\](/integrations/builtin/credentials/imap.md) to connect to the server with. ### Mailbox Name [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.emailimap.md#mailbox-name) Enter the mailbox from which you want to receive emails. ### Action [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.emailimap.md#action) Choose whether you want an email marked as read when n8n receives it. \*\*None\*\* will leave it marked unread. \*\*Mark as Read\*\* will mark it as read. ### Download Attachments [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.emailimap.md#download-attachments) This toggle controls whether to download email attachments (turned on) or not (turned off). Only set this if necessary, since it increases processing. ### Format [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.emailimap.md#format) Choose the format to return the message in from these options: \* \*\*RAW\*\*: This format returns the full email message data with body content in the raw field as a base64url encoded string. It doesn't use the payload field. \* \*\*Resolved\*\*: This format returns the full email with all data resolved and attachments saved as binary data. \* \*\*Simple\*\*: This format returns the full email. Don't use it if you want to gather inline attachments. ## Node options [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.emailimap.md#node-options) You can further configure the node using these \*\*Options\*\*. ### Custom Email Rules [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.emailimap.md#custom-email-rules) Enter custom email fetching rules to determine which emails the node fetches. Refer to \[node-imap's search function criteria\](https://github.com/mscdex/node-imap) for more information. ### Force Reconnect Every Minutes [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.emailimap.md#force-reconnect-every-minutes) Set an interval in minutes to force reconnection. ## Templates and examples [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.emailimap.md#templates-and-examples) \[Browse Email Trigger (IMAP) node documentation integration templates\](https://n8n.io/integrations/email-trigger-imap) or \[search all templates\](https://n8n.io/workflows/) --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/credentials/airtop.md). # Airtop credentials You can use these credentials to authenticate the following nodes: \* \[Airtop\](/integrations/builtin/app-nodes/n8n-nodes-base.airtop.md) ## Prerequisites [](https://docs.n8n.io/integrations/builtin/credentials/airtop.md#prerequisites) Create an \[Airtop\](https://portal.airtop.ai/sign-up) account. ## Supported authentication methods [](https://docs.n8n.io/integrations/builtin/credentials/airtop.md#supported-authentication-methods) \* API key ## Related resources [](https://docs.n8n.io/integrations/builtin/credentials/airtop.md#related-resources) Refer to \[Airtop's API documentation\](https://docs.airtop.ai/api-reference/airtop-api) for more information about the service. ## Using API key [](https://docs.n8n.io/integrations/builtin/credentials/airtop.md#using-api-key) To configure this credential, you'll need an \[Airtop\](https://portal.airtop.ai/sign-up) account and an \*\*API key\*\*. To generate a new key: 1. Log in to the \[Airtop Portal\](https://portal.airtop.ai). 2. Go to \[API Keys\](https://portal.airtop.ai/api-keys). 3. Select the \*\*+ Create new key\*\* button. 4. Enter a name for the API key. 5. Select the generated key to copy the key. 6. Enter this as the \*\*API Key\*\* in your n8n credential. Refer to \[Airtop's Support\](https://docs.airtop.ai/guides/misc/support) for assistance if you have any issues creating your API key. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.autopilottrigger.md). # Autopilot Trigger \[Autopilot\](https://www.autopilothq.com/) is a visual marketing software that allows you to automate and personalize your marketing across the entire customer journey. {% hint style="info" %} \*\*Credentials\*\* You can find authentication information for this node \[here\](/integrations/builtin/credentials/autopilot.md). {% endhint %} {% hint style="info" %} \*\*Examples and templates\*\* For usage examples and templates to help you get started, refer to n8n's \[Autopilot Trigger integrations\](https://n8n.io/integrations/autopilot-trigger/) page. {% endhint %} ## Events [](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.autopilottrigger.md#events) \* Contact added \* Contact added to a list \* Contact entered to a segment \* Contact left a segment \* Contact removed from a list \* Contact unsubscribed \* Contact updated --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/credentials/bitwarden.md). # Bitwarden credentials You can use these credentials to authenticate the following node: \* \[Bitwarden\](/integrations/builtin/app-nodes/n8n-nodes-base.bitwarden.md) ## Prerequisites [](https://docs.n8n.io/integrations/builtin/credentials/bitwarden.md#prerequisites) Create a \[Bitwarden\](https://vault.bitwarden.com/#/register?org=teams) Teams organization or Enterprise organization account. (Bitwarden only makes the Bitwarden Public API available for these \[organization\](https://bitwarden.com/help/about-organizations/) plans.) ## Supported authentication methods [](https://docs.n8n.io/integrations/builtin/credentials/bitwarden.md#supported-authentication-methods) \* API key ## Related resources [](https://docs.n8n.io/integrations/builtin/credentials/bitwarden.md#related-resources) Refer to \[Bitwarden's Public API documentation\](https://bitwarden.com/help/public-api/) for more information about the service. ## Using API key [](https://docs.n8n.io/integrations/builtin/credentials/bitwarden.md#using-api-key) To configure this credential, you'll need: \* A \*\*Client ID\*\*: Provided when you generate an API key \* A \*\*Client Secret\*\*: Provided when you generate an API key \* The \*\*Environment\*\*: \* Choose \*\*Cloud-hosted\*\* if you don't self-host Bitwarden. No further configuration required. \* Choose \*\*Self-hosted\*\* if you host Bitwarden on your own server. Enter your \*\*Self-hosted domain\*\* in the appropriate field. The Client ID and Client Secret must be for an \*\*Organization API Key\*\*, not a Personal API Key. Refer to the \[Bitwarden Public API Authentication documentation\](https://bitwarden.com/help/public-api/#authentication) for instructions on generating an Organization API Key. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.acuityschedulingtrigger.md). # Acuity Scheduling Trigger \[Acuity Scheduling\](https://acuityscheduling.com/) is a cloud-based appointment scheduling software solution that enables business owners to manage their appointments online. It has the capability to automatically sync calendars according to users' time zones and can send regular alerts and reminders to users regarding their appointment schedules. {% hint style="info" %} \*\*Credentials\*\* You can find authentication information for this node \[here\](/integrations/builtin/credentials/acuityscheduling.md). {% endhint %} {% hint style="info" %} \*\*Examples and templates\*\* For usage examples and templates to help you get started, refer to n8n's \[Acuity Scheduling Trigger integrations\](https://n8n.io/integrations/acuity-scheduling-trigger/) page. {% endhint %} ## Events [](https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.acuityschedulingtrigger.md#events) \* Appointment canceled \* Appointment changed \* Appointment rescheduled \* Appointment scheduled \* Order completed --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/credentials/affinity.md). # Affinity credentials You can use these credentials to authenticate the following nodes: \* \[Affinity\](/integrations/builtin/app-nodes/n8n-nodes-base.affinity.md) \* \[Affinity Trigger\](/integrations/builtin/trigger-nodes/n8n-nodes-base.affinitytrigger.md) ## Prerequisites [](https://docs.n8n.io/integrations/builtin/credentials/affinity.md#prerequisites) Create an \[Affinity\](https://www.affinity.co/) account at the Scale, Advanced, or Enterprise subscription tiers. ## Supported authentication methods [](https://docs.n8n.io/integrations/builtin/credentials/affinity.md#supported-authentication-methods) \* API key ## Related resources [](https://docs.n8n.io/integrations/builtin/credentials/affinity.md#related-resources) Refer to \[Affinity's API documentation\](https://support.affinity.co/s/article/Getting-started-with-the-Affinity-API-FAQs) for more information about working with the service. ## Using API key [](https://docs.n8n.io/integrations/builtin/credentials/affinity.md#using-api-key) To configure this credential, you'll need: \* An \*\*API Key\*\*: Refer to \[How to obtain your Affinity API key documentation\](https://support.affinity.co/hc/en-us/articles/360032633992-How-to-obtain-your-Affinity-API-key) to get your API key. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/credentials/bitly.md). # Bitly credentials You can use these credentials to authenticate the following node: \* \[Bitly\](/integrations/builtin/app-nodes/n8n-nodes-base.bitly.md) ## Prerequisites [](https://docs.n8n.io/integrations/builtin/credentials/bitly.md#prerequisites) Create a \[Bitly\](https://www.bitly.com/) account. ## Supported authentication methods [](https://docs.n8n.io/integrations/builtin/credentials/bitly.md#supported-authentication-methods) \* API token \* OAuth2 ## Related resources [](https://docs.n8n.io/integrations/builtin/credentials/bitly.md#related-resources) Refer to \[Bitly's API documentation\](https://dev.bitly.com/) for more information about the service. ## Using API token [](https://docs.n8n.io/integrations/builtin/credentials/bitly.md#using-api-token) To configure this credential, you'll need: \* An \*\*Access Token\*\*: Once logged in, visit \[Settings > Developer Settings > API\](https://app.bitly.com/settings/api/) to generate an Access Token. ## Using OAuth2 [](https://docs.n8n.io/integrations/builtin/credentials/bitly.md#using-oauth2) {% hint style="info" %} \*\*Note for n8n Cloud users\*\* Cloud users don't need to provide connection details. Select \*\*Connect my account\*\* to connect through your browser. {% endhint %} If you need to configure OAuth2 from scratch or need more detail on what's happening in the OAuth web flow, refer to the \[Bitly API Authentication documentation\](https://dev.bitly.com/docs/getting-started/authentication/) for more information. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/credentials/bamboohr.md). # BambooHR credentials You can use these credentials to authenticate the following node: \* \[BambooHR\](/integrations/builtin/app-nodes/n8n-nodes-base.bamboohr.md) ## Prerequisites [](https://docs.n8n.io/integrations/builtin/credentials/bamboohr.md#prerequisites) Create a \[BambooHR\](https://www.bamboohr.com/) account. ## Supported authentication methods [](https://docs.n8n.io/integrations/builtin/credentials/bamboohr.md#supported-authentication-methods) \* API key ## Related resources [](https://docs.n8n.io/integrations/builtin/credentials/bamboohr.md#related-resources) Refer to \[BambooHR's API documentation\](https://documentation.bamboohr.com/docs/getting-started) for more information about the service. ## Using API Key [](https://docs.n8n.io/integrations/builtin/credentials/bamboohr.md#using-api-key) To configure this credential, you'll need: \* Your BambooHR \*\*Subdomain\*\*: the part between \`https://\` and \`.bamboohr.com\` \* A BambooHR \*\*API Key\*\*: Refer to the \[Authentication section of BambooHR's Getting Started API documentation\](https://documentation.bamboohr.com/docs/getting-started#authentication) for instructions on generating an API key. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/common-issues.md). # Common Issues Here are some common errors and issues with the \[HTTP Request node\](/integrations/builtin/core-nodes/n8n-nodes-base.httprequest.md) and steps to resolve or troubleshoot them. ## Bad request - please check your parameters [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/common-issues.md#bad-request-please-check-your-parameters) This error displays when the node receives a 400 error indicating a bad request. This error most often occurs because: \* You're using an invalid name or value in a \*\*Query Parameter\*\*. \* You're passing array values in a \*\*Query Parameter\*\* but the array isn't formatted correctly. Try using the \[\*\*Array Format in Query Parameters\*\*\](/integrations/builtin/core-nodes/n8n-nodes-base.httprequest.md#array-format-in-query-parameters) option. Review the API documentation for your service to format your query parameters. ## The resource you are requesting could not be found [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/common-issues.md#the-resource-you-are-requesting-could-not-be-found) This error displays when the endpoint \*\*URL\*\* you entered is invalid. This may be due to a typo in the URL or a deprecated API. Refer to your service's API documentation to verify you have a valid endpoint. ## Connection refused (ECONNREFUSED) [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/common-issues.md#connection-refused-econnrefused) This error displays when the node reaches a host on the network but the target port has no listener. The TCP connection is actively refused. It isn't a DNS failure, a timeout, or a firewall drop. On self-hosted n8n, the most common cause is Docker networking. Inside the n8n container, \`localhost\` and \`127.0.0.1\` point at the container itself, not at the host machine. A request to \`http://localhost:5000\` from the node lands on the n8n container's port 5000, where nothing listens. To resolve, address the target by a name the container can route to: \* \*\*Target on the host machine, Docker Desktop (Mac or Windows)\*\*: use \`http://host.docker.internal:\` in the \*\*URL\*\* field. Docker Desktop adds this hostname automatically. \* \*\*Target on the host machine, Linux\*\*: pass \`--add-host=host.docker.internal:host-gateway\` to the container, or set \`extra\_hosts\` in \`docker-compose.yml\`: \`\`\`yaml services: n8n: image: docker.n8n.io/n8nio/n8n extra\_hosts: - "host.docker.internal:host-gateway" \`\`\` The same fix is documented for the \[MySQL node\](/integrations/builtin/app-nodes/n8n-nodes-base.mysql/common-issues.md#cant-connect-to-a-local-mysql-server-when-using-docker). \* \*\*Target in another container on the same Compose stack\*\*: use the service name as the hostname, for example \`http://my-api:5000\`. Reference the container's internal port, not the published \`ports:\` mapping. A separate cause appears on Node.js 17 and above, even outside Docker: \`localhost\` resolves to the IPv6 address \`::1\` before \`127.0.0.1\`. If the target binds only to \`127.0.0.1\`, the IPv6 attempt is refused and the fallback to IPv4 doesn't always succeed inside the HTTP Request node. Use \`http://127.0.0.1:\` in the \*\*URL\*\* field instead of \`localhost\`. To verify the fix before re-running the workflow, exec into the n8n container and try the URL with \`wget\`: \`\`\`sh docker exec -it n8n wget -qO- http://host.docker.internal:5000/health \`\`\` If \`wget\` from inside the container succeeds, the HTTP Request node succeeds too. If \`wget\` also returns "connection refused," the cause is the network or the target service, not n8n. On n8n Cloud, workflows run on n8n's infrastructure. There's no \`localhost\` and no path to a service on your machine. Expose local-only targets through a tunnel and use the public URL in the HTTP Request node. ## JSON parameter need to be an valid JSON [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/common-issues.md#json-parameter-need-to-be-an-valid-json) This error displays when you've passed a parameter as JSON and it's not formatted as valid JSON. To resolve, review the JSON you've entered for these issues: \* Test your JSON in a JSON checker or syntax parser to find errors like missing quotation marks, extra or missing commas, incorrectly formatted arrays, extra or missing square brackets or curly brackets, and so on. \* If you've used an \*\*Expression\*\* in the node, be sure you've wrapped the entire JSON in double curly brackets, for example: \`\`\` {{ { "myjson": { "name1": "value1", "name2": "value2", "array1": \["value1","value2"\] } } }} \`\`\` ## Forbidden - perhaps check your credentials [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/common-issues.md#forbidden-perhaps-check-your-credentials) This error displays when the node receives a 403 error indicating authentication failed. To resolve, review the selected credentials and make sure you can authenticate with them. You may need to: \* Update permissions or scopes so that your API key or account can perform the operation you've selected. \* Format your generic credential in a different way. \* Generate a new API key or token with the appropriate permissions or scopes. ## 429 - The service is receiving too many requests from you [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/common-issues.md#id-429-the-service-is-receiving-too-many-requests-from-you) This error displays when the node receives a \[429 error\](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429) from the service that you're calling. This often means that you have hit the rate limits of that service. You can find out more on the \[Handling API rate limits\](/integrations/builtin/handle-rate-limits.md) page. To resolve the error, you can use one of the built-in options of the HTTP request node: ### Batching [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/common-issues.md#batching) Use this option to send requests in batches and introduce a delay between them. 1. In the HTTP Request node, select \*\*Add Option > Batching\*\*. 2. Set \*\*Items per Batch\*\* to the number of input items to include in each request. 3. Set \*\*Batch Interval (ms)\*\* to introduce a delay between requests in milliseconds. For example, to send one request to an API per second, set \*\*Batch Interval (ms)\*\* to \`1000\`. ### Retry on Fail [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/common-issues.md#retry-on-fail) Use this option to retry the node after a failed attempt. 1. In the HTTP Request node, go to \*\*Settings\*\* and enable \*\*Retry on Fail\*\*. 2. Set \*\*Max Tries\*\* to the maximum number of times n8n should retry the node. 3. Set \*\*Wait Between Tries (ms)\*\* to the desired delay in milliseconds between retries. For example, to wait one second before retrying the request again, set \*\*Wait Between Tries (ms)\*\* to \`1000\`. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datetime.md). # Date & Time The Date & Time node manipulates date and time data and convert it to different formats. {% hint style="info" %} \*\*Timezone settings\*\* The node relies on the timezone setting. n8n uses either: 1. The workflow timezone, if set. Refer to \[Workflow settings\](/build/manage-workflows/configure-workflow-settings.md) for more information. 2. The n8n instance timezone, if the workflow timezone isn't set. The default is \`America/New York\` for self-hosted instances. n8n Cloud tries to detect the instance owner's timezone when they sign up, falling back to GMT as the default. Self-hosted users can change the instance setting using \[Environment variables\](/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/timezone-and-localization.md). Cloud admins can change the instance timezone in the \[Admin dashboard\](/deploy/use-n8n-cloud/configure-cloud/set-your-timezone.md). {% endhint %} {% hint style="info" %} \*\*Date and time in other nodes\*\* You can work with data and time in the Code node, and in expressions in any node. n8n supports Luxon to help work with date and time in JavaScript. Refer to \[Date and time with Luxon\](/build/work-with-data/handle-special-data-types/work-with-dates-and-times.md) for more information. {% endhint %} ## Operations [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datetime.md#operations) \* \*\*Add to a Date\*\*: Add a specified amount of time to a date. \* \*\*Extract Part of a Date\*\*: Extract part of a date, such as the year, month, or day. \* \*\*Format a Date\*\*: Transform a date's format to a new format using preset options or a custom expression. \* \*\*Get Current Date\*\*: Get the current date and choose whether to include the current time or not. Useful for triggering other flows and conditional logic. \* \*\*Get Time Between Dates\*\*: Calculate the amount of time in specific units between two dates. \* \*\*Round a Date\*\*: Round a date up or down to the nearest unit of your choice, such as month, day, or hour. \* \*\*Subtract From a Date\*\*: Subtract a specified amount of time from a date. Refer to the sections below for parameters and options specific to each operation. ## Add to a Date [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datetime.md#add-to-a-date) Configure the node for this operation using these parameters: \* \*\*Date to Add To\*\*: Enter the date you want to change. \* \*\*Time Unit to Add\*\*: Select the time unit for the \*\*Duration\*\* parameter. \* \*\*Duration\*\*: Enter the number of time units to add to the date. \* \*\*Output Field Name\*\*: Enter the name of the field to output the new date to. ### Add to a Date options [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datetime.md#add-to-a-date-options) This operation has one option: \*\*Include Input Fields\*\*. If you'd like to include all of the input fields in the output, turn this option on. If turned off, only the \*\*Output Field Name\*\* and its contents are output. ## Extract Part of a Date [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datetime.md#extract-part-of-a-date) Configure the node for this operation using these parameters: \* \*\*Date\*\*: Enter the date you want to round or extract part of. \* \*\*Part\*\*: Select the part of the date you want to extract. Choose from: \* \*\*Year\*\* \* \*\*Month\*\* \* \*\*Week\*\* \* \*\*Day\*\* \* \*\*Hour\*\* \* \*\*Minute\*\* \* \*\*Second\*\* \* \*\*Output Field Name\*\*: Enter the name of the field to output the extracted date part to. ### Extract Part of a Date options [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datetime.md#extract-part-of-a-date-options) This operation has one option: \*\*Include Input Fields\*\*. If you'd like to include all of the input fields in the output, turn this option on. If turned off, only the \*\*Output Field Name\*\* and its contents are output. ## Format a Date [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datetime.md#format-a-date) Configure the node for this operation using these parameters: \* \*\*Date\*\*: Enter the date you want to format. \* \*\*Format\*\*: Select the format you want to change the date to. Choose from: \* \*\*Custom Format\*\*: Enter your own custom format using Luxon's \[special tokens\](https://moment.github.io/luxon/#/formatting?id=table-of-tokens). Tokens are case-sensitive. \* \*\*MM/DD/YYYY\*\*: For \`4 September 1986\`, this formats the date as \`09/04/1986\`. \* \*\*YYYY/MM/DD\*\*: For \`4 September 1986\`, this formats the date as \`1986/09/04\`. \* \*\*MMMM DD YYYY\*\*: For \`4 September 1986\`, this formats the date as \`September 04 1986\`. \* \*\*MM-DD-YYYY\*\*: For \`4 September 1986\`, this formats the date as \`09-04-1986\`. \* \*\*YYYY-MM-DD\*\*: For \`4 September 1986\`, this formats the date as \`1986-09-04\`. \* \*\*Output Field Name\*\*: Enter the name of the field to output the formatted date to. ### Format a Date options [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datetime.md#format-a-date-options) This operation includes these options: \* \*\*Include Input Fields\*\*: If you'd like to include all of the input fields in the output, turn this option on. If turned off, only the \*\*Output Field Name\*\* and its contents are output. \* \*\*From Date Format\*\*: If the node isn't recognizing the \*\*Date\*\* format correctly, enter the format for that \*\*Date\*\* here so the node can process it properly. Use Luxon's \[special tokens\](https://moment.github.io/luxon/#/formatting?id=table-of-tokens) to enter the format. Tokens are case-sensitive \* \*\*Use Workflow Timezone\*\*: Whether to use the input's time zone (turned off) or the workflow's timezone (turned on). ## Get Current Date [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datetime.md#get-current-date) Configure the node for this operation using these parameters: \* \*\*Include Current Time\*\*: Choose whether to include the current time (turned on) or to set the time to midnight (turned off). \* \*\*Output Field Name\*\*: Enter the name of the field to output the current date to. ### Get Current Date options [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datetime.md#get-current-date-options) This operation includes these options: \* \*\*Include Input Fields\*\*: If you'd like to include all of the input fields in the output, turn this option on. If turned off, only the \*\*Output Field Name\*\* and its contents are output. \* \*\*Timezone\*\*: Set the timezone to use. If left blank, the node uses the n8n instance's timezone. {% hint style="info" %} \*\*+00:00 timezone\*\* Use \`GMT\` for +00:00 timezone. {% endhint %} ## Get Time Between Dates [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datetime.md#get-time-between-dates) Configure the node for this operation using these parameters: \* \*\*Start Date\*\*: Enter the earlier date you want to compare. \* \*\*End Date\*\*: Enter the later date you want to compare. \* \*\*Units\*\*: Select the units you want to calculate the time between. You can include multiple units. Choose from: \* \*\*Year\*\* \* \*\*Month\*\* \* \*\*Week\*\* \* \*\*Day\*\* \* \*\*Hour\*\* \* \*\*Minute\*\* \* \*\*Second\*\* \* \*\*Millisecond\*\* \* \*\*Output Field Name\*\*: Enter the name of the field to output the calculated time between to. ### Get Time Between Dates options [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datetime.md#get-time-between-dates-options) The Get Time Between Dates operation includes the \*\*Include Input Fields\*\* option as well as an \*\*Output as ISO String\*\* option. If you leave this option off, each unit you selected will return its own time difference calculation, for example: \`\`\` timeDifference years : 1 months : 3 days : 13 \`\`\` If you turn on the \*\*Output as ISO String\*\* option, the node formats the output as a single ISO duration string, for example: \`P1Y3M13D\`. ISO duration format displays a format as \`PYMDTHMS\`. \`\` is the number for the unit after it. \* P = period (duration). It begins all ISO duration strings. \* Y = years \* M = months \* W = weeks \* D = days \* T = delineator between dates and times, used to avoid confusion between months and minutes \* H = hours \* M = minutes \* S = seconds Milliseconds don't get their own unit, but instead are decimal seconds. For example, 2.1 milliseconds is \`0.0021S\`. ## Round a Date [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datetime.md#round-a-date) Configure the node for this operation using these parameters: \* \*\*Date\*\*: Enter the date you'd like to round. \* \*\*Mode\*\*: Choose whether to \*\*Round Down\*\* or \*\*Round Up\*\*. \* \*\*To Nearest\*\*: Select the unit you'd like to round to. Choose from: \* \*\*Year\*\* \* \*\*Month\*\* \* \*\*Week\*\* \* \*\*Day\*\* \* \*\*Hour\*\* \* \*\*Minute\*\* \* \*\*Second\*\* \* \*\*Output Field Name\*\*: Enter the name of the field to output the rounded date to. ### Round a Date options [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datetime.md#round-a-date-options) This operation has one option: \*\*Include Input Fields\*\*. If you'd like to include all of the input fields in the output, turn this option on. If turned off, only the \*\*Output Field Name\*\* and its contents are output. ## Subtract From a Date [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datetime.md#subtract-from-a-date) Configure the node for this operation using these parameters: \* \*\*Date to Subtract From\*\*: Enter the date you'd like to subtract from. \* \*\*Time Unit to Subtract\*\*: Select the unit for the \*\*Duration\*\* amount you want to subtract. \* \*\*Duration\*\*: Enter the amount of the time units you want to subtract from the \*\*Date to Subtract From\*\*. \* \*\*Output Field Name\*\*: Enter the name of the field to output the rounded date to. ### Subtract From a Date options [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datetime.md#subtract-from-a-date-options) This operation has one option: \*\*Include Input Fields\*\*. If you'd like to include all of the input fields in the output, turn this option on. If turned off, only the \*\*Output Field Name\*\* and its contents are output. ## Templates and examples [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datetime.md#templates-and-examples) \[Browse Date & Time integration templates\](https://n8n.io/integrations/date-and-time) or \[search all templates\](https://n8n.io/workflows/) ## Related resources [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datetime.md#related-resources) The Date & Time node uses \[Luxon\](https://moment.github.io/luxon). You can also use Luxon in the \[Code\](/build/code-in-n8n/using-the-code-node.md) node and \[expressions\](/build/work-with-data/expressions-versus-data-nodes.md). Refer to \[Date and time with Luxon\](/build/work-with-data/handle-special-data-types/work-with-dates-and-times.md) for more information. ### Supported date formats [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datetime.md#supported-date-formats) n8n supports all date formats \[supported by Luxon\](https://moment.github.io/luxon/#/formatting?id=table-of-tokens). Tokens are case-sensitive. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/build/ways-of-building-workflows/use-templates.md). # Use templates When creating a new workflow, you can choose whether to start with an empty workflow, or use an existing template\[^1\]. Templates provide: \* Help getting started: n8n might already have a template that does what you need. \* Examples of what you can build \* Best practices for creating your own workflows ## Access templates [](https://docs.n8n.io/build/ways-of-building-workflows/use-templates.md#access-templates) Select ![View templates icon](https://docs.n8n.io/files/GoSOg8S7zPoicfMmII9m) \*\*Templates\*\* to view the templates library. If you use n8n's template library, this takes you to browse \[Workflows on the n8n website\](https://n8n.io/workflows/). If you use a custom library provided by your organization, you'll be able to search and browse the templates within the app. ## Add your workflow to the n8n library [](https://docs.n8n.io/build/ways-of-building-workflows/use-templates.md#add-your-workflow-to-the-n8n-library) You can submit your workflows to n8n's template library. n8n is working on a creator program, and developing a marketplace of templates. This is an ongoing project, and details are likely to change. Refer to \[n8n Creator hub\](https://www.notion.so/n8n/n8n-Creator-hub-7bd2cbe0fce0449198ecb23ff4a2f76f) for information on how to submit templates and become a creator. ## Self-hosted n8n: Use your own library [](https://docs.n8n.io/build/ways-of-building-workflows/use-templates.md#self-hosted-n8n-use-your-own-library) In your environment variables, set \`N8N\_TEMPLATES\_HOST\` to the base URL of your API. #### Endpoints [](https://docs.n8n.io/build/ways-of-building-workflows/use-templates.md#endpoints) Your API must provide the same endpoints and data structure as n8n's. The endpoints are: | Method | Path | Purpose | | ------ | ----------------------------- | -------------------------------------------- | | GET | \`/templates/workflows/\` | Fetch template metadata for preview/browsing | | GET | \`/workflows/templates/\` | Fetch workflow data to import onto canvas | | GET | \`/templates/search\` | Search for workflow templates | | GET | \`/templates/collections/\` | Get a specific template collection | | GET | \`/templates/collections\` | List all template collections | | GET | \`/templates/categories\` | List all template categories | | GET | \`/health\` | Health check endpoint | {% hint style="warning" %} \*\*Critical: Two different response formats required\*\* The two workflow endpoints require \*\*different response formats\*\*: \* \*\*\`/templates/workflows/{id}\`\*\*: Returns the template itself, which includes the workflow in the \`workflow\` key \* \*\*\`/workflows/templates/{id}\`\*\*: Returns the workflow the template contains See Schemas below for details. {% endhint %} #### Query parameters [](https://docs.n8n.io/build/ways-of-building-workflows/use-templates.md#query-parameters) The \`/templates/search\` endpoint accepts the following query parameters: | Parameter | Type | Description | | ---------- | -------------------------------------------- | ------------------------------------------------ | | \`page\` | integer | The page of results to return | | \`rows\` | integer | The maximum number of results to return per page | | \`category\` | comma-separated list of strings (categories) | The categories to search within | | \`search\` | string | The search query | The \`/templates/collections\` endpoint accepts the following query parameters: | Parameter | Type | Description | | ---------- | -------------------------------------------- | ------------------------------- | | \`category\` | comma-separated list of strings (categories) | The categories to search within | | \`search\` | string | The search query | #### Schemas [](https://docs.n8n.io/build/ways-of-building-workflows/use-templates.md#schemas) The key difference between the two workflow endpoints: \`\`\`json // GET /templates/workflows/{id} returns (wrapped): { "workflow": { "id": 123, "name": "...", "totalViews": 1000, // ... see full workflow item schema below "workflow": { // actual workflow definition "nodes": \[...\], "connections": {} } } } // GET /workflows/templates/{id} returns (flat): { "id": 123, "name": "...", "workflow": { // actual workflow definition "nodes": \[...\], "connections": {} } } \`\`\` Detailed schemas for response objects: Show `workflow` item data schema Used by \`/templates/workflows/{id}\` endpoint (wrapped in a \`workflow\` key). This schema describes the template metadata used for displaying templates in search/browse UI. It includes a nested \`workflow\` property that contains the actual importable workflow definition. \`\`\`json { "$schema": "http://json-schema.org/draft-07/schema#", "title": "Generated schema for Root", "type": "object", "properties": { "id": { "type": "number" }, "name": { "type": "string" }, "totalViews": { "type": "number" }, "price": {}, "purchaseUrl": {}, "recentViews": { "type": "number" }, "createdAt": { "type": "string" }, "user": { "type": "object", "properties": { "username": { "type": "string" }, "verified": { "type": "boolean" } }, "required": \[ "username", "verified" \] }, "nodes": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "number" }, "icon": { "type": "string" }, "name": { "type": "string" }, "codex": { "type": "object", "properties": { "data": { "type": "object", "properties": { "details": { "type": "string" }, "resources": { "type": "object", "properties": { "generic": { "type": "array", "items": { "type": "object", "properties": { "url": { "type": "string" }, "icon": { "type": "string" }, "label": { "type": "string" } }, "required": \[ "url", "label" \] } }, "primaryDocumentation": { "type": "array", "items": { "type": "object", "properties": { "url": { "type": "string" } }, "required": \[ "url" \] } } }, "required": \[ "primaryDocumentation" \] }, "categories": { "type": "array", "items": { "type": "string" } }, "nodeVersion": { "type": "string" }, "codexVersion": { "type": "string" } }, "required": \[ "categories" \] } } }, "group": { "type": "string" }, "defaults": { "type": "object", "properties": { "name": { "type": "string" }, "color": { "type": "string" } }, "required": \[ "name" \] }, "iconData": { "type": "object", "properties": { "icon": { "type": "string" }, "type": { "type": "string" }, "fileBuffer": { "type": "string" } }, "required": \[ "type" \] }, "displayName": { "type": "string" }, "typeVersion": { "type": "number" }, "nodeCategories": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "number" }, "name": { "type": "string" } }, "required": \[ "id", "name" \] } } }, "required": \[ "id", "icon", "name", "codex", "group", "defaults", "iconData", "displayName", "typeVersion" \] } }, "description": { "type": "string" }, "image": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "number" }, "url": { "type": "string" } } } }, "categories": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "number" }, "name": { "type": "string" } } } }, "workflowInfo": { "type": "object", "properties": { "nodeCount": { "type": "number" }, "nodeTypes": { "type": "object" } } }, "workflow": { "type": "object", "properties": { "nodes": { "type": "array" }, "connections": { "type": "object" }, "settings": { "type": "object" }, "pinData": { "type": "object" } }, "required": \[ "nodes", "connections" \] } }, "required": \[ "id", "name", "totalViews", "createdAt", "user", "nodes", "workflow" \] } \`\`\` Show `category` item data schema \`\`\`json { "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "properties": { "id": { "type": "number" }, "name": { "type": "string" } }, "required": \[ "id", "name" \] } \`\`\` Show `collection` item data schema \`\`\`json { "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "properties": { "id": { "type": "number" }, "rank": { "type": "number" }, "name": { "type": "string" }, "totalViews": {}, "createdAt": { "type": "string" }, "workflows": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "number" } }, "required": \[ "id" \] } }, "nodes": { "type": "array", "items": {} } }, "required": \[ "id", "rank", "name", "totalViews", "createdAt", "workflows", "nodes" \] } \`\`\` You can also interactively explore n8n's API endpoints: You can \[contact us\](mailto:help@n8n.io) for more support. \[^1\]: n8n templates are pre-built workflows designed by n8n and community members that you can import into your n8n instance. When using templates, you may need to fill in credentials and adjust the configuration to suit your needs. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/build/integrate-ai/test-and-improve-ai-workflows/understand-why-to-test.md). # Understand why to test ## What are evaluations? [](https://docs.n8n.io/build/integrate-ai/test-and-improve-ai-workflows/understand-why-to-test.md#what-are-evaluations) Evaluation is a crucial technique for checking that your AI workflow is reliable. It can be the difference between a flaky proof of concept and a solid production workflow. It's important both in the building phase and after deploying to production. The foundation of evaluation is running a test dataset through your workflow. This dataset contains multiple test cases. Each test case contains a sample input for your workflow, and often includes the expected output(s) too. Evaluation allows you to: \* \*\*Test your workflow over a range of inputs\*\* so you know how it performs on edge cases \* \*\*Make changes with confidence\*\* without inadvertently making things worse elsewhere \* \*\*Compare performance\*\* across different models or prompts The following video explains what evaluations are, why they're useful, and how they work: {% embed url="" %} ## Why is evaluation needed? [](https://docs.n8n.io/build/integrate-ai/test-and-improve-ai-workflows/understand-why-to-test.md#why-is-evaluation-needed) AI models are fundamentally different than code. Code is deterministic and you can reason about it. This is difficult to do with LLMs, since they're black boxes. Instead, you must \*measure\* LLM output by running data through them and observing the output. You can only build confidence that your model performs reliably after you have run it over multiple inputs that accurately reflect all the edge cases that it will have to deal with in production. ## Two types of evaluation [](https://docs.n8n.io/build/integrate-ai/test-and-improve-ai-workflows/understand-why-to-test.md#two-types-of-evaluation) \### Light evaluation (pre-deployment) [](https://docs.n8n.io/build/integrate-ai/test-and-improve-ai-workflows/understand-why-to-test.md#light-evaluation-pre-deployment) Building a clean, comprehensive dataset is hard. In the initial building phase, it often makes sense to generate just a handful of examples. These can be enough to iterate the workflow to a releasable state (or a proof of concept). You can visually compare the results to get a sense of the workflow's quality, without setting up formal metrics. ### Metric-based evaluation (post-deployment) [](https://docs.n8n.io/build/integrate-ai/test-and-improve-ai-workflows/understand-why-to-test.md#metric-based-evaluation-post-deployment) Once you deploy your workflow, it's easier to build a bigger, more representative dataset from production executions. When you discover a bug, you can add the input that caused it to the dataset. When fixing the bug, it's important to run the whole dataset over the workflow again as a \[regression test\](https://en.wikipedia.org/wiki/Regression\_testing) to check that the fix hasn't inadvertently made something else worse. Since there are too many test cases to check individually, evaluations measure the quality of the outputs using a metric, a numeric value representing a particular characteristic. This also allows you to track quality changes between runs. ### Comparison of evaluation types [](https://docs.n8n.io/build/integrate-ai/test-and-improve-ai-workflows/understand-why-to-test.md#comparison-of-evaluation-types) | | Light evaluation (pre-deployment) | Metric-based evaluation (post-deployment) | | ---------------------------------------------------------------------------------------- | ---------------------------------------------- | ----------------------------------------------------- | | **Performance improvements** **with each iteration** | Large | Small | | \*\*Dataset size\*\* | Small | Large | | \*\*Dataset sources\*\* | Hand-generated AI-generated Other | Production executions AI-generated Other | | \*\*Actual outputs\*\* | Required | Required | | \*\*Expected outputs\*\* | Optional | Required (usually) | | \*\*Evaluation\*\* \*\*metric\*\* | Optional | Required | ## Learn more [](https://docs.n8n.io/build/integrate-ai/test-and-improve-ai-workflows/understand-why-to-test.md#learn-more) \* \[Light evaluations\](/build/integrate-ai/test-and-improve-ai-workflows/run-quick-evaluations.md): Perfect for evaluating your AI workflows against hand-selected test cases during development. \* \[Metric-based evaluations\](/build/integrate-ai/test-and-improve-ai-workflows/use-metrics-to-measure-quality.md): Advanced evaluations to maintain performance and correctness in production by using scoring and metrics with large datasets. \* \[Tips and common issues\](/build/integrate-ai/test-and-improve-ai-workflows/fix-common-issues.md): Learn how to set up specific evaluation use cases and work around common issues. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/build/work-with-data/understand-n8ns-data-structure.md). # Understand n8n's data structure Understanding how n8n structures and passes data between nodes is fundamental to building workflows. This guide covers both the data structure format and how data flows through your workflow. ## Data structure [](https://docs.n8n.io/build/work-with-data/understand-n8ns-data-structure.md#data-structure) In n8n, all data passed between nodes is an array of objects. It has the following structure: \`\`\`json \[ { // For most data: // Wrap each item in another object, with the key 'json' "json": { // Example data "apple": "beets", "carrot": { "dill": 1 } }, // For binary data: // Wrap each item in another object, with the key 'binary' "binary": { // Example data "apple-picture": { "data": "....", // Base64 encoded binary data (required) "mimeType": "image/png", // Best practice to set if possible (optional) "fileExtension": "png", // Best practice to set if possible (optional) "fileName": "example.png", // Best practice to set if possible (optional) } } }, \] \`\`\` {% hint style="info" %} \*\*Skipping the \`json\` key and array syntax\*\* From 0.166.0 on, when using the Function node or Code node, n8n automatically adds the \`json\` key if it's missing. It also automatically wraps your items in an array (\`\[\]\`) if needed. This is only the case when using the Function or Code nodes. When building your own nodes, you must still make sure the node returns data with the \`json\` key. {% endhint %} ## How data flows within nodes [](https://docs.n8n.io/build/work-with-data/understand-n8ns-data-structure.md#how-data-flows-within-nodes) When you connect nodes in a workflow, data automatically passes from one node to the next. Nodes process multiple items automatically. When a node receives an array of data items, it processes each item individually and performs the configured operation for each one. For example, if you set the Trello node to \`Create-Card\`, and create an expression that sets \`Name\` using a property called \`name-input-value\` from the incoming data, the node creates a card for each item, always choosing the \`name-input-value\` of the current item. For example, this input will create two cards. One named \`test1\` the other one named \`test2\`: \`\`\`json \[ { "name-input-value": "test1" }, { "name-input-value": "test2" } \] \`\`\` ## Understand what you're mapping with drag and drop [](https://docs.n8n.io/build/work-with-data/understand-n8ns-data-structure.md#understand-what-youre-mapping-with-drag-and-drop) Data mapping maps the field path, and loads the field's value. For example, given the following data: \`\`\`js \[ { "fruit": "apples", "color": "green" } \] \`\`\` You can map \`fruit\` by dragging and dropping \*\*fruit\*\* from the \*\*INPUT\*\* into the field where you want to use its value. This creates an expression, \`{{ $json.fruit }}\`. When the node iterates over input items, the value of the field becomes the value of \`fruit\` for each item. ## Understand nested data [](https://docs.n8n.io/build/work-with-data/understand-n8ns-data-structure.md#understand-nested-data) Given the following data: \`\`\`js \[ { "name": "First item", "nested": { "example-number-field": 1, "example-string-field": "apples" } }, { "name": "Second item", "nested": { "example-number-field": 2, "example-string-field": "oranges" } } \] \`\`\` n8n displays it in table form like this: !\["Screenshot of a table in the INPUT panel. It includes a top level field named "nested." This field contains nested data, which is indicated in bold."\](/files/bCtqB6pmu7kwus2VLSby) --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.comparedatasets.md). # Compare Datasets The Compare Datasets node helps you compare data from two input streams. ## Node parameters [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.comparedatasets.md#node-parameters) 1\. Decide which fields to compare. In \*\*Input A Field\*\*, enter the name of the field you want to use from input stream A. In \*\*Input B Field\*\*, enter the name of the field you want to use from input stream B. 2. \*\*Optional\*\*: You can compare by multiple fields. Select \*\*Add Fields to Match\*\* to set up more comparisons. 3. Choose how to handle differences between the datasets. In \*\*When There Are Differences\*\*, select one of the following: \* \*\*Use Input A Version\*\* to treat input stream A as the source of truth. \* \*\*Use Input B Version\*\* to treat input stream B as the source of truth. \* \*\*Use a Mix of Versions\*\* to use different inputs for different fields. \* Use \*\*Prefer\*\* to select either \*\*Input A Version\*\* or \*\*Input B Version\*\* as the main source of truth. \* Enter input fields that are exceptions to \*\*For Everything Except\*\* to pull from the other input source. To add multiple input fields, enter a comma-separated list. \* \*\*Include Both Versions\*\* to include both input streams in the output, which may make the structure more complex. 4. Decide whether to use \*\*Fuzzy Compare\*\*. When turned on, the comparison will tolerate small type differences when comparing fields. For example, the number 3 and the string \`3\` are treated as the same with \*\*Fuzzy Compare\*\* turned on, but wouldn't be treated the same with it turned off. ## Understand item comparison [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.comparedatasets.md#understand-item-comparison) Item comparison is a two stage process: 1. n8n checks if the values of the fields you selected to compare match across both inputs. 2. If the fields to compare match, n8n then compares all fields within the items, to determine if the items are the same or different. ## Node options [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.comparedatasets.md#node-options) Use the node \*\*Options\*\* to refine your comparison or tweak comparison behavior. ### Fields to Skip Comparing [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.comparedatasets.md#fields-to-skip-comparing) Enter field names that you want to ignore in the comparison. For example, if you compare the two datasets below using \`person.language\` as the \*\*Fields to Match\*\*, n8n returns them as different. If you add \`person.name\` to \*\*Fields to Skip Comparing\*\*, n8n returns them as matching. \`\`\`json // Input 1 \[ { "person": { "name": "Stefan", "language": "de" } }, { "person": { "name": "Jim", "language": "en" } }, { "person": { "name": "Hans", "language": "de" } } \] // Input 2 \[ { "person": { "name": "Sara", "language": "de" } }, { "person": { "name": "Jane", "language": "en" } }, { "person": { "name": "Harriet", "language": "de" } } \] \`\`\` ### Disable Dot Notation [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.comparedatasets.md#disable-dot-notation) Whether to disallow referencing child fields using \`parent.child\` in the field name (turned on) or allow it (turned off, default). ### Multiple Matches [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.comparedatasets.md#multiple-matches) Choose how to handle duplicate data. The default is \*\*Include All Matches\*\*. You can choose \*\*Include First Match Only\*\*. For example, given these two datasets: \`\`\`json // Input 1 \[ { "fruit": { "type": "apple", "color": "red" } }, { "fruit": { "type": "apple", "color": "red" } }, { "fruit": { "type": "banana", "color": "yellow" } } \] // Input 2 \[ { "fruit": { "type": "apple", "color": "red" } }, { "fruit": { "type": "apple", "color": "red" } }, { "fruit": { "type": "banana", "color": "yellow" } } \] \`\`\` n8n returns three items in the \*\*Same Branch\*\* tab. The data is the same in both branches. If you select \*\*Include First Match Only\*\*, n8n returns two items, in the \*\*Same Branch\*\* tab. The data is the same in both branches, but n8n only returns the first occurrence of the matching "apple" items. ## Understand the output [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.comparedatasets.md#understand-the-output) There are four output options: \* \*\*In A only Branch\*\*: Contains data that occurs only in the first input. \* \*\*Same Branch\*\*: Contains data that's the same in both inputs. \* \*\*Different Branch\*\*: Contains data that's different between inputs. \* \*\*In B only Branch\*\*: Contains data that occurs only in the second output. ## Templates and examples [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.comparedatasets.md#templates-and-examples) \[Browse Compare Datasets integration templates\](https://n8n.io/integrations/compare-datasets) or \[search all templates\](https://n8n.io/workflows/) --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/build/understand-workflows/create-and-edit-credentials.md). # Create and edit credentials Credentials are securely stored authentication information used to connect n8n workflows to external services such as APIs, or databases. ## Create a credential [](https://docs.n8n.io/build/understand-workflows/create-and-edit-credentials.md#create-a-credential) 1\. Select the ![universal create resource icon](https://docs.n8n.io/files/i7DUe1F1hB5HR3hmbdOG) \*\*Create\*\* button in the upper-left corner of the side menu. Select credential. 2. If your n8n instance supports projects\[^1\], you'll also need to choose whether to create the credential inside your personal space or a specific project you have access to. If you're using the community version, you'll create the credential inside your personal space. 3. Select the app or service you wish to connect to. Or: 1. Using the ![universal create resource icon](https://docs.n8n.io/files/i7DUe1F1hB5HR3hmbdOG) \*\*Create\*\* button in the upper-right corner from either the \*\*Overview\*\* page or a specific project. Select Credential. 2. If you're doing this from the \*\*Overview\*\* page, you'll create the credential inside your personal space. If you're doing this from inside a project, you'll create the credential inside that specific project. 3. Select the app or service you wish to connect to. You can also create new credential in the credential drop down when editing a node on the workflow editor. Once in the credential modal, enter the details required by your service. Refer to your service's page in the \[credentials library\](/integrations/builtin/credentials.md) for guidance. When you save a credential, n8n tests it to confirm it works. {% hint style="info" %} \*\*Credentials naming\*\* n8n names new credentials "\*node name\* account" by default. You can rename the credentials by clicking on the name, similarly to renaming nodes. It's good practice to give them names that identify the app or service, type, and purpose of the credential. A naming convention makes it easier to keep track of and identify your credentials. {% endhint %} ## Allowed HTTP request domains [](https://docs.n8n.io/build/understand-workflows/create-and-edit-credentials.md#allowed-http-request-domains) The \*\*Allowed HTTP Request Domains\*\* field appears on many n8n credentials for web-based APIs and services. It controls which domains the credential is permitted to be used against when the credential is selected in an \*\*HTTP Request\*\* node. It has no effect when the credential is used in its own dedicated node. The field has three options: \* \*\*All\*\*: The credential can be used against any URL. \* \*\*Specific Domains\*\*: Restrict to specific domains (provide a comma-separated list like \`httpbin.org, api.github.com\`) \* \*\*None\*\*: The credential is blocked entirely from use in the \*\*HTTP Request\*\* node. This field prevents credential misuse, for example sending the credential to URLs outside the intended domain. ## Expressions in credentials [](https://docs.n8n.io/build/understand-workflows/create-and-edit-credentials.md#expressions-in-credentials) You can use expressions\[^2\] to set credentials dynamically as your workflow runs: 1. In your workflow, find the data path containing the credential. This varies depending on the exact parameter names in your data. Make sure that the data containing the credential is available in the workflow when you get to the node that needs it. 2. When creating your credential, hover over the field where you want to use an expression. 3. Toggle \*\*Expression\*\* on. 4. Enter your expression. ### Example workflow [](https://docs.n8n.io/build/understand-workflows/create-and-edit-credentials.md#example-workflow) {% @n8n-blocks/n8n-workflow-demo content="%7B%0A%20%20%22name%22%3A%20%22Dynamic%20credentials%20using%20expressions%22%2C%0A%20%20%22nodes%22%3A%20%5B%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%22parameters%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%22path%22%3A%20%22da4071f2-7550-4dae-aa48-8bced4291643%22%2C%0A%20%20%20%20%20%20%20%20%22formTitle%22%3A%20%22Test%20dynamic%20credentials%22%2C%0A%20%20%20%20%20%20%20%20%22formDescription%22%3A%20%22This%20form%20is%20for%20testing%20an%20n8n%20workflow%20that%20demonstrates%20setting%20credentials%20with%20expressions.%22%2C%0A%20%20%20%20%20%20%20%20%22formFields%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%22values%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22fieldLabel%22%3A%20%22Enter%20your%20NASA%20API%20key%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22requiredField%22%3A%20true%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%22responseMode%22%3A%20%22responseNode%22%0A%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%22id%22%3A%20%22cc6f2b1e-0ed0-4d22-8a44-d7223ba283b4%22%2C%0A%20%20%20%20%20%20%22name%22%3A%20%22n8n%20Form%20Trigger%22%2C%0A%20%20%20%20%20%20%22type%22%3A%20%22n8n-nodes-base.formTrigger%22%2C%0A%20%20%20%20%20%20%22typeVersion%22%3A%202%2C%0A%20%20%20%20%20%20%22position%22%3A%20%5B%0A%20%20%20%20%20%20%20%20560%2C%0A%20%20%20%20%20%20%20%20520%0A%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%22webhookId%22%3A%20%22da4071f2-7550-4dae-aa48-8bced4291643%22%0A%20%20%20%20%7D%2C%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%22parameters%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%22additionalFields%22%3A%20%7B%7D%0A%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%22id%22%3A%20%22ef336bae-3d4f-419c-ab5c-b9f0de89f170%22%2C%0A%20%20%20%20%20%20%22name%22%3A%20%22NASA%22%2C%0A%20%20%20%20%20%20%22type%22%3A%20%22n8n-nodes-base.nasa%22%2C%0A%20%20%20%20%20%20%22typeVersion%22%3A%201%2C%0A%20%20%20%20%20%20%22position%22%3A%20%5B%0A%20%20%20%20%20%20%20%20900%2C%0A%20%20%20%20%20%20%20%20520%0A%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%22credentials%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%22nasaApi%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%22id%22%3A%20%22QDDBOZOD6k3ijL5t%22%2C%0A%20%20%20%20%20%20%20%20%20%20%22name%22%3A%20%22NASA%20account%22%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%22parameters%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%22respondWith%22%3A%20%22redirect%22%2C%0A%20%20%20%20%20%20%20%20%22redirectURL%22%3A%20%22%3D%7B%7B%20%24json.url%20%7D%7D%22%2C%0A%20%20%20%20%20%20%20%20%22options%22%3A%20%7B%7D%0A%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%22id%22%3A%20%22143bcdb6-aca0-4dd8-9204-9777271cd230%22%2C%0A%20%20%20%20%20%20%22name%22%3A%20%22Respond%20to%20Webhook%22%2C%0A%20%20%20%20%20%20%22type%22%3A%20%22n8n-nodes-base.respondToWebhook%22%2C%0A%20%20%20%20%20%20%22typeVersion%22%3A%201%2C%0A%20%20%20%20%20%20%22position%22%3A%20%5B%0A%20%20%20%20%20%20%20%201220%2C%0A%20%20%20%20%20%20%20%20520%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%7D%2C%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%22parameters%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%22content%22%3A%20%22This%20workflow%20shows%20how%20to%20set%20credentials%20dynamically%20using%20expressions.%5Cn%5Cn%5CnFirst%2C%20set%20up%20your%20NASA%20credential%3A%20%5Cn%5Cn1.%20Create%20a%20new%20NASA%20credential.%5Cn1.%20Hover%20over%20%2A%2AAPI%20Key%2A%2A.%5Cn1.%20Toggle%20%2A%2AExpression%2A%2A%20on.%5Cn1.%20In%20the%20%2A%2AAPI%20Key%2A%2A%20field%2C%20enter%20%60%7B%7B%20%24json%5B%5C%22Enter%20your%20NASA%20API%20key%5C%22%5D%20%7D%7D%60.%5Cn%5Cn%5CnThen%2C%20test%20the%20workflow%3A%5Cn%5Cn1.%20Get%20an%20%5BAPI%20key%20from%20NASA%5D%28https%3A%2F%2Fapi.nasa.gov%2F%29%5Cn2.%20Select%20%2A%2AExecute%20workflow%2A%2A%5Cn3.%20Enter%20your%20key%20using%20the%20form.%5Cn4.%20The%20workflow%20runs%20and%20sends%20you%20to%20the%20NASA%20picture%20of%20the%20day.%5Cn%5Cn%5CnFor%20more%20information%20on%20expressions%2C%20refer%20to%20%5Bn8n%20documentation%20%7C%20Expressions%5D%28https%3A%2F%2Fdocs.n8n.io%2Fcode%2Fexpressions%2F%29.%22%2C%0A%20%20%20%20%20%20%20%20%22height%22%3A%20564%2C%0A%20%20%20%20%20%20%20%20%22width%22%3A%20322%2C%0A%20%20%20%20%20%20%20%20%22color%22%3A%204%0A%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%22id%22%3A%20%220a0dee23-fa16-4f09-b5e0-856f47fb53d0%22%2C%0A%20%20%20%20%20%20%22name%22%3A%20%22Sticky%20Note%22%2C%0A%20%20%20%20%20%20%22type%22%3A%20%22n8n-nodes-base.stickyNote%22%2C%0A%20%20%20%20%20%20%22typeVersion%22%3A%201%2C%0A%20%20%20%20%20%20%22position%22%3A%20%5B%0A%20%20%20%20%20%20%20%20120%2C%0A%20%20%20%20%20%20%20%20140%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%7D%2C%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%22parameters%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%22content%22%3A%20%22User%20submits%20an%20API%20key%20using%20the%20form%22%2C%0A%20%20%20%20%20%20%20%20%22height%22%3A%20319%0A%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%22id%22%3A%20%22dd766e32-334d-4e46-9daa-7800b134a3a5%22%2C%0A%20%20%20%20%20%20%22name%22%3A%20%22Sticky%20Note1%22%2C%0A%20%20%20%20%20%20%22type%22%3A%20%22n8n-nodes-base.stickyNote%22%2C%0A%20%20%20%20%20%20%22typeVersion%22%3A%201%2C%0A%20%20%20%20%20%20%22position%22%3A%20%5B%0A%20%20%20%20%20%20%20%20500%2C%0A%20%20%20%20%20%20%20%20380%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%7D%2C%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%22parameters%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%22content%22%3A%20%22The%20workflow%20passes%20the%20key%20to%20the%20NASA%20node.%20You%20can%20reference%20the%20value%20using%20the%20expression%20%60%24json%5B%5C%22Enter%20your%20NASA%20API%20key%5C%22%5D%60.%20This%20is%20also%20available%20to%20the%20node%20credential.%20%22%2C%0A%20%20%20%20%20%20%20%20%22height%22%3A%20319%2C%0A%20%20%20%20%20%20%20%20%22color%22%3A%205%0A%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%22id%22%3A%20%223d8f02e6-e029-41dc-89ad-0f5cffe09348%22%2C%0A%20%20%20%20%20%20%22name%22%3A%20%22Sticky%20Note2%22%2C%0A%20%20%20%20%20%20%22type%22%3A%20%22n8n-nodes-base.stickyNote%22%2C%0A%20%20%20%20%20%20%22typeVersion%22%3A%201%2C%0A%20%20%20%20%20%20%22position%22%3A%20%5B%0A%20%20%20%20%20%20%20%20820%2C%0A%20%20%20%20%20%20%20%20380%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%7D%2C%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%22parameters%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%22content%22%3A%20%22The%20Respond%20to%20Webhook%20node%20controls%20the%20form%20response%20%28in%20this%20example%2C%20redirecting%20the%20user%20to%20an%20image%29%22%2C%0A%20%20%20%20%20%20%20%20%22height%22%3A%20319%0A%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%22id%22%3A%20%22096eb6ab-c276-4687-9dc0-50e16a8f709a%22%2C%0A%20%20%20%20%20%20%22name%22%3A%20%22Sticky%20Note3%22%2C%0A%20%20%20%20%20%20%22type%22%3A%20%22n8n-nodes-base.stickyNote%22%2C%0A%20%20%20%20%20%20%22typeVersion%22%3A%201%2C%0A%20%20%20%20%20%20%22position%22%3A%20%5B%0A%20%20%20%20%20%20%20%201140%2C%0A%20%20%20%20%20%20%20%20380%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%7D%0A%20%20%5D%2C%0A%20%20%22pinData%22%3A%20%7B%7D%2C%0A%20%20%22connections%22%3A%20%7B%0A%20%20%20%20%22n8n%20Form%20Trigger%22%3A%20%7B%0A%20%20%20%20%20%20%22main%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%5B%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%22node%22%3A%20%22NASA%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22main%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22index%22%3A%200%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%7D%2C%0A%20%20%20%20%22NASA%22%3A%20%7B%0A%20%20%20%20%20%20%22main%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%5B%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%22node%22%3A%20%22Respond%20to%20Webhook%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22main%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22index%22%3A%200%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%7D%0A%20%20%7D%0A%7D%0A" url="" %} #### Using the example [](https://docs.n8n.io/build/understand-workflows/create-and-edit-credentials.md#using-the-example) To load the template into your n8n instance: 1. Download the workflow JSON file. 2. Open a new workflow in your n8n instance. 3. Copy in the JSON, or select \*\*Workflow menu\*\* ![Workflow menu icon](https://docs.n8n.io/spaces/GixZThfitWP21x2gQFpD/files/LPMolGd367bGOPTPoinr) > \*\*Import from file...\*\*. The example workflows use Sticky Notes to guide you: \* Yellow: notes and information. \* Green: instructions to run the workflow. \* Orange: you need to change something to make the workflow work. \* Blue: draws attention to a key feature of the example. \[^1\]: n8n projects allow you to separate workflows, variables, and credentials into separate groups for easier management. Projects make it easier for teams to collaborate by sharing and compartmentalizing related resources. \[^2\]: In n8n, expressions allow you to populate node parameters dynamically by executing JavaScript code. Instead of providing a static value, you can use the n8n expression syntax to define the value using data from previous nodes, other workflows, or your n8n environment. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-langchain.chattrigger.md). # Chat Trigger Use the Chat Trigger node when building AI workflows for chatbots and other chat interfaces. You can configure how users access the chat, using one of n8n's provided interfaces, or your own. You can add authentication. You must connect either an agent or chain \[root node\](/integrations/builtin/cluster-nodes/root-nodes.md). {% hint style="warning" %} \*\*Workflow execution usage\*\* Every message to the Chat Trigger executes your workflow. This means that one conversation where a user sends 10 messages uses 10 executions from your execution allowance. Check your payment plan for details of your allowance. {% endhint %} {% hint style="info" %} \*\*Manual Chat trigger\*\* This node replaces the Manual Chat Trigger node from version 1.24.0. {% endhint %} ## Node parameters [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-langchain.chattrigger.md#node-parameters) \### Make Chat Publicly Available [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-langchain.chattrigger.md#make-chat-publicly-available) Set whether the chat should be publicly available (turned on) or only available through the manual chat interface (turned off). Leave this turned off while you're building the workflow. Turn it on when you're ready to publish the workflow and allow users to access the chat. #### Mode [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-langchain.chattrigger.md#mode) Choose how users access the chat. Select from: \* \*\*Hosted Chat\*\*: Use n8n's hosted chat interface. Recommended for most users because you can configure the interface using the \[node options\](#node-options) and don't have to do any other setup. \* \*\*Embedded Chat\*\*: This option requires you to create your own chat interface. You can use n8n's \[chat widget\](https://www.npmjs.com/package/@n8n/chat) or build your own. Your chat interface must call the webhook URL shown in \*\*Chat URL\*\* in the node. #### Authentication [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-langchain.chattrigger.md#authentication) Choose whether and how to restrict access to the chat. Select from: \* \*\*None\*\*: The chat doesn't use authentication. Anyone can use the chat. \* \*\*Basic Auth\*\*: The chat uses basic authentication. \* Select or create a \*\*Credential for Basic Auth\*\* with a username and password. All users must use the same username and password. \* \*\*n8n User Auth\*\*: Only users logged in to an n8n account can use the chat. #### Initial Message(s) [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-langchain.chattrigger.md#initial-messages) This parameter's only available if you're using \*\*Hosted Chat\*\*. Use it to configure the message the n8n chat interface displays when the user arrives on the page. ### Make Available in n8n Chat [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-langchain.chattrigger.md#make-available-in-n8n-chat) Choose whether to make the agent available to Chat Hub. #### Agent Name [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-langchain.chattrigger.md#agent-name) The name of the agent on Chat Hub. #### Agent description [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-langchain.chattrigger.md#agent-description) The description of the agent on Chat Hub. ## Node options [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-langchain.chattrigger.md#node-options) Available options depend on the chat mode. ### Hosted chat options [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-langchain.chattrigger.md#hosted-chat-options) \#### Allowed Origin (CORS) [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-langchain.chattrigger.md#allowed-origin-cors) Set the origins that can access the chat URL. Enter a comma-separated list of URLs allowed for cross-origin non-preflight requests. Use \`\*\` (default) to allow all origins. #### Input Placeholder, Title, and Subtitle [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-langchain.chattrigger.md#input-placeholder-title-and-subtitle) Enter the text for these elements in the chat interface. View screenshot !\[Customizable text elements\](/files/2mmV3lvJ6PWN9KdffS2f) \#### Load Previous Session [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-langchain.chattrigger.md#load-previous-session) Select whether to load chat messages from a previous chat session. If you select any option other than \*\*Off\*\*, you must connect the Chat trigger and the Agent you're using to a memory sub-node. The memory connector on the Chat trigger appears when you set \*\*Load Previous Session\*\* to \*\*From Memory\*\*. n8n recommends connecting both the Chat trigger and Agent to the same memory sub-node, as this ensures a single source of truth for both nodes. View screenshot !\[Connect nodes to memory\](/files/dUzpxhLJEjSKMl8bNYi4) \#### Response Mode [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-langchain.chattrigger.md#response-mode) Use this option when building a workflow with steps after the agent or chain that's handling the chat. Choose from: \* \*\*When Last Node Finishes\*\*: The Chat Trigger node returns the response code and the data output from the last node executed in the workflow. \* \*\*Using Response Nodes\*\*: The Chat Trigger node responds as defined in a \[Chat\](/integrations/builtin/core-nodes/n8n-nodes-langchain.chat.md) node or \[Respond to Webhook\](/integrations/builtin/core-nodes/n8n-nodes-base.respondtowebhook.md) node. In this response mode, the Chat Trigger will solely show messages as defined in these nodes and not output the data from the last node executed in the workflow. {% hint style="info" %} \*\*Using Response Nodes\*\* This mode replaces the 'Using Respond to Webhook Node' mode from version 1.2 of the Chat Trigger node. {% endhint %} \* \*\*Streaming response\*\*: Enables real-time data streaming back to the user as the workflow processes. Requires nodes with streaming support in the workflow (for example, the \[AI agent\](/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent.md) node). #### Require Button Click to Start Chat [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-langchain.chattrigger.md#require-button-click-to-start-chat) Set whether to display a \*\*New Conversation\*\* button on the chat interface (turned on) or not (turned off). View screenshot !\[New Conversation button\](/files/n5rqy1GTgRznHyq3T77B) \### Embedded chat options [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-langchain.chattrigger.md#embedded-chat-options) \#### Allowed Origin (CORS) [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-langchain.chattrigger.md#allowed-origin-cors) Set the origins that can access the chat URL. Enter a comma-separated list of URLs allowed for cross-origin non-preflight requests. Use \`\*\` (default) to allow all origins. #### Load Previous Session [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-langchain.chattrigger.md#load-previous-session) Select whether to load chat messages from a previous chat session. If you select any option other than \*\*Off\*\*, you must connect the Chat trigger and the Agent you're using to a memory sub-node. The memory connector on the Chat trigger appears when you set \*\*Load Previous Session\*\* to \*\*From Memory\*\*. n8n recommends connecting both the Chat trigger and Agent to the same memory sub-node, as this ensures a single source of truth for both nodes. View screenshot !\[Connect nodes to memory\](/files/dUzpxhLJEjSKMl8bNYi4) \#### Response Mode [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-langchain.chattrigger.md#response-mode) Use this option when building a workflow with steps after the agent or chain that's handling the chat. Choose from: \* \*\*When Last Node Finishes\*\*: The Chat Trigger node returns the response code and the data output from the last node executed in the workflow. \* \*\*Using Response Nodes\*\*: The Chat Trigger node responds as defined in a \[Chat\](/integrations/builtin/core-nodes/n8n-nodes-langchain.chat.md) node or \[Respond to Webhook\](/integrations/builtin/core-nodes/n8n-nodes-base.respondtowebhook.md) node. In this response mode, the Chat Trigger will solely show messages as defined in these nodes and not output the data from the last node executed in the workflow. {% hint style="info" %} \*\*Using Response Nodes\*\* This mode replaces the 'Using Respond to Webhook Node' mode from version 1.2 of the Chat Trigger node. {% endhint %} \* \*\*Streaming response\*\*: Enables real-time data streaming back to the user as the workflow processes. Requires nodes with streaming support enabled. ## Templates and examples [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-langchain.chattrigger.md#templates-and-examples) \[Browse n8n-nodes-base.compression integration templates\](https://n8n.io/integrations/chat-trigger) or \[search all templates\](https://n8n.io/workflows/) ## Related resources [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-langchain.chattrigger.md#related-resources) View n8n's \[Advanced AI\](/build/integrate-ai.md) documentation. ## Set the chat response manually [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-langchain.chattrigger.md#set-the-chat-response-manually) You need to manually set the chat response when you don't want to directly send the output of an Agent or Chain node to the user. Instead, you want to take the output of an Agent or Chain node and modify it or do something else with it before sending it back to the user. In a basic workflow, the Agent and Chain nodes output a parameter named either \`output\` or \`text\`, and the Chat trigger sends the value of this parameter to the user as the chat response. If you need to manually create the response sent to the user, you must create a parameter named either \`text\` or \`output\`. If you use a different parameter name, the Chat trigger sends the entire object as its response, not just the value. {% hint style="info" %} \*\*Chat node\*\* When you are using a \[Chat\](/integrations/builtin/core-nodes/n8n-nodes-langchain.chat.md) node to manually create the response sent to the user, you must set the Chat Trigger response mode to 'Using Response Nodes'. {% endhint %} ## Common issues [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-langchain.chattrigger.md#common-issues) For common questions or issues and suggested solutions, refer to \[Common Issues\](/integrations/builtin/core-nodes/n8n-nodes-langchain.chattrigger/common-issues.md). --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line.md). # Use the command line The \*\*Server CLI\*\* is a built-in command-line interface that runs on the same machine as your n8n installation. It provides direct database access for administrative tasks and can execute most commands even when n8n isn't running. {% hint style="info" %} \*\*n8n CLI\*\* Looking to interact with n8n programmatically from a remote machine or integrate with AI agents? Check out the \[n8n CLI\](https://docs.n8n.io/connect/). {% endhint %} ## When to use Server CLI vs n8n CLI [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line.md#when-to-use-server-cli-vs-n8n-cli) | Feature | Server CLI | n8n CLI | | ------------------------ | ------------------------------------------------------------- | -------------------------------------------------------- | | \*\*Where it runs\*\* | Same machine as n8n | Any machine with network access | | \*\*Authentication\*\* | Direct database access | API key | | \*\*Requires running n8n\*\* | No (most commands) | Yes | | \*\*Best for\*\* | Instance operators, backups, migrations | Programmers, AI agents, remote management | | \*\*Security model\*\* | Bypasses access controls | Respects user permissions and API key scope | | \*\*Use case examples\*\* | Backup/restore, license management, emergency password resets | Workflow automation, credentials management through code | ## Running CLI commands [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line.md#running-cli-commands) You can use CLI commands with self-hosted n8n. Depending on how you choose to install n8n, there are differences in how to run the commands: \* npm: the \`n8n\` command is directly available. The documentation uses this in the examples below. \* Docker: the \`n8n\` command is available within your Docker container: \`\`\`sh docker exec -u node -it \`\`\` ## Start a workflow [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line.md#start-a-workflow) You can start workflows directly using the CLI. Execute a saved workflow by its ID: \`\`\`bash n8n execute --id \`\`\` ## Publish or unpublish a workflow [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line.md#publish-or-unpublish-a-workflow) You can publish or unpublish a workflow using the CLI. In n8n 2.0, the \[previous active/inactive toggle\](/changelog/v20-breaking-changes.md) was replaced by a publish/unpublish model. Use \`publish:workflow\` and \`unpublish:workflow\` to change a workflow's published state from the CLI. {% hint style="info" %} \*\*Restart required\*\* These commands operate on your n8n database. If you execute them while n8n is running, the changes don't take effect until you restart n8n. {% endhint %} ### Publish a workflow [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line.md#publish-a-workflow) Use \`publish:workflow\` to publish a workflow by its ID. You can optionally publish a specific historical version by passing its \`versionId\`. Command flags: | Flag | Description | | ----------- | --------------------------------------------------------------------------- | | --help | Help prompt. | | --id | The ID of the workflow to publish. Required. | | --versionId | Optional version ID to publish. If omitted, the current draft is published. | {% hint style="info" %} \*\*No \`--all\` flag\*\* Unlike the deprecated \`update:workflow\` command, \`publish:workflow\` doesn't support \`--all\`. This is intentional: it prevents accidental bulk publishing of workflows in production environments. Publish workflows individually by ID. {% endhint %} Publish the current draft of a workflow by ID: \`\`\`bash n8n publish:workflow --id= \`\`\` Publish a specific historical version of a workflow: \`\`\`bash n8n publish:workflow --id= --versionId= \`\`\` ### Unpublish a workflow [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line.md#unpublish-a-workflow) Use \`unpublish:workflow\` to unpublish a workflow by its ID, or all workflows at once. Command flags: | Flag | Description | | ------ | ---------------------------------------------------------------- | | --help | Help prompt. | | --id | The ID of the workflow to unpublish. Can't be used with \`--all\`. | | --all | Unpublish all workflows. Can't be used with \`--id\`. | Unpublish a workflow by its ID: \`\`\`bash n8n unpublish:workflow --id= \`\`\` Unpublish all workflows: \`\`\`bash n8n unpublish:workflow --all \`\`\` ### update:workflow (deprecated) [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line.md#updateworkflow-deprecated) {% hint style="warning" %} \*\*Deprecated in n8n 2.0\*\* The \`update:workflow\` command is deprecated and will be removed. Use \[\`publish:workflow\`\](#publish-a-workflow) and \[\`unpublish:workflow\`\](#unpublish-a-workflow) instead. See the \[n8n v2.0 breaking changes\](/changelog/v20-breaking-changes.md) for details. {% endhint %} Set the active status of a workflow by its ID to false: \`\`\`bash n8n update:workflow --id= --active=false \`\`\` Set the active status of a workflow by its ID to true: \`\`\`bash n8n update:workflow --id= --active=true \`\`\` Set the active status to false for all the workflows: \`\`\`bash n8n update:workflow --all --active=false \`\`\` Set the active status to true for all the workflows: \`\`\`bash n8n update:workflow --all --active=true \`\`\` ## Export entities [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line.md#export-entities) You can export your database entities from n8n using the CLI. This tooling allows you to export all entity types from one database type, such as SQLite, and import them into another database type, such as Postgres. Command flags: | Flag | Description | | ----------------------------------- | ---------------------------------------------------------------------------------------------- | | --help | Help prompt. | | --outputDir | Output directory path | | --includeExecutionHistoryDataTables | Include execution history data tables, these are excluded by default as they can be very large | \`\`\`bash n8n export:entities --outputDir=./outputs --includeExecutionHistoryDataTables=true \`\`\` ## Export workflows and credentials [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line.md#export-workflows-and-credentials) You can export your workflows and credentials from n8n using the CLI. Command flags: | Flag | Description | | ------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | --help | Help prompt. | | --all | Exports all workflows/credentials. | | --backup | Sets --all --pretty --separate for backups. You can optionally set --output. | | --id | The ID of the workflow to export. | | --output, -o | Outputs file name or directory if using separate files. | | --pretty | Formats the output in an easier to read fashion. | | --separate | Exports one file per workflow (useful for versioning). Must set a directory using --output. | | --decrypted | Exports the credentials in a plain text format. (Credentials only.) | | --version | The version ID of a specific historical version to export. (Workflows only, can't be used with \`--all\` or \`--published\`.) | | --published | Exports the published/active version of the workflow instead of the current draft. When combined with \`--all\`, unpublished workflows are skipped. (Workflows only, can't be used with \`--version\`.) | ### Workflows [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line.md#workflows) Export all your workflows to the standard output (terminal): \`\`\`bash n8n export:workflow --all \`\`\` Export a workflow by its ID and specify the output file name: \`\`\`bash n8n export:workflow --id= --output=file.json \`\`\` Export all workflows to a specific directory in a single file: \`\`\`bash n8n export:workflow --all --output=backups/latest/file.json \`\`\` Export all the workflows to a specific directory using the \`--backup\` flag (details above): \`\`\`bash n8n export:workflow --backup --output=backups/latest/ \`\`\` #### Export a specific workflow version [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line.md#export-a-specific-workflow-version) You can export a specific historical version of a workflow by passing its \`versionId\` with \`--version\`: \`\`\`bash n8n export:workflow --id= --version= --output=workflow-v1.json \`\`\` #### Export the published version of a workflow [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line.md#export-the-published-version-of-a-workflow) Use \`--published\` to export the currently published/active version of a workflow rather than the current draft: \`\`\`bash n8n export:workflow --id= --published --output=published.json \`\`\` You can combine \`--published\` with \`--all\` to export every workflow's published version. Workflows that don't have a published version are skipped: \`\`\`bash n8n export:workflow --all --published --output=workflows.json \`\`\` {% hint style="info" %} \*\*Version metadata\*\* When exporting a workflow, n8n includes a \`versionMetadata\` property containing the workflow's historical name and description for that version. The import command preserves this data in the workflow history table on import. The current workflow's name and description aren't overridden. {% endhint %} ### Credentials [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line.md#credentials) Export all your credentials to the standard output (terminal): \`\`\`bash n8n export:credentials --all \`\`\` Export credentials by their ID and specify the output file name: \`\`\`bash n8n export:credentials --id= --output=file.json \`\`\` Export all credentials to a specific directory in a single file: \`\`\`bash n8n export:credentials --all --output=backups/latest/file.json \`\`\` Export all the credentials to a specific directory using the \`--backup\` flag (details above): \`\`\`bash n8n export:credentials --backup --output=backups/latest/ \`\`\` Export all the credentials in plain text format. You can use this to migrate from one installation to another that has a different secret key in the configuration file. {% hint style="warning" %} \*\*Sensitive information\*\* All sensitive information is visible in the files. {% endhint %} \`\`\`bash n8n export:credentials --all --decrypted --output=backups/decrypted.json \`\`\` ## Import entities [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line.md#import-entities) You can import entities from a previous \`export:entities\` command using this command, it allows importing of entities into a database type that differs from the exported database type. Current supported database types include: SQLite, Postgres. The database is expected to be empty prior to import, this can be forced with the \`--truncateTables\` parameter. Command flags: | Flag | Description | | ---------------- | -------------------------------------------------- | | --help | Help prompt. | | --inputDir | Input directory that holds output files for import | | --truncateTables | Truncate tables before import | \`\`\`bash n8n import:entities --inputDir ./outputs --truncateTables true \`\`\` ## Import workflows and credentials [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line.md#import-workflows-and-credentials) You can import your workflows and credentials from n8n using the CLI. {% hint style="warning" %} \*\*Update the IDs\*\* When exporting workflows and credentials, n8n also exports their IDs. If you have workflows and credentials with the same IDs in your existing database, they will be overwritten. To avoid this, delete or change the IDs before importing. {% endhint %} Available flags: | Flag | Description | | --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | --help | Help prompt. | | --input | Input file name or directory if you use --separate. | | --projectId | Import the workflow or credential to the specified project. Can't be used with \`--userId\`. | | --separate | Imports \`\*.json\` files from directory provided by --input. | | --userId | Import the workflow or credential to the specified user. Can't be used with \`--projectId\`. | | --skipMigrationChecks | Skip migration validation checks. | | --activeState | Controls the active state of imported workflows. Accepts \`false\` (default, deactivates all imported workflows) or \`fromJson\` (uses the \`active\` field from each workflow's JSON; multi-main mode only). | {% hint style="info" %} \*\*Migrating to SQLite\*\* n8n limits workflow and credential names to 128 characters, but SQLite doesn't enforce size limits. This might result in errors like \*\*Data too long for column name\*\* during the import process. In this case, you can edit the names from the n8n interface and export again, or edit the JSON file directly before importing. {% endhint %} ### Workflows [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line.md#workflows) {% hint style="warning" %} \*\*Known issue: cron triggers keep running after import\*\* The behaviour of importing a previously active workflow differs depending on the mode you are running. This is a known bug. On multi-main and queue-mode instances the previously active workflow's cron triggers are deactivated on import. On non multi-main instances the previously active workflows cron triggers will remain running until you restart the n8n instance. {% endhint %} Import workflows from a specific file: \`\`\`bash n8n import:workflow --input=file.json \`\`\` Import all the workflow files as JSON from the specified directory: \`\`\`bash n8n import:workflow --separate --input=backups/latest/ \`\`\` {% hint style="info" %} \*\*Version metadata on import\*\* If the imported file includes a \`versionMetadata\` property (added by exports that target a specific version or the published version), n8n preserves that historical name and description in the workflow history table. The current workflow entity's name and description are kept as-is. {% endhint %} By default, \`import:workflow\` deactivates every imported workflow. To preserve the \`active\` field from each JSON file instead, pass \`--activeState=fromJson\` (only supported in multi-main & queue mode): \`\`\`bash n8n import:workflow --separate --input=backups/latest/ --activeState=fromJson \`\`\` ### Credentials [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line.md#credentials) Import credentials from a specific file: \`\`\`bash n8n import:credentials --input=file.json \`\`\` Import all the credentials files as JSON from the specified directory: \`\`\`bash n8n import:credentials --separate --input=backups/latest/ \`\`\` ## License [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line.md#license) \### Clear [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line.md#clear) Clear your existing license from n8n's database and reset n8n to default features: \`\`\`sh n8n license:clear \`\`\` If your license includes \[floating entitlements\](#user-content-fn-1)\[^1\], running this command will also attempt to release them back to the pool, making them available for other instances. ### Info [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line.md#info) Display information about the existing license: \`\`\`sh n8n license:info \`\`\` ## User management [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line.md#user-management) You can reset user management using the n8n CLI. This returns user management to its pre-setup state. It removes all user accounts. Use this if you forget your password, and don't have SMTP set up to do password resets by email. \`\`\`sh n8n user-management:reset \`\`\` ### Disable MFA for a user [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line.md#disable-mfa-for-a-user) If a user loses their recovery codes you can disable MFA for a user with this command. The user will then be able to log back in to set up MFA again. \`\`\`sh n8n mfa:disable --email=johndoe@example.com \`\`\` ### Disable LDAP [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line.md#disable-ldap) You can reset the LDAP settings using the command below. \`\`\`sh n8n ldap:reset \`\`\` ## Uninstall community nodes and credentials [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line.md#uninstall-community-nodes-and-credentials) You can manage \[community nodes\](/integrations/community-nodes/installation-and-management.md) using the n8n CLI. For now, you can only uninstall community nodes and credentials, which is useful if a community node causes instability. Command flags: | Flag | Description | | ------------ | -------------------------------------------------------------------------------------------------------------------------- | | --help | Show CLI help. | | --credential | The credential type. Get this value by visiting the node's \`.credential.ts\` file and getting the value of \`name\`. | | --package | Package name of the community node. | | --uninstall | Uninstalls the node. | | --userId | The ID of the user who owns the credential. On self-hosted, query the database. On cloud, query the API with your API key. | ### Nodes [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line.md#nodes) Uninstall a community node by package name: \`\`\`sh n8n community-node --uninstall --package \`\`\` For example, to uninstall the \[Evolution API community node\](https://www.npmjs.com/package/n8n-nodes-evolution-api), type: \`\`\`sh n8n community-node --uninstall --package n8n-nodes-evolution-api \`\`\` ### Credentials [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line.md#credentials) Uninstall a community node credential: \`\`\`sh n8n community-node --uninstall --credential \--userId \`\`\` For example, to uninstall the \[Evolution API community node credential\](https://www.npmjs.com/package/n8n-nodes-evolution-api), visit the \[repository\](https://github.com/oriondesign2015/n8n-nodes-evolution-api) and navigate to the \[\`credentials.ts\` file\](https://github.com/oriondesign2015/n8n-nodes-evolution-api/blob/main/credentials/EvolutionApi.credentials.ts) to find the \`name\`: \`\`\`sh n8n community-node --uninstall --credential evolutionApi --userId 1234 \`\`\` ## Security audit [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line.md#security-audit) You can run a \[security audit\](/deploy/host-n8n/configure-n8n/security/run-security-audits.md) on your n8n instance, to detect common security issues. \`\`\`sh n8n audit \`\`\` \[^1\]: In n8n, entitlements grant n8n instances access to plan-restricted features for a specific period of time. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/credentials/autopilot.md). # Autopilot credentials You can use these credentials to authenticate the following nodes: \* \[Autopilot\](/integrations/builtin/app-nodes/n8n-nodes-base.autopilot.md) \* \[Autopilot Trigger\](/integrations/builtin/trigger-nodes/n8n-nodes-base.autopilottrigger.md) {% hint style="warning" %} \*\*Autopilot branding change\*\* Autopilot has become Ortto. The Autopilot credentials and nodes are only compatible with Autopilot, not the new Ortto API. {% endhint %} ## Prerequisites [](https://docs.n8n.io/integrations/builtin/credentials/autopilot.md#prerequisites) Create an \[Autopilot\](https://app.autopilothq.com) account. ## Supported authentication methods [](https://docs.n8n.io/integrations/builtin/credentials/autopilot.md#supported-authentication-methods) \* API key ## Related resources [](https://docs.n8n.io/integrations/builtin/credentials/autopilot.md#related-resources) Refer to \[Autopilot's API documentation\](https://autopilot.docs.apiary.io/#) for more information about the service. ## Using API key [](https://docs.n8n.io/integrations/builtin/credentials/autopilot.md#using-api-key) To configure this credential, you'll need: \* An \*\*API Key\*\*: Generate an API key in \*\*Settings > Autopilot API\*\*. Refer to \[Autopilot API authentication\](https://autopilot.docs.apiary.io/#reference/authentication) for more information. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/build/integrate-ai/ai-examples/use-google-sheets-as-a-data-source.md). # Use Google Sheets as a data source Use n8n to bring your own data to AI. This workflow uses the \[Chat Trigger\](/integrations/builtin/core-nodes/n8n-nodes-langchain.chattrigger.md) to provide the chat interface, and the \[Call n8n Workflow Tool\](/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolworkflow.md) to call a second workflow that queries Google Sheets. {% @n8n-blocks/n8n-workflow-demo content="%7B%0A%20%20%22name%22%3A%20%22Chat%20with%20Google%20Sheets%20%28docs%20version%29%22%2C%0A%20%20%22nodes%22%3A%20%5B%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%22parameters%22%3A%20%7B%7D%2C%0A%20%20%20%20%20%20%22id%22%3A%20%22e96a5e41-f0d6-49c1-977e-ff724a857212%22%2C%0A%20%20%20%20%20%20%22name%22%3A%20%22Execute%20Workflow%20Trigger%22%2C%0A%20%20%20%20%20%20%22type%22%3A%20%22n8n-nodes-base.executeWorkflowTrigger%22%2C%0A%20%20%20%20%20%20%22position%22%3A%20%5B%0A%20%20%20%20%20%20%20%20540%2C%0A%20%20%20%20%20%20%20%201240%0A%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%22typeVersion%22%3A%201%0A%20%20%20%20%7D%2C%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%22parameters%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%22content%22%3A%20%22%23%23%23%20Sub-workflow%3A%20Custom%20tool%5CnThe%20agent%20above%20can%20call%20this%20workflow.%20It%20returns%20three%20different%20types%20of%20data%20from%20the%20Google%20Sheet%2C%20which%20can%20be%20used%20together%20for%20more%20complex%20queries%20without%20returning%20the%20whole%20sheet%20%28which%20might%20be%20too%20big%20for%20GPT%20to%20handle%29.%22%2C%0A%20%20%20%20%20%20%20%20%22height%22%3A%20612.0936015224503%2C%0A%20%20%20%20%20%20%20%20%22width%22%3A%201449.2963504228514%2C%0A%20%20%20%20%20%20%20%20%22color%22%3A%207%0A%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%22id%22%3A%20%2267facef0-e9c6-4280-8232-78f654b420d5%22%2C%0A%20%20%20%20%20%20%22name%22%3A%20%22Sticky%20Note1%22%2C%0A%20%20%20%20%20%20%22type%22%3A%20%22n8n-nodes-base.stickyNote%22%2C%0A%20%20%20%20%20%20%22position%22%3A%20%5B%0A%20%20%20%20%20%20%20%20461.9740563285368%2C%0A%20%20%20%20%20%20%20%20970.616715060075%0A%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%22typeVersion%22%3A%201%0A%20%20%20%20%7D%2C%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%22parameters%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%22content%22%3A%20%22%23%23%23%20Main%20workflow%3A%20AI%20agent%20using%20custom%20tool%22%2C%0A%20%20%20%20%20%20%20%20%22height%22%3A%20486.5625%2C%0A%20%20%20%20%20%20%20%20%22width%22%3A%20927.5%2C%0A%20%20%20%20%20%20%20%20%22color%22%3A%207%0A%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%22id%22%3A%20%22bc448102-954b-451e-9bf7-bcadbc53bdbc%22%2C%0A%20%20%20%20%20%20%22name%22%3A%20%22Sticky%20Note2%22%2C%0A%20%20%20%20%20%20%22type%22%3A%20%22n8n-nodes-base.stickyNote%22%2C%0A%20%20%20%20%20%20%22position%22%3A%20%5B%0A%20%20%20%20%20%20%20%20460%2C%0A%20%20%20%20%20%20%20%20460%0A%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%22typeVersion%22%3A%201%0A%20%20%20%20%7D%2C%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%22parameters%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%22content%22%3A%20%22%23%23%20Try%20it%20out%5Cn%5CnSelect%20%2A%2AChat%2A%2A%20at%20the%20bottom%20and%20enter%3A%5Cn%5Cn\\\_Which%20is%20our%20biggest%20customer%3F\\\_%22%2C%0A%20%20%20%20%20%20%20%20%22height%22%3A%20183.85014518022527%2C%0A%20%20%20%20%20%20%20%20%22width%22%3A%20185.9375%2C%0A%20%20%20%20%20%20%20%20%22color%22%3A%204%0A%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%22id%22%3A%20%22afb2da2f-8da2-4ee8-bff9-55a99eeecc5c%22%2C%0A%20%20%20%20%20%20%22name%22%3A%20%22Sticky%20Note3%22%2C%0A%20%20%20%20%20%20%22type%22%3A%20%22n8n-nodes-base.stickyNote%22%2C%0A%20%20%20%20%20%20%22position%22%3A%20%5B%0A%20%20%20%20%20%20%20%20300%2C%0A%20%20%20%20%20%20%20%20540%0A%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%22typeVersion%22%3A%201%0A%20%20%20%20%7D%2C%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%22parameters%22%3A%20%7B%7D%2C%0A%20%20%20%20%20%20%22id%22%3A%20%225d56d128-9a83-45ee-a34c-bc1190d59322%22%2C%0A%20%20%20%20%20%20%22name%22%3A%20%22Chat%20Trigger%22%2C%0A%20%20%20%20%20%20%22type%22%3A%20%22%40n8n%2Fn8n-nodes-langchain.chatTrigger%22%2C%0A%20%20%20%20%20%20%22position%22%3A%20%5B%0A%20%20%20%20%20%20%20%20600%2C%0A%20%20%20%20%20%20%20%20560%0A%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%22webhookId%22%3A%20%22e3f23177-c7c1-417b-a513-1c1090dda0a2%22%2C%0A%20%20%20%20%20%20%22typeVersion%22%3A%201%0A%20%20%20%20%7D%2C%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%22parameters%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%22authentication%22%3A%20%22serviceAccount%22%2C%0A%20%20%20%20%20%20%20%20%22documentId%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%22\\\_\\\_rl%22%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%22mode%22%3A%20%22url%22%2C%0A%20%20%20%20%20%20%20%20%20%20%22value%22%3A%20%22%3D%7B%7B%20%24json.sheetUrl%20%7D%7D%22%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%22sheetName%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%22\\\_\\\_rl%22%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%22mode%22%3A%20%22url%22%2C%0A%20%20%20%20%20%20%20%20%20%20%22value%22%3A%20%22%3D%7B%7B%20%24json.sheetUrl%20%7D%7D%22%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%22options%22%3A%20%7B%7D%0A%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%22id%22%3A%20%223c0e4b48-a27b-472f-948e-9aa001c49149%22%2C%0A%20%20%20%20%20%20%22name%22%3A%20%22Get%20Google%20sheet%20contents%22%2C%0A%20%20%20%20%20%20%22type%22%3A%20%22n8n-nodes-base.googleSheets%22%2C%0A%20%20%20%20%20%20%22position%22%3A%20%5B%0A%20%20%20%20%20%20%20%20980%2C%0A%20%20%20%20%20%20%20%201240%0A%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%22typeVersion%22%3A%204.2%0A%20%20%20%20%7D%2C%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%22parameters%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%22fields%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%22values%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22name%22%3A%20%22sheetUrl%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%22options%22%3A%20%7B%7D%0A%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%22id%22%3A%20%2267f9c172-e70f-4a0f-afd3-513cfeae09db%22%2C%0A%20%20%20%20%20%20%22name%22%3A%20%22Set%20Google%20Sheet%20URL%22%2C%0A%20%20%20%20%20%20%22type%22%3A%20%22n8n-nodes-base.set%22%2C%0A%20%20%20%20%20%20%22position%22%3A%20%5B%0A%20%20%20%20%20%20%20%20760%2C%0A%20%20%20%20%20%20%20%201240%0A%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%22typeVersion%22%3A%203.2%0A%20%20%20%20%7D%2C%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%22parameters%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%22fields%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%22values%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22name%22%3A%20%22response%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22stringValue%22%3A%20%22%3D%7B%7B%20Object.keys%28%24json%29%20%7D%7D%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%22include%22%3A%20%22none%22%2C%0A%20%20%20%20%20%20%20%20%22options%22%3A%20%7B%7D%0A%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%22id%22%3A%20%22d49223eb-2927-4ddd-bd2c-cd439f927341%22%2C%0A%20%20%20%20%20%20%22name%22%3A%20%22Get%20column%20names%22%2C%0A%20%20%20%20%20%20%22type%22%3A%20%22n8n-nodes-base.set%22%2C%0A%20%20%20%20%20%20%22position%22%3A%20%5B%0A%20%20%20%20%20%20%20%201440%2C%0A%20%20%20%20%20%20%20%201060%0A%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%22executeOnce%22%3A%20true%2C%0A%20%20%20%20%20%20%22typeVersion%22%3A%203.2%0A%20%20%20%20%7D%2C%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%22parameters%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%22jsCode%22%3A%20%22return%20%7B%5Cn%20%20%27response%27%3A%20JSON.stringify%28%24input.all%28%29.map%28x%20%3D%3E%20x.json%29%29%5Cn%7D%22%0A%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%22id%22%3A%20%2237ceba7a-1f0b-4de7-ae4a-d29a18dabaf6%22%2C%0A%20%20%20%20%20%20%22name%22%3A%20%22Prepare%20output%22%2C%0A%20%20%20%20%20%20%22type%22%3A%20%22n8n-nodes-base.code%22%2C%0A%20%20%20%20%20%20%22position%22%3A%20%5B%0A%20%20%20%20%20%20%20%201720%2C%0A%20%20%20%20%20%20%20%201240%0A%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%22typeVersion%22%3A%202%0A%20%20%20%20%7D%2C%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%22parameters%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%22name%22%3A%20%22list\\\_columns\\\_tool%22%2C%0A%20%20%20%20%20%20%20%20%22description%22%3A%20%22%3D%23%23%23%20List%20all%20column%20names%20in%20customer%20data%5CnThis%20is%20useful%20to%20find%20out%20what%20data%20is%20available%20for%20each%20customer.%20Returns%20a%20JSON%20array%20containing%20all%20the%20column%20names.%22%2C%0A%20%20%20%20%20%20%20%20%22workflowId%22%3A%20%22%3D%7B%7B%20%24workflow\\.id%20%7D%7D%22%2C%0A%20%20%20%20%20%20%20%20%22fields%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%22values%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22name%22%3A%20%22operation%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22stringValue%22%3A%20%22column\\\_names%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%22id%22%3A%20%2294516eb1-89fc-4d3f-8000-d0fa43cd71cd%22%2C%0A%20%20%20%20%20%20%22name%22%3A%20%22List%20columns%20tool%22%2C%0A%20%20%20%20%20%20%22type%22%3A%20%22%40n8n%2Fn8n-nodes-langchain.toolWorkflow%22%2C%0A%20%20%20%20%20%20%22position%22%3A%20%5B%0A%20%20%20%20%20%20%20%20940%2C%0A%20%20%20%20%20%20%20%20780%0A%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%22typeVersion%22%3A%201%0A%20%20%20%20%7D%2C%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%22parameters%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%22name%22%3A%20%22get\\\_customer\\\_tool%22%2C%0A%20%20%20%20%20%20%20%20%22description%22%3A%20%22%3D%23%23%23%20Get%20all%20columns%20for%20a%20given%20customer%5CnTo%20use%20this%20mode%2C%20pass%20the%20row%20number%20of%20the%20customer.%20Returns%20a%20JSON%20object%20with%20all%20the%20column%20names%20and%20their%20values.%22%2C%0A%20%20%20%20%20%20%20%20%22workflowId%22%3A%20%22%3D%7B%7B%20%24workflow\\.id%20%7D%7D%22%2C%0A%20%20%20%20%20%20%20%20%22fields%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%22values%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22name%22%3A%20%22operation%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22stringValue%22%3A%20%22row%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%22id%22%3A%20%22006745a1-3df7-4de9-9483-c6e133272c55%22%2C%0A%20%20%20%20%20%20%22name%22%3A%20%22Get%20customer%20tool%22%2C%0A%20%20%20%20%20%20%22type%22%3A%20%22%40n8n%2Fn8n-nodes-langchain.toolWorkflow%22%2C%0A%20%20%20%20%20%20%22position%22%3A%20%5B%0A%20%20%20%20%20%20%20%201220%2C%0A%20%20%20%20%20%20%20%20780%0A%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%22typeVersion%22%3A%201%0A%20%20%20%20%7D%2C%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%22parameters%22%3A%20%7B%7D%2C%0A%20%20%20%20%20%20%22id%22%3A%20%22c3d20569-1374-4f8d-8779-23b98952d124%22%2C%0A%20%20%20%20%20%20%22name%22%3A%20%22Simple%20Memory%22%2C%0A%20%20%20%20%20%20%22type%22%3A%20%22%40n8n%2Fn8n-nodes-langchain.memoryBufferWindow%22%2C%0A%20%20%20%20%20%20%22position%22%3A%20%5B%0A%20%20%20%20%20%20%20%20800%2C%0A%20%20%20%20%20%20%20%20780%0A%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%22typeVersion%22%3A%201.1%0A%20%20%20%20%7D%2C%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%22parameters%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%22name%22%3A%20%22column\\\_values\\\_tool%22%2C%0A%20%20%20%20%20%20%20%20%22description%22%3A%20%22%3D%23%23%23%20Get%20the%20specified%20column%20value%20for%20all%20customers%5CnThis%20is%20useful%20if%20you%20want%20to%20find%20out%20which%20customers%20have%20a%20certain%20value%20for%20a%20given%20column.%20Returns%20an%20array%20of%20JSON%20objects%2C%20one%20per%20customer.%20Each%20JSON%20object%20includes%20the%20column%20being%20requested%2C%20plus%20the%20row\\\_number%20column.%20%28The%20row\\\_number%20column%20can%20be%20used%20to%20request%20the%20full%20customer%20data%20in%20a%20second%20step.%29.%20To%20use%20this%20mode%2C%20pass%20the%20name%20of%20the%20column%20to%20fetch.%5Cn%5CnYou%20may%20want%20to%20call%20the%20%27list%20columns%27%20tool%20first%20to%20find%20out%20which%20columns%20you%20could%20be%20fetching.%22%2C%0A%20%20%20%20%20%20%20%20%22workflowId%22%3A%20%22%3D%7B%7B%20%24workflow\\.id%20%7D%7D%22%2C%0A%20%20%20%20%20%20%20%20%22fields%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%22values%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22name%22%3A%20%22operation%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22stringValue%22%3A%20%22column\\\_values%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%22id%22%3A%20%223a370ae9-eaf8-4e84-948b-848c461ac9eb%22%2C%0A%20%20%20%20%20%20%22name%22%3A%20%22Get%20column%20values%20tool%22%2C%0A%20%20%20%20%20%20%22type%22%3A%20%22%40n8n%2Fn8n-nodes-langchain.toolWorkflow%22%2C%0A%20%20%20%20%20%20%22position%22%3A%20%5B%0A%20%20%20%20%20%20%20%201080%2C%0A%20%20%20%20%20%20%20%20780%0A%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%22typeVersion%22%3A%201%0A%20%20%20%20%7D%2C%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%22parameters%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%22text%22%3A%20%22%3D%7B%7B%20%24json.chatInput%20%7D%7D%22%2C%0A%20%20%20%20%20%20%20%20%22options%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%22maxIterations%22%3A%2010%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%22id%22%3A%20%228f2a4854-2177-4ac8-9501-fa36cf2a3d73%22%2C%0A%20%20%20%20%20%20%22name%22%3A%20%22AI%20Agent%22%2C%0A%20%20%20%20%20%20%22type%22%3A%20%22%40n8n%2Fn8n-nodes-langchain.agent%22%2C%0A%20%20%20%20%20%20%22position%22%3A%20%5B%0A%20%20%20%20%20%20%20%20820%2C%0A%20%20%20%20%20%20%20%20560%0A%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%22typeVersion%22%3A%201.1%0A%20%20%20%20%7D%2C%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%22parameters%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%22content%22%3A%20%22%2A%2AThese%20tools%20all%20call%20the%20sub-workflow%20below%2A%2A%22%2C%0A%20%20%20%20%20%20%20%20%22height%22%3A%20179.21380662202682%2C%0A%20%20%20%20%20%20%20%20%22width%22%3A%20432.3271051132649%2C%0A%20%20%20%20%20%20%20%20%22color%22%3A%205%0A%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%22id%22%3A%20%222576563b-a104-4d99-b3c8-b53bff4c740c%22%2C%0A%20%20%20%20%20%20%22name%22%3A%20%22Sticky%20Note%22%2C%0A%20%20%20%20%20%20%22type%22%3A%20%22n8n-nodes-base.stickyNote%22%2C%0A%20%20%20%20%20%20%22position%22%3A%20%5B%0A%20%20%20%20%20%20%20%20900%2C%0A%20%20%20%20%20%20%20%20740.8693557231958%0A%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%22typeVersion%22%3A%201%0A%20%20%20%20%7D%2C%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%22parameters%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%22content%22%3A%20%22%2A%2AChange%20the%20URL%20of%20the%20Google%20Sheet%2A%2A%22%2C%0A%20%20%20%20%20%20%20%20%22height%22%3A%20226.64416053838073%2C%0A%20%20%20%20%20%20%20%20%22width%22%3A%20179.99762227826224%2C%0A%20%20%20%20%20%20%20%20%22color%22%3A%202%0A%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%22id%22%3A%20%225b623d9e-e188-403d-a702-9ece6172a487%22%2C%0A%20%20%20%20%20%20%22name%22%3A%20%22Sticky%20Note4%22%2C%0A%20%20%20%20%20%20%22type%22%3A%20%22n8n-nodes-base.stickyNote%22%2C%0A%20%20%20%20%20%20%22position%22%3A%20%5B%0A%20%20%20%20%20%20%20%20723%2C%0A%20%20%20%20%20%20%20%201172%0A%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%22typeVersion%22%3A%201%0A%20%20%20%20%7D%2C%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%22parameters%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%22model%22%3A%20%22gpt-4%22%2C%0A%20%20%20%20%20%20%20%20%22options%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%22temperature%22%3A%200%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%22id%22%3A%20%222b8c8a67-a4df-4f5c-8c13-3cb2d25d2c5f%22%2C%0A%20%20%20%20%20%20%22name%22%3A%20%22GPT4%20Model%22%2C%0A%20%20%20%20%20%20%22type%22%3A%20%22%40n8n%2Fn8n-nodes-langchain.lmChatOpenAi%22%2C%0A%20%20%20%20%20%20%22position%22%3A%20%5B%0A%20%20%20%20%20%20%20%20660%2C%0A%20%20%20%20%20%20%20%20780%0A%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%22typeVersion%22%3A%201%0A%20%20%20%20%7D%2C%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%22parameters%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%22content%22%3A%20%22%2A%2ASet%20your%20credentials%2A%2A%22%2C%0A%20%20%20%20%20%20%20%20%22height%22%3A%20171%2C%0A%20%20%20%20%20%20%20%20%22width%22%3A%20150%2C%0A%20%20%20%20%20%20%20%20%22color%22%3A%202%0A%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%22id%22%3A%20%22f39d0c9b-4055-4331-83c8-3dbffb43478e%22%2C%0A%20%20%20%20%20%20%22name%22%3A%20%22Sticky%20Note5%22%2C%0A%20%20%20%20%20%20%22type%22%3A%20%22n8n-nodes-base.stickyNote%22%2C%0A%20%20%20%20%20%20%22typeVersion%22%3A%201%2C%0A%20%20%20%20%20%20%22position%22%3A%20%5B%0A%20%20%20%20%20%20%20%20620%2C%0A%20%20%20%20%20%20%20%20720%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%7D%2C%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%22parameters%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%22content%22%3A%20%22%2A%2ASet%20your%20credentials%2A%2A%22%2C%0A%20%20%20%20%20%20%20%20%22height%22%3A%20237%2C%0A%20%20%20%20%20%20%20%20%22width%22%3A%20176%2C%0A%20%20%20%20%20%20%20%20%22color%22%3A%202%0A%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%22id%22%3A%20%22a8e09ef8-4dc6-4918-9194-047de402a8fa%22%2C%0A%20%20%20%20%20%20%22name%22%3A%20%22Sticky%20Note6%22%2C%0A%20%20%20%20%20%20%22type%22%3A%20%22n8n-nodes-base.stickyNote%22%2C%0A%20%20%20%20%20%20%22typeVersion%22%3A%201%2C%0A%20%20%20%20%20%20%22position%22%3A%20%5B%0A%20%20%20%20%20%20%20%20940%2C%0A%20%20%20%20%20%20%20%201172%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%7D%2C%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%22parameters%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%22content%22%3A%20%22%23%23%20Next%20steps%5Cn%5CnLearn%20more%20about%20%5BAdvanced%20AI%20in%20n8n%5D%28https%3A%2F%2Fdocs.n8n.io%2Fadvanced-ai%2F%29%22%2C%0A%20%20%20%20%20%20%20%20%22height%22%3A%20126.0084096222716%2C%0A%20%20%20%20%20%20%20%20%22width%22%3A%20291.1204551358572%0A%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%22id%22%3A%20%22a391dfb1-f408-4498-99cd-d35a258d6c9a%22%2C%0A%20%20%20%20%20%20%22name%22%3A%20%22Sticky%20Note7%22%2C%0A%20%20%20%20%20%20%22type%22%3A%20%22n8n-nodes-base.stickyNote%22%2C%0A%20%20%20%20%20%20%22typeVersion%22%3A%201%2C%0A%20%20%20%20%20%20%22position%22%3A%20%5B%0A%20%20%20%20%20%20%20%201740%2C%0A%20%20%20%20%20%20%20%201540%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%7D%2C%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%22parameters%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%22rules%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%22values%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22conditions%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22options%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22caseSensitive%22%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22leftValue%22%3A%20%22%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22typeValidation%22%3A%20%22strict%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22conditions%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22leftValue%22%3A%20%22%3D%7B%7B%20%24%28%27Execute%20Workflow%20Trigger%27%29.item.json.operation%20%7D%7D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22rightValue%22%3A%20%22column\\\_names%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22operator%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22string%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22operation%22%3A%20%22equals%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22combinator%22%3A%20%22and%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22renameOutput%22%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22outputKey%22%3A%20%22col%20names%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22conditions%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22options%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22caseSensitive%22%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22leftValue%22%3A%20%22%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22typeValidation%22%3A%20%22strict%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22conditions%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22id%22%3A%20%229fe58592-72e2-4379-9bdb-10da19c8218b%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22leftValue%22%3A%20%22%3D%7B%7B%20%24%28%27Execute%20Workflow%20Trigger%27%29.item.json.operation%20%7D%7D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22rightValue%22%3A%20%22column\\\_values%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22operator%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22string%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22operation%22%3A%20%22equals%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22name%22%3A%20%22filter.operator.equals%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22combinator%22%3A%20%22and%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22renameOutput%22%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22outputKey%22%3A%20%22col%20values%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22conditions%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22options%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22caseSensitive%22%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22leftValue%22%3A%20%22%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22typeValidation%22%3A%20%22strict%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22conditions%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22id%22%3A%20%22c1836f93-7874-43a4-98ff-cc487b276600%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22leftValue%22%3A%20%22%3D%7B%7B%20%24%28%27Execute%20Workflow%20Trigger%27%29.item.json.operation%20%7D%7D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22rightValue%22%3A%20%22row%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22operator%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22string%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22operation%22%3A%20%22equals%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22name%22%3A%20%22filter.operator.equals%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22combinator%22%3A%20%22and%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22renameOutput%22%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22outputKey%22%3A%20%22rows%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%22options%22%3A%20%7B%7D%0A%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%22id%22%3A%20%22907deea9-26cc-427e-93fc-52ce6b67e5e1%22%2C%0A%20%20%20%20%20%20%22name%22%3A%20%22Check%20operations%22%2C%0A%20%20%20%20%20%20%22type%22%3A%20%22n8n-nodes-base.switch%22%2C%0A%20%20%20%20%20%20%22typeVersion%22%3A%203%2C%0A%20%20%20%20%20%20%22position%22%3A%20%5B%0A%20%20%20%20%20%20%20%201220%2C%0A%20%20%20%20%20%20%20%201240%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%7D%2C%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%22parameters%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%22fields%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%22values%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22name%22%3A%20%22%3D%7B%7B%20%24%28%27Execute%20Workflow%20Trigger%27%29.item.json.query%20%7D%7D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22stringValue%22%3A%20%22%3D%7B%7B%20%24json%5B%24%28%27Execute%20Workflow%20Trigger%27%29.item.json.query%5D%20%7D%7D%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22name%22%3A%20%22row\\\_number%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22stringValue%22%3A%20%22%3D%7B%7B%20%24json.row\\\_number%20%7D%7D%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%22include%22%3A%20%22none%22%2C%0A%20%20%20%20%20%20%20%20%22options%22%3A%20%7B%7D%0A%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%22id%22%3A%20%22f2ebcae6-3cfb-4862-a927-dc66bd24f197%22%2C%0A%20%20%20%20%20%20%22name%22%3A%20%22Prepare%20column%20data%22%2C%0A%20%20%20%20%20%20%22type%22%3A%20%22n8n-nodes-base.set%22%2C%0A%20%20%20%20%20%20%22position%22%3A%20%5B%0A%20%20%20%20%20%20%20%201440%2C%0A%20%20%20%20%20%20%20%201240%0A%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%22typeVersion%22%3A%203.2%0A%20%20%20%20%7D%2C%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%22parameters%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%22conditions%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%22options%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%22leftValue%22%3A%20%22%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22caseSensitive%22%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22typeValidation%22%3A%20%22loose%22%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%22combinator%22%3A%20%22and%22%2C%0A%20%20%20%20%20%20%20%20%20%20%22conditions%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22id%22%3A%20%22bf712098-97e4-42cb-8e08-2ee32d19d3e7%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22operator%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22number%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22operation%22%3A%20%22equals%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22leftValue%22%3A%20%22%3D%7B%7B%20%24json.row\\\_number%20%7D%7D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22rightValue%22%3A%20%22%3D%7B%7B%20%24%28%27Execute%20Workflow%20Trigger%27%29.item.json.query%20%7D%7D%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%22options%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%22looseTypeValidation%22%3A%20true%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%22id%22%3A%20%22f40acb04-ef06-4670-b8b1-86b04f066af8%22%2C%0A%20%20%20%20%20%20%22name%22%3A%20%22Filter%20out%20other%20rows%22%2C%0A%20%20%20%20%20%20%22type%22%3A%20%22n8n-nodes-base.filter%22%2C%0A%20%20%20%20%20%20%22position%22%3A%20%5B%0A%20%20%20%20%20%20%20%201440%2C%0A%20%20%20%20%20%20%20%201420%0A%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%22typeVersion%22%3A%202%0A%20%20%20%20%7D%0A%20%20%5D%2C%0A%20%20%22pinData%22%3A%20%7B%7D%2C%0A%20%20%22connections%22%3A%20%7B%0A%20%20%20%20%22GPT4%20Model%22%3A%20%7B%0A%20%20%20%20%20%20%22ai\\\_languageModel%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%5B%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%22node%22%3A%20%22AI%20Agent%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22ai\\\_languageModel%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22index%22%3A%200%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%7D%2C%0A%20%20%20%20%22Chat%20Trigger%22%3A%20%7B%0A%20%20%20%20%20%20%22main%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%5B%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%22node%22%3A%20%22AI%20Agent%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22main%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22index%22%3A%200%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%7D%2C%0A%20%20%20%20%22Get%20column%20names%22%3A%20%7B%0A%20%20%20%20%20%20%22main%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%5B%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%22node%22%3A%20%22Prepare%20output%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22main%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22index%22%3A%200%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%7D%2C%0A%20%20%20%20%22Get%20customer%20tool%22%3A%20%7B%0A%20%20%20%20%20%20%22ai\\\_tool%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%5B%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%22node%22%3A%20%22AI%20Agent%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22ai\\\_tool%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22index%22%3A%200%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%7D%2C%0A%20%20%20%20%22List%20columns%20tool%22%3A%20%7B%0A%20%20%20%20%20%20%22ai\\\_tool%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%5B%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%22node%22%3A%20%22AI%20Agent%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22ai\\\_tool%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22index%22%3A%200%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%7D%2C%0A%20%20%20%20%22Set%20Google%20Sheet%20URL%22%3A%20%7B%0A%20%20%20%20%20%20%22main%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%5B%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%22node%22%3A%20%22Get%20Google%20sheet%20contents%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22main%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22index%22%3A%200%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%7D%2C%0A%20%20%20%20%22Simple%20Memory%22%3A%20%7B%0A%20%20%20%20%20%20%22ai\\\_memory%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%5B%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%22node%22%3A%20%22AI%20Agent%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22ai\\\_memory%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22index%22%3A%200%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%7D%2C%0A%20%20%20%20%22Get%20column%20values%20tool%22%3A%20%7B%0A%20%20%20%20%20%20%22ai\\\_tool%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%5B%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%22node%22%3A%20%22AI%20Agent%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22ai\\\_tool%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22index%22%3A%200%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%7D%2C%0A%20%20%20%20%22Execute%20Workflow%20Trigger%22%3A%20%7B%0A%20%20%20%20%20%20%22main%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%5B%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%22node%22%3A%20%22Set%20Google%20Sheet%20URL%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22main%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22index%22%3A%200%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%7D%2C%0A%20%20%20%20%22Get%20Google%20sheet%20contents%22%3A%20%7B%0A%20%20%20%20%20%20%22main%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%5B%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%22node%22%3A%20%22Check%20operations%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22main%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22index%22%3A%200%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%7D%2C%0A%20%20%20%20%22Check%20operations%22%3A%20%7B%0A%20%20%20%20%20%20%22main%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%5B%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%22node%22%3A%20%22Get%20column%20names%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22main%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22index%22%3A%200%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20%5B%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%22node%22%3A%20%22Prepare%20column%20data%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22main%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22index%22%3A%200%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20%5B%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%22node%22%3A%20%22Filter%20out%20other%20rows%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22main%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22index%22%3A%200%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%7D%2C%0A%20%20%20%20%22Prepare%20column%20data%22%3A%20%7B%0A%20%20%20%20%20%20%22main%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%5B%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%22node%22%3A%20%22Prepare%20output%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22main%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22index%22%3A%200%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%7D%2C%0A%20%20%20%20%22Filter%20out%20other%20rows%22%3A%20%7B%0A%20%20%20%20%20%20%22main%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%5B%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%22node%22%3A%20%22Prepare%20output%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22main%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22index%22%3A%200%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%7D%0A%20%20%7D%0A%7D%0A" url="" %} ## Key features [](https://docs.n8n.io/build/integrate-ai/ai-examples/use-google-sheets-as-a-data-source.md#key-features) This workflow uses: \* \[Chat Trigger\](/integrations/builtin/core-nodes/n8n-nodes-langchain.chattrigger.md): start your workflow and respond to user chat interactions. The node provides a customizable chat interface. \* \[Agent\](/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent.md): the key piece of the AI workflow. The Agent interacts with other components of the workflow and makes decisions about what tools to use. \* \[Call n8n Workflow Tool\](/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolworkflow.md): plug in n8n workflows as custom tools. In AI, a tool is an interface the AI can use to interact with the world (in this case, the data provided by your workflow). The AI model uses the tool to access information beyond its built-in dataset. ## Using the example [](https://docs.n8n.io/build/integrate-ai/ai-examples/use-google-sheets-as-a-data-source.md#using-the-example) To load the template into your n8n instance: 1. Download the workflow JSON file. 2. Open a new workflow in your n8n instance. 3. Copy in the JSON, or select \*\*Workflow menu\*\* ![Workflow menu icon](https://docs.n8n.io/spaces/GixZThfitWP21x2gQFpD/files/LPMolGd367bGOPTPoinr) > \*\*Import from file...\*\*. The example workflows use Sticky Notes to guide you: \* Yellow: notes and information. \* Green: instructions to run the workflow. \* Orange: you need to change something to make the workflow work. \* Blue: draws attention to a key feature of the example. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executeworkflow.md). # Execute Sub-workflow Use the Execute Sub-workflow node to run a different workflow on the host machine that runs n8n. ## Node parameters [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executeworkflow.md#node-parameters) \### Source [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executeworkflow.md#source) Select where the node should get the sub-workflow's information from: \* \*\*Database\*\*: Select this option to load the workflow from the database by ID. You must also enter either: \* \*\*From list\*\*: Select the workflow from a list of workflows available to your account. \* \*\*Workflow ID\*\*: Enter the ID for the workflow. The URL of the workflow contains the ID after \`/workflow/\`. For example, if the URL of a workflow is \`https://my-n8n-acct.app.n8n.cloud/workflow/abCDE1f6gHiJKL7\`, the \*\*Workflow ID\*\* is \`abCDE1f6gHiJKL7\`. \* \*\*Local File\*\*: Select this option to load the workflow from a locally saved JSON file. You must also enter: \* \*\*Workflow Path\*\*: Enter the path to the local JSON workflow file you want the node to execute. \* \*\*Parameter\*\*: Select this option to load the workflow from a parameter. You must also enter: \* \*\*Workflow JSON\*\*: Enter the JSON code you want the node to execute. \* \*\*URL\*\*: Select this option to load the workflow from a URL. You must also enter: \* \*\*Workflow URL\*\*: Enter the URL you want to load the workflow from. ### Workflow Inputs [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executeworkflow.md#workflow-inputs) If you select a sub-workflow using the \*\*database\*\* and \*\*From list\*\* options, the sub-workflow's input items will automatically display, ready for you to fill in or map values. You can optionally remove requested input items, in which case the sub-workflow receives \`null\` as the item's value. You can also enable \*\*Attempt to convert types\*\* to try to automatically convert data to the sub-workflow item's requested type. Input items won't appear if the sub-workflow's Workflow Input Trigger node uses the "Accept all data" input data mode. ### Mode [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executeworkflow.md#mode) Use this parameter to control the execution mode for the node. Choose from these options: \* \*\*Run once with all items\*\*: Pass all input items into a single execution of the node. \* \*\*Run once for each item\*\*: Execute the node once for each input item in turn. ## Node options [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executeworkflow.md#node-options) This node includes one option: \*\*Wait for Sub-Workflow Completion\*\*. This lets you control whether the main workflow should wait for the sub-workflow's completion before moving on to the next step (turned on) or whether the main workflow should continue without waiting (turned off). ## Templates and examples [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executeworkflow.md#templates-and-examples) \[Browse Execute Sub-workflow integration templates\](https://n8n.io/integrations/execute-workflow) or \[search all templates\](https://n8n.io/workflows/) ## Set up and use a sub-workflow [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executeworkflow.md#set-up-and-use-a-sub-workflow) This section walks through setting up both the parent workflow and sub-workflow. #### Create the sub-workflow [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executeworkflow.md#create-the-sub-workflow) 1\. Create a new workflow. **Create sub-workflows from existing workflows** You can optionally create a sub-workflow directly from an existing parent workflow using the [Execute Sub-workflow](https://docs.n8n.io/spaces/BKcbOzIWja8NfqKDcqHc/pages/KdUMCx3cTJVPxJ3T06tC) node. In the node, select the **Database** and **From list** options and select **Create a sub-workflow** in the list. You can also extract selected nodes directly using [Sub-workflow conversion](https://docs.n8n.io/spaces/rPN1zU5jaYNvwH7RzxqA/pages/F4QS4rNiHqztrjw6IBsR) in the context menu. 2\. \*\*Optional\*\*: configure which workflows can call the sub-workflow: 1. Select the \*\*Options\*\* ![Options menu](https://docs.n8n.io/spaces/GixZThfitWP21x2gQFpD/files/LxEoziLuMlenJM8dOV4r) menu > \*\*Settings\*\*. n8n opens the \*\*Workflow settings\*\* modal. 2. Change the \*\*This workflow can be called by\*\* setting. Refer to \[Workflow settings\](/build/manage-workflows/configure-workflow-settings.md) for more information on configuring your workflows. 3. Add the \*\*Execute Sub-workflow\*\* trigger node (if you are searching under trigger nodes, this is also titled \*\*When Executed by Another Workflow\*\*). 4. Set the \*\*Input data mode\*\* to choose how you will define the sub-workflow's input data: \* \*\*Define using fields below\*\*: Choose this mode to define individual input names and data types that the calling workflow needs to provide. The \[Execute Sub-workflow node\](/integrations/builtin/core-nodes/n8n-nodes-base.executeworkflow.md) or \[Call n8n Workflow Tool node\](/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolworkflow.md) in the calling workflow will automatically pull in the fields defined here. \* \*\*Define using JSON example\*\*: Choose this mode to provide an example JSON object that demonstrates the expected input items and their types. \* \*\*Accept all data\*\*: Choose this mode to accept all data unconditionally. The sub-workflow won't define any required input items. This sub-workflow must handle any input inconsistencies or missing values. 5. Add other nodes as needed to build your sub-workflow functionality. 6. Save the sub-workflow. {% hint style="info" %} \*\*Sub-workflow mustn't contain errors\*\* If there are errors in the sub-workflow, the parent workflow can't trigger it. {% endhint %} {% hint style="info" %} \*\*Load data into sub-workflow before building\*\* This requires the ability to \[load data from previous executions\](/build/understand-workflows/understand-executions/debug-executions.md), which is available on n8n Cloud and registered Community plans. If you want to load data into your sub-workflow to use while building it: 1. Create the sub-workflow and add the \*\*Execute Sub-workflow Trigger\*\*. 2. Set the node's \*\*Input data mode\*\* to \*\*Accept all data\*\* or define the input items using fields or JSON if they're already known. 3. In the sub-workflow \[settings\](/build/manage-workflows/configure-workflow-settings.md), set \*\*Save successful production executions\*\* to \*\*Save\*\*. 4. Skip ahead to setting up the parent workflow, and run it. 5. Follow the steps to \[load data from previous executions\](/build/understand-workflows/understand-executions/debug-executions.md). 6. Adjust the \*\*Input data mode\*\* to match the input sent by the parent workflow if necessary. You can now pin example data in the trigger node, enabling you to work with real data while configuring the rest of the workflow. {% endhint %} #### Call the sub-workflow [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executeworkflow.md#call-the-sub-workflow) 1\. Open the workflow where you want to call the sub-workflow. 2. Add the \*\*Execute Sub-workflow\*\* node. 3. In the \*\*Execute Sub-workflow\*\* node, set the sub-workflow you want to call. You can choose to call the workflow by ID, load a workflow from a local file, add workflow JSON as a parameter in the node, or target a workflow by URL. **Find your workflow ID** Your sub-workflow's ID is the alphanumeric string at the end of its URL. 4\. Fill in the required input items defined by the sub-workflow. 5. Save your workflow. When your workflow executes, it will send data to the sub-workflow, and run it. You can follow the execution flow from the parent workflow to the sub-workflow by opening the Execute Sub-workflow node and selecting the \*\*View sub-execution\*\* link. Likewise, the sub-workflow's execution contains a link back to the parent workflow's execution to navigate in the other direction. ## How data passes between workflows [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executeworkflow.md#how-data-passes-between-workflows) As an example, imagine you have an Execute Sub-workflow node in \*\*Workflow A\*\*. The Execute Sub-workflow node calls another workflow called \*\*Workflow B\*\*: 1. The Execute Sub-workflow node passes the data to the Execute Sub-workflow Trigger node (titled "When executed by another node" in the canvas) of \*\*Workflow B\*\*. 2. The last node of \*\*Workflow B\*\* sends the data back to the Execute Sub-workflow node in \*\*Workflow A\*\*. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/connect/n8n-api/models.md). # Models ## The audit object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"audit":{"type":"object","properties":{"Credentials Risk Report":{"type":"object"},"Database Risk Report":{"type":"object"},"Filesystem Risk Report":{"type":"object"},"Nodes Risk Report":{"type":"object"},"Instance Risk Report":{"type":"object"}}}}}} \`\`\` ## The create-credential-response object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"create-credential-response":{"required":\["id","name","type","isManaged","isGlobal","isResolvable","resolvableAllowFallback","createdAt","updatedAt"\],"type":"object","properties":{"id":{"type":"string","readOnly":true},"name":{"type":"string"},"type":{"type":"string"},"isManaged":{"type":"boolean","readOnly":true,"description":"Whether the credential is managed by n8n (managed credentials cannot be edited via the API)."},"isGlobal":{"type":"boolean","readOnly":true,"description":"Whether the credential is available for use by all users."},"isResolvable":{"type":"boolean","readOnly":true,"description":"Whether the credential can be dynamically resolved by a resolver."},"resolvableAllowFallback":{"type":"boolean","readOnly":true,"description":"Whether the credential resolver may fall back to static credentials if dynamic resolution fails."},"resolverId":{"type":"string","nullable":true,"readOnly":true,"description":"ID of the dynamic credential resolver associated with this credential, if any."},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}}}}}} \`\`\` ## The credentialSharedItem object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"credentialSharedItem":{"type":"object","required":\["id","name","role","createdAt","updatedAt"\],"properties":{"id":{"type":"string","description":"Project ID"},"name":{"type":"string","description":"Project name"},"role":{"type":"string","description":"Role of the credential in this project (e.g. credential:owner)"},"createdAt":{"type":"string","format":"date-time","description":"When the credential was shared with this project"},"updatedAt":{"type":"string","format":"date-time","description":"When the sharing was last updated"}}}}}} \`\`\` ## The credentialListItem object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"credentialListItem":{"allOf":\[{"$ref":"#/components/schemas/create-credential-response"},{"type":"object","required":\["shared"\],"properties":{"shared":{"type":"array","description":"Shared entries (project id, name, role, createdAt, updatedAt) from the credential's shared relation","items":{"$ref":"#/components/schemas/credentialSharedItem"}}}}\]},"create-credential-response":{"required":\["id","name","type","isManaged","isGlobal","isResolvable","resolvableAllowFallback","createdAt","updatedAt"\],"type":"object","properties":{"id":{"type":"string","readOnly":true},"name":{"type":"string"},"type":{"type":"string"},"isManaged":{"type":"boolean","readOnly":true,"description":"Whether the credential is managed by n8n (managed credentials cannot be edited via the API)."},"isGlobal":{"type":"boolean","readOnly":true,"description":"Whether the credential is available for use by all users."},"isResolvable":{"type":"boolean","readOnly":true,"description":"Whether the credential can be dynamically resolved by a resolver."},"resolvableAllowFallback":{"type":"boolean","readOnly":true,"description":"Whether the credential resolver may fall back to static credentials if dynamic resolution fails."},"resolverId":{"type":"string","nullable":true,"readOnly":true,"description":"ID of the dynamic credential resolver associated with this credential, if any."},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}}},"credentialSharedItem":{"type":"object","required":\["id","name","role","createdAt","updatedAt"\],"properties":{"id":{"type":"string","description":"Project ID"},"name":{"type":"string","description":"Project name"},"role":{"type":"string","description":"Role of the credential in this project (e.g. credential:owner)"},"createdAt":{"type":"string","format":"date-time","description":"When the credential was shared with this project"},"updatedAt":{"type":"string","format":"date-time","description":"When the sharing was last updated"}}}}}} \`\`\` ## The credentialList object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"credentialList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/credentialListItem"}},"nextCursor":{"type":"string","description":"Paginate through credentials by setting the cursor parameter to a nextCursor attribute returned by a previous request. Default value fetches the first \\"page\\" of the collection.","nullable":true}}},"credentialListItem":{"allOf":\[{"$ref":"#/components/schemas/create-credential-response"},{"type":"object","required":\["shared"\],"properties":{"shared":{"type":"array","description":"Shared entries (project id, name, role, createdAt, updatedAt) from the credential's shared relation","items":{"$ref":"#/components/schemas/credentialSharedItem"}}}}\]},"create-credential-response":{"required":\["id","name","type","isManaged","isGlobal","isResolvable","resolvableAllowFallback","createdAt","updatedAt"\],"type":"object","properties":{"id":{"type":"string","readOnly":true},"name":{"type":"string"},"type":{"type":"string"},"isManaged":{"type":"boolean","readOnly":true,"description":"Whether the credential is managed by n8n (managed credentials cannot be edited via the API)."},"isGlobal":{"type":"boolean","readOnly":true,"description":"Whether the credential is available for use by all users."},"isResolvable":{"type":"boolean","readOnly":true,"description":"Whether the credential can be dynamically resolved by a resolver."},"resolvableAllowFallback":{"type":"boolean","readOnly":true,"description":"Whether the credential resolver may fall back to static credentials if dynamic resolution fails."},"resolverId":{"type":"string","nullable":true,"readOnly":true,"description":"ID of the dynamic credential resolver associated with this credential, if any."},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}}},"credentialSharedItem":{"type":"object","required":\["id","name","role","createdAt","updatedAt"\],"properties":{"id":{"type":"string","description":"Project ID"},"name":{"type":"string","description":"Project name"},"role":{"type":"string","description":"Role of the credential in this project (e.g. credential:owner)"},"createdAt":{"type":"string","format":"date-time","description":"When the credential was shared with this project"},"updatedAt":{"type":"string","format":"date-time","description":"When the sharing was last updated"}}}}}} \`\`\` ## The credentialCreate object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"credentialCreate":{"required":\["name","type","data"\],"type":"object","properties":{"id":{"type":"string","readOnly":true},"name":{"type":"string"},"type":{"type":"string"},"data":{"type":"object","writeOnly":true},"isResolvable":{"type":"boolean","description":"Whether this credential has resolvable fields"},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true},"projectId":{"type":"string","description":"Project to create the credential in. Defaults to the user's personal project."}}}}}} \`\`\` ## The credential object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"credential":{"required":\["name","type","data"\],"type":"object","properties":{"id":{"type":"string","readOnly":true},"name":{"type":"string"},"type":{"type":"string"},"data":{"type":"object","writeOnly":true},"isResolvable":{"type":"boolean","description":"Whether this credential has resolvable fields"},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}}}}}} \`\`\` ## The update-credential-request object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"update-credential-request":{"type":"object","properties":{"name":{"type":"string","description":"The name of the credential"},"type":{"type":"string","description":"The credential type. If changing type, data must also be provided."},"data":{"type":"object","writeOnly":true,"description":"The credential data. Required when changing credential type."},"isGlobal":{"type":"boolean","description":"Whether this credential is available globally"},"isResolvable":{"type":"boolean","description":"Whether this credential has resolvable fields"},"isPartialData":{"type":"boolean","default":false,"description":"If true, unredacts and merges existing credential data with the provided data. If false, replaces the entire data object."}}}}}} \`\`\` ## The credentialTestResponse object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"credentialTestResponse":{"type":"object","required":\["status","message"\],"properties":{"status":{"type":"string","enum":\["OK","Error"\]},"message":{"type":"string"}}}}}} \`\`\` ## The execution object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"execution":{"type":"object","properties":{"id":{"type":"number"},"data":{"type":"object","additionalProperties":true,"description":"Detailed execution data. Only included when \`includeData\` is \`true\`.\\n","properties":{"redactionInfo":{"type":"object","nullable":true,"description":"Present when execution data has been redacted.","properties":{"isRedacted":{"type":"boolean","description":"Whether the execution data was redacted."},"reason":{"type":"string","description":"The reason for redaction."},"canReveal":{"type":"boolean","description":"Whether the current user has permission to reveal the redacted data."}}}}},"finished":{"type":"boolean"},"mode":{"type":"string","enum":\["cli","error","integrated","internal","manual","retry","trigger","webhook","evaluation","chat"\]},"retryOf":{"type":"number","nullable":true},"retrySuccessId":{"type":"number","nullable":true},"startedAt":{"type":"string","format":"date-time"},"stoppedAt":{"type":"string","format":"date-time","nullable":true,"description":"The time at which the execution stopped. Will only be null for executions that still have the status 'running'."},"workflowId":{"type":"number"},"waitTill":{"type":"string","nullable":true,"format":"date-time"},"customData":{"type":"object"},"status":{"type":"string","enum":\["canceled","crashed","error","new","running","success","unknown","waiting"\]}}}}}} \`\`\` ## The executionList object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"executionList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/execution"}},"nextCursor":{"type":"string","description":"Paginate through executions by setting the cursor parameter to a nextCursor attribute returned by a previous request. Default value fetches the first \\"page\\" of the collection.","nullable":true}}},"execution":{"type":"object","properties":{"id":{"type":"number"},"data":{"type":"object","additionalProperties":true,"description":"Detailed execution data. Only included when \`includeData\` is \`true\`.\\n","properties":{"redactionInfo":{"type":"object","nullable":true,"description":"Present when execution data has been redacted.","properties":{"isRedacted":{"type":"boolean","description":"Whether the execution data was redacted."},"reason":{"type":"string","description":"The reason for redaction."},"canReveal":{"type":"boolean","description":"Whether the current user has permission to reveal the redacted data."}}}}},"finished":{"type":"boolean"},"mode":{"type":"string","enum":\["cli","error","integrated","internal","manual","retry","trigger","webhook","evaluation","chat"\]},"retryOf":{"type":"number","nullable":true},"retrySuccessId":{"type":"number","nullable":true},"startedAt":{"type":"string","format":"date-time"},"stoppedAt":{"type":"string","format":"date-time","nullable":true,"description":"The time at which the execution stopped. Will only be null for executions that still have the status 'running'."},"workflowId":{"type":"number"},"waitTill":{"type":"string","nullable":true,"format":"date-time"},"customData":{"type":"object"},"status":{"type":"string","enum":\["canceled","crashed","error","new","running","success","unknown","waiting"\]}}}}}} \`\`\` ## The tag object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"tag":{"type":"object","additionalProperties":false,"required":\["name"\],"properties":{"id":{"type":"string","readOnly":true},"name":{"type":"string"},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}}}}}} \`\`\` ## The executionTags object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"executionTags":{"type":"array","items":{"$ref":"#/components/schemas/tag"}},"tag":{"type":"object","additionalProperties":false,"required":\["name"\],"properties":{"id":{"type":"string","readOnly":true},"name":{"type":"string"},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}}}}}} \`\`\` ## The tagIds object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"tagIds":{"type":"array","items":{"type":"object","additionalProperties":false,"required":\["id"\],"properties":{"id":{"type":"string"}}}}}}} \`\`\` ## The tagList object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"tagList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/tag"}},"nextCursor":{"type":"string","description":"Paginate through tags by setting the cursor parameter to a nextCursor attribute returned by a previous request. Default value fetches the first \\"page\\" of the collection.","nullable":true}}},"tag":{"type":"object","additionalProperties":false,"required":\["name"\],"properties":{"id":{"type":"string","readOnly":true},"name":{"type":"string"},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}}}}}} \`\`\` ## The node object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"node":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string"},"name":{"type":"string"},"webhookId":{"type":"string"},"disabled":{"type":"boolean"},"notesInFlow":{"type":"boolean"},"notes":{"type":"string"},"type":{"type":"string"},"typeVersion":{"type":"number"},"executeOnce":{"type":"boolean"},"alwaysOutputData":{"type":"boolean"},"retryOnFail":{"type":"boolean"},"maxTries":{"type":"number"},"waitBetweenTries":{"type":"number"},"continueOnFail":{"type":"boolean","description":"use onError instead","deprecated":true},"onError":{"type":"string"},"position":{"type":"array","items":{"type":"number"}},"parameters":{"type":"object","additionalProperties":true},"credentials":{"type":"object"},"customTelemetryTags":{"type":"object","additionalProperties":false,"properties":{"tag":{"type":"array","items":{"type":"object","additionalProperties":false,"required":\["key","value"\],"properties":{"key":{"type":"string"},"value":{"type":"string"}}}}}},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}}}}}} \`\`\` ## The workflowNodeGroup object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"workflowNodeGroup":{"type":"object","additionalProperties":false,"required":\["id","name","nodeIds"\],"properties":{"id":{"type":"string","description":"Unique identifier for the node group"},"name":{"type":"string","description":"Display name of the node group"},"nodeIds":{"type":"array","description":"IDs of the nodes that belong to this group","items":{"type":"string"}}}}}}} \`\`\` ## The workflowSettings object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"workflowSettings":{"type":"object","additionalProperties":false,"properties":{"saveExecutionProgress":{"type":"boolean"},"saveManualExecutions":{"type":"boolean"},"saveDataErrorExecution":{"type":"string","enum":\["all","none"\]},"saveDataSuccessExecution":{"type":"string","enum":\["all","none"\]},"executionTimeout":{"type":"number","maxLength":3600},"errorWorkflow":{"type":"string","description":"The ID of the workflow that contains the error trigger node."},"timezone":{"type":"string"},"executionOrder":{"type":"string"},"callerPolicy":{"type":"string","enum":\["any","none","workflowsFromAList","workflowsFromSameOwner"\],"description":"Controls which workflows are allowed to call this workflow using the Execute Workflow node.\\nDefaults to workflowsFromSameOwner.\\n\\nAvailable options:\\n- \`any\`: Any workflow can call this workflow (no restrictions)\\n- \`none\`: No other workflows can call this workflow (completely blocked)\\n- \`workflowsFromSameOwner\` (default): Only workflows owned by the same project can call this workflow\\n \* For personal projects: Only workflows created by the same user\\n \* For team projects: Only workflows within the same team project\\n- \`workflowsFromAList\`: Only specific workflows listed in the \`callerIds\` field can call this workflow\\n \* Requires the \`callerIds\` field to specify which workflow IDs are allowed\\n \* See \`callerIds\` field documentation for usage\\n"},"callerIds":{"type":"string","description":"Comma-separated list of workflow IDs allowed to call this workflow (only used with workflowsFromAList policy)"},"timeSavedPerExecution":{"type":"number","description":"Estimated time saved per execution in minutes"},"redactionPolicy":{"type":"string","enum":\["none","non-manual","manual-only","all"\],"description":"Controls whether execution data is redacted for this workflow.\\n\\nAvailable options:\\n- \`none\` (default): No redaction — all execution data is stored.\\n- \`non-manual\`: Redact production (non-manually triggered) executions only.\\n- \`manual-only\`: Redact manually triggered executions only.\\n- \`all\`: Redact all executions (manual and production).\\n\\nWhen the instance has a redaction floor configured, the policy must be equal to\\nor stricter than the floor. A policy weaker than the floor is rejected with 422\\non create, and on update when it changes the stored policy; an unchanged\\npre-existing below-floor policy is preserved (the floor is not applied\\nretroactively). Omitting this field when creating a workflow seeds it to the\\ninstance floor instead.\\n"},"availableInMCP":{"type":"boolean","description":"Controls whether this workflow is accessible via the Model Context Protocol (MCP).\\nDefaults to false.\\n\\nWhen enabled, this workflow can be called by MCP clients (AI assistants and other tools\\nthat support MCP). This allows external AI tools to discover and execute this workflow\\nas part of their capabilities.\\n\\nRequirements for enabling MCP access:\\n- The workflow must be active (not deactivated)\\n- The workflow must contain at least one active Webhook node\\n- Only webhook-triggered workflows can be exposed via MCP\\n\\nSecurity note: When a workflow is available in MCP, it can be discovered and executed\\nby any MCP client that has the appropriate API credentials for your n8n instance.\\n"},"customTelemetryTags":{"type":"array","items":{"type":"object","additionalProperties":false,"required":\["key","value"\],"properties":{"key":{"type":"string"},"value":{"type":"string"}}}}}}}}} \`\`\` ## The sharedWorkflow object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"sharedWorkflow":{"type":"object","additionalProperties":false,"properties":{"role":{"type":"string"},"workflowId":{"type":"string"},"projectId":{"type":"string"},"project":{"type":"object","properties":{"id":{"type":"string","readOnly":true},"name":{"type":"string"},"type":{"type":"string","readOnly":true}}},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}}}}}} \`\`\` ## The activeVersion object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"activeVersion":{"type":"object","readOnly":true,"nullable":true,"additionalProperties":false,"properties":{"versionId":{"type":"string","readOnly":true,"description":"Unique identifier for this workflow version"},"workflowId":{"type":"string","readOnly":true,"description":"The workflow this version belongs to"},"nodes":{"type":"array","readOnly":true,"items":{"$ref":"#/components/schemas/node"}},"connections":{"type":"object","readOnly":true},"nodeGroups":{"type":"array","readOnly":true,"description":"Visual groupings of nodes shown as frames on the canvas","items":{"$ref":"#/components/schemas/workflowNodeGroup"}},"authors":{"type":"string","readOnly":true,"description":"Comma-separated list of author IDs who contributed to this version"},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}}},"node":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string"},"name":{"type":"string"},"webhookId":{"type":"string"},"disabled":{"type":"boolean"},"notesInFlow":{"type":"boolean"},"notes":{"type":"string"},"type":{"type":"string"},"typeVersion":{"type":"number"},"executeOnce":{"type":"boolean"},"alwaysOutputData":{"type":"boolean"},"retryOnFail":{"type":"boolean"},"maxTries":{"type":"number"},"waitBetweenTries":{"type":"number"},"continueOnFail":{"type":"boolean","description":"use onError instead","deprecated":true},"onError":{"type":"string"},"position":{"type":"array","items":{"type":"number"}},"parameters":{"type":"object","additionalProperties":true},"credentials":{"type":"object"},"customTelemetryTags":{"type":"object","additionalProperties":false,"properties":{"tag":{"type":"array","items":{"type":"object","additionalProperties":false,"required":\["key","value"\],"properties":{"key":{"type":"string"},"value":{"type":"string"}}}}}},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}}},"workflowNodeGroup":{"type":"object","additionalProperties":false,"required":\["id","name","nodeIds"\],"properties":{"id":{"type":"string","description":"Unique identifier for the node group"},"name":{"type":"string","description":"Display name of the node group"},"nodeIds":{"type":"array","description":"IDs of the nodes that belong to this group","items":{"type":"string"}}}}}}} \`\`\` ## The workflow object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"workflow":{"type":"object","additionalProperties":false,"required":\["name","nodes","connections","settings"\],"properties":{"id":{"type":"string","readOnly":true},"name":{"type":"string"},"description":{"type":"string","description":"Description of the workflow"},"active":{"type":"boolean","readOnly":true},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true},"isArchived":{"type":"boolean","readOnly":true},"versionId":{"type":"string","readOnly":true,"description":"Current version identifier used for optimistic locking"},"triggerCount":{"type":"integer","readOnly":true,"description":"Number of active trigger nodes in the workflow"},"nodes":{"type":"array","items":{"$ref":"#/components/schemas/node"}},"connections":{"type":"object"},"nodeGroups":{"type":"array","description":"Visual groupings of nodes shown as frames on the canvas","items":{"$ref":"#/components/schemas/workflowNodeGroup"}},"settings":{"$ref":"#/components/schemas/workflowSettings"},"staticData":{"anyOf":\[{"type":"string","format":"jsonString","nullable":true},{"type":"object","nullable":true}\]},"pinData":{"type":"object","nullable":true,"description":"Pinned sample data for nodes, keyed by node name"},"meta":{"type":"object","nullable":true,"readOnly":true,"description":"Workflow metadata such as template information","properties":{"onboardingId":{"type":"string"},"templateId":{"type":"string"},"instanceId":{"type":"string"},"templateCredsSetupCompleted":{"type":"boolean"}}},"tags":{"type":"array","items":{"$ref":"#/components/schemas/tag"},"readOnly":true},"shared":{"type":"array","items":{"$ref":"#/components/schemas/sharedWorkflow"}},"activeVersion":{"$ref":"#/components/schemas/activeVersion"}}},"node":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string"},"name":{"type":"string"},"webhookId":{"type":"string"},"disabled":{"type":"boolean"},"notesInFlow":{"type":"boolean"},"notes":{"type":"string"},"type":{"type":"string"},"typeVersion":{"type":"number"},"executeOnce":{"type":"boolean"},"alwaysOutputData":{"type":"boolean"},"retryOnFail":{"type":"boolean"},"maxTries":{"type":"number"},"waitBetweenTries":{"type":"number"},"continueOnFail":{"type":"boolean","description":"use onError instead","deprecated":true},"onError":{"type":"string"},"position":{"type":"array","items":{"type":"number"}},"parameters":{"type":"object","additionalProperties":true},"credentials":{"type":"object"},"customTelemetryTags":{"type":"object","additionalProperties":false,"properties":{"tag":{"type":"array","items":{"type":"object","additionalProperties":false,"required":\["key","value"\],"properties":{"key":{"type":"string"},"value":{"type":"string"}}}}}},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}}},"workflowNodeGroup":{"type":"object","additionalProperties":false,"required":\["id","name","nodeIds"\],"properties":{"id":{"type":"string","description":"Unique identifier for the node group"},"name":{"type":"string","description":"Display name of the node group"},"nodeIds":{"type":"array","description":"IDs of the nodes that belong to this group","items":{"type":"string"}}}},"workflowSettings":{"type":"object","additionalProperties":false,"properties":{"saveExecutionProgress":{"type":"boolean"},"saveManualExecutions":{"type":"boolean"},"saveDataErrorExecution":{"type":"string","enum":\["all","none"\]},"saveDataSuccessExecution":{"type":"string","enum":\["all","none"\]},"executionTimeout":{"type":"number","maxLength":3600},"errorWorkflow":{"type":"string","description":"The ID of the workflow that contains the error trigger node."},"timezone":{"type":"string"},"executionOrder":{"type":"string"},"callerPolicy":{"type":"string","enum":\["any","none","workflowsFromAList","workflowsFromSameOwner"\],"description":"Controls which workflows are allowed to call this workflow using the Execute Workflow node.\\nDefaults to workflowsFromSameOwner.\\n\\nAvailable options:\\n- \`any\`: Any workflow can call this workflow (no restrictions)\\n- \`none\`: No other workflows can call this workflow (completely blocked)\\n- \`workflowsFromSameOwner\` (default): Only workflows owned by the same project can call this workflow\\n \* For personal projects: Only workflows created by the same user\\n \* For team projects: Only workflows within the same team project\\n- \`workflowsFromAList\`: Only specific workflows listed in the \`callerIds\` field can call this workflow\\n \* Requires the \`callerIds\` field to specify which workflow IDs are allowed\\n \* See \`callerIds\` field documentation for usage\\n"},"callerIds":{"type":"string","description":"Comma-separated list of workflow IDs allowed to call this workflow (only used with workflowsFromAList policy)"},"timeSavedPerExecution":{"type":"number","description":"Estimated time saved per execution in minutes"},"redactionPolicy":{"type":"string","enum":\["none","non-manual","manual-only","all"\],"description":"Controls whether execution data is redacted for this workflow.\\n\\nAvailable options:\\n- \`none\` (default): No redaction — all execution data is stored.\\n- \`non-manual\`: Redact production (non-manually triggered) executions only.\\n- \`manual-only\`: Redact manually triggered executions only.\\n- \`all\`: Redact all executions (manual and production).\\n\\nWhen the instance has a redaction floor configured, the policy must be equal to\\nor stricter than the floor. A policy weaker than the floor is rejected with 422\\non create, and on update when it changes the stored policy; an unchanged\\npre-existing below-floor policy is preserved (the floor is not applied\\nretroactively). Omitting this field when creating a workflow seeds it to the\\ninstance floor instead.\\n"},"availableInMCP":{"type":"boolean","description":"Controls whether this workflow is accessible via the Model Context Protocol (MCP).\\nDefaults to false.\\n\\nWhen enabled, this workflow can be called by MCP clients (AI assistants and other tools\\nthat support MCP). This allows external AI tools to discover and execute this workflow\\nas part of their capabilities.\\n\\nRequirements for enabling MCP access:\\n- The workflow must be active (not deactivated)\\n- The workflow must contain at least one active Webhook node\\n- Only webhook-triggered workflows can be exposed via MCP\\n\\nSecurity note: When a workflow is available in MCP, it can be discovered and executed\\nby any MCP client that has the appropriate API credentials for your n8n instance.\\n"},"customTelemetryTags":{"type":"array","items":{"type":"object","additionalProperties":false,"required":\["key","value"\],"properties":{"key":{"type":"string"},"value":{"type":"string"}}}}}},"tag":{"type":"object","additionalProperties":false,"required":\["name"\],"properties":{"id":{"type":"string","readOnly":true},"name":{"type":"string"},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}}},"sharedWorkflow":{"type":"object","additionalProperties":false,"properties":{"role":{"type":"string"},"workflowId":{"type":"string"},"projectId":{"type":"string"},"project":{"type":"object","properties":{"id":{"type":"string","readOnly":true},"name":{"type":"string"},"type":{"type":"string","readOnly":true}}},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}}},"activeVersion":{"type":"object","readOnly":true,"nullable":true,"additionalProperties":false,"properties":{"versionId":{"type":"string","readOnly":true,"description":"Unique identifier for this workflow version"},"workflowId":{"type":"string","readOnly":true,"description":"The workflow this version belongs to"},"nodes":{"type":"array","readOnly":true,"items":{"$ref":"#/components/schemas/node"}},"connections":{"type":"object","readOnly":true},"nodeGroups":{"type":"array","readOnly":true,"description":"Visual groupings of nodes shown as frames on the canvas","items":{"$ref":"#/components/schemas/workflowNodeGroup"}},"authors":{"type":"string","readOnly":true,"description":"Comma-separated list of author IDs who contributed to this version"},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}}}}}} \`\`\` ## The workflowList object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"workflowList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/workflow"}},"nextCursor":{"type":"string","description":"Paginate through workflows by setting the cursor parameter to a nextCursor attribute returned by a previous request. Default value fetches the first \\"page\\" of the collection.","nullable":true}}},"workflow":{"type":"object","additionalProperties":false,"required":\["name","nodes","connections","settings"\],"properties":{"id":{"type":"string","readOnly":true},"name":{"type":"string"},"description":{"type":"string","description":"Description of the workflow"},"active":{"type":"boolean","readOnly":true},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true},"isArchived":{"type":"boolean","readOnly":true},"versionId":{"type":"string","readOnly":true,"description":"Current version identifier used for optimistic locking"},"triggerCount":{"type":"integer","readOnly":true,"description":"Number of active trigger nodes in the workflow"},"nodes":{"type":"array","items":{"$ref":"#/components/schemas/node"}},"connections":{"type":"object"},"nodeGroups":{"type":"array","description":"Visual groupings of nodes shown as frames on the canvas","items":{"$ref":"#/components/schemas/workflowNodeGroup"}},"settings":{"$ref":"#/components/schemas/workflowSettings"},"staticData":{"anyOf":\[{"type":"string","format":"jsonString","nullable":true},{"type":"object","nullable":true}\]},"pinData":{"type":"object","nullable":true,"description":"Pinned sample data for nodes, keyed by node name"},"meta":{"type":"object","nullable":true,"readOnly":true,"description":"Workflow metadata such as template information","properties":{"onboardingId":{"type":"string"},"templateId":{"type":"string"},"instanceId":{"type":"string"},"templateCredsSetupCompleted":{"type":"boolean"}}},"tags":{"type":"array","items":{"$ref":"#/components/schemas/tag"},"readOnly":true},"shared":{"type":"array","items":{"$ref":"#/components/schemas/sharedWorkflow"}},"activeVersion":{"$ref":"#/components/schemas/activeVersion"}}},"node":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string"},"name":{"type":"string"},"webhookId":{"type":"string"},"disabled":{"type":"boolean"},"notesInFlow":{"type":"boolean"},"notes":{"type":"string"},"type":{"type":"string"},"typeVersion":{"type":"number"},"executeOnce":{"type":"boolean"},"alwaysOutputData":{"type":"boolean"},"retryOnFail":{"type":"boolean"},"maxTries":{"type":"number"},"waitBetweenTries":{"type":"number"},"continueOnFail":{"type":"boolean","description":"use onError instead","deprecated":true},"onError":{"type":"string"},"position":{"type":"array","items":{"type":"number"}},"parameters":{"type":"object","additionalProperties":true},"credentials":{"type":"object"},"customTelemetryTags":{"type":"object","additionalProperties":false,"properties":{"tag":{"type":"array","items":{"type":"object","additionalProperties":false,"required":\["key","value"\],"properties":{"key":{"type":"string"},"value":{"type":"string"}}}}}},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}}},"workflowNodeGroup":{"type":"object","additionalProperties":false,"required":\["id","name","nodeIds"\],"properties":{"id":{"type":"string","description":"Unique identifier for the node group"},"name":{"type":"string","description":"Display name of the node group"},"nodeIds":{"type":"array","description":"IDs of the nodes that belong to this group","items":{"type":"string"}}}},"workflowSettings":{"type":"object","additionalProperties":false,"properties":{"saveExecutionProgress":{"type":"boolean"},"saveManualExecutions":{"type":"boolean"},"saveDataErrorExecution":{"type":"string","enum":\["all","none"\]},"saveDataSuccessExecution":{"type":"string","enum":\["all","none"\]},"executionTimeout":{"type":"number","maxLength":3600},"errorWorkflow":{"type":"string","description":"The ID of the workflow that contains the error trigger node."},"timezone":{"type":"string"},"executionOrder":{"type":"string"},"callerPolicy":{"type":"string","enum":\["any","none","workflowsFromAList","workflowsFromSameOwner"\],"description":"Controls which workflows are allowed to call this workflow using the Execute Workflow node.\\nDefaults to workflowsFromSameOwner.\\n\\nAvailable options:\\n- \`any\`: Any workflow can call this workflow (no restrictions)\\n- \`none\`: No other workflows can call this workflow (completely blocked)\\n- \`workflowsFromSameOwner\` (default): Only workflows owned by the same project can call this workflow\\n \* For personal projects: Only workflows created by the same user\\n \* For team projects: Only workflows within the same team project\\n- \`workflowsFromAList\`: Only specific workflows listed in the \`callerIds\` field can call this workflow\\n \* Requires the \`callerIds\` field to specify which workflow IDs are allowed\\n \* See \`callerIds\` field documentation for usage\\n"},"callerIds":{"type":"string","description":"Comma-separated list of workflow IDs allowed to call this workflow (only used with workflowsFromAList policy)"},"timeSavedPerExecution":{"type":"number","description":"Estimated time saved per execution in minutes"},"redactionPolicy":{"type":"string","enum":\["none","non-manual","manual-only","all"\],"description":"Controls whether execution data is redacted for this workflow.\\n\\nAvailable options:\\n- \`none\` (default): No redaction — all execution data is stored.\\n- \`non-manual\`: Redact production (non-manually triggered) executions only.\\n- \`manual-only\`: Redact manually triggered executions only.\\n- \`all\`: Redact all executions (manual and production).\\n\\nWhen the instance has a redaction floor configured, the policy must be equal to\\nor stricter than the floor. A policy weaker than the floor is rejected with 422\\non create, and on update when it changes the stored policy; an unchanged\\npre-existing below-floor policy is preserved (the floor is not applied\\nretroactively). Omitting this field when creating a workflow seeds it to the\\ninstance floor instead.\\n"},"availableInMCP":{"type":"boolean","description":"Controls whether this workflow is accessible via the Model Context Protocol (MCP).\\nDefaults to false.\\n\\nWhen enabled, this workflow can be called by MCP clients (AI assistants and other tools\\nthat support MCP). This allows external AI tools to discover and execute this workflow\\nas part of their capabilities.\\n\\nRequirements for enabling MCP access:\\n- The workflow must be active (not deactivated)\\n- The workflow must contain at least one active Webhook node\\n- Only webhook-triggered workflows can be exposed via MCP\\n\\nSecurity note: When a workflow is available in MCP, it can be discovered and executed\\nby any MCP client that has the appropriate API credentials for your n8n instance.\\n"},"customTelemetryTags":{"type":"array","items":{"type":"object","additionalProperties":false,"required":\["key","value"\],"properties":{"key":{"type":"string"},"value":{"type":"string"}}}}}},"tag":{"type":"object","additionalProperties":false,"required":\["name"\],"properties":{"id":{"type":"string","readOnly":true},"name":{"type":"string"},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}}},"sharedWorkflow":{"type":"object","additionalProperties":false,"properties":{"role":{"type":"string"},"workflowId":{"type":"string"},"projectId":{"type":"string"},"project":{"type":"object","properties":{"id":{"type":"string","readOnly":true},"name":{"type":"string"},"type":{"type":"string","readOnly":true}}},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}}},"activeVersion":{"type":"object","readOnly":true,"nullable":true,"additionalProperties":false,"properties":{"versionId":{"type":"string","readOnly":true,"description":"Unique identifier for this workflow version"},"workflowId":{"type":"string","readOnly":true,"description":"The workflow this version belongs to"},"nodes":{"type":"array","readOnly":true,"items":{"$ref":"#/components/schemas/node"}},"connections":{"type":"object","readOnly":true},"nodeGroups":{"type":"array","readOnly":true,"description":"Visual groupings of nodes shown as frames on the canvas","items":{"$ref":"#/components/schemas/workflowNodeGroup"}},"authors":{"type":"string","readOnly":true,"description":"Comma-separated list of author IDs who contributed to this version"},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}}}}}} \`\`\` ## The workflowCreate object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"workflowCreate":{"type":"object","additionalProperties":false,"required":\["name","nodes","connections","settings"\],"properties":{"id":{"type":"string","readOnly":true},"name":{"type":"string"},"active":{"type":"boolean","readOnly":true},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true},"isArchived":{"type":"boolean","readOnly":true},"versionId":{"type":"string","readOnly":true,"description":"Current version identifier used for optimistic locking"},"triggerCount":{"type":"integer","readOnly":true,"description":"Number of active trigger nodes in the workflow"},"nodes":{"type":"array","items":{"$ref":"#/components/schemas/node"}},"connections":{"type":"object"},"nodeGroups":{"type":"array","description":"Visual groupings of nodes shown as frames on the canvas","items":{"$ref":"#/components/schemas/workflowNodeGroup"}},"settings":{"$ref":"#/components/schemas/workflowSettings"},"staticData":{"anyOf":\[{"type":"string","format":"jsonString","nullable":true},{"type":"object","nullable":true}\]},"pinData":{"type":"object","nullable":true,"description":"Pinned sample data for nodes, keyed by node name"},"projectId":{"type":"string","description":"Target project to create the workflow in. Defaults to the user's personal project."},"meta":{"type":"object","nullable":true,"readOnly":true,"description":"Workflow metadata such as template information","properties":{"onboardingId":{"type":"string"},"templateId":{"type":"string"},"instanceId":{"type":"string"},"templateCredsSetupCompleted":{"type":"boolean"}}},"tags":{"type":"array","items":{"$ref":"#/components/schemas/tag"},"readOnly":true},"shared":{"type":"array","items":{"$ref":"#/components/schemas/sharedWorkflow"}},"activeVersion":{"$ref":"#/components/schemas/activeVersion"}}},"node":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string"},"name":{"type":"string"},"webhookId":{"type":"string"},"disabled":{"type":"boolean"},"notesInFlow":{"type":"boolean"},"notes":{"type":"string"},"type":{"type":"string"},"typeVersion":{"type":"number"},"executeOnce":{"type":"boolean"},"alwaysOutputData":{"type":"boolean"},"retryOnFail":{"type":"boolean"},"maxTries":{"type":"number"},"waitBetweenTries":{"type":"number"},"continueOnFail":{"type":"boolean","description":"use onError instead","deprecated":true},"onError":{"type":"string"},"position":{"type":"array","items":{"type":"number"}},"parameters":{"type":"object","additionalProperties":true},"credentials":{"type":"object"},"customTelemetryTags":{"type":"object","additionalProperties":false,"properties":{"tag":{"type":"array","items":{"type":"object","additionalProperties":false,"required":\["key","value"\],"properties":{"key":{"type":"string"},"value":{"type":"string"}}}}}},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}}},"workflowNodeGroup":{"type":"object","additionalProperties":false,"required":\["id","name","nodeIds"\],"properties":{"id":{"type":"string","description":"Unique identifier for the node group"},"name":{"type":"string","description":"Display name of the node group"},"nodeIds":{"type":"array","description":"IDs of the nodes that belong to this group","items":{"type":"string"}}}},"workflowSettings":{"type":"object","additionalProperties":false,"properties":{"saveExecutionProgress":{"type":"boolean"},"saveManualExecutions":{"type":"boolean"},"saveDataErrorExecution":{"type":"string","enum":\["all","none"\]},"saveDataSuccessExecution":{"type":"string","enum":\["all","none"\]},"executionTimeout":{"type":"number","maxLength":3600},"errorWorkflow":{"type":"string","description":"The ID of the workflow that contains the error trigger node."},"timezone":{"type":"string"},"executionOrder":{"type":"string"},"callerPolicy":{"type":"string","enum":\["any","none","workflowsFromAList","workflowsFromSameOwner"\],"description":"Controls which workflows are allowed to call this workflow using the Execute Workflow node.\\nDefaults to workflowsFromSameOwner.\\n\\nAvailable options:\\n- \`any\`: Any workflow can call this workflow (no restrictions)\\n- \`none\`: No other workflows can call this workflow (completely blocked)\\n- \`workflowsFromSameOwner\` (default): Only workflows owned by the same project can call this workflow\\n \* For personal projects: Only workflows created by the same user\\n \* For team projects: Only workflows within the same team project\\n- \`workflowsFromAList\`: Only specific workflows listed in the \`callerIds\` field can call this workflow\\n \* Requires the \`callerIds\` field to specify which workflow IDs are allowed\\n \* See \`callerIds\` field documentation for usage\\n"},"callerIds":{"type":"string","description":"Comma-separated list of workflow IDs allowed to call this workflow (only used with workflowsFromAList policy)"},"timeSavedPerExecution":{"type":"number","description":"Estimated time saved per execution in minutes"},"redactionPolicy":{"type":"string","enum":\["none","non-manual","manual-only","all"\],"description":"Controls whether execution data is redacted for this workflow.\\n\\nAvailable options:\\n- \`none\` (default): No redaction — all execution data is stored.\\n- \`non-manual\`: Redact production (non-manually triggered) executions only.\\n- \`manual-only\`: Redact manually triggered executions only.\\n- \`all\`: Redact all executions (manual and production).\\n\\nWhen the instance has a redaction floor configured, the policy must be equal to\\nor stricter than the floor. A policy weaker than the floor is rejected with 422\\non create, and on update when it changes the stored policy; an unchanged\\npre-existing below-floor policy is preserved (the floor is not applied\\nretroactively). Omitting this field when creating a workflow seeds it to the\\ninstance floor instead.\\n"},"availableInMCP":{"type":"boolean","description":"Controls whether this workflow is accessible via the Model Context Protocol (MCP).\\nDefaults to false.\\n\\nWhen enabled, this workflow can be called by MCP clients (AI assistants and other tools\\nthat support MCP). This allows external AI tools to discover and execute this workflow\\nas part of their capabilities.\\n\\nRequirements for enabling MCP access:\\n- The workflow must be active (not deactivated)\\n- The workflow must contain at least one active Webhook node\\n- Only webhook-triggered workflows can be exposed via MCP\\n\\nSecurity note: When a workflow is available in MCP, it can be discovered and executed\\nby any MCP client that has the appropriate API credentials for your n8n instance.\\n"},"customTelemetryTags":{"type":"array","items":{"type":"object","additionalProperties":false,"required":\["key","value"\],"properties":{"key":{"type":"string"},"value":{"type":"string"}}}}}},"tag":{"type":"object","additionalProperties":false,"required":\["name"\],"properties":{"id":{"type":"string","readOnly":true},"name":{"type":"string"},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}}},"sharedWorkflow":{"type":"object","additionalProperties":false,"properties":{"role":{"type":"string"},"workflowId":{"type":"string"},"projectId":{"type":"string"},"project":{"type":"object","properties":{"id":{"type":"string","readOnly":true},"name":{"type":"string"},"type":{"type":"string","readOnly":true}}},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}}},"activeVersion":{"type":"object","readOnly":true,"nullable":true,"additionalProperties":false,"properties":{"versionId":{"type":"string","readOnly":true,"description":"Unique identifier for this workflow version"},"workflowId":{"type":"string","readOnly":true,"description":"The workflow this version belongs to"},"nodes":{"type":"array","readOnly":true,"items":{"$ref":"#/components/schemas/node"}},"connections":{"type":"object","readOnly":true},"nodeGroups":{"type":"array","readOnly":true,"description":"Visual groupings of nodes shown as frames on the canvas","items":{"$ref":"#/components/schemas/workflowNodeGroup"}},"authors":{"type":"string","readOnly":true,"description":"Comma-separated list of author IDs who contributed to this version"},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}}}}}} \`\`\` ## The workflowVersion object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"workflowVersion":{"type":"object","additionalProperties":false,"required":\["versionId","workflowId","nodes","connections","authors"\],"properties":{"versionId":{"type":"string","readOnly":true,"description":"The version ID of this workflow snapshot"},"workflowId":{"type":"string","readOnly":true,"description":"The workflow ID this version belongs to"},"nodes":{"type":"array","items":{"$ref":"#/components/schemas/node"},"description":"Nodes as they were in this version","readOnly":true},"connections":{"type":"object","description":"Connections as they were in this version","readOnly":true},"nodeGroups":{"type":"array","readOnly":true,"description":"Node groups as they were in this version","items":{"$ref":"#/components/schemas/workflowNodeGroup"}},"authors":{"type":"string","readOnly":true,"description":"Authors who created this version"},"name":{"type":"string","nullable":true,"description":"Workflow name at this version"},"description":{"type":"string","nullable":true,"description":"Workflow description at this version"},"createdAt":{"type":"string","format":"date-time","readOnly":true,"description":"When this version was created"},"updatedAt":{"type":"string","format":"date-time","readOnly":true,"description":"When this version was last updated"}}},"node":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string"},"name":{"type":"string"},"webhookId":{"type":"string"},"disabled":{"type":"boolean"},"notesInFlow":{"type":"boolean"},"notes":{"type":"string"},"type":{"type":"string"},"typeVersion":{"type":"number"},"executeOnce":{"type":"boolean"},"alwaysOutputData":{"type":"boolean"},"retryOnFail":{"type":"boolean"},"maxTries":{"type":"number"},"waitBetweenTries":{"type":"number"},"continueOnFail":{"type":"boolean","description":"use onError instead","deprecated":true},"onError":{"type":"string"},"position":{"type":"array","items":{"type":"number"}},"parameters":{"type":"object","additionalProperties":true},"credentials":{"type":"object"},"customTelemetryTags":{"type":"object","additionalProperties":false,"properties":{"tag":{"type":"array","items":{"type":"object","additionalProperties":false,"required":\["key","value"\],"properties":{"key":{"type":"string"},"value":{"type":"string"}}}}}},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}}},"workflowNodeGroup":{"type":"object","additionalProperties":false,"required":\["id","name","nodeIds"\],"properties":{"id":{"type":"string","description":"Unique identifier for the node group"},"name":{"type":"string","description":"Display name of the node group"},"nodeIds":{"type":"array","description":"IDs of the nodes that belong to this group","items":{"type":"string"}}}}}}} \`\`\` ## The workflowTags object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"workflowTags":{"type":"array","items":{"$ref":"#/components/schemas/tag"}},"tag":{"type":"object","additionalProperties":false,"required":\["name"\],"properties":{"id":{"type":"string","readOnly":true},"name":{"type":"string"},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}}}}}} \`\`\` ## The user object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"user":{"required":\["email"\],"type":"object","properties":{"id":{"type":"string","readOnly":true},"email":{"type":"string","format":"email"},"firstName":{"maxLength":32,"type":"string","description":"User's first name","readOnly":true},"lastName":{"maxLength":32,"type":"string","description":"User's last name","readOnly":true},"isPending":{"type":"boolean","description":"Whether the user finished setting up their account in response to the invitation (true) or not (false).","readOnly":true},"createdAt":{"type":"string","description":"Time the user was created.","format":"date-time","readOnly":true},"updatedAt":{"type":"string","description":"Last time the user was updated.","format":"date-time","readOnly":true},"role":{"type":"string","readOnly":true},"mfaEnabled":{"type":"boolean","description":"Whether the user has multi-factor authentication (MFA/2FA) enabled.","readOnly":true}}}}}} \`\`\` ## The userList object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"userList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/user"}},"nextCursor":{"type":"string","description":"Paginate through users by setting the cursor parameter to a nextCursor attribute returned by a previous request. Default value fetches the first \\"page\\" of the collection.","nullable":true}}},"user":{"required":\["email"\],"type":"object","properties":{"id":{"type":"string","readOnly":true},"email":{"type":"string","format":"email"},"firstName":{"maxLength":32,"type":"string","description":"User's first name","readOnly":true},"lastName":{"maxLength":32,"type":"string","description":"User's last name","readOnly":true},"isPending":{"type":"boolean","description":"Whether the user finished setting up their account in response to the invitation (true) or not (false).","readOnly":true},"createdAt":{"type":"string","description":"Time the user was created.","format":"date-time","readOnly":true},"updatedAt":{"type":"string","description":"Last time the user was updated.","format":"date-time","readOnly":true},"role":{"type":"string","readOnly":true},"mfaEnabled":{"type":"boolean","description":"Whether the user has multi-factor authentication (MFA/2FA) enabled.","readOnly":true}}}}}} \`\`\` ## The pull object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"pull":{"type":"object","properties":{"force":{"type":"boolean"},"autoPublish":{"type":"string","enum":\["none","all","published"\],"default":"none","description":"Controls automatic workflow publishing after import:\\n- \`none\`: Keep workflows in their local published state (default)\\n- \`all\`: Publish all imported workflows\\n- \`published\`: Publish only workflows that were published locally before import\\n"}}}}}} \`\`\` ## The sourceControlledFile object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"sourceControlledFile":{"type":"object","required":\["file","id","name","type","status","location","conflict","updatedAt"\],"properties":{"file":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"type":{"type":"string","enum":\["credential","workflow","tags","variables","file","folders","project","datatable"\]},"status":{"type":"string","enum":\["new","modified","deleted","created","renamed","conflicted","ignored","staged","unknown"\]},"location":{"type":"string","enum":\["local","remote"\]},"conflict":{"type":"boolean"},"updatedAt":{"type":"string"},"pushed":{"type":"boolean"},"isLocalPublished":{"type":"boolean"},"isRemoteArchived":{"type":"boolean"},"parentFolderId":{"type":"string","nullable":true},"folderPath":{"type":"array","items":{"type":"string"}},"owner":{"type":"object","required":\["type","projectId","projectName"\],"properties":{"type":{"type":"string","enum":\["personal","team"\]},"projectId":{"type":"string"},"projectName":{"type":"string"}}},"publishingError":{"type":"string"}}}}}} \`\`\` ## The pullResult object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"pullResult":{"type":"array","items":{"$ref":"#/components/schemas/sourceControlledFile"}},"sourceControlledFile":{"type":"object","required":\["file","id","name","type","status","location","conflict","updatedAt"\],"properties":{"file":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"type":{"type":"string","enum":\["credential","workflow","tags","variables","file","folders","project","datatable"\]},"status":{"type":"string","enum":\["new","modified","deleted","created","renamed","conflicted","ignored","staged","unknown"\]},"location":{"type":"string","enum":\["local","remote"\]},"conflict":{"type":"boolean"},"updatedAt":{"type":"string"},"pushed":{"type":"boolean"},"isLocalPublished":{"type":"boolean"},"isRemoteArchived":{"type":"boolean"},"parentFolderId":{"type":"string","nullable":true},"folderPath":{"type":"array","items":{"type":"string"}},"owner":{"type":"object","required":\["type","projectId","projectName"\],"properties":{"type":{"type":"string","enum":\["personal","team"\]},"projectId":{"type":"string"},"projectName":{"type":"string"}}},"publishingError":{"type":"string"}}}}}} \`\`\` ## The project object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"project":{"type":"object","additionalProperties":false,"required":\["name"\],"properties":{"id":{"type":"string","readOnly":true},"name":{"type":"string"},"type":{"type":"string","readOnly":true}}}}}} \`\`\` ## The variable object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"variable":{"type":"object","additionalProperties":false,"required":\["key","value"\],"properties":{"id":{"type":"string","readOnly":true},"key":{"type":"string"},"value":{"type":"string"},"type":{"type":"string","readOnly":true},"project":{"$ref":"#/components/schemas/project"}}},"project":{"type":"object","additionalProperties":false,"required":\["name"\],"properties":{"id":{"type":"string","readOnly":true},"name":{"type":"string"},"type":{"type":"string","readOnly":true}}}}}} \`\`\` ## The variableList object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"variableList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/variable"}},"nextCursor":{"type":"string","description":"Paginate through variables by setting the cursor parameter to a nextCursor attribute returned by a previous request. Default value fetches the first \\"page\\" of the collection.","nullable":true}}},"variable":{"type":"object","additionalProperties":false,"required":\["key","value"\],"properties":{"id":{"type":"string","readOnly":true},"key":{"type":"string"},"value":{"type":"string"},"type":{"type":"string","readOnly":true},"project":{"$ref":"#/components/schemas/project"}}},"project":{"type":"object","additionalProperties":false,"required":\["name"\],"properties":{"id":{"type":"string","readOnly":true},"name":{"type":"string"},"type":{"type":"string","readOnly":true}}}}}} \`\`\` ## The variable.create object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"variable.create":{"type":"object","additionalProperties":false,"required":\["key","value"\],"properties":{"id":{"type":"string","readOnly":true},"key":{"type":"string"},"value":{"type":"string"},"type":{"type":"string","readOnly":true},"projectId":{"type":"string","nullable":true}}}}}} \`\`\` ## The dataTable object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"dataTable":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the data table"},"name":{"type":"string","description":"Name of the data table"},"columns":{"type":"array","description":"Column definitions","items":{"type":"object","properties":{"id":{"type":"string","description":"Column ID"},"name":{"type":"string","description":"Column name"},"type":{"type":"string","enum":\["string","number","boolean","date"\],"description":"Column data type"},"index":{"type":"integer","description":"Column position"}}}},"projectId":{"type":"string","description":"ID of the project this table belongs to"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp when the table was created"},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp when the table was last updated"}},"required":\["id","name","columns","projectId","createdAt","updatedAt"\]}}}} \`\`\` ## The dataTableList object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"dataTableList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/dataTable"}},"nextCursor":{"type":"string","description":"Paginate through data tables by setting the cursor parameter to a nextCursor attribute returned by a previous request. Default value fetches the first \\"page\\" of the collection.","nullable":true}}},"dataTable":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the data table"},"name":{"type":"string","description":"Name of the data table"},"columns":{"type":"array","description":"Column definitions","items":{"type":"object","properties":{"id":{"type":"string","description":"Column ID"},"name":{"type":"string","description":"Column name"},"type":{"type":"string","enum":\["string","number","boolean","date"\],"description":"Column data type"},"index":{"type":"integer","description":"Column position"}}}},"projectId":{"type":"string","description":"ID of the project this table belongs to"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp when the table was created"},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp when the table was last updated"}},"required":\["id","name","columns","projectId","createdAt","updatedAt"\]}}}} \`\`\` ## The createDataTableRequest object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"createDataTableRequest":{"type":"object","properties":{"name":{"type":"string","description":"Name of the data table","minLength":1,"maxLength":128},"columns":{"type":"array","description":"Column definitions for the table","items":{"type":"object","properties":{"name":{"type":"string","description":"Column name","minLength":1},"type":{"type":"string","enum":\["string","number","boolean","date","json"\],"description":"Column data type"}},"required":\["name","type"\]}},"projectId":{"type":"string","description":"ID of the project to create the table in. When omitted, the table is created in the user's personal project.\\n"}},"required":\["name","columns"\]}}}} \`\`\` ## The updateDataTableRequest object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"updateDataTableRequest":{"type":"object","properties":{"name":{"type":"string","description":"New name for the data table","minLength":1,"maxLength":128}},"required":\["name"\]}}}} \`\`\` ## The dataTableRow object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"dataTableRow":{"type":"object","properties":{"id":{"type":"integer","description":"The row ID (auto-generated)"},"createdAt":{"type":"string","format":"date-time","description":"The date and time the row was created"},"updatedAt":{"type":"string","format":"date-time","description":"The date and time the row was last updated"}},"additionalProperties":true,"description":"A data table row with system columns (id, createdAt, updatedAt) and user-defined columns"}}}} \`\`\` ## The dataTableRowList object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"dataTableRowList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/dataTableRow"}},"nextCursor":{"type":"string","description":"Paginate through rows by setting the cursor parameter to a nextCursor attribute returned by a previous request. Default value fetches the first \\"page\\" of the collection.","nullable":true}}},"dataTableRow":{"type":"object","properties":{"id":{"type":"integer","description":"The row ID (auto-generated)"},"createdAt":{"type":"string","format":"date-time","description":"The date and time the row was created"},"updatedAt":{"type":"string","format":"date-time","description":"The date and time the row was last updated"}},"additionalProperties":true,"description":"A data table row with system columns (id, createdAt, updatedAt) and user-defined columns"}}}} \`\`\` ## The insertRowsRequest object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"insertRowsRequest":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Array of rows to insert. Each row is an object with column names as keys.","minItems":1},"returnType":{"type":"string","enum":\["count","id","all"\],"default":"count","description":"- count: Return only the number of rows inserted\\n- id: Return an array of inserted row IDs\\n- all: Return the full row data for all inserted rows\\n"}},"required":\["data"\]}}}} \`\`\` ## The updateRowsRequest object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"updateRowsRequest":{"type":"object","properties":{"filter":{"type":"object","properties":{"type":{"type":"string","enum":\["and","or"\],"default":"and"},"filters":{"type":"array","minItems":1,"items":{"type":"object","properties":{"columnName":{"type":"string"},"condition":{"type":"string","enum":\["eq","neq","like","ilike","gt","gte","lt","lte"\]},"value":{}},"required":\["columnName","condition","value"\]}}},"required":\["filters"\],"description":"Filter conditions to match rows for update"},"data":{"type":"object","additionalProperties":true,"description":"Column values to update"},"returnData":{"type":"boolean","default":false,"description":"If true, return the updated rows; if false, return true on success"},"dryRun":{"type":"boolean","default":false,"description":"If true, preview changes without persisting them"}},"required":\["filter","data"\]}}}} \`\`\` ## The upsertRowRequest object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"upsertRowRequest":{"type":"object","properties":{"filter":{"type":"object","properties":{"type":{"type":"string","enum":\["and","or"\],"default":"and"},"filters":{"type":"array","minItems":1,"items":{"type":"object","properties":{"columnName":{"type":"string"},"condition":{"type":"string","enum":\["eq","neq","like","ilike","gt","gte","lt","lte"\]},"value":{}},"required":\["columnName","condition","value"\]}}},"required":\["filters"\],"description":"Filter conditions to match existing row. If no row matches, a new row is inserted."},"data":{"type":"object","additionalProperties":true,"description":"Column values for the row"},"returnData":{"type":"boolean","default":false,"description":"If true, return the upserted row; if false, return true on success"},"dryRun":{"type":"boolean","default":false,"description":"If true, preview changes without persisting them"}},"required":\["filter","data"\]}}}} \`\`\` ## The dataTableColumn object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"dataTableColumn":{"type":"object","properties":{"id":{"type":"string","description":"Column ID"},"name":{"type":"string","description":"Column name"},"dataTableId":{"type":"string","description":"ID of the data table this column belongs to"},"type":{"type":"string","enum":\["string","number","boolean","date"\],"description":"Column data type"},"index":{"type":"integer","description":"Column position"}},"required":\["id","name","dataTableId","type","index"\]}}}} \`\`\` ## The dataTableColumnName object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"dataTableColumnName":{"type":"string","description":"Column name. Must start with a letter; only letters, digits, and underscores after that; maximum 63 characters.","minLength":1,"maxLength":63,"pattern":"^\[a-zA-Z\]\[a-zA-Z0-9\_\]\*$"}}}} \`\`\` ## The createColumnRequest object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"createColumnRequest":{"type":"object","properties":{"name":{"$ref":"#/components/schemas/dataTableColumnName"},"type":{"type":"string","enum":\["string","number","boolean","date"\],"description":"Column data type"},"index":{"type":"integer","minimum":0,"description":"Column position (optional, appended to end if omitted)"}},"required":\["name","type"\]},"dataTableColumnName":{"type":"string","description":"Column name. Must start with a letter; only letters, digits, and underscores after that; maximum 63 characters.","minLength":1,"maxLength":63,"pattern":"^\[a-zA-Z\]\[a-zA-Z0-9\_\]\*$"}}}} \`\`\` ## The updateColumnRequest object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"updateColumnRequest":{"type":"object","properties":{"name":{"$ref":"#/components/schemas/dataTableColumnName"},"index":{"type":"integer","minimum":0,"description":"New zero-based position for the column"}},"additionalProperties":false,"anyOf":\[{"required":\["name"\]},{"required":\["index"\]}\]},"dataTableColumnName":{"type":"string","description":"Column name. Must start with a letter; only letters, digits, and underscores after that; maximum 63 characters.","minLength":1,"maxLength":63,"pattern":"^\[a-zA-Z\]\[a-zA-Z0-9\_\]\*$"}}}} \`\`\` ## The projectList object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"projectList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/project"}},"nextCursor":{"type":"string","description":"Paginate through projects by setting the cursor parameter to a nextCursor attribute returned by a previous request. Default value fetches the first \\"page\\" of the collection.","nullable":true}}},"project":{"type":"object","additionalProperties":false,"required":\["name"\],"properties":{"id":{"type":"string","readOnly":true},"name":{"type":"string"},"type":{"type":"string","readOnly":true}}}}}} \`\`\` ## The projectMember object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"projectMember":{"type":"object","description":"A project member (user with their role in the project).","properties":{"id":{"type":"string","description":"The user's unique identifier.","readOnly":true},"email":{"type":"string","format":"email","description":"The user's email address.","readOnly":true},"firstName":{"type":"string","maxLength":32,"description":"The user's first name.","readOnly":true},"lastName":{"type":"string","maxLength":32,"description":"The user's last name.","readOnly":true},"createdAt":{"type":"string","format":"date-time","description":"When the user was created.","readOnly":true},"updatedAt":{"type":"string","format":"date-time","description":"When the user was last updated.","readOnly":true},"role":{"type":"string","description":"The user's role in the project (e.g. project:admin, project:viewer).","readOnly":true}}}}}} \`\`\` ## The projectMemberList object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"projectMemberList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/projectMember"}},"nextCursor":{"type":"string","description":"Paginate through project members by setting the cursor parameter to the nextCursor attribute returned by a previous request. Default value fetches the first page of the collection.","nullable":true}}},"projectMember":{"type":"object","description":"A project member (user with their role in the project).","properties":{"id":{"type":"string","description":"The user's unique identifier.","readOnly":true},"email":{"type":"string","format":"email","description":"The user's email address.","readOnly":true},"firstName":{"type":"string","maxLength":32,"description":"The user's first name.","readOnly":true},"lastName":{"type":"string","maxLength":32,"description":"The user's last name.","readOnly":true},"createdAt":{"type":"string","format":"date-time","description":"When the user was created.","readOnly":true},"updatedAt":{"type":"string","format":"date-time","description":"When the user was last updated.","readOnly":true},"role":{"type":"string","description":"The user's role in the project (e.g. project:admin, project:viewer).","readOnly":true}}}}}} \`\`\` ## The communityPackage object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"communityPackage":{"type":"object","properties":{"packageName":{"type":"string","description":"npm package name"},"installedVersion":{"type":"string","description":"Currently installed version"},"authorName":{"type":"string","description":"Package author name"},"authorEmail":{"type":"string","description":"Package author email"},"installedNodes":{"type":"array","description":"Nodes included in this package","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"latestVersion":{"type":"number"}}}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"updateAvailable":{"type":"string","description":"Version available for update, if any"},"failedLoading":{"type":"boolean","description":"Whether the package failed to load"}}}}}} \`\`\` ## The communityPackageList object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"communityPackageList":{"type":"array","items":{"$ref":"#/components/schemas/communityPackage"}},"communityPackage":{"type":"object","properties":{"packageName":{"type":"string","description":"npm package name"},"installedVersion":{"type":"string","description":"Currently installed version"},"authorName":{"type":"string","description":"Package author name"},"authorEmail":{"type":"string","description":"Package author email"},"installedNodes":{"type":"array","description":"Nodes included in this package","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"latestVersion":{"type":"number"}}}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"updateAvailable":{"type":"string","description":"Version available for update, if any"},"failedLoading":{"type":"boolean","description":"Whether the package failed to load"}}}}}} \`\`\` ## The installCommunityPackageRequest object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"installCommunityPackageRequest":{"type":"object","required":\["name"\],"properties":{"name":{"type":"string","description":"npm package name (must start with n8n-nodes-)"},"version":{"type":"string","description":"Specific semver version to install"},"verify":{"type":"boolean","description":"Whether to verify the package against the n8n-vetted package list. Required when the instance has N8N\_UNVERIFIED\_PACKAGES\_ENABLED=false.\\n"}}}}}} \`\`\` ## The insights object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"insights":{"type":"object","required":\["total","failed","failureRate","timeSaved","averageRunTime"\],"properties":{"total":{"type":"object","required":\["value","deviation","unit"\],"properties":{"value":{"type":"number"},"deviation":{"type":"number","nullable":true},"unit":{"type":"string","enum":\["count"\]}}},"failed":{"type":"object","required":\["value","deviation","unit"\],"properties":{"value":{"type":"number"},"deviation":{"type":"number","nullable":true},"unit":{"type":"string","enum":\["count"\]}}},"failureRate":{"type":"object","required":\["value","deviation","unit"\],"properties":{"value":{"type":"number"},"deviation":{"type":"number","nullable":true},"unit":{"type":"string","enum":\["ratio"\]}}},"timeSaved":{"type":"object","required":\["value","deviation","unit"\],"properties":{"value":{"type":"number"},"deviation":{"type":"number","nullable":true},"unit":{"type":"string","enum":\["minute"\]}}},"averageRunTime":{"type":"object","required":\["value","deviation","unit"\],"properties":{"value":{"type":"number"},"deviation":{"type":"number","nullable":true},"unit":{"type":"string","enum":\["millisecond"\]}}}}}}}} \`\`\` ## The folder object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"folder":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string","readOnly":true},"name":{"type":"string"},"parentFolderId":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}}}}}} \`\`\` ## The folder.create object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"folder.create":{"type":"object","additionalProperties":false,"required":\["name"\],"properties":{"name":{"type":"string"},"parentFolderId":{"type":"string"}}}}}} \`\`\` ## The folder.update object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"folder.update":{"type":"object","additionalProperties":false,"minProperties":1,"properties":{"name":{"type":"string"},"parentFolderId":{"type":"string"}}}}}} \`\`\` ## The exportWorkflowsRequest object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"exportWorkflowsRequest":{"type":"object","additionalProperties":false,"required":\["workflowIds"\],"properties":{"workflowIds":{"type":"array","minItems":1,"maxItems":300,"description":"IDs of the workflows to include in the exported package.","items":{"type":"string","minLength":1}}}}}}} \`\`\` ## The importBlockingIssue object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"importBlockingIssue":{"oneOf":\[{"type":"object","description":"A workflow whose source id already matches one in the target project, under the \`fail\` conflict policy.\\n","required":\["type","sourceWorkflowId","existingWorkflowId","name"\],"properties":{"type":{"type":"string","enum":\["workflow-conflict"\]},"sourceWorkflowId":{"type":"string"},"existingWorkflowId":{"type":"string"},"name":{"type":"string"}}},{"type":"object","description":"A \`source\`-policy workflow whose id is already taken on the instance. Workflow ids are globally unique, so the id cannot be created in the target project. The existing workflow may live in any project — including the target project itself — and may be archived (archived workflows keep their id but are never matched for updates).\\n","required":\["type","sourceWorkflowId","existingWorkflowId","existingProjectId","isArchived","name"\],"properties":{"type":{"type":"string","enum":\["workflow-id-conflict"\]},"sourceWorkflowId":{"type":"string"},"existingWorkflowId":{"type":"string"},"existingProjectId":{"type":"string","nullable":true,"description":"Project that owns the existing workflow, or null when no owning project could be determined.\\n"},"isArchived":{"type":"boolean","description":"Whether the existing workflow is archived."},"name":{"type":"string"}}},{"type":"object","description":"A workflow whose source id already matches one in the target project but lives outside the requested import folder. Folder-targeted imports cannot update workflows in place at a different location.\\n","required":\["type","sourceWorkflowId","existingWorkflowId","existingParentFolderId","targetFolderId","name"\],"properties":{"type":{"type":"string","enum":\["workflow-folder-conflict"\]},"sourceWorkflowId":{"type":"string"},"existingWorkflowId":{"type":"string"},"existingParentFolderId":{"type":"string","nullable":true,"description":"Folder that currently contains the matched workflow, or null when it lives at the project root.\\n"},"targetFolderId":{"type":"string","description":"Folder the import was requested to land in."},"name":{"type":"string"}}},{"type":"object","description":"A credential reference that could not be resolved in the target project.","required":\["type","kind","sourceId","usedByWorkflows"\],"properties":{"type":{"type":"string","enum":\["credential-unresolved"\]},"kind":{"type":"string","enum":\["not\_found","unknown\_type","source\_not\_found","type\_mismatch"\]},"sourceId":{"type":"string"},"targetId":{"type":"string","description":"Target credential id for an explicit credential binding."},"expectedType":{"type":"string","description":"For \`type\_mismatch\`: the credential type the package's workflow node requires.\\n"},"actualType":{"type":"string","description":"For \`type\_mismatch\`: the actual type of the resolved target credential.\\n"},"usedByWorkflows":{"type":"array","items":{"type":"string"}}}}\]}}}} \`\`\` ## The error object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"error":{"required":\["message"\],"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"description":{"type":"string"}}}}}} \`\`\` ## The role object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"role":{"readOnly":true,"type":"object","properties":{"id":{"type":"number","readOnly":true},"name":{"type":"string","readOnly":true},"scope":{"type":"string","readOnly":true},"createdAt":{"type":"string","description":"Time the role was created.","format":"date-time","readOnly":true},"updatedAt":{"type":"string","description":"Last time the role was updated.","format":"date-time","readOnly":true}}}}}} \`\`\` ## The credentialType object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"credentialType":{"type":"object","properties":{"displayName":{"type":"string","readOnly":true},"name":{"type":"string","readOnly":true},"type":{"type":"string","readOnly":true},"default":{"type":"string","readOnly":true}}}}}} \`\`\` ## The Error object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"Error":{"$ref":"#/components/schemas/error"},"error":{"required":\["message"\],"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"description":{"type":"string"}}}}}} \`\`\` ## The Role object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"Role":{"$ref":"#/components/schemas/role"},"role":{"readOnly":true,"type":"object","properties":{"id":{"type":"number","readOnly":true},"name":{"type":"string","readOnly":true},"scope":{"type":"string","readOnly":true},"createdAt":{"type":"string","description":"Time the role was created.","format":"date-time","readOnly":true},"updatedAt":{"type":"string","description":"Last time the role was updated.","format":"date-time","readOnly":true}}}}}} \`\`\` ## The Execution object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"Execution":{"$ref":"#/components/schemas/execution"},"execution":{"type":"object","properties":{"id":{"type":"number"},"data":{"type":"object","additionalProperties":true,"description":"Detailed execution data. Only included when \`includeData\` is \`true\`.\\n","properties":{"redactionInfo":{"type":"object","nullable":true,"description":"Present when execution data has been redacted.","properties":{"isRedacted":{"type":"boolean","description":"Whether the execution data was redacted."},"reason":{"type":"string","description":"The reason for redaction."},"canReveal":{"type":"boolean","description":"Whether the current user has permission to reveal the redacted data."}}}}},"finished":{"type":"boolean"},"mode":{"type":"string","enum":\["cli","error","integrated","internal","manual","retry","trigger","webhook","evaluation","chat"\]},"retryOf":{"type":"number","nullable":true},"retrySuccessId":{"type":"number","nullable":true},"startedAt":{"type":"string","format":"date-time"},"stoppedAt":{"type":"string","format":"date-time","nullable":true,"description":"The time at which the execution stopped. Will only be null for executions that still have the status 'running'."},"workflowId":{"type":"number"},"waitTill":{"type":"string","nullable":true,"format":"date-time"},"customData":{"type":"object"},"status":{"type":"string","enum":\["canceled","crashed","error","new","running","success","unknown","waiting"\]}}}}}} \`\`\` ## The Node object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"Node":{"$ref":"#/components/schemas/node"},"node":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string"},"name":{"type":"string"},"webhookId":{"type":"string"},"disabled":{"type":"boolean"},"notesInFlow":{"type":"boolean"},"notes":{"type":"string"},"type":{"type":"string"},"typeVersion":{"type":"number"},"executeOnce":{"type":"boolean"},"alwaysOutputData":{"type":"boolean"},"retryOnFail":{"type":"boolean"},"maxTries":{"type":"number"},"waitBetweenTries":{"type":"number"},"continueOnFail":{"type":"boolean","description":"use onError instead","deprecated":true},"onError":{"type":"string"},"position":{"type":"array","items":{"type":"number"}},"parameters":{"type":"object","additionalProperties":true},"credentials":{"type":"object"},"customTelemetryTags":{"type":"object","additionalProperties":false,"properties":{"tag":{"type":"array","items":{"type":"object","additionalProperties":false,"required":\["key","value"\],"properties":{"key":{"type":"string"},"value":{"type":"string"}}}}}},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}}}}}} \`\`\` ## The WorkflowNodeGroup object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"WorkflowNodeGroup":{"$ref":"#/components/schemas/workflowNodeGroup"},"workflowNodeGroup":{"type":"object","additionalProperties":false,"required":\["id","name","nodeIds"\],"properties":{"id":{"type":"string","description":"Unique identifier for the node group"},"name":{"type":"string","description":"Display name of the node group"},"nodeIds":{"type":"array","description":"IDs of the nodes that belong to this group","items":{"type":"string"}}}}}}} \`\`\` ## The Tag object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"Tag":{"$ref":"#/components/schemas/tag"},"tag":{"type":"object","additionalProperties":false,"required":\["name"\],"properties":{"id":{"type":"string","readOnly":true},"name":{"type":"string"},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}}}}}} \`\`\` ## The Workflow object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"Workflow":{"$ref":"#/components/schemas/workflow"},"workflow":{"type":"object","additionalProperties":false,"required":\["name","nodes","connections","settings"\],"properties":{"id":{"type":"string","readOnly":true},"name":{"type":"string"},"description":{"type":"string","description":"Description of the workflow"},"active":{"type":"boolean","readOnly":true},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true},"isArchived":{"type":"boolean","readOnly":true},"versionId":{"type":"string","readOnly":true,"description":"Current version identifier used for optimistic locking"},"triggerCount":{"type":"integer","readOnly":true,"description":"Number of active trigger nodes in the workflow"},"nodes":{"type":"array","items":{"$ref":"#/components/schemas/node"}},"connections":{"type":"object"},"nodeGroups":{"type":"array","description":"Visual groupings of nodes shown as frames on the canvas","items":{"$ref":"#/components/schemas/workflowNodeGroup"}},"settings":{"$ref":"#/components/schemas/workflowSettings"},"staticData":{"anyOf":\[{"type":"string","format":"jsonString","nullable":true},{"type":"object","nullable":true}\]},"pinData":{"type":"object","nullable":true,"description":"Pinned sample data for nodes, keyed by node name"},"meta":{"type":"object","nullable":true,"readOnly":true,"description":"Workflow metadata such as template information","properties":{"onboardingId":{"type":"string"},"templateId":{"type":"string"},"instanceId":{"type":"string"},"templateCredsSetupCompleted":{"type":"boolean"}}},"tags":{"type":"array","items":{"$ref":"#/components/schemas/tag"},"readOnly":true},"shared":{"type":"array","items":{"$ref":"#/components/schemas/sharedWorkflow"}},"activeVersion":{"$ref":"#/components/schemas/activeVersion"}}},"node":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string"},"name":{"type":"string"},"webhookId":{"type":"string"},"disabled":{"type":"boolean"},"notesInFlow":{"type":"boolean"},"notes":{"type":"string"},"type":{"type":"string"},"typeVersion":{"type":"number"},"executeOnce":{"type":"boolean"},"alwaysOutputData":{"type":"boolean"},"retryOnFail":{"type":"boolean"},"maxTries":{"type":"number"},"waitBetweenTries":{"type":"number"},"continueOnFail":{"type":"boolean","description":"use onError instead","deprecated":true},"onError":{"type":"string"},"position":{"type":"array","items":{"type":"number"}},"parameters":{"type":"object","additionalProperties":true},"credentials":{"type":"object"},"customTelemetryTags":{"type":"object","additionalProperties":false,"properties":{"tag":{"type":"array","items":{"type":"object","additionalProperties":false,"required":\["key","value"\],"properties":{"key":{"type":"string"},"value":{"type":"string"}}}}}},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}}},"workflowNodeGroup":{"type":"object","additionalProperties":false,"required":\["id","name","nodeIds"\],"properties":{"id":{"type":"string","description":"Unique identifier for the node group"},"name":{"type":"string","description":"Display name of the node group"},"nodeIds":{"type":"array","description":"IDs of the nodes that belong to this group","items":{"type":"string"}}}},"workflowSettings":{"type":"object","additionalProperties":false,"properties":{"saveExecutionProgress":{"type":"boolean"},"saveManualExecutions":{"type":"boolean"},"saveDataErrorExecution":{"type":"string","enum":\["all","none"\]},"saveDataSuccessExecution":{"type":"string","enum":\["all","none"\]},"executionTimeout":{"type":"number","maxLength":3600},"errorWorkflow":{"type":"string","description":"The ID of the workflow that contains the error trigger node."},"timezone":{"type":"string"},"executionOrder":{"type":"string"},"callerPolicy":{"type":"string","enum":\["any","none","workflowsFromAList","workflowsFromSameOwner"\],"description":"Controls which workflows are allowed to call this workflow using the Execute Workflow node.\\nDefaults to workflowsFromSameOwner.\\n\\nAvailable options:\\n- \`any\`: Any workflow can call this workflow (no restrictions)\\n- \`none\`: No other workflows can call this workflow (completely blocked)\\n- \`workflowsFromSameOwner\` (default): Only workflows owned by the same project can call this workflow\\n \* For personal projects: Only workflows created by the same user\\n \* For team projects: Only workflows within the same team project\\n- \`workflowsFromAList\`: Only specific workflows listed in the \`callerIds\` field can call this workflow\\n \* Requires the \`callerIds\` field to specify which workflow IDs are allowed\\n \* See \`callerIds\` field documentation for usage\\n"},"callerIds":{"type":"string","description":"Comma-separated list of workflow IDs allowed to call this workflow (only used with workflowsFromAList policy)"},"timeSavedPerExecution":{"type":"number","description":"Estimated time saved per execution in minutes"},"redactionPolicy":{"type":"string","enum":\["none","non-manual","manual-only","all"\],"description":"Controls whether execution data is redacted for this workflow.\\n\\nAvailable options:\\n- \`none\` (default): No redaction — all execution data is stored.\\n- \`non-manual\`: Redact production (non-manually triggered) executions only.\\n- \`manual-only\`: Redact manually triggered executions only.\\n- \`all\`: Redact all executions (manual and production).\\n\\nWhen the instance has a redaction floor configured, the policy must be equal to\\nor stricter than the floor. A policy weaker than the floor is rejected with 422\\non create, and on update when it changes the stored policy; an unchanged\\npre-existing below-floor policy is preserved (the floor is not applied\\nretroactively). Omitting this field when creating a workflow seeds it to the\\ninstance floor instead.\\n"},"availableInMCP":{"type":"boolean","description":"Controls whether this workflow is accessible via the Model Context Protocol (MCP).\\nDefaults to false.\\n\\nWhen enabled, this workflow can be called by MCP clients (AI assistants and other tools\\nthat support MCP). This allows external AI tools to discover and execute this workflow\\nas part of their capabilities.\\n\\nRequirements for enabling MCP access:\\n- The workflow must be active (not deactivated)\\n- The workflow must contain at least one active Webhook node\\n- Only webhook-triggered workflows can be exposed via MCP\\n\\nSecurity note: When a workflow is available in MCP, it can be discovered and executed\\nby any MCP client that has the appropriate API credentials for your n8n instance.\\n"},"customTelemetryTags":{"type":"array","items":{"type":"object","additionalProperties":false,"required":\["key","value"\],"properties":{"key":{"type":"string"},"value":{"type":"string"}}}}}},"tag":{"type":"object","additionalProperties":false,"required":\["name"\],"properties":{"id":{"type":"string","readOnly":true},"name":{"type":"string"},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}}},"sharedWorkflow":{"type":"object","additionalProperties":false,"properties":{"role":{"type":"string"},"workflowId":{"type":"string"},"projectId":{"type":"string"},"project":{"type":"object","properties":{"id":{"type":"string","readOnly":true},"name":{"type":"string"},"type":{"type":"string","readOnly":true}}},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}}},"activeVersion":{"type":"object","readOnly":true,"nullable":true,"additionalProperties":false,"properties":{"versionId":{"type":"string","readOnly":true,"description":"Unique identifier for this workflow version"},"workflowId":{"type":"string","readOnly":true,"description":"The workflow this version belongs to"},"nodes":{"type":"array","readOnly":true,"items":{"$ref":"#/components/schemas/node"}},"connections":{"type":"object","readOnly":true},"nodeGroups":{"type":"array","readOnly":true,"description":"Visual groupings of nodes shown as frames on the canvas","items":{"$ref":"#/components/schemas/workflowNodeGroup"}},"authors":{"type":"string","readOnly":true,"description":"Comma-separated list of author IDs who contributed to this version"},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}}}}}} \`\`\` ## The WorkflowSettings object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"WorkflowSettings":{"$ref":"#/components/schemas/workflowSettings"},"workflowSettings":{"type":"object","additionalProperties":false,"properties":{"saveExecutionProgress":{"type":"boolean"},"saveManualExecutions":{"type":"boolean"},"saveDataErrorExecution":{"type":"string","enum":\["all","none"\]},"saveDataSuccessExecution":{"type":"string","enum":\["all","none"\]},"executionTimeout":{"type":"number","maxLength":3600},"errorWorkflow":{"type":"string","description":"The ID of the workflow that contains the error trigger node."},"timezone":{"type":"string"},"executionOrder":{"type":"string"},"callerPolicy":{"type":"string","enum":\["any","none","workflowsFromAList","workflowsFromSameOwner"\],"description":"Controls which workflows are allowed to call this workflow using the Execute Workflow node.\\nDefaults to workflowsFromSameOwner.\\n\\nAvailable options:\\n- \`any\`: Any workflow can call this workflow (no restrictions)\\n- \`none\`: No other workflows can call this workflow (completely blocked)\\n- \`workflowsFromSameOwner\` (default): Only workflows owned by the same project can call this workflow\\n \* For personal projects: Only workflows created by the same user\\n \* For team projects: Only workflows within the same team project\\n- \`workflowsFromAList\`: Only specific workflows listed in the \`callerIds\` field can call this workflow\\n \* Requires the \`callerIds\` field to specify which workflow IDs are allowed\\n \* See \`callerIds\` field documentation for usage\\n"},"callerIds":{"type":"string","description":"Comma-separated list of workflow IDs allowed to call this workflow (only used with workflowsFromAList policy)"},"timeSavedPerExecution":{"type":"number","description":"Estimated time saved per execution in minutes"},"redactionPolicy":{"type":"string","enum":\["none","non-manual","manual-only","all"\],"description":"Controls whether execution data is redacted for this workflow.\\n\\nAvailable options:\\n- \`none\` (default): No redaction — all execution data is stored.\\n- \`non-manual\`: Redact production (non-manually triggered) executions only.\\n- \`manual-only\`: Redact manually triggered executions only.\\n- \`all\`: Redact all executions (manual and production).\\n\\nWhen the instance has a redaction floor configured, the policy must be equal to\\nor stricter than the floor. A policy weaker than the floor is rejected with 422\\non create, and on update when it changes the stored policy; an unchanged\\npre-existing below-floor policy is preserved (the floor is not applied\\nretroactively). Omitting this field when creating a workflow seeds it to the\\ninstance floor instead.\\n"},"availableInMCP":{"type":"boolean","description":"Controls whether this workflow is accessible via the Model Context Protocol (MCP).\\nDefaults to false.\\n\\nWhen enabled, this workflow can be called by MCP clients (AI assistants and other tools\\nthat support MCP). This allows external AI tools to discover and execute this workflow\\nas part of their capabilities.\\n\\nRequirements for enabling MCP access:\\n- The workflow must be active (not deactivated)\\n- The workflow must contain at least one active Webhook node\\n- Only webhook-triggered workflows can be exposed via MCP\\n\\nSecurity note: When a workflow is available in MCP, it can be discovered and executed\\nby any MCP client that has the appropriate API credentials for your n8n instance.\\n"},"customTelemetryTags":{"type":"array","items":{"type":"object","additionalProperties":false,"required":\["key","value"\],"properties":{"key":{"type":"string"},"value":{"type":"string"}}}}}}}}} \`\`\` ## The ExecutionList object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"ExecutionList":{"$ref":"#/components/schemas/executionList"},"executionList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/execution"}},"nextCursor":{"type":"string","description":"Paginate through executions by setting the cursor parameter to a nextCursor attribute returned by a previous request. Default value fetches the first \\"page\\" of the collection.","nullable":true}}},"execution":{"type":"object","properties":{"id":{"type":"number"},"data":{"type":"object","additionalProperties":true,"description":"Detailed execution data. Only included when \`includeData\` is \`true\`.\\n","properties":{"redactionInfo":{"type":"object","nullable":true,"description":"Present when execution data has been redacted.","properties":{"isRedacted":{"type":"boolean","description":"Whether the execution data was redacted."},"reason":{"type":"string","description":"The reason for redaction."},"canReveal":{"type":"boolean","description":"Whether the current user has permission to reveal the redacted data."}}}}},"finished":{"type":"boolean"},"mode":{"type":"string","enum":\["cli","error","integrated","internal","manual","retry","trigger","webhook","evaluation","chat"\]},"retryOf":{"type":"number","nullable":true},"retrySuccessId":{"type":"number","nullable":true},"startedAt":{"type":"string","format":"date-time"},"stoppedAt":{"type":"string","format":"date-time","nullable":true,"description":"The time at which the execution stopped. Will only be null for executions that still have the status 'running'."},"workflowId":{"type":"number"},"waitTill":{"type":"string","nullable":true,"format":"date-time"},"customData":{"type":"object"},"status":{"type":"string","enum":\["canceled","crashed","error","new","running","success","unknown","waiting"\]}}}}}} \`\`\` ## The WorkflowList object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"WorkflowList":{"$ref":"#/components/schemas/workflowList"},"workflowList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/workflow"}},"nextCursor":{"type":"string","description":"Paginate through workflows by setting the cursor parameter to a nextCursor attribute returned by a previous request. Default value fetches the first \\"page\\" of the collection.","nullable":true}}},"workflow":{"type":"object","additionalProperties":false,"required":\["name","nodes","connections","settings"\],"properties":{"id":{"type":"string","readOnly":true},"name":{"type":"string"},"description":{"type":"string","description":"Description of the workflow"},"active":{"type":"boolean","readOnly":true},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true},"isArchived":{"type":"boolean","readOnly":true},"versionId":{"type":"string","readOnly":true,"description":"Current version identifier used for optimistic locking"},"triggerCount":{"type":"integer","readOnly":true,"description":"Number of active trigger nodes in the workflow"},"nodes":{"type":"array","items":{"$ref":"#/components/schemas/node"}},"connections":{"type":"object"},"nodeGroups":{"type":"array","description":"Visual groupings of nodes shown as frames on the canvas","items":{"$ref":"#/components/schemas/workflowNodeGroup"}},"settings":{"$ref":"#/components/schemas/workflowSettings"},"staticData":{"anyOf":\[{"type":"string","format":"jsonString","nullable":true},{"type":"object","nullable":true}\]},"pinData":{"type":"object","nullable":true,"description":"Pinned sample data for nodes, keyed by node name"},"meta":{"type":"object","nullable":true,"readOnly":true,"description":"Workflow metadata such as template information","properties":{"onboardingId":{"type":"string"},"templateId":{"type":"string"},"instanceId":{"type":"string"},"templateCredsSetupCompleted":{"type":"boolean"}}},"tags":{"type":"array","items":{"$ref":"#/components/schemas/tag"},"readOnly":true},"shared":{"type":"array","items":{"$ref":"#/components/schemas/sharedWorkflow"}},"activeVersion":{"$ref":"#/components/schemas/activeVersion"}}},"node":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string"},"name":{"type":"string"},"webhookId":{"type":"string"},"disabled":{"type":"boolean"},"notesInFlow":{"type":"boolean"},"notes":{"type":"string"},"type":{"type":"string"},"typeVersion":{"type":"number"},"executeOnce":{"type":"boolean"},"alwaysOutputData":{"type":"boolean"},"retryOnFail":{"type":"boolean"},"maxTries":{"type":"number"},"waitBetweenTries":{"type":"number"},"continueOnFail":{"type":"boolean","description":"use onError instead","deprecated":true},"onError":{"type":"string"},"position":{"type":"array","items":{"type":"number"}},"parameters":{"type":"object","additionalProperties":true},"credentials":{"type":"object"},"customTelemetryTags":{"type":"object","additionalProperties":false,"properties":{"tag":{"type":"array","items":{"type":"object","additionalProperties":false,"required":\["key","value"\],"properties":{"key":{"type":"string"},"value":{"type":"string"}}}}}},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}}},"workflowNodeGroup":{"type":"object","additionalProperties":false,"required":\["id","name","nodeIds"\],"properties":{"id":{"type":"string","description":"Unique identifier for the node group"},"name":{"type":"string","description":"Display name of the node group"},"nodeIds":{"type":"array","description":"IDs of the nodes that belong to this group","items":{"type":"string"}}}},"workflowSettings":{"type":"object","additionalProperties":false,"properties":{"saveExecutionProgress":{"type":"boolean"},"saveManualExecutions":{"type":"boolean"},"saveDataErrorExecution":{"type":"string","enum":\["all","none"\]},"saveDataSuccessExecution":{"type":"string","enum":\["all","none"\]},"executionTimeout":{"type":"number","maxLength":3600},"errorWorkflow":{"type":"string","description":"The ID of the workflow that contains the error trigger node."},"timezone":{"type":"string"},"executionOrder":{"type":"string"},"callerPolicy":{"type":"string","enum":\["any","none","workflowsFromAList","workflowsFromSameOwner"\],"description":"Controls which workflows are allowed to call this workflow using the Execute Workflow node.\\nDefaults to workflowsFromSameOwner.\\n\\nAvailable options:\\n- \`any\`: Any workflow can call this workflow (no restrictions)\\n- \`none\`: No other workflows can call this workflow (completely blocked)\\n- \`workflowsFromSameOwner\` (default): Only workflows owned by the same project can call this workflow\\n \* For personal projects: Only workflows created by the same user\\n \* For team projects: Only workflows within the same team project\\n- \`workflowsFromAList\`: Only specific workflows listed in the \`callerIds\` field can call this workflow\\n \* Requires the \`callerIds\` field to specify which workflow IDs are allowed\\n \* See \`callerIds\` field documentation for usage\\n"},"callerIds":{"type":"string","description":"Comma-separated list of workflow IDs allowed to call this workflow (only used with workflowsFromAList policy)"},"timeSavedPerExecution":{"type":"number","description":"Estimated time saved per execution in minutes"},"redactionPolicy":{"type":"string","enum":\["none","non-manual","manual-only","all"\],"description":"Controls whether execution data is redacted for this workflow.\\n\\nAvailable options:\\n- \`none\` (default): No redaction — all execution data is stored.\\n- \`non-manual\`: Redact production (non-manually triggered) executions only.\\n- \`manual-only\`: Redact manually triggered executions only.\\n- \`all\`: Redact all executions (manual and production).\\n\\nWhen the instance has a redaction floor configured, the policy must be equal to\\nor stricter than the floor. A policy weaker than the floor is rejected with 422\\non create, and on update when it changes the stored policy; an unchanged\\npre-existing below-floor policy is preserved (the floor is not applied\\nretroactively). Omitting this field when creating a workflow seeds it to the\\ninstance floor instead.\\n"},"availableInMCP":{"type":"boolean","description":"Controls whether this workflow is accessible via the Model Context Protocol (MCP).\\nDefaults to false.\\n\\nWhen enabled, this workflow can be called by MCP clients (AI assistants and other tools\\nthat support MCP). This allows external AI tools to discover and execute this workflow\\nas part of their capabilities.\\n\\nRequirements for enabling MCP access:\\n- The workflow must be active (not deactivated)\\n- The workflow must contain at least one active Webhook node\\n- Only webhook-triggered workflows can be exposed via MCP\\n\\nSecurity note: When a workflow is available in MCP, it can be discovered and executed\\nby any MCP client that has the appropriate API credentials for your n8n instance.\\n"},"customTelemetryTags":{"type":"array","items":{"type":"object","additionalProperties":false,"required":\["key","value"\],"properties":{"key":{"type":"string"},"value":{"type":"string"}}}}}},"tag":{"type":"object","additionalProperties":false,"required":\["name"\],"properties":{"id":{"type":"string","readOnly":true},"name":{"type":"string"},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}}},"sharedWorkflow":{"type":"object","additionalProperties":false,"properties":{"role":{"type":"string"},"workflowId":{"type":"string"},"projectId":{"type":"string"},"project":{"type":"object","properties":{"id":{"type":"string","readOnly":true},"name":{"type":"string"},"type":{"type":"string","readOnly":true}}},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}}},"activeVersion":{"type":"object","readOnly":true,"nullable":true,"additionalProperties":false,"properties":{"versionId":{"type":"string","readOnly":true,"description":"Unique identifier for this workflow version"},"workflowId":{"type":"string","readOnly":true,"description":"The workflow this version belongs to"},"nodes":{"type":"array","readOnly":true,"items":{"$ref":"#/components/schemas/node"}},"connections":{"type":"object","readOnly":true},"nodeGroups":{"type":"array","readOnly":true,"description":"Visual groupings of nodes shown as frames on the canvas","items":{"$ref":"#/components/schemas/workflowNodeGroup"}},"authors":{"type":"string","readOnly":true,"description":"Comma-separated list of author IDs who contributed to this version"},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}}}}}} \`\`\` ## The Credential object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"Credential":{"$ref":"#/components/schemas/credential"},"credential":{"required":\["name","type","data"\],"type":"object","properties":{"id":{"type":"string","readOnly":true},"name":{"type":"string"},"type":{"type":"string"},"data":{"type":"object","writeOnly":true},"isResolvable":{"type":"boolean","description":"Whether this credential has resolvable fields"},"createdAt":{"type":"string","format":"date-time","readOnly":true},"updatedAt":{"type":"string","format":"date-time","readOnly":true}}}}}} \`\`\` ## The CredentialType object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"CredentialType":{"$ref":"#/components/schemas/credentialType"},"credentialType":{"type":"object","properties":{"displayName":{"type":"string","readOnly":true},"name":{"type":"string","readOnly":true},"type":{"type":"string","readOnly":true},"default":{"type":"string","readOnly":true}}}}}} \`\`\` ## The Audit object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"Audit":{"$ref":"#/components/schemas/audit"},"audit":{"type":"object","properties":{"Credentials Risk Report":{"type":"object"},"Database Risk Report":{"type":"object"},"Filesystem Risk Report":{"type":"object"},"Nodes Risk Report":{"type":"object"},"Instance Risk Report":{"type":"object"}}}}}} \`\`\` ## The Pull object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"Pull":{"$ref":"#/components/schemas/pull"},"pull":{"type":"object","properties":{"force":{"type":"boolean"},"autoPublish":{"type":"string","enum":\["none","all","published"\],"default":"none","description":"Controls automatic workflow publishing after import:\\n- \`none\`: Keep workflows in their local published state (default)\\n- \`all\`: Publish all imported workflows\\n- \`published\`: Publish only workflows that were published locally before import\\n"}}}}}} \`\`\` ## The PullResult object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"PullResult":{"$ref":"#/components/schemas/pullResult"},"pullResult":{"type":"array","items":{"$ref":"#/components/schemas/sourceControlledFile"}},"sourceControlledFile":{"type":"object","required":\["file","id","name","type","status","location","conflict","updatedAt"\],"properties":{"file":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"type":{"type":"string","enum":\["credential","workflow","tags","variables","file","folders","project","datatable"\]},"status":{"type":"string","enum":\["new","modified","deleted","created","renamed","conflicted","ignored","staged","unknown"\]},"location":{"type":"string","enum":\["local","remote"\]},"conflict":{"type":"boolean"},"updatedAt":{"type":"string"},"pushed":{"type":"boolean"},"isLocalPublished":{"type":"boolean"},"isRemoteArchived":{"type":"boolean"},"parentFolderId":{"type":"string","nullable":true},"folderPath":{"type":"array","items":{"type":"string"}},"owner":{"type":"object","required":\["type","projectId","projectName"\],"properties":{"type":{"type":"string","enum":\["personal","team"\]},"projectId":{"type":"string"},"projectName":{"type":"string"}}},"publishingError":{"type":"string"}}}}}} \`\`\` ## The SourceControlledFile object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"SourceControlledFile":{"$ref":"#/components/schemas/sourceControlledFile"},"sourceControlledFile":{"type":"object","required":\["file","id","name","type","status","location","conflict","updatedAt"\],"properties":{"file":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"type":{"type":"string","enum":\["credential","workflow","tags","variables","file","folders","project","datatable"\]},"status":{"type":"string","enum":\["new","modified","deleted","created","renamed","conflicted","ignored","staged","unknown"\]},"location":{"type":"string","enum":\["local","remote"\]},"conflict":{"type":"boolean"},"updatedAt":{"type":"string"},"pushed":{"type":"boolean"},"isLocalPublished":{"type":"boolean"},"isRemoteArchived":{"type":"boolean"},"parentFolderId":{"type":"string","nullable":true},"folderPath":{"type":"array","items":{"type":"string"}},"owner":{"type":"object","required":\["type","projectId","projectName"\],"properties":{"type":{"type":"string","enum":\["personal","team"\]},"projectId":{"type":"string"},"projectName":{"type":"string"}}},"publishingError":{"type":"string"}}}}}} \`\`\` ## The UserList object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"UserList":{"$ref":"#/components/schemas/userList"},"userList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/user"}},"nextCursor":{"type":"string","description":"Paginate through users by setting the cursor parameter to a nextCursor attribute returned by a previous request. Default value fetches the first \\"page\\" of the collection.","nullable":true}}},"user":{"required":\["email"\],"type":"object","properties":{"id":{"type":"string","readOnly":true},"email":{"type":"string","format":"email"},"firstName":{"maxLength":32,"type":"string","description":"User's first name","readOnly":true},"lastName":{"maxLength":32,"type":"string","description":"User's last name","readOnly":true},"isPending":{"type":"boolean","description":"Whether the user finished setting up their account in response to the invitation (true) or not (false).","readOnly":true},"createdAt":{"type":"string","description":"Time the user was created.","format":"date-time","readOnly":true},"updatedAt":{"type":"string","description":"Last time the user was updated.","format":"date-time","readOnly":true},"role":{"type":"string","readOnly":true},"mfaEnabled":{"type":"boolean","description":"Whether the user has multi-factor authentication (MFA/2FA) enabled.","readOnly":true}}}}}} \`\`\` ## The User object \`\`\`json {"openapi":"3.0.0","info":{"title":"n8n Public API","version":"1.1.1"},"components":{"schemas":{"User":{"$ref":"#/components/schemas/user"},"user":{"required":\["email"\],"type":"object","properties":{"id":{"type":"string","readOnly":true},"email":{"type":"string","format":"email"},"firstName":{"maxLength":32,"type":"string","description":"User's first name","readOnly":true},"lastName":{"maxLength":32,"type":"string","description":"User's last name","readOnly":true},"isPending":{"type":"boolean","description":"Whether the user finished setting up their account in response to the invitation (true) or not (false).","readOnly":true},"createdAt":{"type":"string","description":"Time the user was created.","format":"date-time","readOnly":true},"updatedAt":{"type":"string","description":"Last time the user was updated.","format":"date-time","readOnly":true},"role":{"type":"string","readOnly":true},"mfaEnabled":{"type":"boolean","description":"Whether the user has multi-factor authentication (MFA/2FA) enabled.","readOnly":true}}}}}} \`\`\` --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook.md). # Webhook Use the Webhook node to create \[webhooks\](https://en.wikipedia.org/wiki/Webhook), which can receive data from apps and services when an event occurs. It's a trigger node, which means it can start an n8n workflow. This allows services to connect to n8n and run a workflow. You can use the Webhook node as a trigger for a workflow when you want to receive data and run a workflow based on the data. The Webhook node also supports returning the data generated at the end of a workflow. This makes it useful for building a workflow to process data and return the results, like an API endpoint. The webhook allows you to trigger workflows from services that don't have a dedicated app trigger node. ## Workflow development process [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook.md#workflow-development-process) n8n provides different \*\*Webhook URL\*\*s for testing and production. The testing URL includes an option to \*\*Listen for test event\*\*. Refer to \[Workflow development\](/integrations/builtin/core-nodes/n8n-nodes-base.webhook/workflow-development.md) for more information on building, testing, and shifting your Webhook node to production. ## Node parameters [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook.md#node-parameters) Use these parameters to configure your node. ### Webhook URLs [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook.md#webhook-urls) The Webhook node has two \*\*Webhook URLs\*\*: test and production. n8n displays the URLs at the top of the node panel. Select \*\*Test URL\*\* or \*\*Production URL\*\* to toggle which URL n8n displays. ![](https://docs.n8n.io/files/8s28xTCS30GwBMQQx3RK) Sample Webhook URLs in the Webhook node's Parameters tab \* \*\*Test\*\*: n8n registers a test webhook when you select \*\*Listen for Test Event\*\* or \*\*Execute workflow\*\*, if the workflow isn't active. When you call the webhook URL, n8n displays the data in the workflow. \* \*\*Production\*\*: n8n registers a production webhook when you publish the workflow. When using the production URL, n8n doesn't display the data in the workflow. You can still view workflow data for a production execution: select the \*\*Executions\*\* tab in the workflow, then select the workflow execution you want to view. ### HTTP Method [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook.md#http-method) The Webhook node supports standard \[HTTP Request Methods\](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods): \* DELETE \* GET \* HEAD \* PATCH \* POST \* PUT **Webhook max payload** The webhook maximum payload size is 16MB. If you're self-hosting n8n, you can change this using the [endpoint environment variable](https://docs.n8n.io/spaces/jm0ZYRpZIPWge2ZSiDYO/pages/nGrAEkbS6RHczlCN91HA) `N8N_PAYLOAD_SIZE_MAX`. \### Path [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook.md#path) By default, this field contains a randomly generated webhook URL path, to avoid conflicts with other webhook nodes. You can manually specify a URL path, including adding route parameters. For example, you may need to do this if you use n8n to prototype an API and want consistent endpoint URLs. The \*\*Path\*\* field can take the following formats: \* \`/:variable\` \* \`/path/:variable\` \* \`/:variable/path\` \* \`/:variable1/path/:variable2\` \* \`/:variable1/:variable2\` ### Supported authentication methods [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook.md#supported-authentication-methods) You can require authentication for any service calling your webhook URL. Choose from these authentication methods: \* Basic auth \* Header auth \* JWT auth \* None Refer to \[Webhook credentials\](/integrations/builtin/credentials/webhook.md) for more information on setting up each credential type. ### Respond [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook.md#respond) \* \*\*Immediately\*\*: The Webhook node returns the response code and the message \*\*Workflow got started\*\*. \* \*\*When Last Node Finishes\*\*: The Webhook node returns the response code and the data output from the last node executed in the workflow. \* \*\*Using 'Respond to Webhook' Node\*\*: The Webhook node responds as defined in the \[Respond to Webhook\](/integrations/builtin/core-nodes/n8n-nodes-base.respondtowebhook.md) node. \* \*\*Streaming response\*\*: Enables real-time data streaming back to the user as the workflow processes. Requires nodes with streaming support in the workflow (for example, the \[AI agent\](/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent.md) node). ### Response Code [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook.md#response-code) Customize the \[HTTP response code\](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status) that the Webhook node returns upon successful execution. Select from common response codes or create a custom code. ### Response Data [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook.md#response-data) Choose what data to include in the response body: \* \*\*All Entries\*\*: The Webhook returns all the entries of the last node in an array. \* \*\*First Entry JSON\*\*: The Webhook returns the JSON data of the first entry of the last node in a JSON object. \* \*\*First Entry Binary\*\*: The Webhook returns the binary data of the first entry of the last node in a binary file. \* \*\*No Response Body\*\*: The Webhook returns without a body. Applies only to \*\*Respond > When Last Node Finishes\*\*. ## Node options [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook.md#node-options) Select \*\*Add Option\*\* to view more configuration options. The available options depend on your node parameters. Refer to the table for option availability. \* \*\*Allowed Origins (CORS)\*\*: Set the permitted cross-origin domains. Enter a comma-separated list of URLs allowed for cross-origin non-preflight requests. Use \`\*\` (default) to allow all origins. \* \*\*Binary Property\*\*: Enabling this setting allows the Webhook node to receive binary data, such as an image or audio file. Enter the name of the binary property to write the data of the received file to. \* \*\*Ignore Bots\*\*: Ignore requests from bots like link previewers and web crawlers. \* \*\*IP(s) Whitelist\*\*: Enable this to limit who (or what) can invoke a Webhook trigger URL. Enter a comma-separated list of allowed IP addresses. Access from IP addresses outside the whitelist throws a 403 error. If left blank, all IP addresses can invoke the webhook trigger URL. \* \*\*No Response Body\*\*: Enable this to prevent n8n sending a body with the response. \* \*\*Raw Body\*\*: Specify that the Webhook node will receive data in a raw format, such as JSON or XML. \* \*\*Response Content-Type\*\*: Choose the format for the webhook body. \* \*\*Response Data\*\*: Send custom data with the response. \* \*\*Response Headers\*\*: Send extra headers in the Webhook response. Refer to \[MDN Web Docs | Response header\](https://developer.mozilla.org/en-US/docs/Glossary/Response\_header) to learn more about response headers. \* \*\*Property Name\*\*: by default, n8n returns all available data. You can choose to return a specific JSON key, so that n8n returns the value. | Option | Required node configuration | | ---------------------- | ------------------------------------------------------------------------------------- | | Allowed Origins (CORS) | Any | | Binary Property | Either: HTTP Method > POST HTTP Method > PATCH HTTP Method > PUT | | Ignore Bots | Any | | IP(s) Whitelist | Any | | Property Name | Both: Respond > When Last Node Finishes Response Data > First Entry JSON | | No Response Body | Respond > Immediately | | Raw Body | Any | | Response Code | Any except Respond > Using 'Respond to Webhook' Node | | Response Content-Type | Both: Respond > When Last Node Finishes Response Data > First Entry JSON | | Response Data | Respond > Immediately | | Response Headers | Any | ## How n8n secures HTML responses [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook.md#how-n8n-secures-html-responses) Starting with n8n version 1.103.0, n8n automatically wraps HTML responses to webhooks in \`\` tags. This is a security mechanism to protect the instance users. This has the following implications: \* HTML renders in a sandboxed iframe instead of directly in the parent document. \* JavaScript code that attempts to access the top-level window or local storage will fail. \* Authentication headers aren't available in the sandboxed iframe (for example, basic auth). You need to use an alternative approach, like embedding a short-lived access token within the HTML. \* Relative URLs (for example, \`
\`) won't work. Use absolute URLs instead. ## Templates and examples \[Browse n8n-nodes-base.webhook integration templates\](https://n8n.io/integrations/webhook) or \[search all templates\](https://n8n.io/workflows/) ## Common issues For common questions or issues and suggested solutions, refer to \[Common issues\](/integrations/builtin/core-nodes/n8n-nodes-base.webhook/common-issues.md). --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executeworkflowtrigger.md). # Execute Sub-workflow Trigger Use this node to start a workflow in response to another workflow. It should be the first node in the workflow. n8n allows you to call workflows from other workflows. This is useful if you want to: \* Reuse a workflow: for example, you could have multiple workflows pulling and processing data from different sources, then have all those workflows call a single workflow that generates a report. \* Break large workflows into smaller components. ## Usage [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executeworkflowtrigger.md#usage) This node runs in response to a call from the \[Execute Sub-workflow\](/integrations/builtin/core-nodes/n8n-nodes-base.executeworkflow.md) or \[Call n8n Workflow Tool\](/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolworkflow.md) nodes. #### Create the sub-workflow [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executeworkflowtrigger.md#create-the-sub-workflow) 1\. Create a new workflow. **Create sub-workflows from existing workflows** You can optionally create a sub-workflow directly from an existing parent workflow using the [Execute Sub-workflow](https://docs.n8n.io/spaces/BKcbOzIWja8NfqKDcqHc/pages/KdUMCx3cTJVPxJ3T06tC) node. In the node, select the **Database** and **From list** options and select **Create a sub-workflow** in the list. You can also extract selected nodes directly using [Sub-workflow conversion](https://docs.n8n.io/spaces/rPN1zU5jaYNvwH7RzxqA/pages/F4QS4rNiHqztrjw6IBsR) in the context menu. 2\. \*\*Optional\*\*: configure which workflows can call the sub-workflow: 1. Select the \*\*Options\*\* ![Options menu](https://docs.n8n.io/spaces/GixZThfitWP21x2gQFpD/files/LxEoziLuMlenJM8dOV4r) menu > \*\*Settings\*\*. n8n opens the \*\*Workflow settings\*\* modal. 2. Change the \*\*This workflow can be called by\*\* setting. Refer to \[Workflow settings\](/build/manage-workflows/configure-workflow-settings.md) for more information on configuring your workflows. 3. Add the \*\*Execute Sub-workflow\*\* trigger node (if you are searching under trigger nodes, this is also titled \*\*When Executed by Another Workflow\*\*). 4. Set the \*\*Input data mode\*\* to choose how you will define the sub-workflow's input data: \* \*\*Define using fields below\*\*: Choose this mode to define individual input names and data types that the calling workflow needs to provide. The \[Execute Sub-workflow node\](/integrations/builtin/core-nodes/n8n-nodes-base.executeworkflow.md) or \[Call n8n Workflow Tool node\](/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolworkflow.md) in the calling workflow will automatically pull in the fields defined here. \* \*\*Define using JSON example\*\*: Choose this mode to provide an example JSON object that demonstrates the expected input items and their types. \* \*\*Accept all data\*\*: Choose this mode to accept all data unconditionally. The sub-workflow won't define any required input items. This sub-workflow must handle any input inconsistencies or missing values. 5. Add other nodes as needed to build your sub-workflow functionality. 6. Save the sub-workflow. {% hint style="info" %} \*\*Sub-workflow mustn't contain errors\*\* If there are errors in the sub-workflow, the parent workflow can't trigger it. {% endhint %} {% hint style="info" %} \*\*Load data into sub-workflow before building\*\* This requires the ability to \[load data from previous executions\](/build/understand-workflows/understand-executions/debug-executions.md), which is available on n8n Cloud and registered Community plans. If you want to load data into your sub-workflow to use while building it: 1. Create the sub-workflow and add the \*\*Execute Sub-workflow Trigger\*\*. 2. Set the node's \*\*Input data mode\*\* to \*\*Accept all data\*\* or define the input items using fields or JSON if they're already known. 3. In the sub-workflow \[settings\](/build/manage-workflows/configure-workflow-settings.md), set \*\*Save successful production executions\*\* to \*\*Save\*\*. 4. Skip ahead to setting up the parent workflow, and run it. 5. Follow the steps to \[load data from previous executions\](/build/understand-workflows/understand-executions/debug-executions.md). 6. Adjust the \*\*Input data mode\*\* to match the input sent by the parent workflow if necessary. You can now pin example data in the trigger node, enabling you to work with real data while configuring the rest of the workflow. {% endhint %} #### Call the sub-workflow [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executeworkflowtrigger.md#call-the-sub-workflow) 1\. Open the workflow where you want to call the sub-workflow. 2. Add the \*\*Execute Sub-workflow\*\* node. 3. In the \*\*Execute Sub-workflow\*\* node, set the sub-workflow you want to call. You can choose to call the workflow by ID, load a workflow from a local file, add workflow JSON as a parameter in the node, or target a workflow by URL. **Find your workflow ID** Your sub-workflow's ID is the alphanumeric string at the end of its URL. 4\. Fill in the required input items defined by the sub-workflow. 5. Save your workflow. When your workflow executes, it will send data to the sub-workflow, and run it. You can follow the execution flow from the parent workflow to the sub-workflow by opening the Execute Sub-workflow node and selecting the \*\*View sub-execution\*\* link. Likewise, the sub-workflow's execution contains a link back to the parent workflow's execution to navigate in the other direction. ## Templates and examples [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executeworkflowtrigger.md#templates-and-examples) \[Browse Execute Sub-workflow Trigger node documentation integration templates\](https://n8n.io/integrations/execute-workflow-trigger) or \[search all templates\](https://n8n.io/workflows/) ## How data passes between workflows [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executeworkflowtrigger.md#how-data-passes-between-workflows) As an example, imagine you have an Execute Sub-workflow node in \*\*Workflow A\*\*. The Execute Sub-workflow node calls another workflow called \*\*Workflow B\*\*: 1. The Execute Sub-workflow node passes the data to the Execute Sub-workflow Trigger node (titled "When executed by another node" in the canvas) of \*\*Workflow B\*\*. 2. The last node of \*\*Workflow B\*\* sends the data back to the Execute Sub-workflow node in \*\*Workflow A\*\*. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/build/flow-logic/break-workflows-into-smaller-parts.md). # Break workflows into smaller parts You can call one workflow from another workflow. This allows you to build modular, microservice-like workflows. It can also help if your workflow grows large enough to encounter \[memory issues\](/deploy/host-n8n/configure-n8n/scaling/fix-memory-issues.md). Creating sub-workflows uses the \[Execute Workflow\](/integrations/builtin/core-nodes/n8n-nodes-base.executeworkflow.md) and \[Execute Sub-workflow Trigger\](/integrations/builtin/core-nodes/n8n-nodes-base.executeworkflowtrigger.md) nodes. Sub-wokflow executions don't count towards your plan's monthly execution or active workflow limits. ## Set up and use a sub-workflow [](https://docs.n8n.io/build/flow-logic/break-workflows-into-smaller-parts.md#set-up-and-use-a-sub-workflow) This section walks through setting up both the parent workflow and sub-workflow. #### Create the sub-workflow [](https://docs.n8n.io/build/flow-logic/break-workflows-into-smaller-parts.md#create-the-sub-workflow) 1\. Create a new workflow. **Create sub-workflows from existing workflows** You can optionally create a sub-workflow directly from an existing parent workflow using the [Execute Sub-workflow](https://docs.n8n.io/spaces/BKcbOzIWja8NfqKDcqHc/pages/KdUMCx3cTJVPxJ3T06tC) node. In the node, select the **Database** and **From list** options and select **Create a sub-workflow** in the list. You can also extract selected nodes directly using [Sub-workflow conversion](https://docs.n8n.io/spaces/rPN1zU5jaYNvwH7RzxqA/pages/F4QS4rNiHqztrjw6IBsR) in the context menu. 2\. \*\*Optional\*\*: configure which workflows can call the sub-workflow: 1. Select the \*\*Options\*\* ![Options menu](https://docs.n8n.io/spaces/GixZThfitWP21x2gQFpD/files/LxEoziLuMlenJM8dOV4r) menu > \*\*Settings\*\*. n8n opens the \*\*Workflow settings\*\* modal. 2. Change the \*\*This workflow can be called by\*\* setting. Refer to \[Workflow settings\](/build/manage-workflows/configure-workflow-settings.md) for more information on configuring your workflows. 3. Add the \*\*Execute Sub-workflow\*\* trigger node (if you are searching under trigger nodes, this is also titled \*\*When Executed by Another Workflow\*\*). 4. Set the \*\*Input data mode\*\* to choose how you will define the sub-workflow's input data: \* \*\*Define using fields below\*\*: Choose this mode to define individual input names and data types that the calling workflow needs to provide. The \[Execute Sub-workflow node\](/integrations/builtin/core-nodes/n8n-nodes-base.executeworkflow.md) or \[Call n8n Workflow Tool node\](/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolworkflow.md) in the calling workflow will automatically pull in the fields defined here. \* \*\*Define using JSON example\*\*: Choose this mode to provide an example JSON object that demonstrates the expected input items and their types. \* \*\*Accept all data\*\*: Choose this mode to accept all data unconditionally. The sub-workflow won't define any required input items. This sub-workflow must handle any input inconsistencies or missing values. 5. Add other nodes as needed to build your sub-workflow functionality. 6. Save the sub-workflow. {% hint style="info" %} \*\*Sub-workflow mustn't contain errors\*\* If there are errors in the sub-workflow, the parent workflow can't trigger it. {% endhint %} {% hint style="info" %} \*\*Load data into sub-workflow before building\*\* This requires the ability to \[load data from previous executions\](/build/understand-workflows/understand-executions/debug-executions.md), which is available on n8n Cloud and registered Community plans. If you want to load data into your sub-workflow to use while building it: 1. Create the sub-workflow and add the \*\*Execute Sub-workflow Trigger\*\*. 2. Set the node's \*\*Input data mode\*\* to \*\*Accept all data\*\* or define the input items using fields or JSON if they're already known. 3. In the sub-workflow \[settings\](/build/manage-workflows/configure-workflow-settings.md), set \*\*Save successful production executions\*\* to \*\*Save\*\*. 4. Skip ahead to setting up the parent workflow, and run it. 5. Follow the steps to \[load data from previous executions\](/build/understand-workflows/understand-executions/debug-executions.md). 6. Adjust the \*\*Input data mode\*\* to match the input sent by the parent workflow if necessary. You can now pin example data in the trigger node, enabling you to work with real data while configuring the rest of the workflow. {% endhint %} #### Call the sub-workflow [](https://docs.n8n.io/build/flow-logic/break-workflows-into-smaller-parts.md#call-the-sub-workflow) 1\. Open the workflow where you want to call the sub-workflow. 2. Add the \*\*Execute Sub-workflow\*\* node. 3. In the \*\*Execute Sub-workflow\*\* node, set the sub-workflow you want to call. You can choose to call the workflow by ID, load a workflow from a local file, add workflow JSON as a parameter in the node, or target a workflow by URL. **Find your workflow ID** Your sub-workflow's ID is the alphanumeric string at the end of its URL. 4\. Fill in the required input items defined by the sub-workflow. 5. Save your workflow. When your workflow executes, it will send data to the sub-workflow, and run it. You can follow the execution flow from the parent workflow to the sub-workflow by opening the Execute Sub-workflow node and selecting the \*\*View sub-execution\*\* link. Likewise, the sub-workflow's execution contains a link back to the parent workflow's execution to navigate in the other direction. ## How data passes between workflows [](https://docs.n8n.io/build/flow-logic/break-workflows-into-smaller-parts.md#how-data-passes-between-workflows) As an example, imagine you have an Execute Sub-workflow node in \*\*Workflow A\*\*. The Execute Sub-workflow node calls another workflow called \*\*Workflow B\*\*: 1. The Execute Sub-workflow node passes the data to the Execute Sub-workflow Trigger node (titled "When executed by another node" in the canvas) of \*\*Workflow B\*\*. 2. The last node of \*\*Workflow B\*\* sends the data back to the Execute Sub-workflow node in \*\*Workflow A\*\*. ## Sub-workflow conversion [](https://docs.n8n.io/build/flow-logic/break-workflows-into-smaller-parts.md#sub-workflow-conversion) See \[sub-workflow conversion\](/build/flow-logic/convert-to-sub-workflows.md) for how to divide your existing workflows into sub-workflows. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/build/integrate-ai/ai-examples.md). # AI examples This section provides explanations of important AI concepts, and workflow templates that highlight those concepts, with explanations and configuration guides. The examples cover common use cases and highlight different features of advanced AI in n8n. \* \*\*Agents and chains\*\* Learn about agents\[^1\] and chains\[^2\] in AI, including exploring key differences using the example workflow. \[→ What's a chain in AI?\](/build/integrate-ai/understand-ai-components/what-chains-do.md)\\ \[→ What's an agent in AI?\](/build/integrate-ai/understand-ai-components/what-agents-do.md)\\ \[→ Demonstration of key differences between agents and chains\](/build/integrate-ai/understand-ai-components/agents-vs-chains.md) \* \*\*Call n8n Workflow Tool\*\* Learn about tools\[^3\] in AI, then explore examples that use n8n workflows as custom tools to give your AI workflow access to more data. \[→ What's a tool in AI?\](/build/integrate-ai/understand-ai-components/how-tools-work.md)\\ \[→ Chat with Google Sheets\](/build/integrate-ai/ai-examples/use-google-sheets-as-a-data-source.md)\\ \[→ Call an API to fetch data\](/build/integrate-ai/ai-examples/call-apis.md)\\ \[→ Set up a human fallback\](/build/integrate-ai/ai-examples/set-a-human-fallback-for-ai-workflows.md)\\ \[→ Let AI specify tool parameters with \`$fromAI()\`\](/build/integrate-ai/ai-examples/use-ai-for-parameters.md) \* \*\*Vector databases\*\* Learn about \[vector databases\](#user-content-fn-4)\[^4\] in AI, along with related concepts including embeddings\[^5\] and retrievers. \[→ What's a vector database?\](/build/integrate-ai/understand-ai-components/store-and-search-data-with-vectors.md)\\ \[→ Populate a Pinecone vector database from a website\](/build/integrate-ai/ai-examples/use-website-content.md) \* \*\*Memory\*\* Learn about memory\[^6\] in AI. \[→ What's memory in AI?\](/build/integrate-ai/understand-ai-components/how-memory-works.md) \* \*\*AI workflow templates\*\* You can browse AI templates, included community contributions, on the n8n website. \[→ Browse all AI templates\](https://n8n.io/workflows/?categories=25) \[^1\]: AI agents are artificial intelligence systems capable of responding to requests, making decisions, and performing real-world tasks for users. They use large language models (LLMs) to interpret user input and make decisions about how to best process requests using the information and resources they have available. \[^2\]: AI chains allow you to interact with large language models (LLMs) and other resources in sequences of calls to components. AI chains in n8n don't use persistent memory, so you can't use them to reference previous context (use AI agents for this). \[^3\]: In an AI context, a tool is an add-on resource that the AI can refer to for specific information or functionality when responding to a request. The AI model can use a tool to interact with external systems or complete specific, focused tasks. \[^4\]: A vector store, or vector database, stores mathematical representations of information. Use with embeddings and retrievers to create a database that your AI can access when answering questions. \[^5\]: Embeddings are numerical representations of data using vectors. They're used by AI to interpret complex data and relationships by mapping values across many dimensions. Vector databases, or vector stores, are databases designed to store and access embeddings. \[^6\]: In an AI context, memory allows AI tools to persist message context across interactions. This allows you to have a continuing conversations with AI agents, for example, without submitting ongoing context with each message. In n8n, AI agent nodes can use memory, but AI chains can't. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/build/work-with-data/pin-and-mock-data.md). # Pin and mock data When developing workflows, you might want to test your logic without repeatedly calling external systems or working with live data. n8n provides two related features to help with this: \* \*\*Data mocking\*\*: Create or simulate test data without connecting to real data sources \* \*\*Data pinning\*\*: Save test data (mocked or real) and reuse it in future workflow executions instead of fetching fresh data Both approaches save time and resources during development, help you work with consistent datasets, and protect live systems from repeated test calls. {% hint style="info" %} \*\*For development only\*\* Data pinning and mocking are features to help test workflows during development. Data pinning isn't available for production workflow executions. {% endhint %} ## Data mocking approaches Create test data to work with during development. You can create mock data in several ways: ### Generate custom data using the Code or Edit Fields nodes You can create a custom dataset in your workflow using either the \[Code node\](/integrations/builtin/core-nodes/n8n-nodes-base.code.md) or the \[Edit Fields (Set) node\](/integrations/builtin/core-nodes/n8n-nodes-base.set.md). In the Code node, you can create any data set you want, and return it as the node output. In the Edit Fields node, select \*\*Add fields\*\* to add your custom data. The Edit Fields node is a good choice for small tests. To create more complex datasets, use the Code node. \*\*Use this approach when\*\*: You need complete control over your test data structure and values, or when you want to test edge cases with specific data patterns. ### Output a sample data set from the Customer Datastore node The Customer Datastore node provides a fake dataset to work with. Add and execute the node to explore the data. \*\*Use this approach when\*\*: You need some test data when exploring n8n, and you don't have a real use-case to work with. Once you've created or obtained test data you want to reuse across multiple workflow executions, use \[Data pinning\](#data-pinning) to save it for consistent testing. ## Data pinning You can 'pin' data during workflow development. Data pinning means saving the output data of a node and using the saved data instead of fetching fresh data in future workflow executions. You can use this when working with data from external sources to avoid having to repeat requests to the external system. This can save time and resources: \* If your workflow relies on an external system to trigger it, such as a webhook call, being able to pin data means you don't need to use the external system every time you test the workflow. \* If the external resource has data or usage limits, pinning data during tests avoids consuming your resource limits. \* You can fetch and pin the data you want to test, then have confidence that the data is consistent in all your workflow tests. \* You can mock test data (using the approaches above), then pin it for reuse across executions. You can only pin data for nodes that have a single main output ("error" outputs don't count for this purpose). ### Pin data To pin data in a node: 1. Run the node to load data. 2. In the \*\*OUTPUT\*\* view, select \*\*Pin data\*\* Pin data icon. When data pinning is active, the button is disabled and a "This data is pinned" banner is displayed in the \*\*OUTPUT\*\* view. {% hint style="info" %} \*\*Nodes that output binary data\*\* You can't pin data if the output data includes binary data. {% endhint %} ### Unpin data When data pinning is active, a banner appears at the top of the node's output panel indicating that n8n has pinned the data. To unpin data and fetch fresh data on the next execution, select the \*\*Unpin\*\* link in the banner. ### Edit pinned data n8n allows you to edit pinned data. This means you can check different scenarios without setting up each scenario and sending the relevant data from your external system. It makes it easier to test edge cases. {% hint style="info" %} \*\*For development only\*\* Data editing isn't available for production workflow executions. It's a feature to help test workflows during development. {% endhint %} #### Edit output data To edit output data: 1. Run the node to load data. 2. In the \*\*OUTPUT\*\* view, select \*\*JSON\*\* to switch to JSON view. 3. Select \*\*Edit\*\* Edit data icon. 4. Edit your data. 5. Select \*\*Save\*\*. n8n saves your data changes and pins your data. #### Use data from previous executions You can copy data from nodes in previous workflow executions: 1. Open the left menu. 2. Select \*\*Executions\*\*. 3. Browse the workflow executions list to find the one with the data you want to copy. 4. Select \*\*Open Past Execution\*\* Open past execution icon. 5. Double click the node whose data you want to copy. 6. If it's table layout, select \*\*JSON\*\* to switch to JSON view. 7. There are two ways to copy the JSON: 8. Select the JSON you want by highlighting it, like selecting text. Then use \`ctrl\` + \`c\` to copy it. 9. Select the JSON you want to copy by clicking on a parameter. Then: 1. Hover over the JSON. n8n displays the \*\*Copy\*\* Copy data icon button. 2. Select \*\*Copy\*\* Copy data icon. 3. You can choose what to copy: \* \*\*Copy Item Path\*\* and \*\*Copy Parameter Path\*\* give you expressions that access parts of the JSON. \* \*\*Copy Value\*\*: copies the entire selected JSON. 10. Return to the workflow you're working on: 1. Open the left menu. 2. Select \*\*Workflows\*\*. 3. Select \*\*Open\*\*. 4. Select the workflow you want to open. 11. Open the node where you want to use the copied data. 12. If there is no data, run the node to load data. 13. In the \*\*OUTPUT\*\* view, select \*\*JSON\*\* to switch to JSON view. 14. Select \*\*Edit\*\* Edit data icon. 15. Paste in the data from the previous execution. 16. Select \*\*Save\*\*. n8n saves your data changes and pins your data. ### Combine mocking with pinning For the most realistic testing experience, you can combine mocking and pinning approaches: 1. Create test data using one of the mocking approaches (Code node, Edit Fields node, or Customer Datastore) 2. Edit the test data to create specific test scenarios or edge cases 3. Pin the edited data for reuse across multiple workflow executions 4. Continue developing with this edited, pinned dataset This approach gives you complete control over your test data while ensuring consistent testing across multiple runs. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.n8n.io/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.n8n.io/build/integrate-ai/ai-examples/use-ai-for-parameters.md). # Use AI for parameters When configuring tools\[^1\] connected to the Tools Agent, many parameters can be filled in by the AI model itself. The AI model will use the context from the task and information from other connected tools to fill in the appropriate details. There are two ways to do this, and you can switch between them. ## Let the model fill in the parameter Each appropriate parameter field in the tool's editing dialog has an extra button at the end: !\[image showing stars icon to the right of parameter field\](/files/Jyjco8510Elx7jzV8Ppy) On activating this button, the \[AI Agent\](#user-content-fn-2)\[^2\] will fill in the expression for you, with no need for any further user input. The field itself is filled in with a message indicating that the parameter has been defined automatically by the model. If you want to define the parameter yourself, click on the 'X' in this box to revert to user-defined values. Note that the 'expression' field will now contain the expression generated by this feature, though you can now edit it further to add extra details as described in the following section. {% hint style="warning" %} Activating this feature will overwrite any manual definition you may have already added. {% endhint %} ## Use the \`$fromAI()\` function The \`$fromAI()\` function uses AI to dynamically fill in parameters for tools connected to the \[Tools AI agent\](/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/tools-agent.md). {% hint style="info" %} \*\*Only for tools\*\* The \`$fromAI()\` function is only available for tools connected to the AI Agent node. The \`$fromAI()\` function doesn't work with the \[Code\](/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolcode.md) tool or with \[other non-tool cluster sub-nodes\](/integrations/builtin/cluster-nodes/sub-nodes.md). {% endhint %} To use the \`$fromAI()\` function, call it with the required \`key\` parameter: \`\`\`javascript {{ $fromAI('email') }} \`\`\` The \`key\` parameter and other arguments to the \`$fromAI()\` function aren't references to existing values. Instead, think of these arguments as hints that the AI model will use to populate the right data. For instance, if you choose a key called \`email\`, the AI Model will look for an email address in its context, other tools, and input data. In chat workflows, it may ask the user for an email address if it can't find one elsewhere. You can optionally pass other parameters like \`description\` to give extra context to the AI model. ### Parameters The \`$fromAI()\` function accepts the following parameters: | Parameter | Type | Required? | Description | | -------------- | ------ | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | \`key\` | string | āœ… | A string representing the key or name of the argument. This must be between 1 and 64 characters in length and can only contain lowercase letters, uppercase letters, numbers, underscores, and hyphens. | | \`description\` | string | āŒ | A string describing the argument. | | \`type\` | string | āŒ | A string specifying the data type. Can be string, number, boolean, or json (defaults to string). | | \`defaultValue\` | any | āŒ | The default value to use for the argument. | ### Examples As an example, you could use the following \`$fromAI()\` expression to dynamically populate a field with a name: \`\`\`javascript $fromAI("name", "The commenter's name", "string", "Jane Doe") \`\`\` If you don't need the optional parameters, you could simplify this as: \`\`\`javascript $fromAI("name") \`\`\` To dynamically populate the number of items you have in stock, you could use a \`$fromAI()\` expression like this: \`\`\`javascript $fromAI("numItemsInStock", "Number of items in stock", "number", 5) \`\`\` If you only want to fill in parts of a field with a dynamic value from the model, you can use it in a normal expression as well. For example, if you want the model to fill out the \`subject\` parameter for an e-mail, but always pre-fix the generated value with the string 'Generated by AI:', you could use the following expression: \`\`\`javascript Generated by AI: {{ $fromAI("subject") }} \`\`\` ### Templates You can see the \`$fromAI()\` function in action in the following templates\[^3\]: \* \[Angie, Personal AI Assistant with Telegram Voice and Text\](https://n8n.io/workflows/2462-angie-personal-ai-assistant-with-telegram-voice-and-text/) \* \[Automate Customer Support Issue Resolution using AI Text Classifier\](https://n8n.io/workflows/2468-automate-customer-support-issue-resolution-using-ai-text-classifier/) \* \[Scale Deal Flow with a Pitch Deck AI Vision, Chatbot and QDrant Vector Store\](https://n8n.io/workflows/2464-scale-deal-flow-with-a-pitch-deck-ai-vision-chatbot-and-qdrant-vector-store/) \[^1\]: In an AI context, a tool is an add-on resource that the AI can refer to for specific information or functionality when responding to a request. The AI model can use a tool to interact with external systems or complete specific, focused tasks. \[^2\]: AI agents are artificial intelligence systems capable of responding to requests, making decisions, and performing real-world tasks for users. They use large language models (LLMs) to interpret user input and make decisions about how to best process requests using the information and resources they have available. \[^3\]: n8n templates are pre-built workflows designed by n8n and community members that you can import into your n8n instance. When using templates, you may need to fill in credentials and adjust the configuration to suit your needs. --- # n8n Docs Page not found ============== The page you're looking for doesn't exist. arrow-right You might be looking for ------------------------ [homeGo to homepage](https://docs.n8n.io/) This site uses cookies to deliver its service and to analyze traffic. By browsing this site, you accept the [privacy policy](https://n8n.io/legal/privacy/) . AcceptReject --- # n8n Docs Page not found ============== The page you're looking for doesn't exist. arrow-right You might be looking for ------------------------ * [Learning paths](https://docs.n8n.io/learning-paths) * [Key concept glossary](https://docs.n8n.io/key-concept-glossary) * [Build your first workflow](https://docs.n8n.io/build-your-first-workflow) * [Choose how to use n8n](https://docs.n8n.io/choose-how-to-use-n8n) * [n8n Docs](https://docs.n8n.io/) [homeGo to homepage](https://docs.n8n.io/) This site uses cookies to deliver its service and to analyze traffic. By browsing this site, you accept the [privacy policy](https://n8n.io/legal/privacy/) . AcceptReject --- # Track usage with Insights | Administer | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/administer/observe-and-log/track-usage-with-insights.md) . Insights gives instance owners and admins visibility into how workflows perform over time. This feature consists of three parts: * [**Insights summary banner**](https://docs.n8n.io/administer/observe-and-log/track-usage-with-insights#insights-summary-banner) : Shows key metrics about your instance from the last 7 days at the top of the **Overview** space. * [**Insights dashboard**](https://docs.n8n.io/administer/observe-and-log/track-usage-with-insights#insights-dashboard) : A more detailed visual breakdown with per-workflow metrics and historical comparisons. * [**Time saved (Workflow ROI)**](https://docs.n8n.io/administer/observe-and-log/track-usage-with-insights#setting-the-time-saved-by-a-workflow) : For each workflow, you can choose to set a fixed amount of time saved per workflow, or dynamically calculate time saved based on the execution path taken on a specific workflow. **Feature availability** The insights summary banner displays activity from the last 7 days for all plans. The insights dashboard is only available on Pro, Business, and Enterprise plans. [](https://docs.n8n.io/administer/observe-and-log/track-usage-with-insights#insights-summary-banner) Insights summary banner --------------------------------------------------------------------------------------------------------------------------------- n8n collects several metrics for both the insights summary banner and dashboard. They include: * Total production executions (not including sub-workflow executions or manual executions) * Total failed production executions * Production execution failure rate * Time saved (when set on at least one or more active workflows) * Run time average (including wait time from any wait nodes) [](https://docs.n8n.io/administer/observe-and-log/track-usage-with-insights#insights-dashboard) Insights dashboard ----------------------------------------------------------------------------------------------------------------------- Access the **Insights** section from the side navigation. Each metric from the summary banner is also clickable, taking you to the corresponding chart. The insights dashboard also has a table showing individual insights from each workflow including total production executions, failed production executions, failure rate, time saved, and run time average. [](https://docs.n8n.io/administer/observe-and-log/track-usage-with-insights#insights-time-periods) Insights time periods ----------------------------------------------------------------------------------------------------------------------------- By default, the insights summary banner and dashboard show a rolling 7 day window with a comparison to the previous period to identify increases or decreases for each metric. On the dashboard, paid plans also display data for other date ranges: * Pro: 7 and 14 days * Business: 24 hours, 7 days, 14 days, 30 days. * Enterprise: 24 hours, 7 days, 14 days, 30 days, 90 days, 6 months, 1 year [](https://docs.n8n.io/administer/observe-and-log/track-usage-with-insights#setting-the-time-saved-by-a-workflow) Setting the time saved by a workflow ----------------------------------------------------------------------------------------------------------------------------------------------------------- For each workflow, you can track how much time it saves you. This setting helps you calculate how much time automating a process saves over time vs the manual effort to complete the same task or process. Once configured, n8n calculates the amount of time the workflow saves you based on the number of production executions and displays it on the summary banner and insights dashboard. You can choose between two methods for calculating time saved: ### [](https://docs.n8n.io/administer/observe-and-log/track-usage-with-insights#fixed-time-saved) Fixed time saved With fixed time saved, you set a single time value that applies to every production execution of the workflow, regardless of which path the execution takes. To configure fixed time saved: 1. Navigate to the workflow 2. Select the three dots menu in the top right and select **Settings** 3. In the **Estimated time saved** dropdown, select **Fixed** 4. Enter the number of minutes of work each execution saves 5. Save your settings ### [](https://docs.n8n.io/administer/observe-and-log/track-usage-with-insights#dynamic-time-saved) Dynamic time saved Dynamic time saved calculates time savings based on the actual execution path taken, accounting for workflows where different execution paths save different amounts of time. To configure dynamic time saved: 1. Navigate to the workflow 2. Select the three dots menu in the top right and select **Settings** 3. In the **Estimated time saved** dropdown, select **Dynamic** 4. Save your settings 5. Add **Time Saved** nodes to your workflow at the points where time is saved 6. For each Time Saved node, configure: * **Time saved**: The amount of time saved (in minutes) * **Calculation mode**: Choose whether to calculate the time saved once for all items in an execution, or per item which will multiply minutes saved by the total number of input items When you use dynamic time saved, n8n adds up the time from all Time Saved nodes that execute during a workflow run to calculate the total time saved for that execution. **Subworkflow support** Time saved tracking currently only works on parent workflows. Time saved from subworkflows isn't currently supported, with plans to support this in a future release. [](https://docs.n8n.io/administer/observe-and-log/track-usage-with-insights#disable-or-configure-insights-metrics-collection) Disable or configure insights metrics collection ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- If you self-host n8n, you can disable or configure insights and metrics collection using [environment variables](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/insights) . By default, n8n keeps compacted insights data for 365 days (`N8N_INSIGHTS_MAX_AGE_DAYS`). n8n caps retention at 730 days (two years); use a lower number for a shorter window. To turn off insights collection entirely, set `N8N_DISABLED_MODULES=insights` (refer to the [environment variables page](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/insights) ). **Self-host upgrade** In older versions, pruning could follow license-driven defaults (commonly 180 days). `N8N_INSIGHTS_MAX_AGE_DAYS` now controls pruning (default 365). Set `N8N_INSIGHTS_MAX_AGE_DAYS=180` if you want a retention window like that previous default. n8n stores recent insights at one-hour granularity, then compacts older data into day-level and week-level summaries. Use [Insights environment variables](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/insights) to control compaction timing, batch limits, runtime, and delays. Raising those thresholds above the defaults keeps finer detail longer. That adds more rows to `insights_by_period` and uses more database space than extending `N8N_INSIGHTS_MAX_AGE_DAYS` alone. Increase `N8N_INSIGHTS_MAX_AGE_DAYS` first if you only need a longer retention window. [](https://docs.n8n.io/administer/observe-and-log/track-usage-with-insights#insights-faqs) Insights FAQs ------------------------------------------------------------------------------------------------------------- ### [](https://docs.n8n.io/administer/observe-and-log/track-usage-with-insights#which-executions-do-n8n-use-to-calculate-the-values-in-the-insights-banner-and-dashboard) Which executions do n8n use to calculate the values in the insights banner and dashboard? n8n insights only collects data from production executions (for example, those from active workflows triggered on a schedule or a webhook) from the main (parent) workflow. This means that it doesn't count manual (test) executions or executions from sub-workflows or error workflows. ### [](https://docs.n8n.io/administer/observe-and-log/track-usage-with-insights#does-n8n-use-historic-execution-data-when-upgrading-to-a-version-with-insights) Does n8n use historic execution data when upgrading to a version with insights? n8n only starts collecting data for insights once you update to the first supported version (1.89.0). This means it only reports on executions from that point forward and you won't see execution data in insights from prior periods. [PreviousObserve and log](https://docs.n8n.io/administer/observe-and-log) [NextStream logs to external systems](https://docs.n8n.io/administer/observe-and-log/stream-logs-to-external-systems) Last updated 10 days ago Was this helpful? * [Insights summary banner](https://docs.n8n.io/administer/observe-and-log/track-usage-with-insights#insights-summary-banner) * [Insights dashboard](https://docs.n8n.io/administer/observe-and-log/track-usage-with-insights#insights-dashboard) * [Insights time periods](https://docs.n8n.io/administer/observe-and-log/track-usage-with-insights#insights-time-periods) * [Setting the time saved by a workflow](https://docs.n8n.io/administer/observe-and-log/track-usage-with-insights#setting-the-time-saved-by-a-workflow) * [Fixed time saved](https://docs.n8n.io/administer/observe-and-log/track-usage-with-insights#fixed-time-saved) * [Dynamic time saved](https://docs.n8n.io/administer/observe-and-log/track-usage-with-insights#dynamic-time-saved) * [Disable or configure insights metrics collection](https://docs.n8n.io/administer/observe-and-log/track-usage-with-insights#disable-or-configure-insights-metrics-collection) * [Insights FAQs](https://docs.n8n.io/administer/observe-and-log/track-usage-with-insights#insights-faqs) * [Which executions do n8n use to calculate the values in the insights banner and dashboard?](https://docs.n8n.io/administer/observe-and-log/track-usage-with-insights#which-executions-do-n8n-use-to-calculate-the-values-in-the-insights-banner-and-dashboard) * [Does n8n use historic execution data when upgrading to a version with insights?](https://docs.n8n.io/administer/observe-and-log/track-usage-with-insights#does-n8n-use-historic-execution-data-when-upgrading-to-a-version-with-insights) Was this helpful? --- # Deploy with the AI starter kit | Deploy | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/deploy/host-n8n/deploy-with-the-ai-starter-kit.md) . The Self-hosted AI Starter Kit is an open, docker compose template that bootstraps a fully featured Local AI and Low Code development environment. Curated by [n8n](https://github.com/n8n-io) , it combines the self-hosted n8n platform with a list of compatible AI products and components to get you started building self-hosted AI workflows. [](https://docs.n8n.io/deploy/host-n8n/deploy-with-the-ai-starter-kit#whats-included) What’s included ---------------------------------------------------------------------------------------------------------- āœ… [**Self-hosted n8n**](https://docs.n8n.io/deploy/host-n8n) : Low-code platform with over 400 integrations and advanced AI components. āœ… [**Ollama**](https://ollama.com/) : Cross-platform LLM platform to install and run the latest local LLMs. āœ… [**Qdrant**](https://qdrant.tech/) : Open-source, high performance vector store with a comprehensive API. āœ… [**PostgreSQL**](https://www.postgresql.org/) : The workhorse of the Data Engineering world, handles large amounts of data safely. [](https://docs.n8n.io/deploy/host-n8n/deploy-with-the-ai-starter-kit#what-you-can-build) What you can build ----------------------------------------------------------------------------------------------------------------- ā­ļø AI Agents{ data-preview} that can schedule appointments ā­ļø Summaries of company PDFs without leaking data ā­ļø Smarter Slackbots for company communications and IT-ops ā­ļø Private, low-cost analyses of financial documents [](https://docs.n8n.io/deploy/host-n8n/deploy-with-the-ai-starter-kit#get-the-kit) Get the kit --------------------------------------------------------------------------------------------------- Head to [the GitHub repository](https://github.com/n8n-io/self-hosted-ai-starter-kit) to clone the repo and get started! **For testing only** n8n designed this kit to help you get started with self-hosted AI workflows. While it’s not fully optimized for production environments, it combines robust components that work well together for proof-of-concept projects. Customize it to meet your needs. Secure and harden it before using in production. [PreviousSet up token exchange](https://docs.n8n.io/deploy/host-n8n/deploy-as-an-oem-integration/set-up-token-exchange) [NextCommunity edition features](https://docs.n8n.io/deploy/host-n8n/community-edition-features) Last updated 9 days ago Was this helpful? * [What’s included](https://docs.n8n.io/deploy/host-n8n/deploy-with-the-ai-starter-kit#whats-included) * [What you can build](https://docs.n8n.io/deploy/host-n8n/deploy-with-the-ai-starter-kit#what-you-can-build) * [Get the kit](https://docs.n8n.io/deploy/host-n8n/deploy-with-the-ai-starter-kit#get-the-kit) Was this helpful? --- # Share credentials securely | Administer | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/administer/manage-credentials/share-credentials-securely.md) . **Feature availability** Available on all Cloud plans, and Business and Enterprise self-hosted plans. You can share a credential directly with other users to use in their own workflows. Or share a credential in a project for all members of that project to use. Any users using a shared credential won't be able to view or edit the credential details. Users can share credentials they created and own. Only project admins can share credentials created in and owned by a project. Instance owners and instance admins can view and share all credentials on an instance. Refer to [Account types](https://docs.n8n.io/administer/manage-users-and-access/understand-account-types) for more information about owners and admins. In [projects](https://docs.n8n.io/administer/manage-users-and-access/set-permissions-and-roles-rbac) , a user's role controls how they can interact with the workflows and credentials associated to the projects they're a member of. [](https://docs.n8n.io/administer/manage-credentials/share-credentials-securely#share-a-credential) Share a credential --------------------------------------------------------------------------------------------------------------------------- To share a credential: 1. From the left menu, select either **Overview** or a project. 2. Select **Credentials** to see a list of your credentials. 3. Select the credential you want to share. 4. Select **Sharing**. 5. In the **Share with projects or users** dropdown, browse or search for the user or project with which you want to share your credentials. 6. Select a user or project. 7. Select **Save** to apply the changes. [](https://docs.n8n.io/administer/manage-credentials/share-credentials-securely#remove-access-to-a-credential) Remove access to a credential ------------------------------------------------------------------------------------------------------------------------------------------------- To unshare a credential: 1. From the left menu, select either **Overview** or a project. 2. Select **Credentials** to see a list of your credentials. 3. Select the credential you want to unshare. 4. Select **Sharing**. 5. Select **trash icon**![Trash icon](https://docs.n8n.io/~gitbook/image?url=https%3A%2F%2F1614847662-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FwMJrGrimpx3PxCJpUswm%252Fuploads%252Fgit-blob-3e59223f23216d4a14726e8ab618776bf6dd61ab%252Fdelete-node.png%3Falt%3Dmedia&width=39&dpr=3&quality=100&sign=7367eba4&sv=2) on the user or project you want to remove from the list of shared users and projects. 6. Select **Save** to apply the changes. [PreviousManage credentials](https://docs.n8n.io/administer/manage-credentials) [NextCredential overwrites](https://docs.n8n.io/administer/manage-credentials/credential-overwrites) Last updated 22 hours ago Was this helpful? * [Share a credential](https://docs.n8n.io/administer/manage-credentials/share-credentials-securely#share-a-credential) * [Remove access to a credential](https://docs.n8n.io/administer/manage-credentials/share-credentials-securely#remove-access-to-a-credential) Was this helpful? --- # Use external secret stores | Administer | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/administer/manage-credentials/use-external-secret-stores.md) . **Feature availability** * External secrets are available on Enterprise Self-hosted and Enterprise Cloud plans. * n8n supports the following secret providers: 1Password (via [Connect Server](https://developer.1password.com/docs/connect/get-started/) ), AWS Secrets Manager, Azure Key Vault, GCP Secrets Manager, HashiCorp Vault, and Infisical. * From n8n version 2.10.0 you can connect multiple vaults per secret provider. Older versions only support one vault per provider. * From version `2.13.0`, if enabled, project editors can use external secrets within their projects, and project admins can also manage project vaults. * n8n doesn't support [HashiCorp Vault Secrets](https://developer.hashicorp.com/hcp/docs/vault-secrets) . You can use an external secrets store to manage credentials for n8n. n8n stores all credentials encrypted in its database, and restricts access to them by default. With the external secrets feature, you can store sensitive credential information in an external vault, and have n8n load it in when required. This provides an extra layer of security and allows you to manage credentials used across multiple [n8n environments](https://docs.n8n.io/administer/use-source-control-and-environments) in one central place. [](https://docs.n8n.io/administer/manage-credentials/use-external-secret-stores#global-vaults) Global vaults ----------------------------------------------------------------------------------------------------------------- By default, a secrets vault is **global**: users across the instance can use credentials that reference secrets from that vault. In personal projects, only instance owners and admins can use secrets from global vaults in credentials. [](https://docs.n8n.io/administer/manage-credentials/use-external-secret-stores#project-vaults) Project vaults ------------------------------------------------------------------------------------------------------------------- Instance admins can share a vault with a specific [project](https://docs.n8n.io/administer/manage-users-and-access/set-permissions-and-roles-rbac/organize-work-in-projects) . Once you assign a vault to a project, only that project’s credentials can reference its secrets. You can choose to tie a vault to a single project or keep it global. To change the vault scope: 1. In n8n, go to **Settings** > **External Secrets**. 2. Find the vault you want to configure and select **Edit**. 3. Under **Share**, choose one of the following: * **Global**: Share this vault across your entire n8n instance. This allows credentials across the instance to reference these secrets. * **Project**: Restrict this vault to a specific project. Choosing a project limits secret access to only that project's credentials. 4. **Save** your configuration. [](https://docs.n8n.io/administer/manage-credentials/use-external-secret-stores#connect-n8n-to-your-secrets-store) Connect n8n to your secrets store --------------------------------------------------------------------------------------------------------------------------------------------------------- **Secret values** n8n only supports plaintext values for secrets, not JSON objects. 1. In n8n, go to **Settings** > **External Secrets**. 2. Click **Add secrets vault**. 3. Enter a unique name for your vault. This will be the first segment when referencing this vault in a `{{ $secrets.... }}` expression in a credential. 4. Select one of the supported secret providers. 5. Enter the credentials for your provider. Refer to the provider-specific sections below for details. 6. **Save** your configuration. As long as this store is connected, you can reference its secrets in credentials. ### [](https://docs.n8n.io/administer/manage-credentials/use-external-secret-stores#id-1password) 1Password **1Password Connect Server required** n8n integrates with [1Password Connect Server](https://developer.1password.com/docs/connect/get-started/) , a self-hosted API for machine access to 1Password. This isn't the same as a personal or team 1Password account. You must deploy and run a Connect Server to use this provider. Provide your **Connect Server URL** and **Access Token**. The Connect Server URL is the address where your server is accessible (for example, `http://localhost:8080`). The Access Token is the token you created for the Connect Server integration. n8n reads all vaults and items accessible to the token. Each 1Password item becomes a secret, with the item's fields accessible as properties. Use `{{ $secrets... }}` to access a specific field value. ### [](https://docs.n8n.io/administer/manage-credentials/use-external-secret-stores#aws-secrets-manager) AWS Secrets Manager Provide your **access key ID**, **secret access key**, and **region**. The IAM user must have the `secretsmanager:ListSecrets`, `secretsmanager:BatchGetSecretValue`, and `secretsmanager:GetSecretValue` permissions. To give n8n access to all secrets in your AWS Secrets Manager, you can attach the following policy to the IAM user: You can also be more restrictive and give n8n access to select specific AWS Secret Manager secrets. You still need to allow the `secretsmanager:ListSecrets` and `secretsmanager:BatchGetSecretValue` permissions to access all resources. These permissions allow n8n to retrieve ARN-scoped secrets, but don't provide access to the secret values. Next, you need set the scope for the `secretsmanager:GetSecretValue` permission to the specific Amazon Resource Names (ARNs) for the secrets you wish to share with n8n. Ensure you use the correct region and account ID in each resource ARNs. You can find the ARN details in the AWS dashboard for your secrets. For example, the following IAM policy only allows access to secrets with a name starting with `n8n` in your specified AWS account and region: For more IAM permission policy examples, consult the [AWS documentation](https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access_iam-policies.html#auth-and-access_examples_batch) . ### [](https://docs.n8n.io/administer/manage-credentials/use-external-secret-stores#azure-key-vault) Azure Key Vault Provide your **vault name**, **tenant ID**, **client ID**, and **client secret**. Refer to the Azure documentation to [register a Microsoft Entra ID app and create a service principal](https://learn.microsoft.com/en-us/entra/identity-platform/howto-create-service-principal-portal) . n8n supports only single-line values for secrets. ### [](https://docs.n8n.io/administer/manage-credentials/use-external-secret-stores#gcp-secrets-manager) GCP Secrets Manager Provide a **Service Account Key** (JSON) for a service account that has at least these roles: `Secret Manager Secret Accessor` and `Secret Manager Secret Viewer`. Refer to Google's [service account documentation](https://cloud.google.com/iam/docs/service-account-overview) for more information. ### [](https://docs.n8n.io/administer/manage-credentials/use-external-secret-stores#hashicorp-vault) HashiCorp Vault Provide the **Vault URL** for your vault instance, and select your **Authentication Method**. Enter your authentication details. Optionally provide a namespace. * Refer to the HashiCorp documentation for your authentication method: * [Token auth method](https://developer.hashicorp.com/vault/docs/auth/token) * [AppRole auth method](https://developer.hashicorp.com/vault/docs/auth/approle) * [Userpass auth method](https://developer.hashicorp.com/vault/docs/auth/userpass) * If you use vault namespaces, you can enter the namespace n8n should connect to. Refer to [Vault Enterprise namespaces](https://developer.hashicorp.com/vault/docs/enterprise/namespaces) for more information on HashiCorp Vault namespaces. #### [](https://docs.n8n.io/administer/manage-credentials/use-external-secret-stores#manual-kv-mount-configuration) Manual KV mount configuration By default, n8n autodiscovers KV secret engines by reading `sys/mounts`. If your Vault token doesn't have access to `sys/mounts`, you can manually specify the KV engine mount path and version instead: * **KV Mount Path**: The mount path of your KV secret engine (for example, `secret/`). When set, n8n skips `sys/mounts` autodiscovery and uses this path directly. Leave blank to use autodiscovery. * **KV Version**: The KV engine version (`v1` or `v2`). Defaults to `v2`. Only applies when you specify a **KV Mount Path**. Your Vault token still needs read and list access to the KV path itself. The following example shows a minimal Vault policy for a KV v2 mount at `secret/`: For KV v1, you only need a single policy path: ### [](https://docs.n8n.io/administer/manage-credentials/use-external-secret-stores#infisical) Infisical **Version** `**2.26.0**` **and later** Infisical secrets management support is only available from version `2.26.0`. To connect Infisical, provide the following: * **Site URL**: the base URL of your Infisical instance. Defaults to `https://app.infisical.com`. Change it only if you're self-hosting Infisical. * **Project ID**: the ID of the Infisical project to read secrets from. * **Environment**: the environment slug, for example `dev`, `staging`, or `prod`. * **Secret Path**: the path within the project to read secrets from. Defaults to `/`. * **Authentication Method**: choose **Universal Auth** (recommended) or **Access Token**. n8n recommends Universal Auth, which uses an Infisical [Machine Identity](https://infisical.com/docs/documentation/platform/identities/machine-identities) . Tokens refresh automatically before they expire. In Infisical, grant the Machine Identity a role with permission to read secrets in the target project. The built-in **Viewer** role works, or you can create a custom role that grants the `secrets` permissions **Read Value** and **Describe Secret** on the target environment and secret path. See Infisical's [project role docs](https://infisical.com/docs/documentation/platform/access-controls/role-based-access-controls) . Universal Auth Access Token Provide: * **Client ID**: the machine identity's Client ID. * **Client Secret**: the machine identity's Client Secret. In Infisical, create a machine identity, attach it to the project with the role described above, then copy the Client ID and Client Secret. See Infisical's [Universal Auth docs](https://infisical.com/docs/documentation/platform/identities/universal-auth) . Provide: * **Access Token**: the token issued inside the machine identity. In Infisical, create a machine identity, attach it to the project with the role described above, then click on `Add Auth Method` and select `Token Auth`. See Infisical's [Token auth docs](https://infisical.com/docs/documentation/platform/identities/token-auth) . [](https://docs.n8n.io/administer/manage-credentials/use-external-secret-stores#use-secrets-in-n8n-credentials) Use secrets in n8n credentials --------------------------------------------------------------------------------------------------------------------------------------------------- To use a secret from your store in an n8n credential: 1. Create a new credential, or open an existing one. 2. On the field where you want to use a secret: 1. Hover over the field. 2. Select **Expression**. 3. In the field where you want to use a secret, enter an expression referencing the secret name: `` is the one you entered when you added the store. Replace `` with the name as it appears in your vault. [](https://docs.n8n.io/administer/manage-credentials/use-external-secret-stores#using-external-secrets-with-n8n-environments) Using external secrets with n8n environments ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- n8n's [Source control and environments](https://docs.n8n.io/administer/use-source-control-and-environments) feature allows you to create different n8n environments, backed by Git. The feature doesn't support using different credentials in different instances. You can use an external secrets vault to provide different credentials for different environments by connecting each n8n instance to a different vault or project environment. For example, you have two n8n instances, one for development and one for production. In your secrets provider, create a project with two environments, development and production. Generate a token for each environment of your secrets provider. Use the token for the development environment to connect your development n8n instance, and the token for your production environment to connect your production n8n instance. [](https://docs.n8n.io/administer/manage-credentials/use-external-secret-stores#using-external-secrets-in-projects) Using external secrets in projects ----------------------------------------------------------------------------------------------------------------------------------------------------------- You can share a vault with a project so that only that project's credentials can reference its secrets. Refer to [Project vaults](https://docs.n8n.io/administer/manage-credentials/use-external-secret-stores#project-vaults) for setup steps. Project-scoped vaults are available from version `2.11.0`. ### [](https://docs.n8n.io/administer/manage-credentials/use-external-secret-stores#access-for-project-roles) Access for project roles **Version** `**2.13.0**` **and later** Before version `2.13.0`, using external secrets in an [RBAC project](https://docs.n8n.io/administer/manage-users-and-access/set-permissions-and-roles-rbac) required an [instance owner or instance admin](https://docs.n8n.io/administer/manage-users-and-access/understand-account-types) as a member of the project. From version `2.13.0`, instance owners and admins can grant [project editors](https://docs.n8n.io/administer/manage-users-and-access/set-permissions-and-roles-rbac/see-available-roles#project-editor) and [project admins](https://docs.n8n.io/administer/manage-users-and-access/set-permissions-and-roles-rbac/see-available-roles#project-admin) access to external secrets. To enable this: 1. Go to **Settings** > **External Secrets**. 2. Turn on **Enable external secrets for project roles**. When enabled, **Project Editors** can: * View available external secret vaults shared with the project (in **Project** > **Settings**). * Use secrets from the project's vaults in credentials. **Project Admins** get the same access, plus they can: * Create new vaults for the project (in **Project** > **Settings**). * Update and delete vaults assigned to the project. **Global vault access** Global vaults created in **Settings** > **External Secrets** are visible in **Project** > **Settings** but are read-only for project roles. Only instance admins can modify or delete global vaults. ### [](https://docs.n8n.io/administer/manage-credentials/use-external-secret-stores#custom-roles) Custom roles For more fine-grained access control, instance owners and admins can create a [custom project role](https://docs.n8n.io/administer/manage-users-and-access/set-permissions-and-roles-rbac/create-custom-roles) . Go to **Settings** > **Project roles** > **Create role**. In the list of permissions, configure: * **Secrets vaults**: Controls vault management (view, create, edit, delete, and sync vaults). * **Secrets**: Controls whether the role can use secrets in credential expressions. Both permissions are independent. For example, a role may need only the **Secrets** permission to use secrets in credentials without managing vaults. Refer to [Secret vault scopes](https://docs.n8n.io/administer/manage-users-and-access/set-permissions-and-roles-rbac/create-custom-roles#secret-vault-scopes) for the full list of available scopes. [](https://docs.n8n.io/administer/manage-credentials/use-external-secret-stores#troubleshooting) Troubleshooting --------------------------------------------------------------------------------------------------------------------- ### [](https://docs.n8n.io/administer/manage-credentials/use-external-secret-stores#secrets-dont-resolve-in-production) Secrets don't resolve in production **Version** `**2.13.0**` **and later** From version `2.13.0`, project editors and admins with [secrets access enabled](https://docs.n8n.io/administer/manage-credentials/use-external-secret-stores#access-for-project-roles) can use external secrets in their own credentials. The restriction below applies only to older versions or when the opt-in toggle is off. In versions before `2.13.0` (or when **Enable external secrets for project roles** is off), only instance owners and admins can resolve secrets at runtime. If an owner or admin updates another user's credential with a secrets expression, it may appear to work in preview but fail in production. In this case, only use external secrets in credentials owned by an instance owner or admin. [PreviousCredential overwrites](https://docs.n8n.io/administer/manage-credentials/credential-overwrites) [NextObserve and log](https://docs.n8n.io/administer/observe-and-log) Last updated 9 days ago Was this helpful? * [Global vaults](https://docs.n8n.io/administer/manage-credentials/use-external-secret-stores#global-vaults) * [Project vaults](https://docs.n8n.io/administer/manage-credentials/use-external-secret-stores#project-vaults) * [Connect n8n to your secrets store](https://docs.n8n.io/administer/manage-credentials/use-external-secret-stores#connect-n8n-to-your-secrets-store) * [1Password](https://docs.n8n.io/administer/manage-credentials/use-external-secret-stores#id-1password) * [AWS Secrets Manager](https://docs.n8n.io/administer/manage-credentials/use-external-secret-stores#aws-secrets-manager) * [Azure Key Vault](https://docs.n8n.io/administer/manage-credentials/use-external-secret-stores#azure-key-vault) * [GCP Secrets Manager](https://docs.n8n.io/administer/manage-credentials/use-external-secret-stores#gcp-secrets-manager) * [HashiCorp Vault](https://docs.n8n.io/administer/manage-credentials/use-external-secret-stores#hashicorp-vault) * [Infisical](https://docs.n8n.io/administer/manage-credentials/use-external-secret-stores#infisical) * [Use secrets in n8n credentials](https://docs.n8n.io/administer/manage-credentials/use-external-secret-stores#use-secrets-in-n8n-credentials) * [Using external secrets with n8n environments](https://docs.n8n.io/administer/manage-credentials/use-external-secret-stores#using-external-secrets-with-n8n-environments) * [Using external secrets in projects](https://docs.n8n.io/administer/manage-credentials/use-external-secret-stores#using-external-secrets-in-projects) * [Access for project roles](https://docs.n8n.io/administer/manage-credentials/use-external-secret-stores#access-for-project-roles) * [Custom roles](https://docs.n8n.io/administer/manage-credentials/use-external-secret-stores#custom-roles) * [Troubleshooting](https://docs.n8n.io/administer/manage-credentials/use-external-secret-stores#troubleshooting) * [Secrets don't resolve in production](https://docs.n8n.io/administer/manage-credentials/use-external-secret-stores#secrets-dont-resolve-in-production) Was this helpful? Copy { "Version": "2012-10-17", "Statement": [\ {\ "Sid": "AccessAllSecrets",\ "Effect": "Allow",\ "Action": [\ "secretsmanager:ListSecrets",\ "secretsmanager:BatchGetSecretValue",\ "secretsmanager:GetResourcePolicy",\ "secretsmanager:GetSecretValue",\ "secretsmanager:DescribeSecret",\ "secretsmanager:ListSecretVersionIds"\ ],\ "Resource": "*"\ }\ ] } Copy { "Version": "2012-10-17", "Statement": [\ {\ "Sid": "ListingSecrets",\ "Effect": "Allow",\ "Action": [\ "secretsmanager:ListSecrets",\ "secretsmanager:BatchGetSecretValue"\ ],\ "Resource": "*"\ },\ {\ "Sid": "RetrievingSecrets",\ "Effect": "Allow",\ "Action": [\ "secretsmanager:GetSecretValue",\ "secretsmanager:DescribeSecret"\ ],\ "Resource": [\ "arn:aws:secretsmanager:us-west-2:123456789000:secret:n8n*"\ ]\ }\ ] } Copy # Read and list secrets at the "secret/" KV v2 mount path "secret/data/*" { capabilities = ["read"] } path "secret/metadata/*" { capabilities = ["read", "list"] } Copy # Read and list secrets at the "kv/" KV v1 mount path "kv/*" { capabilities = ["read", "list"] } Copy {{ $secrets.. }} --- # Use metrics to measure quality | Build | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/build/integrate-ai/test-and-improve-ai-workflows/use-metrics-to-measure-quality.md) . **Available on Pro and Enterprise plans** Metric-based evaluation is available on Pro and Enterprise plans. Registered community and Starter plan users can also use it for a single workflow. ### [](https://docs.n8n.io/build/integrate-ai/test-and-improve-ai-workflows/use-metrics-to-measure-quality#what-are-metric-based-evaluations) What are metric-based evaluations? Once your workflow is ready for deployment, you often want to test it on more examples than [when you were building it](https://docs.n8n.io/build/integrate-ai/test-and-improve-ai-workflows/run-quick-evaluations) . For example, when production executions start to turn up edge cases, you want to add them to your test dataset so that you can make sure they're covered. For large datasets like the ones built from production data, it can be hard to get a sense of performance just by eyeballing the results. Instead, you must measure performance. Metric-based evaluations can assign one or more scores to each test run, which you can compare to previous runs. Individual scores get rolled up to measure performance on the whole dataset. This feature allows you to run evaluations that calculate metrics, track how those metrics change between runs and drill down into the reasons for those changes. Metrics can be deterministic functions (such as the distance between two strings) or you can calculate them using AI. Metrics often involve checking how far away the output is from a _reference output_ (also called ground truth). To do so, the dataset must contain that reference output. Some evaluations don't need this reference output though (for example, checking text for sentiment or toxicity). [](https://docs.n8n.io/build/integrate-ai/test-and-improve-ai-workflows/use-metrics-to-measure-quality#how-it-works) How it works -------------------------------------------------------------------------------------------------------------------------------------- **Credentials for Google Sheets** Evaluations use data tables or Google Sheets to store the test dataset. To use Google Sheets as a dataset source, configure a [Google Sheets credential](https://docs.n8n.io/integrations/builtin/credentials/google) . 1. Set up [light evaluation](https://docs.n8n.io/build/integrate-ai/test-and-improve-ai-workflows/run-quick-evaluations) 2. Add metrics to workflow 3. Run evaluation and view results ### [](https://docs.n8n.io/build/integrate-ai/test-and-improve-ai-workflows/use-metrics-to-measure-quality#id-1-set-up-light-evaluation) 1\. Set up light evaluation Follow the [setup instructions](https://docs.n8n.io/build/integrate-ai/test-and-improve-ai-workflows/run-quick-evaluations) to create a dataset and wire it up to your workflow, writing outputs back to the dataset. The following steps use the same support ticket classification workflow from the light evaluation docs: ![](https://docs.n8n.io/~gitbook/image?url=https%3A%2F%2F3488703508-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FrPN1zU5jaYNvwH7RzxqA%252Fuploads%252Fgit-blob-29f512965cdeac59b4bb2935185ac570dfe2ca5e%252Flight-evaluation-workflow.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=297a73a2&sv=2) Light evaluation workflow ### [](https://docs.n8n.io/build/integrate-ai/test-and-improve-ai-workflows/use-metrics-to-measure-quality#id-2-add-metrics-to-workflow) 2\. Add metrics to workflow Metrics are dimensions used to score the output of your workflow. They often compare the actual workflow output with a reference output. It's common to use AI to calculate metrics, although it's sometimes possible to just use code. In n8n, metrics are always numbers. You need to add the logic to calculate the metrics for your workflow, at a point after it has produced the outputs. You can add any reference outputs your metric uses as a column in your dataset. This makes sure they it will be available in the workflow, since they will be output by the evaluation trigger. Use the **Set Metrics** operation to calculate: * **Correctness (AI-based)**: Whether the answer's meaning is consistent with a supplied reference answer. Uses a scale of 1 to 5, with 5 being the best. * **Helpfulness (AI-based)**: Whether the response answers the given query. Uses a scale of 1 to 5, with 5 being the best. * **String Similarity**: How close the answer is to the reference answer, measured character-by-character (edit distance). Returns a score between 0 and 1. * **Categorization**: Whether the answer is an exact match with the reference answer. Returns 1 when matching and 0 otherwise. * **Tools Used**: Whether the execution used tools or not. Returns a score between 0 and 1. You can also add custom metrics. Just calculate the metrics within the workflow and then map them into an Evaluation node. Use the **Set Metrics** operation and choose **Custom Metrics** as the Metric. You can then set the names and values for the metrics you want to return. For example: * [RAG document relevance](https://n8n.io/workflows/4273) : when working with a vector database, whether the documents retrieved are relevant to the question. Calculating metrics can add latency and cost, so you may only want to do it when running an evaluation and avoid it when making a production execution. You can do this by putting the metric logic after a ['check if evaluating' operation](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.evaluation#check-if-evaluating) . ![](https://docs.n8n.io/~gitbook/image?url=https%3A%2F%2F3488703508-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FrPN1zU5jaYNvwH7RzxqA%252Fuploads%252Fgit-blob-2e5c4318407d2f10f324d6cb9188aaad45a420b1%252Fcheck-if-evaluating.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=b5aeec74&sv=2) Check if evaluating node ### [](https://docs.n8n.io/build/integrate-ai/test-and-improve-ai-workflows/use-metrics-to-measure-quality#id-3-run-evaluation-and-view-results) 3\. Run evaluation and view results Switch to the **Evaluations** tab on your workflow and click the **Run Test** button. An evaluation will start. Once the evaluation has finished, it will display a summary score for each metric. You can see the results for each test case by clicking on the test run row. Clicking on an individual test case will open the execution that produced it (in a new tab). #### [](https://docs.n8n.io/build/integrate-ai/test-and-improve-ai-workflows/use-metrics-to-measure-quality#run-test-cases-in-parallel) Run test cases in parallel On plans that support concurrency, **Run Test** is a split-button. The caret to the right opens a popover with a slider that controls how many test cases run at the same time. ![](https://docs.n8n.io/~gitbook/image?url=https%3A%2F%2F3488703508-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FrPN1zU5jaYNvwH7RzxqA%252Fuploads%252Fgit-blob-6f6c0526d8add839d4c0bfedeef85eddc7c442db%252Frun-test-concurrency.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=dc14bd6e&sv=2) The concurrency popover, with the slider at 3 of a maximum of 5 parallel test cases. The default maximum depends on your plan: Plan Maximum parallel test cases Community / Pro 1 (sequential) Business 3 Enterprise 5 When the maximum is `1`, the caret and popover are hidden and **Run Test** is a plain button — runs are sequential, identical to earlier versions. Self-hosted instances can override the maximum with the [`N8N_CONCURRENCY_EVALUATION_LIMIT`](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/executions) environment variable, regardless of plan tier. **LLM rate limits** Higher concurrency speeds up evaluation runs but increases the chance of hitting upstream LLM rate limits. If you see rate-limit errors, lower the slider. [PreviousRun quick evaluations](https://docs.n8n.io/build/integrate-ai/test-and-improve-ai-workflows/run-quick-evaluations) [NextFix common issues](https://docs.n8n.io/build/integrate-ai/test-and-improve-ai-workflows/fix-common-issues) Last updated 10 days ago Was this helpful? * [What are metric-based evaluations?](https://docs.n8n.io/build/integrate-ai/test-and-improve-ai-workflows/use-metrics-to-measure-quality#what-are-metric-based-evaluations) * [How it works](https://docs.n8n.io/build/integrate-ai/test-and-improve-ai-workflows/use-metrics-to-measure-quality#how-it-works) * [1\. Set up light evaluation](https://docs.n8n.io/build/integrate-ai/test-and-improve-ai-workflows/use-metrics-to-measure-quality#id-1-set-up-light-evaluation) * [2\. Add metrics to workflow](https://docs.n8n.io/build/integrate-ai/test-and-improve-ai-workflows/use-metrics-to-measure-quality#id-2-add-metrics-to-workflow) * [3\. Run evaluation and view results](https://docs.n8n.io/build/integrate-ai/test-and-improve-ai-workflows/use-metrics-to-measure-quality#id-3-run-evaluation-and-view-results) Was this helpful? --- # Manage your license | Deploy | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/deploy/host-n8n/configure-n8n/manage-your-license.md) . To enable certain licensed features, you must first activate your license. You can do this either through the UI or by setting environment variables. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/manage-your-license#add-a-license-key-using-the-ui) Add a license key using the UI -------------------------------------------------------------------------------------------------------------------------------------------- In your n8n instance: 1. Log in as **Admin** or **Owner**. 2. Select **Settings** > **Usage and plan**. 3. Select **Enter activation key**. 4. Paste in your license key. 5. Select **Activate**. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/manage-your-license#add-a-license-key-using-an-environment-variables) Add a license key using an environment variables -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- In your n8n configuration, set `N8N_LICENSE_ACTIVATION_KEY` to your license key. If the instance already has an activated license, this variable will have no effect. Refer to [Environment variables](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration) to learn more about configuring n8n. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/manage-your-license#allowlist-the-license-server-ip-addresses) Allowlist the license server IP addresses ------------------------------------------------------------------------------------------------------------------------------------------------------------------ n8n uses Cloudflare to host the license server. As the specific IP addresses can change, you need to allowlist the [full range of Cloudflare IP addresses](https://www.cloudflare.com/ips/) to ensure n8n can always reach the license server. [PreviousSet up task runners](https://docs.n8n.io/deploy/host-n8n/configure-n8n/set-up-task-runners) [NextSecurity](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security) Last updated 10 days ago Was this helpful? * [Add a license key using the UI](https://docs.n8n.io/deploy/host-n8n/configure-n8n/manage-your-license#add-a-license-key-using-the-ui) * [Add a license key using an environment variables](https://docs.n8n.io/deploy/host-n8n/configure-n8n/manage-your-license#add-a-license-key-using-an-environment-variables) * [Allowlist the license server IP addresses](https://docs.n8n.io/deploy/host-n8n/configure-n8n/manage-your-license#allowlist-the-license-server-ip-addresses) Was this helpful? --- # Store and search data with vectors | Build | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/build/integrate-ai/understand-ai-components/store-and-search-data-with-vectors.md) . Vector databases store information as numbers: > A vector database is a type of database that stores data as high-dimensional vectors, which are mathematical representations of features or attributes. ([source](https://learn.microsoft.com/en-us/semantic-kernel/memories/vector-db) > ) This enables fast and accurate similarity searches. With a vector database, instead of using conventional database queries, you can search for relevant data based on semantic and contextual meaning. [](https://docs.n8n.io/build/integrate-ai/understand-ai-components/store-and-search-data-with-vectors#a-simplified-example) A simplified example ----------------------------------------------------------------------------------------------------------------------------------------------------- A vector database could store the sentence "n8n is a source-available automation tool that you can self-host", but instead of storing it as text, the vector database stores an array of dimensions (numbers between 0 and 1) that represent its features. This doesn't mean turning each letter in the sentence into a number. Instead, the vectors in the vector database describe the sentence. Suppose that in a vector store `0.1` represents `automation tool`, `0.2` represents `source available`, and `0.3` represents `can be self-hosted`. You could end up with the following vectors: Sentence Vector (array of dimensions) n8n is a source-available automation tool that you can self-host \[0.1, 0.2, 0.3\] Zapier is an automation tool \[0.1\] Make is an automation tool \[0.1\] Confluence is a wiki tool that you can self-host \[0.3\] **This example is very simplified** In practice, vectors are far more complex. A vector can range in size from tens to thousands of dimensions. The dimensions don't have a one-to-one relationship to a single feature, so you can't translate individual dimensions directly into single concepts. This example gives an approximate mental model, not a true technical understanding. [](https://docs.n8n.io/build/integrate-ai/understand-ai-components/store-and-search-data-with-vectors#demonstrating-the-power-of-similarity-search) Demonstrating the power of similarity search ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Qdrant provides [vector search demos](https://qdrant.tech/demo/) to help users understand the power of vector databases. The [food discovery demo](https://food-discovery.qdrant.tech/) shows how a vector store can help match pictures based on visual similarities. > This demo uses data from Delivery Service. Users may like or dislike the photo of a dish, and the app will recommend more similar meals based on how they look. It's also possible to choose to view results from the restaurants within the delivery radius. ([source](https://qdrant.tech/demo/) > ) For full technical details, refer to the [Qdrant demo-food-discovery GitHub repository](https://github.com/qdrant/demo-food-discovery) . [](https://docs.n8n.io/build/integrate-ai/understand-ai-components/store-and-search-data-with-vectors#embeddings-retrievers-text-splitters-and-document-loaders) Embeddings, retrievers, text splitters, and document loaders ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Vector databases require other tools to function: * Document loaders and text splitters: document loaders pull in documents and data, and prepare them for embedding. Document loaders can use text splitters to break documents into chunks. * Embeddings: these are the tools that turn the data (text, images, and so on) into vectors, and back into raw data. Note that n8n only supports text embeddings. * Retrievers: retrievers fetch documents from vector databases. You need to pair them with an embedding to translate the vectors back into data. [PreviousHow tools work](https://docs.n8n.io/build/integrate-ai/understand-ai-components/how-tools-work) [NextRetrieve relevant context](https://docs.n8n.io/build/integrate-ai/understand-ai-components/retrieve-relevant-context) Last updated 9 days ago Was this helpful? * [A simplified example](https://docs.n8n.io/build/integrate-ai/understand-ai-components/store-and-search-data-with-vectors#a-simplified-example) * [Demonstrating the power of similarity search](https://docs.n8n.io/build/integrate-ai/understand-ai-components/store-and-search-data-with-vectors#demonstrating-the-power-of-similarity-search) * [Embeddings, retrievers, text splitters, and document loaders](https://docs.n8n.io/build/integrate-ai/understand-ai-components/store-and-search-data-with-vectors#embeddings-retrievers-text-splitters-and-document-loaders) Was this helpful? --- # Environment variable installation | Nodes | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/integrations/community-nodes/installation-and-management/environment-variable-installation.md) . **Available from n8n v2.21.0** On self-hosted n8n, you can manage the set of installed community packages from environment variables. n8n reconciles the installed packages against the list on every startup, installing missing packages, correcting versions, and uninstalling packages not in the list. Use this method to bootstrap an instance with a fixed set of packages, for example through a deployment pipeline. **Enabling this uninstalls packages that aren't in the list** The first time you start n8n with `N8N_COMMUNITY_PACKAGES_MANAGED_BY_ENV=true`, n8n uninstalls any currently-installed community packages that aren't included in `N8N_COMMUNITY_PACKAGES`. If you already manage packages through the UI, review the **Community nodes** settings page and add the packages you want to keep to `N8N_COMMUNITY_PACKAGES` before enabling this variable. [](https://docs.n8n.io/integrations/community-nodes/installation-and-management/environment-variable-installation#configure) Configure ------------------------------------------------------------------------------------------------------------------------------------------- Set the following environment variables on your n8n instance, then restart: Variable Type Default Description `N8N_COMMUNITY_PACKAGES_MANAGED_BY_ENV` Boolean `false` Set to `true` to manage installed community packages from environment variables. When `true`, n8n reconciles the installed packages against `N8N_COMMUNITY_PACKAGES` on every startup, installing missing packages, correcting versions, and **uninstalling any currently-installed packages that aren't in the list**. The **Community nodes** settings page becomes read-only: you can't install, update, or uninstall packages from the UI while this is enabled. `N8N_COMMUNITY_PACKAGES` JSON string \- JSON array of community packages to install. Each entry is an object with a `name` (required) and optional `version` and `checksum` fields. You can also embed the version in the name as `@`. See [environment variable installation](https://docs.n8n.io/integrations/community-nodes/installation-and-management/environment-variable-installation) for the full per-field reference. **Community packages must be enabled** `N8N_COMMUNITY_PACKAGES_ENABLED` must be `true` (the default). If community packages are disabled at the instance level, n8n ignores `N8N_COMMUNITY_PACKAGES_MANAGED_BY_ENV` and logs a warning on startup. For example: Copy export N8N_COMMUNITY_PACKAGES_MANAGED_BY_ENV=true export N8N_COMMUNITY_PACKAGES='[{"name":"n8n-nodes-foo","version":"1.2.3"}]' While `N8N_COMMUNITY_PACKAGES_MANAGED_BY_ENV` is `true`, the **Community nodes** settings page is read-only: you can't install, update, or uninstall packages from the UI. ### [](https://docs.n8n.io/integrations/community-nodes/installation-and-management/environment-variable-installation#per-package-fields) Per-package fields Field Type Required Description `name` string Yes npm package name. You can include the version inline as `@`. If you do, don't also set the `version` field to a different value, n8n rejects conflicting versions. `version` string No Version specifier. If omitted, n8n looks the package up in the vetted-packages registry and uses that version; if the package isn't vetted, n8n installs whatever npm resolves and won't reconcile the version across restarts. `checksum` string No SHA-512 checksum (`sha512-...`) for the resolved tarball. Requires `version` to be set. n8n resolves the checksum automatically from the vetted registry when possible. Example with all three fields: **Unverified packages need a checksum** If a package isn't in the vetted-packages registry and `N8N_UNVERIFIED_PACKAGES_ENABLED` is `false`, n8n fails to start. Either pin a `checksum` for the package, set `N8N_UNVERIFIED_PACKAGES_ENABLED=true`, or pick a vetted package. For the supported ways to set environment variables, see [Configuration methods](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration) . [](https://docs.n8n.io/integrations/community-nodes/installation-and-management/environment-variable-installation#manage-packages) Manage packages ------------------------------------------------------------------------------------------------------------------------------------------------------- To add, remove, upgrade, or downgrade a package, edit `N8N_COMMUNITY_PACKAGES` and restart n8n. n8n reconciles to the new list on the next startup. **Breaking changes in versions** Node developers may introduce breaking changes in new versions of their nodes. A breaking change is an update that breaks previous functionality. Be careful when changing versions. If a new version causes issues, set `version` back to the previous value and restart n8n to roll back. [PreviousManual installation](https://docs.n8n.io/integrations/community-nodes/installation-and-management/manual-installation) [NextRisks](https://docs.n8n.io/integrations/community-nodes/risks) Last updated 9 days ago Was this helpful? * [Configure](https://docs.n8n.io/integrations/community-nodes/installation-and-management/environment-variable-installation#configure) * [Per-package fields](https://docs.n8n.io/integrations/community-nodes/installation-and-management/environment-variable-installation#per-package-fields) * [Manage packages](https://docs.n8n.io/integrations/community-nodes/installation-and-management/environment-variable-installation#manage-packages) Was this helpful? Copy [\ { "name": "n8n-nodes-foo", "version": "1.2.3" },\ { "name": "n8n-nodes-bar@0.5.0" },\ { "name": "n8n-nodes-baz", "version": "2.0.0", "checksum": "sha512-..." }\ ] --- # Configuration examples | Deploy | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/configuration-examples.md) . This section contains examples for how to configure n8n to solve particular use cases. [PreviousWorkflow history](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/workflow-history) [NextIsolate n8n](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/configuration-examples/isolate-n8n) Last updated 10 days ago Was this helpful? Was this helpful? --- # Deploy to Hetzner | Deploy | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-hetzner.md) . This hosting guide shows you how to self-host n8n on a Hetzner cloud server. It uses: * [Caddy](https://caddyserver.com/) (a reverse proxy) to allow access to the Server from the internet. * [Docker Compose](https://docs.docker.com/compose/) to create and define the application components and how they work together. **Self-hosting knowledge prerequisites** Self-hosting n8n requires technical knowledge, including: * Setting up and configuring servers and containers * Managing application resources and scaling * Securing servers and applications * Configuring n8n n8n recommends self-hosting for expert users. Mistakes can lead to data loss, security issues, and downtime. If you aren't experienced at managing servers, n8n recommends [n8n Cloud](https://n8n.io/cloud/) . **Stable and Beta versions** n8n releases a new minor version most weeks. The `stable` version is for production use. `beta` is the most recent release. The `beta` version may be unstable. To report issues, use the [forum](https://community.n8n.io/c/questions/12) . Current `stable`: 2.28.5 Current `beta`: 2.29.3 [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-hetzner#create-a-server) Create a server ----------------------------------------------------------------------------------------------------------------------------------- 1. [Log in](https://console.hetzner.cloud/) to the Hetzner Cloud Console. 2. Select the project to host the server, or create a new project by selecting **\+ NEW PROJECT**. 3. Select **\+ CREATE SERVER** on the project tile you want to add it to. You can change most of the settings to suit your needs, but as this guide uses Docker to run the application, under the **Image** section, select "Docker CE" from the **APPS** tab. **Type** When creating the server, Hetzner asks you to choose a plan. For most usage levels, the CPX11 type is enough. **SSH keys** Hetzner lets you choose between SSH and password-based authentication. SSH is more secure. The rest of this guide assumes you are using SSH. [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-hetzner#log-in-to-your-server) Log in to your server ----------------------------------------------------------------------------------------------------------------------------------------------- The rest of this guide requires you to log in to the server using a terminal with SSH. Refer to [Access with SSH/rsync/BorgBackup](https://docs.hetzner.com/robot/storage-box/access/access-ssh-rsync-borg) for more information. You can find the public IP in the listing of the servers in your project. [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-hetzner#install-docker-compose) Install Docker Compose ------------------------------------------------------------------------------------------------------------------------------------------------- The Hetzner Docker app image doesn't have Docker compose installed. Install it with the following commands: Copy apt update && apt -y upgrade apt install docker-compose-plugin [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-hetzner#clone-configuration-repository) Clone configuration repository ----------------------------------------------------------------------------------------------------------------------------------------------------------------- Docker Compose, n8n, and Caddy require a series of folders and configuration files. You can clone these from [this repository](https://github.com/n8n-io/n8n-docker-caddy) into the root user folder of the server. The following steps will tell you which file to change and what changes to make. Clone the repository with the following command: Copy git clone https://github.com/n8n-io/n8n-docker-caddy.git And change directory to the root of the repository you cloned: Copy cd n8n-docker-caddy [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-hetzner#default-folders-and-files) Default folders and files ------------------------------------------------------------------------------------------------------------------------------------------------------- The host operating system (the server) copies the two folders you created to Docker containers to make them available to Docker. The two folders are: * `caddy_config`: Holds the Caddy configuration files. * `local_files`: A folder for files you upload or add using n8n. ### [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-hetzner#create-docker-volume) Create Docker volume To persist the Caddy cache between restarts and speed up start times, create [a Docker volume](https://docs.docker.com/storage/volumes/) that Docker reuses between restarts: Copy docker volume create caddy_data Create a Docker volume for the n8n data: Copy sudo docker volume create n8n_data [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-hetzner#set-up-dns) Set up DNS ------------------------------------------------------------------------------------------------------------------------- n8n typically operates on a subdomain. Create a DNS record with your provider for the subdomain and point it to the IP address of the server. The exact steps for this depend on your DNS provider, but typically you need to create a new "A" record for the n8n subdomain. DigitalOcean provide [An Introduction to DNS Terminology, Components, and Concepts](https://www.digitalocean.com/community/tutorials/an-introduction-to-dns-terminology-components-and-concepts) . [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-hetzner#open-ports) Open ports ------------------------------------------------------------------------------------------------------------------------- n8n runs as a web application, so the server needs to allow incoming access to traffic on port 80 for non-secure traffic, and port 443 for secure traffic. Open the following ports in the server's firewall by running the following two commands: Copy sudo ufw allow 80 sudo ufw allow 443 [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-hetzner#configure-n8n) Configure n8n ------------------------------------------------------------------------------------------------------------------------------- n8n needs some environment variables set to pass to the application running in the Docker container. The example `.env` file contains placeholders you need to replace with values of your own. Open the file with the following command: Copy nano .env The file contains inline comments to help you know what to change. Refer to [Environment variables](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables) for n8n environment variables details. [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-hetzner#the-docker-compose-file) The Docker Compose file --------------------------------------------------------------------------------------------------------------------------------------------------- The Docker Compose file (`docker-compose.yml`) defines the services the application needs, in this case Caddy and n8n. * The Caddy service definition defines the ports it uses and the local volumes to copy to the containers. * The n8n service definition defines the ports it uses, the environment variables n8n needs to run (some defined in the `.env` file), and the volumes it needs to copy to the containers. The Docker Compose file uses the environment variables set in the `.env` file, so you shouldn't need to change it's content, but to take a look, run the following command: Copy nano docker-compose.yml [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-hetzner#configure-caddy) Configure Caddy ----------------------------------------------------------------------------------------------------------------------------------- Caddy needs to know which domains it should serve, and which port to expose to the outside world. Edit the `Caddyfile` file in the `caddy_config` folder. Copy nano caddy_config/Caddyfile Change the placeholder subdomain to yours. If you followed the steps to name the subdomain n8n, your full domain is similar to `n8n.example.com`. The `n8n` in the `reverse_proxy` setting tells Caddy to use the service definition defined in the `docker-compose.yml` file: Copy n8n.. { reverse_proxy n8n:5678 { flush_interval -1 } } [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-hetzner#start-docker-compose) Start Docker Compose --------------------------------------------------------------------------------------------------------------------------------------------- Start n8n and Caddy with the following command: Copy docker compose up -d This may take a few minutes. [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-hetzner#test-your-setup) Test your setup ----------------------------------------------------------------------------------------------------------------------------------- In your browser, open the URL formed of the subdomain and domain name defined earlier. Enter the user name and password defined earlier, and you should be able to access n8n. [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-hetzner#stop-n8n-and-caddy) Stop n8n and Caddy ----------------------------------------------------------------------------------------------------------------------------------------- You can stop n8n and Caddy with the following command: Copy sudo docker compose stop [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-hetzner#updating) Updating --------------------------------------------------------------------------------------------------------------------- If you run n8n using a Docker Compose file, follow these steps to update n8n: Copy # Navigate to the directory containing your docker compose file cd # Pull latest version docker compose pull # Stop and remove older version docker compose down # Start the container docker compose up -d [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-hetzner#next-steps) Next steps ------------------------------------------------------------------------------------------------------------------------- * Learn more about [configuring](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables) and [scaling](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling) n8n. * Or explore using n8n: try the [Quickstarts](https://docs.n8n.io/build-your-first-workflow) . [PreviousDeploy to Heroku](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-heroku) [NextDeploy to AWS](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-aws) Last updated 9 days ago Was this helpful? --- # Customize executions data | Build | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/build/understand-workflows/understand-executions/customize-executions-data.md) . You can set custom data on your workflow using the Code node or the [Execution Data node](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executiondata) . n8n records this with each execution. You can then use this data when filtering the executions list, or fetch it in your workflows using the Code node. **Feature availability** Custom executions data is available on: * Cloud: Pro, Enterprise * Self-Hosted: Enterprise, registered Community [](https://docs.n8n.io/build/understand-workflows/understand-executions/customize-executions-data#set-and-access-custom-data-using-the-code-node) Set and access custom data using the Code node ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- This section describes how to set and access data using the Code node. Refer to [Execution Data node](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executiondata) for information on using the Execution Data node to set data. You can't retrieve custom data using the Execution Data node. ### [](https://docs.n8n.io/build/understand-workflows/understand-executions/customize-executions-data#set-custom-executions-data) Set custom executions data Set a single piece of extra data: JavaScript Python Copy $execution.customData.set("key", "value"); Copy _execution.customData.set("key", "value"); Set all extra data. This overwrites the whole custom data object for this execution: JavaScript Python Copy $execution.customData.setAll({"key1": "value1", "key2": "value2"}) Copy _execution.customData.setAll({"key1": "value1", "key2": "value2"}) There are limitations: * They must be strings * `key` has a maximum length of 50 characters * `value` has a maximum length of 255 characters * n8n supports a maximum of 10 items of custom data ### [](https://docs.n8n.io/build/understand-workflows/understand-executions/customize-executions-data#access-the-custom-data-object-during-execution) Access the custom data object during execution You can retrieve the custom data object, or a specific value in it, during an execution: JavaScript Python [PreviousView all executions](https://docs.n8n.io/build/understand-workflows/understand-executions/view-all-executions) [NextStream real-time responses](https://docs.n8n.io/build/understand-workflows/understand-executions/stream-real-time-responses) Last updated 9 days ago Was this helpful? * [Set and access custom data using the Code node](https://docs.n8n.io/build/understand-workflows/understand-executions/customize-executions-data#set-and-access-custom-data-using-the-code-node) * [Set custom executions data](https://docs.n8n.io/build/understand-workflows/understand-executions/customize-executions-data#set-custom-executions-data) * [Access the custom data object during execution](https://docs.n8n.io/build/understand-workflows/understand-executions/customize-executions-data#access-the-custom-data-object-during-execution) Was this helpful? Copy // Access the current state of the object during the execution const customData = $execution.customData.getAll(); // Access a specific value set during this execution const customData = $execution.customData.get("key"); Copy # Access the current state of the object during the execution customData = _execution.customData.getAll(); # Access a specific value set during this execution customData = _execution.customData.get("key"); --- # Change instance owner email | Deploy | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/deploy/host-n8n/configure-n8n/change-instance-owner-email.md) . You can change the instance owner email from the UI, or from environment variables if you manage the instance owner that way. **Owner email must be unique** The owner email must not already belong to another user on the instance. If the email you want is already used by another user, change or delete that user first so the email becomes available. Changing the owner email updates the existing instance owner account. It doesn't transfer ownership to another existing user or merge user accounts. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/change-instance-owner-email#change-the-owner-email-in-the-ui) Change the owner email in the UI -------------------------------------------------------------------------------------------------------------------------------------------------------- 1. Log in as the instance owner. 2. Go to **Settings** > **Personal**. 3. Update the **Email** field. 4. Select **Save**. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/change-instance-owner-email#change-the-owner-email-using-environment-variables) Change the owner email using environment variables -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- If you manage the instance owner using environment variables: 1. Set `N8N_INSTANCE_OWNER_MANAGED_BY_ENV` to `true`. 2. Set `N8N_INSTANCE_OWNER_EMAIL` to the new owner email. 3. Keep `N8N_INSTANCE_OWNER_FIRST_NAME`, `N8N_INSTANCE_OWNER_LAST_NAME`, and `N8N_INSTANCE_OWNER_PASSWORD_HASH` set. 4. Restart n8n. When `N8N_INSTANCE_OWNER_MANAGED_BY_ENV` is `true`, n8n reapplies the owner details on every startup. The matching UI controls become read-only. `**N8N_INSTANCE_OWNER_PASSWORD_HASH**` **must be a bcrypt hash** This variable expects a pre-hashed bcrypt value. Setting a plaintext password breaks login. For more information, see [Manage instance settings using environment variables](https://docs.n8n.io/deploy/host-n8n/configure-n8n/manage-settings-using-environment-variables#instance-owner) . [PreviousUser management](https://docs.n8n.io/deploy/host-n8n/configure-n8n/user-management) [NextManage settings using environment variables](https://docs.n8n.io/deploy/host-n8n/configure-n8n/manage-settings-using-environment-variables) Last updated 10 days ago Was this helpful? --- # View all executions | Build | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/build/understand-workflows/understand-executions/view-all-executions.md) . To view **all executions** from an n8n instance, navigate to the **Overview** page and then click into the Executions tab. This will show you all executions from the workflows you have access to. If your n8n instance supports **projects**, you'll also be able to view the executions tab within projects you have access to. This will show you executions only from the workflows within the specified project. **Deleted workflows** When you delete a workflow, n8n deletes its execution history as well. This means you can't view executions for deleted workflows. [](https://docs.n8n.io/build/understand-workflows/understand-executions/view-all-executions#filter-executions) Filter executions ------------------------------------------------------------------------------------------------------------------------------------- You can filter the executions list: 1. Select the **Executions** tab either from within the **Overview** page or a specific **project** to open the list. 2. Select **Filters**. 3. Enter your filters. You can filter by: * **Workflows**: choose all workflows, or a specific workflow name. * **Status**: choose from **Failed**, **Running**, **Success**, or **Waiting**. * **Execution start**: see executions that started in the given time. * **Saved custom data**: this is data you create within the workflow using the Code node. Enter the key and value to filter. Refer to [Custom executions data](https://docs.n8n.io/build/understand-workflows/understand-executions/customize-executions-data) for information on adding custom data. **Feature availability** Custom executions data is available on: * Cloud: Pro, Enterprise * Self-Hosted: Enterprise, registered Community [](https://docs.n8n.io/build/understand-workflows/understand-executions/view-all-executions#retry-failed-workflows) Retry failed workflows ----------------------------------------------------------------------------------------------------------------------------------------------- If your workflow execution fails, you can retry the execution. To retry a failed workflow: 1. Select the **Executions** tab from within either the **Overview** page or a specific **project** to open the list. 2. On the execution you want to retry, select **Retry execution** ![Options menu icon](https://docs.n8n.io/~gitbook/image?url=https%3A%2F%2F3488703508-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FrPN1zU5jaYNvwH7RzxqA%252Fuploads%252Fgit-blob-f19a4d097d364587b73864eaed77b12bfd8f516b%252Fthree-dot-options-menu.png%3Falt%3Dmedia&width=19&dpr=3&quality=100&sign=c16439c5&sv=2). 3. Select either of the following options to retry the execution: * **Retry with currently saved workflow**: Once you make changes to your workflow, you can select this option to execute the workflow with the previous execution data. * **Retry with original workflow**: If you want to retry the execution without making changes to your workflow, you can select this option to retry the execution with the previous execution data. [](https://docs.n8n.io/build/understand-workflows/understand-executions/view-all-executions#load-data-from-previous-executions-into-your-current-workflow) Load data from previous executions into your current workflow ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- You can load data from a previous workflow back into the canvas. Refer to [Debug executions](https://docs.n8n.io/build/understand-workflows/understand-executions/debug-executions) for more information. [PreviousView executions for a single workflow](https://docs.n8n.io/build/understand-workflows/understand-executions/view-executions-for-a-single-workflow) [NextCustomize executions data](https://docs.n8n.io/build/understand-workflows/understand-executions/customize-executions-data) Last updated 9 days ago Was this helpful? * [Filter executions](https://docs.n8n.io/build/understand-workflows/understand-executions/view-all-executions#filter-executions) * [Retry failed workflows](https://docs.n8n.io/build/understand-workflows/understand-executions/view-all-executions#retry-failed-workflows) * [Load data from previous executions into your current workflow](https://docs.n8n.io/build/understand-workflows/understand-executions/view-all-executions#load-data-from-previous-executions-into-your-current-workflow) Was this helpful? --- # Understand the architecture | Deploy | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/deploy/host-n8n/understand-the-architecture.md) . [How n8n works](https://docs.n8n.io/deploy/host-n8n/understand-the-architecture/how-n8n-works) [Understand the database](https://docs.n8n.io/deploy/host-n8n/understand-the-architecture/understand-the-database) [PreviousTrace executions with OpenTelemetry](https://docs.n8n.io/deploy/host-n8n/keep-n8n-running/trace-executions-with-opentelemetry) [NextHow n8n works](https://docs.n8n.io/deploy/host-n8n/understand-the-architecture/how-n8n-works) Last updated 10 days ago Was this helpful? Was this helpful? --- # Deploy as an OEM integration | Deploy | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/deploy/host-n8n/deploy-as-an-oem-integration.md) . **OEM agreement required** OEM deployment of n8n requires a separate commercial agreement with n8n. [Contact n8n](mailto:license@n8n.io) for more information. n8n's OEM deployment option lets you embed and surface n8n's interface inside your own product's UI. This allows your users to build workflows, configure connections, and run workflow automation without leaving your product. n8n branding is required as part of an OEM integration. This is distinct from [using n8n as a backend](https://docs.n8n.io/deploy/host-n8n) , where workflows execute behind the scenes and end users never see n8n. In that model, your product calls n8n using a webhook or the [API](https://docs.n8n.io/connect/n8n-api) to trigger workflows, and n8n behaves like any other self-hosted service in your infrastructure - your users never see any n8n UI. This is available on all paid plans under the standard license, with no separate agreement needed. OEM deployment is only necessary when you want your users to interact with the n8n editor directly. [](https://docs.n8n.io/deploy/host-n8n/deploy-as-an-oem-integration#whats-covered) What's covered ------------------------------------------------------------------------------------------------------ * [Prerequisites](https://docs.n8n.io/deploy/host-n8n/deploy-as-an-oem-integration/prerequisites) : Guidance on CPU, memory, and database requirements for planning your deployment. * [Managing workflows](https://docs.n8n.io/deploy/host-n8n/deploy-as-an-oem-integration/manage-workflows) : Patterns for managing workflows across multiple users or organizations within an embedded deployment. * [Token exchange](https://docs.n8n.io/deploy/host-n8n/deploy-as-an-oem-integration/set-up-token-exchange) : Authenticate users from your own identity provider through iframe SSO and call n8n APIs on their behalf. * [Workflow templates](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/configuration-examples/configure-a-custom-workflow-templates-library) : Configure a custom workflow template library for your users. * [Credential overwrites](https://docs.n8n.io/administer/manage-credentials/credential-overwrites) : Set OAuth credentials globally so your users can authenticate without seeing or entering client secrets. [](https://docs.n8n.io/deploy/host-n8n/deploy-as-an-oem-integration#support) Support ----------------------------------------------------------------------------------------- Contact [n8n support](mailto:support@n8n.io) using the email provided when you signed your OEM agreement. The [community forum](https://community.n8n.io/) is also available for general questions. [PreviousUnderstand the database](https://docs.n8n.io/deploy/host-n8n/understand-the-architecture/understand-the-database) [NextPrerequisites](https://docs.n8n.io/deploy/host-n8n/deploy-as-an-oem-integration/prerequisites) Last updated 7 days ago Was this helpful? * [What's covered](https://docs.n8n.io/deploy/host-n8n/deploy-as-an-oem-integration#whats-covered) * [Support](https://docs.n8n.io/deploy/host-n8n/deploy-as-an-oem-integration#support) Was this helpful? --- # Codex files | Connect | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/codex-files.md) . The codex file contains metadata about your node. This file is the JSON file at the root of your node. For example, the [`GithubIssues.node.json`](https://github.com/n8n-io/n8n-nodes-starter/blob/master/nodes/GithubIssues/GithubIssues.node.json) file in the n8n starter. The codex filename must match the node base filename. For example, given a node base file named `MyNode.node.ts`, the codex would be named `MyNode.node.json`. Parameter Description `node` Identifies the node. Community nodes use the package name, in the format `n8n-nodes-`. For example, `n8n-nodes-github-issues`. n8n's built-in nodes use the `n8n-nodes-base.` prefix, for example `n8n-nodes-base.openweatherapi`. `nodeVersion` The node version. This should have the same value as the `version` parameter in your main node file. For example, `"1.0"`. `codexVersion` The codex file version. The current version is `"1.0"`. `categories` The settings in the `categories` array determine which category n8n adds your node to in the GUI. See [Node categories](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/codex-files#node-categories) for more information. `resources` The `resources` object contains links to your node documentation. n8n automatically adds help links to credentials and nodes in the GUI. [](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/codex-files#node-categories) Node categories ----------------------------------------------------------------------------------------------------------------------- You can define one or more categories in your node configuration JSON. This helps n8n put the node in the correct category in the nodes panel. Choose from these categories: * Data & Storage * Finance & Accounting * Marketing & Content * Productivity * Miscellaneous * Sales * Development * Analytics * Communication * Utility You must match the syntax. For example, `Data & Storage` not `data and storage`. [PreviousProgrammatic-style execute method](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/base-files/programmatic-style-execute-method) [NextCredentials files](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/credentials-files) Last updated 10 days ago Was this helpful? Was this helpful? --- # Item linking errors | Build | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/build/work-with-data/reference-data/link-data-items/item-linking-errors.md) . In n8n you can reference data from any previous node. This doesn't have to be the node just before: it can be any previous node in the chain. When referencing nodes further back, you use the expression syntax `$(node_name).item`. ![](https://docs.n8n.io/~gitbook/image?url=https%3A%2F%2F3488703508-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FrPN1zU5jaYNvwH7RzxqA%252Fuploads%252Fgit-blob-2d525e117f61517ea8851cf1270a9599ce561988%252Fitem-linking-multiple-lines.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=a96bc3c8&sv=2) Diagram of threads for different items. Due to the item linking, you can get the actor for each movie using \`$('Get famous movie actors').item\`. Since the previous node can have multiple items in it, n8n needs to know which one to use. When using `.item`, n8n figures this out for you behind the scenes. Refer to [Item linking concepts](https://docs.n8n.io/build/work-with-data/reference-data/link-data-items/how-items-link-through-workflows) for detailed information on how this works. `.item` fails if information is missing. To figure out which item to use, n8n maintains a thread back through the workflow's nodes for each item. For a given item, this thread tells n8n which items in previous nodes generated it. To find the matching item in a given previous node, n8n follows this thread back until it reaches the node in question. When using `.item`, n8n displays an error when: * The thread is broken * The thread points to more than one item in the previous node (as it's unclear which one to use) To solve these errors, you can either avoid using `.item`, or fix the root cause. You can avoid `.item` by using `.first()`, `.last()` or `.all()[index]` instead. They require you to know the position of the item that you're targeting within the target node's output items. Refer to [Referencing previous nodes](https://docs.n8n.io/build/work-with-data/reference-data/reference-previous-nodes) for more detail on these methods. The fix for the root cause depends on the exact error. ### [](https://docs.n8n.io/build/work-with-data/reference-data/link-data-items/item-linking-errors#fix-for-info-for-expressions-missing-from-previous-node) Fix for 'Info for expressions missing from previous node' If you see this error message: > ERROR: Info for expression missing from previous node There's a node in the chain that doesn't return pairing information. The solution here depends on the type of the previous node: * Code nodes: make sure you return which input items the node used to produce each output item. Refer to [Preserving linking in the Code node](https://docs.n8n.io/build/work-with-data/reference-data/link-data-items/preserving-linking-in-the-code-node) for more information. * Custom or community nodes: the node creator needs to update the node to return which input items it uses to produce each output item. Refer to [Item linking for node creators](https://docs.n8n.io/build/work-with-data/reference-data/link-data-items/item-linking-for-node-creators) for more information. ### [](https://docs.n8n.io/build/work-with-data/reference-data/link-data-items/item-linking-errors#fix-for-multiple-matching-items-for-expression) Fix for 'Multiple matching items for expression' This is the error message: > ERROR: Multiple matching items for expression Sometimes n8n uses multiple items to create a single item. Examples include the Summarize, Aggregate, and Merge nodes. These nodes can combine information from multiple items. When you use `.item` and there are multiple possible matches, n8n doesn't know which one to use. To solve this you can either: * Use `.first()`, `.last()` or `.all()[index]` instead. Refer to [Referencing previous nodes](https://docs.n8n.io/build/work-with-data/reference-data/reference-previous-nodes) for more detail on these methods. * Reference a different node that contains the same information, but doesn't have multiple matching items. [PreviousPreserving linking in the Code node](https://docs.n8n.io/build/work-with-data/reference-data/link-data-items/preserving-linking-in-the-code-node) [NextItem linking for node creators](https://docs.n8n.io/build/work-with-data/reference-data/link-data-items/item-linking-for-node-creators) Last updated 10 days ago Was this helpful? * [Fix for 'Info for expressions missing from previous node'](https://docs.n8n.io/build/work-with-data/reference-data/link-data-items/item-linking-errors#fix-for-info-for-expressions-missing-from-previous-node) * [Fix for 'Multiple matching items for expression'](https://docs.n8n.io/build/work-with-data/reference-data/link-data-items/item-linking-errors#fix-for-multiple-matching-items-for-expression) Was this helpful? --- # Debug executions | Build | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/build/understand-workflows/understand-executions/debug-executions.md) . **Feature availability** Available on n8n Cloud and registered Community plans. You can load data from a previous execution into your current workflow. This is useful for debugging data from failed production executions: you can see a failed execution, make changes to your workflow to fix it, then re-run it with the previous execution data. [](https://docs.n8n.io/build/understand-workflows/understand-executions/debug-executions#load-data) Load data ------------------------------------------------------------------------------------------------------------------ To load data from a previous execution: 1. In your workflow, select the **Executions** tab to view the **Executions** list. 2. Select the execution you want to debug. n8n displays options depending on whether the workflow was successful or failed: * For failed executions: select **Debug in editor**. * For successful executions: select **Copy to editor**. 3. n8n copies the execution data into your current workflow, and [pins the data](https://docs.n8n.io/build/work-with-data/pin-and-mock-data) in the first node in the workflow. **Check which executions you save** The executions available on the **Executions** list depends on your [Workflow settings](https://docs.n8n.io/build/manage-workflows/configure-workflow-settings) . [PreviousUnderstand dirty nodes](https://docs.n8n.io/build/understand-workflows/understand-executions/understand-dirty-nodes) [NextView executions for a single workflow](https://docs.n8n.io/build/understand-workflows/understand-executions/view-executions-for-a-single-workflow) Last updated 10 days ago Was this helpful? Was this helpful? --- # Preserving linking in the Code node | Build | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/build/work-with-data/reference-data/link-data-items/preserving-linking-in-the-code-node.md) . When referencing a previous node you need to know which item to use. This is solved by item linking. Most nodes automatically link every output item to an input item, creating a chain of items that you can work back along to access previous items. For a deeper conceptual overview of this topic, refer to [Item linking concepts](https://docs.n8n.io/build/work-with-data/reference-data/link-data-items/how-items-link-through-workflows) . This document focuses on practical usage examples. When using the Code node, there are some scenarios where you need to manually supply item linking information if you want to be able to use `$("").item` later in the workflow. All these scenarios only apply if you have more than one incoming item. n8n automatically handles item linking for single items. These scenarios are when you: * Add new items: the new items aren't linked to any input. * Return new items. * Want to manually control the item linking. [n8n's automatic item linking](https://docs.n8n.io/build/work-with-data/reference-data/link-data-items/how-items-link-through-workflows) handles the other scenarios. To control item linking, set `pairedItem` when returning data. For example, to link to the item at index 0: Copy [\ {\ "json": {\ . . . \ },\ // The index of the input item that generated this output item\ "pairedItem": 0\ }\ ] #### [](https://docs.n8n.io/build/work-with-data/reference-data/link-data-items/preserving-linking-in-the-code-node#paireditem-usage-example) `pairedItem` usage example Take this input data: And use it to generate new items, containing just the name, along with a new piece of data: `newItems` is an array of items with no `pairedItem`. This means there's no way to trace back from these items to the items used to generate them. Add the `pairedItem` object: Each new item now links to the item used to create it. [PreviousAccessing linked items in the Code node](https://docs.n8n.io/build/work-with-data/reference-data/link-data-items/accessing-linked-items-in-the-code-node) [NextItem linking errors](https://docs.n8n.io/build/work-with-data/reference-data/link-data-items/item-linking-errors) Last updated 9 days ago Was this helpful? Was this helpful? Copy [\ {\ "id": "23423532",\ "name": "Jay Gatsby"\ },\ {\ "id": "23423533",\ "name": "JosĆ© Arcadio BuendĆ­a"\ },\ {\ "id": "23423534",\ "name": "Max Sendak"\ },\ {\ "id": "23423535",\ "name": "Zaphod Beeblebrox"\ },\ {\ "id": "23423536",\ "name": "Edmund Pevensie"\ }\ ] Copy newItems = []; for(let i=0; i "Create client", select "Web application" for "Application type", enter your n8n service URL into "Authorized JavaScript origins", and "/rest/oauth2-credential/callback" into "Authorized redirect URIs" where your YOUR-N8N-URL is also the n8n service URL (e.g. `https://n8n-12345678.us-west1.run.app/rest/oauth2-credential/callback`). Make sure you download the created client's JSON file since it contains the client secret which you will not be able to see later in the Console. 7. Click "Data Access" and add the scopes you want n8n to have access for (e.g. to access Google Sheets, you need `https://googleapis.com/auth/drive.file` and `https://googleapis.com/auth/spreadsheets`) 8. Now you should be able to use these workspace services. You can test if it works by logging into n8n, add a Tool for the respective service and add its credentials using the information in the OAuth client JSON file from step 6. [PreviousDeploy to Azure](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-azure) [NextDeploy to Google Kubernetes](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-google-kubernetes) Last updated 9 days ago Was this helpful? * [Before you begin: get a Google Cloud project](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-google-cloud-run#before-you-begin-get-a-google-cloud-project) * [Easy mode](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-google-cloud-run#easy-mode) * [Durable mode](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-google-cloud-run#durable-mode) * [Enable APIs and set env vars](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-google-cloud-run#enable-apis-and-set-env-vars) * [Setup your Postgres database](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-google-cloud-run#setup-your-postgres-database) * [Store sensitive data in Secret Manager](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-google-cloud-run#store-sensitive-data-in-secret-manager) * [Create a service account for Cloud Run](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-google-cloud-run#create-a-service-account-for-cloud-run) * [Deploy the Cloud Run service](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-google-cloud-run#deploy-the-cloud-run-service) * [Troubleshooting](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-google-cloud-run#troubleshooting) * [(Optional) Enabling Google Workspace services as n8n tools](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-google-cloud-run#optional-enabling-google-workspace-services-as-n8n-tools) Was this helpful? Copy gcloud auth login Copy gcloud services enable run.googleapis.com Copy gcloud run deploy n8n \ --image=n8nio/n8n \ --region=us-west1 \ --allow-unauthenticated \ --port=5678 \ --no-cpu-throttling \ --memory=2Gi \ --set-env-vars="N8N_ENDPOINT_HEALTH=health" Copy gcloud run deploy n8n \ --image=n8nio/n8n \ --region=us-west1 \ --allow-unauthenticated \ --port=5678 \ --no-cpu-throttling \ --memory=2Gi \ --scaling=1 \ --set-env-vars="N8N_ENDPOINT_HEALTH=health" Copy ## You may need to login first gcloud auth login gcloud services enable run.googleapis.com gcloud services enable sqladmin.googleapis.com gcloud services enable secretmanager.googleapis.com Copy export PROJECT_ID=your-project export REGION=region-where-you-want-this-deployed Copy gcloud sql instances create n8n-db \ --database-version=POSTGRES_13 \ --tier=db-f1-micro \ --region=$REGION \ --root-password="change-this-password" \ --storage-size=10GB \ --availability-type=ZONAL \ --no-backup \ --storage-type=HDD Copy gcloud sql databases create n8n --instance=n8n-db Copy gcloud sql users create n8n-user \ --instance=n8n-db \ --password="change-this-password" Copy gcloud secrets create n8n-db-password \ --data-file=/your/password/file \ --replication-policy="automatic" Copy openssl rand -base64 -out my-encryption-key 42 Copy gcloud secrets create n8n-encryption-key \ --data-file=my-encryption-key \ --replication-policy="automatic" Copy gcloud iam service-accounts create n8n-service-account \ --display-name="n8n Service Account" gcloud secrets add-iam-policy-binding n8n-db-password \ --member="serviceAccount:n8n-service-account@$PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/secretmanager.secretAccessor" gcloud secrets add-iam-policy-binding n8n-encryption-key \ --member="serviceAccount:n8n-service-account@$PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/secretmanager.secretAccessor" gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:n8n-service-account@$PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/cloudsql.client" Copy gcloud run deploy n8n \ --image=n8nio/n8n:latest \ --command="/bin/sh" \ --args="-c,sleep 5;n8n start" \ --region=$REGION \ --allow-unauthenticated \ --port=5678 \ --memory=2Gi \ --no-cpu-throttling \ --set-env-vars="N8N_PORT=5678,N8N_PROTOCOL=https,N8N_ENDPOINT_HEALTH=health,DB_TYPE=postgresdb,DB_POSTGRESDB_DATABASE=n8n,DB_POSTGRESDB_USER=n8n-user,DB_POSTGRESDB_HOST=/cloudsql/$PROJECT_ID:$REGION:n8n-db,DB_POSTGRESDB_PORT=5432,DB_POSTGRESDB_SCHEMA=public,GENERIC_TIMEZONE=UTC,QUEUE_HEALTH_CHECK_ACTIVE=true" \ --set-secrets="DB_POSTGRESDB_PASSWORD=n8n-db-password:latest,N8N_ENCRYPTION_KEY=n8n-encryption-key:latest" \ --add-cloudsql-instances=$PROJECT_ID:$REGION:n8n-db \ --service-account=n8n-service-account@$PROJECT_ID.iam.gserviceaccount.com Copy ## Enable whichever APIs you need ## Note: If you want Sheets/Docs, it's not enough to just enable Drive; these services each have their own API gcloud services enable gmail.googleapis.com gcloud services enable drive.googleapis.com gcloud services enable sheets.googleapis.com gcloud services enable docs.googleapis.com gcloud services enable calendar-json.googleapis.com Copy export SERVICE_URL="your-n8n-service-URL" ## e.g. https://n8n-12345678.us-west1.run.app gcloud run services update n8n \ --region=$REGION \ --update-env-vars="N8N_HOST=$(echo $SERVICE_URL | sed 's/https:\/\///'),WEBHOOK_URL=$SERVICE_URL,N8N_EDITOR_BASE_URL=$SERVICE_URL" --- # Base files | Connect | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/base-files.md) . The node base file contains the core code of your node. All nodes must have a base file. The contents of this file are different depending on whether you're building a declarative-style or programmatic-style node. For guidance on which style to use, refer to [Choose your node building approach](https://docs.n8n.io/connect/create-nodes/plan-your-node/choose-a-node-building-style) . These documents give short code snippets to help understand the code structure and concepts. For full walk-throughs of building a node, including real-world code examples, refer to [Build a declarative-style node](https://docs.n8n.io/connect/create-nodes/build-your-node/tutorial-build-a-declarative-style-node) or [Build a programmatic-style node](https://docs.n8n.io/connect/create-nodes/build-your-node/tutorial-build-a-programmatic-style-node) . You can also explore the [n8n-nodes-starter](https://github.com/n8n-io/n8n-nodes-starter) and n8n's own [nodes](https://github.com/n8n-io/n8n/tree/master/packages/nodes-base/nodes) for a wider range of examples. The starter contains basic examples that you can build on. The n8n [Mattermost node](https://github.com/n8n-io/n8n/tree/master/packages/nodes-base/nodes/Mattermost) is a good example of a more complex programmatic-style node, including versioning. For all nodes, refer to the: * [Structure of the node base file](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/base-files/structure) * [Standard parameters](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/base-files/standard-parameters) For declarative-style nodes, refer to the: * [Declarative-style parameters](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/base-files/declarative-style-parameters) For programmatic-style nodes, refer to the: * [Programmatic-style parameters](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/base-files/programmatic-style-parameters) * [Programmatic-style execute() method](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/base-files/programmatic-style-execute-method) [PreviousVersioning](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/versioning) [NextStructure](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/base-files/structure) Last updated 10 days ago Was this helpful? Was this helpful? --- # View executions for a single workflow | Build | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/build/understand-workflows/understand-executions/view-executions-for-a-single-workflow.md) . The **Executions** list in a workflow shows all executions for that workflow. **Deleted workflows** When you delete a workflow, n8n deletes its execution history as well. This means you can't view executions for deleted workflows. **Execution history and workflow history** Don't confuse the execution list with [Workflow history](https://docs.n8n.io/build/manage-workflows/view-change-history) . Executions are workflow runs. With the executions list, you can see previous runs of the current version of the workflow. You can copy previous executions into the editor to [Debug and re-run past executions](https://docs.n8n.io/build/understand-workflows/understand-executions/debug-executions) in your current workflow. Workflow history is previous versions of the workflow: for example, a version with a different node, or different parameters set. [](https://docs.n8n.io/build/understand-workflows/understand-executions/view-executions-for-a-single-workflow#view-executions-for-a-single-workflow) View executions for a single workflow ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- In the workflow, select the **Executions** tab in the top menu. You can preview all executions of that workflow. [](https://docs.n8n.io/build/understand-workflows/understand-executions/view-executions-for-a-single-workflow#filter-executions) Filter executions ------------------------------------------------------------------------------------------------------------------------------------------------------- You can filter the executions list. 1. In your workflow, select **Executions**. 2. Select **Filters**. 3. Enter your filters. You can filter by: * **Status**: choose from **Failed**, **Running**, **Success**, or **Waiting**. * **Execution start**: see executions that started in the given time. * **Saved custom data**: this is data you create within the workflow using the Code node. Enter the key and value to filter. Refer to [Custom executions data](https://docs.n8n.io/build/understand-workflows/understand-executions/customize-executions-data) for information on adding custom data. **Feature availability** Custom executions data is available on: * Cloud: Pro, Enterprise * Self-Hosted: Enterprise, registered Community [](https://docs.n8n.io/build/understand-workflows/understand-executions/view-executions-for-a-single-workflow#retry-failed-workflows) Retry failed workflows ----------------------------------------------------------------------------------------------------------------------------------------------------------------- If your workflow execution fails, you can retry the execution. To retry a failed workflow: 1. Open the **Executions** list. 2. For the workflow execution you want to retry, select **Refresh** ![Refresh icon](https://docs.n8n.io/~gitbook/image?url=https%3A%2F%2F3488703508-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FrPN1zU5jaYNvwH7RzxqA%252Fuploads%252Fgit-blob-f422242e07871bf736b704bb4a47df45b43dbd70%252Frefresh.png%3Falt%3Dmedia&width=42&dpr=3&quality=100&sign=ad83d52f&sv=2). 3. Select either of the following options to retry the execution: * **Retry with currently saved workflow**: Once you make changes to your workflow, you can select this option to execute the workflow with the previous execution data. * **Retry with original workflow**: If you want to retry the execution without making changes to your workflow, you can select this option to retry the execution with the previous execution data. [PreviousDebug executions](https://docs.n8n.io/build/understand-workflows/understand-executions/debug-executions) [NextView all executions](https://docs.n8n.io/build/understand-workflows/understand-executions/view-all-executions) Last updated 9 days ago Was this helpful? * [View executions for a single workflow](https://docs.n8n.io/build/understand-workflows/understand-executions/view-executions-for-a-single-workflow#view-executions-for-a-single-workflow) * [Filter executions](https://docs.n8n.io/build/understand-workflows/understand-executions/view-executions-for-a-single-workflow#filter-executions) * [Retry failed workflows](https://docs.n8n.io/build/understand-workflows/understand-executions/view-executions-for-a-single-workflow#retry-failed-workflows) Was this helpful? --- # Set up task runners | Deploy | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/deploy/host-n8n/configure-n8n/set-up-task-runners.md) . Task runners are a generic mechanism to execute tasks in a secure and performant way. They're used to execute user-provided JavaScript and Python code in the [Code node](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code) . This document describes how task runners work and how you can configure them. **Internal mode not recommended for production** Using internal mode in production environments can pose a security risk. For production deployments, use [external mode](https://docs.n8n.io/deploy/host-n8n/configure-n8n/set-up-task-runners#external-mode) to ensure proper isolation between n8n and task runner processes. Refer to [Hardening task runners](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/harden-task-runners) for additional security measures. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/set-up-task-runners#how-it-works) How it works -------------------------------------------------------------------------------------------------------- The task runner feature consists of these components: one or more task runners, a task broker, and a task requester. ![](https://docs.n8n.io/~gitbook/image?url=https%3A%2F%2F2773773108-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252Fjm0ZYRpZIPWge2ZSiDYO%252Fuploads%252Fgit-blob-55207f2deade3c6c7123a6086cdea2bca06208ff%252Ftask-runner-concept.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=31414759&sv=2) Task runner overview Task runners connect to the task broker using a websocket connection. A task requester submits a task request to the broker where an available task runner can pick it up for execution. The runner executes the task and submits the results to the task requester. The task broker coordinates communication between the runner and the requester. The n8n instance (main and worker) acts as the broker. The Code node in this case is the task requester. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/set-up-task-runners#task-runner-modes) Task runner modes ------------------------------------------------------------------------------------------------------------------ You can use task runners in two different modes: internal and external. ### [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/set-up-task-runners#internal-mode) Internal mode In internal mode, the n8n instance launches the task runner as a child process. The n8n process monitors and manages the life cycle of the task runner. The task runner process shares the same `uid` and `gid` as n8n. This is **not** recommended for production. ### [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/set-up-task-runners#external-mode) External mode In external mode, a [launcher application](https://github.com/n8n-io/task-runner-launcher) launches task runners on demand and manages their lifecycle. Typically, this means that next to n8n you add a sidecar container running the [`n8nio/runners`](https://hub.docker.com/r/n8nio/runners) image containing the launcher, the JS task runner and the Python task runner. This sidecar container is independent from the n8n instance. ![](https://docs.n8n.io/~gitbook/image?url=https%3A%2F%2F2773773108-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252Fjm0ZYRpZIPWge2ZSiDYO%252Fuploads%252Fgit-blob-cb63fb1f1b7c6647e817f6eaff5ae1bd1a08dba6%252Ftask-runner-external-mode.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=e5328e21&sv=2) Task runner deployed as a side-car container When using [Queue mode](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/enable-queue-mode) , each worker needs to have its own sidecar container for task runners. In addition, if [`OFFLOAD_MANUAL_EXECUTIONS_TO_WORKERS=false`](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/queue-mode#queue-mode-environment-variables) , then your main instance will run manual executions and needs its own sidecar container for task runners as well. Please note that running n8n with offloading disabled isn't recommended for production. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/set-up-task-runners#setting-up-external-mode) Setting up external mode -------------------------------------------------------------------------------------------------------------------------------- In external mode, you run the `n8nio/runners` image as a sidecar container next to n8n. Below you will find a docker compose as a reference. Keep in mind that the `n8nio/runners` image version must match that of the `n8nio/n8n` image, and the n8n version must be >=1.111.0. There are three layers of configuration: the n8n container, the runners container, and the launcher inside the runners container. ### [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/set-up-task-runners#configuring-n8n-container-in-external-mode) Configuring n8n container in external mode These are the main environment variables that you can set on the n8n container running in external mode: Environment variables Description `N8N_RUNNERS_ENABLED=true` Enables task runners. `N8N_RUNNERS_MODE=external` Use task runners in external mode. `N8N_RUNNERS_AUTH_TOKEN=` A shared secret task runners use to connect to the broker. `N8N_RUNNERS_BROKER_LISTEN_ADDRESS=0.0.0.0` By default, the task broker only listens to localhost. When using multiple containers (for example, with Docker Compose), it needs to be able to accept external connections. For full list of environment variables see [task runner environment variables](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/task-runners) . ### [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/set-up-task-runners#configuring-runners-container-in-external-mode) Configuring runners container in external mode These are the main environment variables that you can set on the runners container running in external mode: Environment variables Description `N8N_RUNNERS_AUTH_TOKEN=` The shared secret the task runner uses to connect to the broker. `N8N_RUNNERS_TASK_BROKER_URI=localhost:5679` The address of the task broker server within the n8n instance. `N8N_RUNNERS_AUTO_SHUTDOWN_TIMEOUT=15` Number of seconds of inactivity to wait before shutting down the task runner process. The launcher will automatically start the runner again when there are new tasks to execute. Set to `0` to disable automatic shutdown. For full list of environment variables see [task runner environment variables](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/task-runners) . ### [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/set-up-task-runners#configuring-launcher-in-runners-container-in-external-mode) Configuring launcher in runners container in external mode The launcher reads environment variables from runners container environment, and performs the following actions: * Passing environment variables from the launcher's own environment to all runners (`allowed-env`) * Setting specific environment variables on specific runners (`env-overrides`) Which environment variables to pass and to set are defined in the [launcher config file](https://github.com/n8n-io/n8n/blob/master/docker/images/runners/n8n-task-runners.json) included in the runners image. This config file is located in the container at `/etc/task-runners.json`. To learn more about the launcher config file, refer to the [Config file documentation](https://github.com/n8n-io/task-runner-launcher/blob/main/docs/setup.md#config-file) . The default launcher configuration file is locked down, but you can edit this file, for example, to allowlist first- or third-party modules. To customize the launcher configuration file, mount to this path: [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/set-up-task-runners#adding-extra-dependencies) Adding extra dependencies ---------------------------------------------------------------------------------------------------------------------------------- ### [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/set-up-task-runners#id-1-extend-the-n8niorunners-image) 1\. Extend the `n8nio/runners` image You can extend the `n8nio/runners` image to add extra dependencies to the runners. You'll need `n8nio/runners:1.121.0` or later to do this. You must also allowlist any first-party or third-party packages for use by the Code node. Do this by editing the configuration file `n8n-task-runners.json` to include the packages in your extended image. * `NODE_FUNCTION_ALLOW_BUILTIN`: comma-separated list of allowed node builtin modules. * `NODE_FUNCTION_ALLOW_EXTERNAL`: comma-separated list of allowed JS packages. * `N8N_RUNNERS_STDLIB_ALLOW`: comma-separated list of allowed Python standard library packages. * `N8N_RUNNERS_EXTERNAL_ALLOW`: comma-separated list of allowed Python packages. ### [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/set-up-task-runners#id-2-build-your-custom-image) 2\. Build your custom image For example, from the n8n repository root: ### [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/set-up-task-runners#id-3-run-the-image) 3\. Run the image For example: [PreviousManage settings using environment variables](https://docs.n8n.io/deploy/host-n8n/configure-n8n/manage-settings-using-environment-variables) [NextManage your license](https://docs.n8n.io/deploy/host-n8n/configure-n8n/manage-your-license) Last updated 10 days ago Was this helpful? * [How it works](https://docs.n8n.io/deploy/host-n8n/configure-n8n/set-up-task-runners#how-it-works) * [Task runner modes](https://docs.n8n.io/deploy/host-n8n/configure-n8n/set-up-task-runners#task-runner-modes) * [Internal mode](https://docs.n8n.io/deploy/host-n8n/configure-n8n/set-up-task-runners#internal-mode) * [External mode](https://docs.n8n.io/deploy/host-n8n/configure-n8n/set-up-task-runners#external-mode) * [Setting up external mode](https://docs.n8n.io/deploy/host-n8n/configure-n8n/set-up-task-runners#setting-up-external-mode) * [Configuring n8n container in external mode](https://docs.n8n.io/deploy/host-n8n/configure-n8n/set-up-task-runners#configuring-n8n-container-in-external-mode) * [Configuring runners container in external mode](https://docs.n8n.io/deploy/host-n8n/configure-n8n/set-up-task-runners#configuring-runners-container-in-external-mode) * [Configuring launcher in runners container in external mode](https://docs.n8n.io/deploy/host-n8n/configure-n8n/set-up-task-runners#configuring-launcher-in-runners-container-in-external-mode) * [Adding extra dependencies](https://docs.n8n.io/deploy/host-n8n/configure-n8n/set-up-task-runners#adding-extra-dependencies) * [1\. Extend the n8nio/runners image](https://docs.n8n.io/deploy/host-n8n/configure-n8n/set-up-task-runners#id-1-extend-the-n8niorunners-image) * [2\. Build your custom image](https://docs.n8n.io/deploy/host-n8n/configure-n8n/set-up-task-runners#id-2-build-your-custom-image) * [3\. Run the image](https://docs.n8n.io/deploy/host-n8n/configure-n8n/set-up-task-runners#id-3-run-the-image) Was this helpful? Copy services: n8n: image: n8nio/n8n:1.111.0 container_name: n8n-main environment: - N8N_RUNNERS_ENABLED=true - N8N_RUNNERS_MODE=external - N8N_RUNNERS_BROKER_LISTEN_ADDRESS=0.0.0.0 - N8N_RUNNERS_AUTH_TOKEN=your-secret-here - N8N_NATIVE_PYTHON_RUNNER=true ports: - "5678:5678" volumes: - n8n_data:/home/node/.n8n # etc. task-runners: image: n8nio/runners:1.111.0 container_name: n8n-runners environment: - N8N_RUNNERS_TASK_BROKER_URI=http://n8n-main:5679 - N8N_RUNNERS_AUTH_TOKEN=your-secret-here # etc. depends_on: - n8n volumes: n8n_data: Copy path/to/n8n-task-runners.json:/etc/n8n-task-runners.json Copy FROM n8nio/runners:1.121.0 USER root RUN cd /opt/runners/task-runner-javascript && pnpm add moment uuid RUN cd /opt/runners/task-runner-python && uv pip install numpy pandas COPY n8n-task-runners.json /etc/n8n-task-runners.json USER runner Copy { "task-runners": [\ {\ "runner-type": "javascript",\ "env-overrides": {\ "NODE_FUNCTION_ALLOW_BUILTIN": "crypto", // <-- allowlist Node.js builtin modules here\ "NODE_FUNCTION_ALLOW_EXTERNAL": "moment,uuid", // <-- allowlist third-party JS packages here\ }\ },\ {\ "runner-type": "python",\ "env-overrides": {\ "PYTHONPATH": "/opt/runners/task-runner-python",\ "N8N_RUNNERS_STDLIB_ALLOW": "json", // <-- allowlist Python standard library packages here\ "N8N_RUNNERS_EXTERNAL_ALLOW": "numpy,pandas" // <-- allowlist third-party Python packages here\ }\ }\ ] } Copy docker buildx build \ -f docker/images/runners/Dockerfile \ -t n8nio/runners:custom \ . Copy docker run --rm -it \ -e N8N_RUNNERS_AUTH_TOKEN=test \ -e N8N_RUNNERS_LAUNCHER_LOG_LEVEL=debug \ -e N8N_RUNNERS_TASK_BROKER_URI=http://host.docker.internal:5679 \ -p 5680:5680 \ n8nio/runners:custom --- # Item linking | Connect | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/item-linking.md) . **Programmatic-style nodes only** This guidance applies to programmatic-style nodes. If you're using declarative style, n8n handles paired items for you automatically. Use n8n's item linking to access data from items that precede the current item. n8n needs to know which input item a given output item comes from. If this information is missing, expressions in other nodes may break. As a node developer, you must ensure any items returned by your node support this. This applies to programmatic nodes (including trigger nodes). You don't need to consider item linking when building a declarative-style node. Refer to [Choose your node building approach](https://docs.n8n.io/connect/create-nodes/plan-your-node/choose-a-node-building-style) for more information on node styles. Start by reading [Item linking concepts](https://docs.n8n.io/build/work-with-data/reference-data/link-data-items/how-items-link-through-workflows) , which provides a conceptual overview of item linking, and details of the scenarios where n8n can handle the linking automatically. If you need to handle item linking manually, do this by setting `pairedItem` on each item your node returns: Copy // Use the pairedItem information of the incoming item newItem = { "json": { . . . }, "pairedItem": { "item": item.pairedItem, // Optional: choose the input to use // Set this if your node combines multiple inputs "input": 0 }; // Or set the index manually newItem = { "json": { . . . } "pairedItem": { "item": i, // Optional: choose the input to use // Set this if your node combines multiple inputs "input": 0 }, }; [PreviousHTTP request helpers](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/http-request-helpers) [NextUX guidelines](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/ux-guidelines) Last updated 9 days ago Was this helpful? Was this helpful? --- # Versioning | Connect | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/versioning.md) . n8n supports node versioning. You can make changes to existing nodes without breaking the existing behavior by introducing a new version. Be aware of how n8n decides which node version to load: * If a user builds and saves a workflow using version 1, n8n continues to use version 1 in that workflow, even if you create and publish a version 2 of the node. * When a user creates a new workflow and browses for nodes, n8n always loads the latest version of the node. **Versioning type restricted by node style** If you build a node using the declarative style, you can't use full versioning. \## Light versioning This is available for all node types. One node can contain more than one version, allowing small version increments without code duplication. To use this feature: 1. Change the main `version` parameter to an array, and add your version numbers, including your existing version. 2. You can then access the version parameter with `@version` in your `displayOptions` in any object (to control which versions n8n displays the object with). You can also query the version from a function using `const nodeVersion = this.getNode().typeVersion;`. As an example, say you want to add versioning to the NasaPics node from the [Declarative node tutorial](https://docs.n8n.io/connect/create-nodes/build-your-node/tutorial-build-a-declarative-style-node) , then configure a resource so that n8n only displays it in version 2 of the node. In your base `NasaPics.node.ts` file: Copy { displayName: 'NASA Pics', name: 'NasaPics', icon: 'file:nasapics.svg', // List the available versions version: [1,2,3], // More basic parameters here properties: [\ // Add a resource that's only displayed for version2\ {\ displayName: 'Resource name',\ // More resource parameters\ displayOptions: {\ show: {\ '@version': 2,\ },\ },\ },\ ], } [](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/versioning#feature-based-versioning) Feature-based versioning ---------------------------------------------------------------------------------------------------------------------------------------- Feature flags let you control parameter visibility and execution logic based on named features tied to node versions. ### [](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/versioning#defining-features) Defining features Add a `features` object to your node type description. Each feature uses `@version` conditions to specify which versions enable it: Available conditions: `gte`, `lte`, `gt`, `lt`. Pass a plain version number to match a specific version. ### [](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/versioning#using-feature-in-displayoptions) Using `@feature` in `displayOptions` Use `@feature` in `displayOptions` to control parameter visibility based on feature flags: To show a parameter when a feature is **not** enabled, use the condition syntax: You can combine `@feature` with other display conditions: ### [](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/versioning#checking-features-in-code) Checking features in code Use `this.isNodeFeatureEnabled()` in execution contexts (such as `IExecuteFunctions` or `IWebhookFunctions`): [](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/versioning#full-versioning) Full versioning ---------------------------------------------------------------------------------------------------------------------- This isn't available for declarative-style nodes. As an example, refer to the [Mattermost node](https://github.com/n8n-io/n8n/tree/master/packages/nodes-base/nodes/Mattermost) . Full versioning summary: * The base node file should extend `NodeVersionedType` instead of `INodeType`. * The base node file should contain a description including the `defaultVersion` (usually the latest), other basic node metadata such as name, and a list of versions. It shouldn't contain any node functionality. * n8n recommends using `v1`, `v2`, and so on, for version folder names. [PreviousError handling](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/error-handling) [NextBase files](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/base-files) Last updated 10 days ago Was this helpful? * [Feature-based versioning](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/versioning#feature-based-versioning) * [Defining features](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/versioning#defining-features) * [Using @feature in displayOptions](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/versioning#using-feature-in-displayoptions) * [Checking features in code](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/versioning#checking-features-in-code) * [Full versioning](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/versioning#full-versioning) Was this helpful? Copy { version: [2, 2.1, 2.2, 2.3, 2.4], features: { useNewApi: { '@version': [{ _cnd: { gte: 2.2 } }] }, useLegacyAuth: { '@version': [{ _cnd: { lte: 2.1 } }] }, useSpecialMode: { '@version': [2] }, }, // More basic parameters here } Copy { displayName: 'New API Field', name: 'newApiField', type: 'string', displayOptions: { show: { '@feature': ['useNewApi'], }, }, } Copy displayOptions: { show: { '@feature': [{ _cnd: { not: 'useNewApi' } }], }, } Copy displayOptions: { show: { resource: ['myResource'], '@feature': [{ _cnd: { eq: 'useNewApi' } }], }, } Copy if (this.isNodeFeatureEnabled('useNewApi')) { // Process with new API } else { // Process with legacy API } --- # Deploy to Azure | Deploy | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-azure.md) . This hosting guide shows you how to self-host n8n on Azure. It uses n8n with Postgres as a database backend using Kubernetes to manage the necessary resources and reverse proxy. [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-azure#prerequisites) Prerequisites ----------------------------------------------------------------------------------------------------------------------------- You need [The Azure command line tool](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli) **Self-hosting knowledge prerequisites** Self-hosting n8n requires technical knowledge, including: * Setting up and configuring servers and containers * Managing application resources and scaling * Securing servers and applications * Configuring n8n n8n recommends self-hosting for expert users. Mistakes can lead to data loss, security issues, and downtime. If you aren't experienced at managing servers, n8n recommends [n8n Cloud](https://n8n.io/cloud/) . **Stable and Beta versions** n8n releases a new minor version most weeks. The `stable` version is for production use. `beta` is the most recent release. The `beta` version may be unstable. To report issues, use the [forum](https://community.n8n.io/c/questions/12) . Current `stable`: 2.28.5 Current `beta`: 2.29.3 [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-azure#hosting-options) Hosting options --------------------------------------------------------------------------------------------------------------------------------- Azure offers several ways suitable for hosting n8n, including Azure Container Instances (optimized for running containers), Linux Virtual Machines, and Azure Kubernetes Service (containers running with Kubernetes). This guide uses the Azure Kubernetes Service (AKS) as the hosting option. Using Kubernetes requires some additional complexity and configuration, but is the best method for scaling n8n as demand changes. The steps in this guide use a mix of the Azure UI and command line tool, but you can use either to accomplish most tasks. [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-azure#open-the-azure-kubernetes-service) Open the Azure Kubernetes Service --------------------------------------------------------------------------------------------------------------------------------------------------------------------- From [the Azure portal](https://portal.azure.com/) select **Kubernetes services**. [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-azure#create-a-cluster) Create a cluster ----------------------------------------------------------------------------------------------------------------------------------- From the Kubernetes services page, select **Create** > **Create a Kubernetes cluster**. You can select any of the configuration options that suit your needs, then select **Create** when done. [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-azure#set-kubectl-context) Set Kubectl context ----------------------------------------------------------------------------------------------------------------------------------------- The remainder of the steps in this guide require you to set the Azure instance as the Kubectl context. You can find the connection details for a cluster instance by opening its details page and then the **Connect** button. The resulting code snippets shows the steps to paste and run into a terminal to change your local Kubernetes settings to use the new cluster. [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-azure#clone-configuration-repository) Clone configuration repository --------------------------------------------------------------------------------------------------------------------------------------------------------------- Kubernetes and n8n require a series of configuration files. You can clone these from [this repository](https://github.com/n8n-io/n8n-hosting) . The following steps tell you which file configures what and what you need to change. Clone the repository with the following command: And change directory: [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-azure#configure-postgres) Configure Postgres --------------------------------------------------------------------------------------------------------------------------------------- For larger scale n8n deployments, Postgres provides a more robust database backend than SQLite. ### [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-azure#configure-volume-for-persistent-storage) Configure volume for persistent storage To maintain data between pod restarts, the Postgres deployment needs a persistent volume. The default storage class is suitable for this purpose and is defined in the `postgres-claim0-persistentvolumeclaim.yaml` manifest. **Specialized storage classes** If you have specialised or higher requirements for storage classes, [read more on the options Azure offers in the documentation](https://learn.microsoft.com/en-us/azure/aks/concepts-storage#storage-classes) . ### [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-azure#postgres-environment-variables) Postgres environment variables Postgres needs some environment variables set to pass to the application running in the containers. The example `postgres-secret.yaml` file contains placeholders you need to replace with your own values. Postgres will use these details when creating the database.. The `postgres-deployment.yaml` manifest then uses the values from this manifest file to send to the application pods. [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-azure#configure-n8n) Configure n8n ----------------------------------------------------------------------------------------------------------------------------- ### [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-azure#create-a-volume-for-file-storage) Create a volume for file storage While not essential for running n8n, using persistent volumes is required for: * Using nodes that interact with files, such as the binary data node. * If you want to persist [manual n8n encryption keys](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/deployment) between restarts. This saves a file containing the key into file storage during startup. The `n8n-claim0-persistentvolumeclaim.yaml` manifest creates this, and the n8n Deployment mounts that claim in the `volumes` section of the `n8n-deployment.yaml` manifest. ### [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-azure#pod-resources) Pod resources [Kubernetes lets you](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) optionally specify the minimum resources application containers need and the limits they can run to. The example YAML files cloned above contain the following in the `resources` section of the `n8n-deployment.yaml` file: This defines a minimum of 250mb per container, a maximum of 500mb, and lets Kubernetes handle CPU. You can change these values to match your own needs. As a guide, here are the resources values for the n8n cloud offerings: * **Start**: 320mb RAM, 10 millicore CPU burstable * **Pro (10k executions)**: 640mb RAM, 20 millicore CPU burstable * **Pro (50k executions)**: 1280mb RAM, 80 millicore CPU burstable ### [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-azure#optional-environment-variables) Optional: Environment variables You can configure n8n settings and behaviors using environment variables. Create an `n8n-secret.yaml` file. Refer to [Environment variables](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables) for n8n environment variables details. [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-azure#deployments) Deployments ------------------------------------------------------------------------------------------------------------------------- The two deployment manifests (`n8n-deployment.yaml` and `postgres-deployment.yaml`) define the n8n and Postgres applications to Kubernetes. The manifests define the following: * Send the environment variables defined to each application pod * Define the container image to use * Set resource consumption limits with the `resources` object * The `volumes` defined earlier and `volumeMounts` to define the path in the container to mount volumes. * Scaling and restart policies. The example manifests define one instance of each pod. You should change this to meet your needs. [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-azure#services) Services ------------------------------------------------------------------------------------------------------------------- The two service manifests (`postgres-service.yaml` and `n8n-service.yaml`) expose the services to the outside world using the Kubernetes load balancer using ports 5432 and 5678 respectively. [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-azure#send-to-kubernetes-cluster) Send to Kubernetes cluster ------------------------------------------------------------------------------------------------------------------------------------------------------- Send all the manifests to the cluster with the following command: **Namespace error** You may see an error message about not finding an "n8n" namespace as that resources isn't ready yet. You can run the same command again, or apply the namespace manifest first with the following command: [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-azure#set-up-dns) Set up DNS ----------------------------------------------------------------------------------------------------------------------- n8n typically operates on a subdomain. Create a DNS record with your provider for the subdomain and point it to the IP address of the n8n service. Find the IP address of the n8n service from the **Services & ingresses** menu item of the cluster you want to use under the **External IP** column. You need to add the n8n port, "5678" to the URL. **Static IP addresses with AKS** [Read this tutorial](https://learn.microsoft.com/en-us/azure/aks/static-ip) for more details on how to use a static IP address with AKS. [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-azure#delete-resources) Delete resources ----------------------------------------------------------------------------------------------------------------------------------- Remove the resources created by the manifests with the following command: [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-azure#next-steps) Next steps ----------------------------------------------------------------------------------------------------------------------- * Learn more about [configuring](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables) and [scaling](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling) n8n. * Or explore using n8n: try the [Quickstarts](https://docs.n8n.io/build-your-first-workflow) . [PreviousDeploy to AWS](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-aws) [NextDeploy to Google Cloud Run](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-google-cloud-run) Last updated 9 days ago Was this helpful? * [Prerequisites](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-azure#prerequisites) * [Hosting options](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-azure#hosting-options) * [Open the Azure Kubernetes Service](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-azure#open-the-azure-kubernetes-service) * [Create a cluster](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-azure#create-a-cluster) * [Set Kubectl context](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-azure#set-kubectl-context) * [Clone configuration repository](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-azure#clone-configuration-repository) * [Configure Postgres](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-azure#configure-postgres) * [Configure volume for persistent storage](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-azure#configure-volume-for-persistent-storage) * [Postgres environment variables](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-azure#postgres-environment-variables) * [Configure n8n](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-azure#configure-n8n) * [Create a volume for file storage](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-azure#create-a-volume-for-file-storage) * [Pod resources](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-azure#pod-resources) * [Optional: Environment variables](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-azure#optional-environment-variables) * [Deployments](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-azure#deployments) * [Services](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-azure#services) * [Send to Kubernetes cluster](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-azure#send-to-kubernetes-cluster) * [Set up DNS](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-azure#set-up-dns) * [Delete resources](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-azure#delete-resources) * [Next steps](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-azure#next-steps) Was this helpful? Copy git clone https://github.com/n8n-io/n8n-hosting.git Copy cd n8n-hosting/kubernetes Copy … volumes: - name: n8n-claim0 persistentVolumeClaim: claimName: n8n-claim0 … Copy … resources: requests: memory: "250Mi" limits: memory: "500Mi" … Copy kubectl apply -f . Copy kubectl apply -f namespace.yaml Copy kubectl delete -f . --- # Credentials files | Connect | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/credentials-files.md) . The credentials file defines the authorization methods for the node. The settings in this file affect what n8n displays in the **Credentials** modal, and must reflect the authentication requirements of the service you're connecting to. In the credentials file, you can use all the [n8n UI elements](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/node-ui-elements) . n8n encrypts the data that's stored using credentials using an encryption key. [](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/credentials-files#structure-of-the-credentials-file) Structure of the credentials file ----------------------------------------------------------------------------------------------------------------------------------------------------------------- The credentials file follows this basic structure: 1. Import statements 2. Create a class for the credentials 3. Within the class, define the properties that control authentication for the node. ### [](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/credentials-files#outline-structure) Outline structure Copy import { IAuthenticateGeneric, ICredentialTestRequest, ICredentialType, INodeProperties, } from 'n8n-workflow'; export class ExampleNode implements ICredentialType { name = 'exampleNodeApi'; displayName = 'Example Node API'; documentationUrl = ''; properties: INodeProperties[] = [\ {\ displayName: 'API Key',\ name: 'apiKey',\ type: 'string',\ default: '',\ },\ ]; authenticate: IAuthenticateGeneric = { type: 'generic', properties: { // Can be body, header, qs or auth qs: { // Use the value from `apiKey` above 'api_key': '={{$credentials.apiKey}}' } }, }; test: ICredentialTestRequest = { request: { baseURL: '={{$credentials?.domain}}', url: '/bearer', }, }; } [](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/credentials-files#parameters) Parameters ------------------------------------------------------------------------------------------------------------------- ### [](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/credentials-files#name) `name` String. The internal name of the object. Used to reference it from other places in the node. ### [](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/credentials-files#displayname) `displayName` String. The name n8n uses in the GUI. ### [](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/credentials-files#documentationurl) `documentationUrl` String. URL to your credentials documentation. ### [](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/credentials-files#properties) `properties` Each object contains: * `displayName`: the name n8n uses in the GUI. * `name`: the internal name of the object. Used to reference it from other places in the node. * `type`: the data type expected, such as `string`. * `default`: the URL that n8n should use to test credentials. ### [](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/credentials-files#authenticate) `authenticate` * `authenticate`: Object. Contains objects that tell n8n how to inject the authentication data as part of the API request. #### [](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/credentials-files#type) `type` String. If you're using an authentication method that sends data in the header, body, or query string, set this to `'generic'`. #### [](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/credentials-files#properties-1) `properties` Object. Defines the authentication methods. Options are: * `body`: Object. Sends authentication data in the request body. Can contain nested objects. * `header`: Object. Send authentication data in the request header. * `qs`: Object. Stands for "query string." Send authentication data in the request query string. * `auth`: Object. Used for Basic Auth. Requires `username` and `password` as the key names. ### [](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/credentials-files#test) `test` Provide a `request` object containing a URL and authentication type that n8n can use to test the credential. [PreviousCodex files](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/codex-files) [NextHTTP request helpers](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/http-request-helpers) Last updated 10 days ago Was this helpful? * [Structure of the credentials file](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/credentials-files#structure-of-the-credentials-file) * [Outline structure](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/credentials-files#outline-structure) * [Parameters](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/credentials-files#parameters) * [name](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/credentials-files#name) * [displayName](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/credentials-files#displayname) * [documentationUrl](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/credentials-files#documentationurl) * [properties](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/credentials-files#properties) * [authenticate](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/credentials-files#authenticate) * [test](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/credentials-files#test) Was this helpful? Copy authenticate: IAuthenticateGeneric = { type: 'generic', properties: { body: { username: '={{$credentials.username}}', password: '={{$credentials.password}}', }, }, }; Copy authenticate: IAuthenticateGeneric = { type: 'generic', properties: { header: { Authorization: '=Bearer {{$credentials.authToken}}', }, }, }; Copy authenticate: IAuthenticateGeneric = { type: 'generic', properties: { qs: { token: '={{$credentials.token}}', }, }, }; Copy authenticate: IAuthenticateGeneric = { type: 'generic', properties: { auth: { username: '={{$credentials.username}}', password: '={{$credentials.password}}', }, }, }; Copy test: ICredentialTestRequest = { request: { baseURL: '={{$credentials?.domain}}', url: '/bearer', }, }; --- # Deploy to AWS | Deploy | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-aws.md) . This hosting guide shows you how to self-host n8n with Amazon Web Services (AWS). It uses n8n with Postgres as a database backend using Kubernetes to manage the necessary resources and reverse proxy. [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-aws#hosting-options) Hosting options ------------------------------------------------------------------------------------------------------------------------------- AWS offers several ways suitable for hosting n8n, including EC2 (virtual machines), and EKS (containers running with Kubernetes). This guide uses [EKS](https://aws.amazon.com/eks/) as the hosting option. Using Kubernetes requires some additional complexity and configuration, but is the best method for scaling n8n as demand changes. [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-aws#prerequisites) Prerequisites --------------------------------------------------------------------------------------------------------------------------- The steps in this guide use a mix of the AWS UI and [the eksctl CLI tool for EKS](https://eksctl.io/) . While not mentioned in the documentation for eksctl, you also need to [install the AWS CLI tool](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) , and [configure authentication of the tool](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html) . **Self-hosting knowledge prerequisites** Self-hosting n8n requires technical knowledge, including: * Setting up and configuring servers and containers * Managing application resources and scaling * Securing servers and applications * Configuring n8n n8n recommends self-hosting for expert users. Mistakes can lead to data loss, security issues, and downtime. If you aren't experienced at managing servers, n8n recommends [n8n Cloud](https://n8n.io/cloud/) . **Stable and Beta versions** n8n releases a new minor version most weeks. The `stable` version is for production use. `beta` is the most recent release. The `beta` version may be unstable. To report issues, use the [forum](https://community.n8n.io/c/questions/12) . Current `stable`: 2.28.5 Current `beta`: 2.29.3 [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-aws#create-a-cluster) Create a cluster --------------------------------------------------------------------------------------------------------------------------------- Use the eksctl tool to create a cluster specifying a name and a region with the following command: This can take a while to create the cluster. Once the cluster is created, eksctl automatically sets the kubectl context to the cluster. [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-aws#clone-configuration-repository) Clone configuration repository ------------------------------------------------------------------------------------------------------------------------------------------------------------- Kubernetes and n8n require a series of configuration files. You can clone these from [this repository](https://github.com/n8n-io/n8n-hosting) . The following steps tell you what each file does, and what settings you need to change. Clone the repository with the following command: And change directory: [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-aws#configure-postgres) Configure Postgres ------------------------------------------------------------------------------------------------------------------------------------- For larger scale n8n deployments, Postgres provides a more robust database backend than SQLite. ### [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-aws#configure-volume-for-persistent-storage) Configure volume for persistent storage To maintain data between pod restarts, the Postgres deployment needs a persistent volume. The default AWS storage class, [gp3](https://docs.aws.amazon.com/ebs/latest/userguide/general-purpose.html#gp3-ebs-volume-type) , is suitable for this purpose. This is defined in the `postgres-claim0-persistentvolumeclaim.yaml` manifest. ### [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-aws#postgres-environment-variables) Postgres environment variables Postgres needs some environment variables set to pass to the application running in the containers. The example `postgres-secret.yaml` file contains placeholders you need to replace with values of your own for user details and the database to use. PostgreSQL uses a root user (`POSTGRES_USER`) for setup and administration, but it’s best practice to create a separate non-root user (`POSTGRES_NON_ROOT_USER`) for n8n. The root user has full control, while n8n only needs the non-root user permissions to run. Configuring both improves security and helps prevent accidental changes to the database system. The `postgres-deployment.yaml` manifest then uses the values from this manifest file to send to the application pods. [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-aws#configure-n8n) Configure n8n --------------------------------------------------------------------------------------------------------------------------- ### [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-aws#create-a-volume-for-file-storage) Create a volume for file storage While not essential for running n8n, using persistent volumes helps maintain files uploaded while using n8n and if you want to persist [manual n8n encryption keys](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/deployment) between restarts, which saves a file containing the key into file storage during startup. The `n8n-claim0-persistentvolumeclaim.yaml` manifest creates this, and the n8n Deployment mounts that claim in the `volumes` section of the `n8n-deployment.yaml` manifest. ### [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-aws#pod-resources) Pod resources [Kubernetes](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) lets you specify the minimum resources application containers need and the limits they can run to. The example YAML files cloned above contain the following in the `resources` section of the `n8n-deployment.yaml` file: This defines a minimum of 250mb per container, a maximum of 500mb, and lets Kubernetes handle CPU. You can change these values to match your own needs. As a guide, here are the resources values for the n8n cloud offerings: * **Start**: 320mb RAM, 10 millicore CPU burstable * **Pro (10k executions)**: 640mb RAM, 20 millicore CPU burstable * **Pro (50k executions)**: 1280mb RAM, 80 millicore CPU burstable ### [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-aws#optional-environment-variables) Optional: Environment variables You can configure n8n settings and behaviors using environment variables. Create an `n8n-secret.yaml` file. Refer to [Environment variables](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables) for n8n environment variables details. [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-aws#deployments) Deployments ----------------------------------------------------------------------------------------------------------------------- The two deployment manifests (`n8n-deployment.yaml` and `postgres-deployment.yaml`) define the n8n and Postgres applications to Kubernetes. The manifests define the following: * Send the environment variables defined to each application pod * Define the container image to use * Set resource consumption limits * The `volumes` defined earlier and `volumeMounts` to define the path in the container to mount volumes. * Scaling and restart policies. The example manifests define one instance of each pod. You should change this to meet your needs. [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-aws#services) Services ----------------------------------------------------------------------------------------------------------------- The two service manifests (`postgres-service.yaml` and `n8n-service.yaml`) expose the services to the outside world using the Kubernetes load balancer using ports 5432 and 5678 respectively by default. [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-aws#send-to-kubernetes-cluster) Send to Kubernetes cluster ----------------------------------------------------------------------------------------------------------------------------------------------------- Send all the manifests to the cluster by running the following command in the `n8n-kubernetes-hosting` directory: **Namespace error** You may see an error message about not finding an "n8n" namespace as that resources isn't ready yet. You can run the same command again, or apply the namespace manifest first with the following command: [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-aws#set-up-dns) Set up DNS --------------------------------------------------------------------------------------------------------------------- n8n typically operates on a subdomain. Create a DNS record with your provider for the subdomain and point it to a static address of the instance. To find the address of the n8n service running on the instance: 1. Open the **Clusters** section of the **Amazon Elastic Kubernetes Service** page in the AWS console. 2. Select the name of the cluster to open its configuration page. 3. Select the **Resources** tab, then **Service and networking** > **Services**. 4. Select the **n8n** service and copy the **Load balancer URLs** value. Use this value suffixed with the n8n service port (5678) for DNS. **Use HTTP** This guide uses HTTP connections for the services it defines, for example in `n8n-deployment.yaml`. However, if you click the **Load balancer URLs** value, EKS takes you to an "HTTPS" URL which results in an error. To solve this, when you open the n8n subdomain, make sure to use HTTP. [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-aws#delete-resources) Delete resources --------------------------------------------------------------------------------------------------------------------------------- If you need to delete the setup, you can remove the resources created by the manifests with the following command: [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-aws#next-steps) Next steps --------------------------------------------------------------------------------------------------------------------- * Learn more about [configuring](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables) and [scaling](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling) n8n. * Or explore using n8n: try the [Quickstarts](https://docs.n8n.io/build-your-first-workflow) . [PreviousDeploy to Hetzner](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-hetzner) [NextDeploy to Azure](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-azure) Last updated 9 days ago Was this helpful? * [Hosting options](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-aws#hosting-options) * [Prerequisites](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-aws#prerequisites) * [Create a cluster](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-aws#create-a-cluster) * [Clone configuration repository](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-aws#clone-configuration-repository) * [Configure Postgres](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-aws#configure-postgres) * [Configure volume for persistent storage](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-aws#configure-volume-for-persistent-storage) * [Postgres environment variables](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-aws#postgres-environment-variables) * [Configure n8n](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-aws#configure-n8n) * [Create a volume for file storage](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-aws#create-a-volume-for-file-storage) * [Pod resources](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-aws#pod-resources) * [Optional: Environment variables](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-aws#optional-environment-variables) * [Deployments](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-aws#deployments) * [Services](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-aws#services) * [Send to Kubernetes cluster](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-aws#send-to-kubernetes-cluster) * [Set up DNS](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-aws#set-up-dns) * [Delete resources](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-aws#delete-resources) * [Next steps](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-aws#next-steps) Was this helpful? Copy eksctl create cluster --name n8n --region Copy git clone https://github.com/n8n-io/n8n-hosting.git Copy cd n8n-hosting/kubernetes Copy … spec: storageClassName: gp3 accessModes: - ReadWriteOnce … Copy … volumes: - name: n8n-claim0 persistentVolumeClaim: claimName: n8n-claim0 … Copy … resources: requests: memory: "250Mi" limits: memory: "500Mi" … Copy kubectl apply -f . Copy kubectl apply -f namespace.yaml Copy kubectl delete -f . --- # Deploy to Google Kubernetes | Deploy | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-google-kubernetes.md) . Google Cloud offers several options suitable for hosting n8n, including Cloud Run (optimized for running containers), Compute Engine (VMs), and Kubernetes Engine (containers running with Kubernetes). This guide uses the Google Kubernetes Engine (GKE) as the hosting option. If you want to use Cloud Run, refer to [these instructions](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-google-cloud-run) . Most of the steps in this guide use the Google Cloud UI, but you can also use the [gcloud command line tool](https://cloud.google.com/sdk/gcloud/) instead to undertake all the steps. [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-google-kubernetes#prerequisites) Prerequisites ----------------------------------------------------------------------------------------------------------------------------------------- * The [gcloud command line tool](https://cloud.google.com/sdk/gcloud/) * The [gke-gcloud-auth-plugin](https://cloud.google.com/blog/products/containers-kubernetes/kubectl-auth-changes-in-gke) (install the gcloud CLI first) **Self-hosting knowledge prerequisites** Self-hosting n8n requires technical knowledge, including: * Setting up and configuring servers and containers * Managing application resources and scaling * Securing servers and applications * Configuring n8n n8n recommends self-hosting for expert users. Mistakes can lead to data loss, security issues, and downtime. If you aren't experienced at managing servers, n8n recommends [n8n Cloud](https://n8n.io/cloud/) . **Stable and Beta versions** n8n releases a new minor version most weeks. The `stable` version is for production use. `beta` is the most recent release. The `beta` version may be unstable. To report issues, use the [forum](https://community.n8n.io/c/questions/12) . Current `stable`: 2.28.5 Current `beta`: 2.29.3 [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-google-kubernetes#create-project) Create project ------------------------------------------------------------------------------------------------------------------------------------------- GCP encourages you to create projects to logically organize resources and configuration. Create a new project for your n8n deployment from your Google Cloud Console: select the project dropdown menu and then the **NEW PROJECT** button. Then select the newly created project. As you follow the other steps in this guide, make sure you have the correct project selected. [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-google-kubernetes#enable-the-kubernetes-engine-api) Enable the Kubernetes Engine API ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- GKE isn't enabled by default. Search for "Kubernetes" in the top search bar and select "Kubernetes Engine" from the results. Select **ENABLE** to enable the Kubernetes Engine API for this project. [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-google-kubernetes#create-a-cluster) Create a cluster ----------------------------------------------------------------------------------------------------------------------------------------------- From the [GKE service page](https://console.cloud.google.com/kubernetes/list/overview) , select **Clusters** > **CREATE**. Make sure you select the "Standard" cluster option, n8n doesn't work with an "Autopilot" cluster. You can leave the cluster configuration on defaults unless there's anything specifically you need to change, such as location. [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-google-kubernetes#set-kubectl-context) Set Kubectl context ----------------------------------------------------------------------------------------------------------------------------------------------------- The rest of the steps in this guide require you to set the GCP instance as the Kubectl context. You can find the connection details for a cluster instance by opening its details page and selecting **CONNECT**. The displayed code snippet shows a connection string for the gcloud CLI tool. Paste and run the code snippet in the gcloud CLI to change your local Kubernetes settings to use the new gcloud cluster. [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-google-kubernetes#clone-configuration-repository) Clone configuration repository --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Kubernetes and n8n require a series of configuration files. You can clone these from [this repository](https://github.com/n8n-io/n8n-hosting) locally. The following steps explain the file configuration and how to add your information. Clone the repository with the following command: And change directory: [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-google-kubernetes#configure-postgres) Configure Postgres --------------------------------------------------------------------------------------------------------------------------------------------------- For larger scale n8n deployments, Postgres provides a more robust database backend than SQLite. ### [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-google-kubernetes#create-a-volume-for-persistent-storage) Create a volume for persistent storage To maintain data between pod restarts, the Postgres deployment needs a persistent volume. Running Postgres on GCP requires a specific Kubernetes Storage Class. You can read [this guide](https://cloud.google.com/architecture/deploying-highly-available-postgresql-with-gke) for specifics, but the `storage.yaml` manifest creates it for you. You may want to change the regions to create the storage in under the `allowedTopologies` > `matchedLabelExpressions` > `values` key. By default, they're set to `us-central`. ### [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-google-kubernetes#postgres-environment-variables) Postgres environment variables Postgres needs some environment variables set to pass to the application running in the containers. The example `postgres-secret.yaml` file contains placeholders you need to replace with your own values. Postgres will use these details when creating the database.. The `postgres-deployment.yaml` manifest then uses the values from this manifest file to send to the application pods. [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-google-kubernetes#configure-n8n) Configure n8n ----------------------------------------------------------------------------------------------------------------------------------------- ### [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-google-kubernetes#create-a-volume-for-file-storage) Create a volume for file storage While not essential for running n8n, using persistent volumes is required for: * Using nodes that interact with files, such as the binary data node. * If you want to persist [manual n8n encryption keys](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/deployment) between restarts. This saves a file containing the key into file storage during startup. The `n8n-claim0-persistentvolumeclaim.yaml` manifest creates this, and the n8n Deployment mounts that claim in the `volumes` section of the `n8n-deployment.yaml` manifest. ### [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-google-kubernetes#pod-resources) Pod resources [Kubernetes lets you](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) optionally specify the minimum resources application containers need and the limits they can run to. The example YAML files cloned above contain the following in the `resources` section of the `n8n-deployment.yaml` and `postgres-deployment.yaml` files: This defines a minimum of 250mb per container, a maximum of 500mb, and lets Kubernetes handle CPU. You can change these values to match your own needs. As a guide, here are the resources values for the n8n cloud offerings: * **Start**: 320mb RAM, 10 millicore CPU burstable * **Pro (10k executions)**: 640mb RAM, 20 millicore CPU burstable * **Pro (50k executions)**: 1280mb RAM, 80 millicore CPU burstable ### [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-google-kubernetes#optional-environment-variables) Optional: Environment variables You can configure n8n settings and behaviors using environment variables. Create an `n8n-secret.yaml` file. Refer to [Environment variables](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables) for n8n environment variables details. [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-google-kubernetes#deployments) Deployments ------------------------------------------------------------------------------------------------------------------------------------- The two deployment manifests (`n8n-deployment.yaml` and `postgres-deployment.yaml`) define the n8n and Postgres applications to Kubernetes. The manifests define the following: * Send the environment variables defined to each application pod * Define the container image to use * Set resource consumption limits with the `resources` object * The `volumes` defined earlier and `volumeMounts` to define the path in the container to mount volumes. * Scaling and restart policies. The example manifests define one instance of each pod. You should change this to meet your needs. [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-google-kubernetes#services) Services ------------------------------------------------------------------------------------------------------------------------------- The two service manifests (`postgres-service.yaml` and `n8n-service.yaml`) expose the services to the outside world using the Kubernetes load balancer using ports 5432 and 5678 respectively. [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-google-kubernetes#send-to-kubernetes-cluster) Send to Kubernetes cluster ------------------------------------------------------------------------------------------------------------------------------------------------------------------- Send all the manifests to the cluster with the following command: **Namespace error** You may see an error message about not finding an "n8n" namespace as that resources isn't ready yet. You can run the same command again, or apply the namespace manifest first with the following command: [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-google-kubernetes#set-up-dns) Set up DNS ----------------------------------------------------------------------------------------------------------------------------------- n8n typically operates on a subdomain. Create a DNS record with your provider for the subdomain and point it to the IP address of the n8n service. Find the IP address of the n8n service from the **Services & Ingress** menu item of the cluster you want to use under the **Endpoints** column. **GKE and IP addresses** [Read this GKE tutorial](https://cloud.google.com/kubernetes-engine/docs/tutorials/configuring-domain-name-static-ip#configuring_your_domain_name_records) for more details on how reserved IP addresses work with GKE and Kubernetes resources. [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-google-kubernetes#delete-resources) Delete resources ----------------------------------------------------------------------------------------------------------------------------------------------- Remove the resources created by the manifests with the following command: [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-google-kubernetes#next-steps) Next steps ----------------------------------------------------------------------------------------------------------------------------------- * Learn more about [configuring](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables) and [scaling](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling) n8n. * Or explore using n8n: try the [Quickstarts](https://docs.n8n.io/build-your-first-workflow) . [PreviousDeploy to Google Cloud Run](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-google-cloud-run) [NextDeploy to OpenShift Local (CRC)](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-openshift-local-crc) Last updated 9 days ago Was this helpful? * [Prerequisites](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-google-kubernetes#prerequisites) * [Create project](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-google-kubernetes#create-project) * [Enable the Kubernetes Engine API](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-google-kubernetes#enable-the-kubernetes-engine-api) * [Create a cluster](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-google-kubernetes#create-a-cluster) * [Set Kubectl context](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-google-kubernetes#set-kubectl-context) * [Clone configuration repository](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-google-kubernetes#clone-configuration-repository) * [Configure Postgres](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-google-kubernetes#configure-postgres) * [Create a volume for persistent storage](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-google-kubernetes#create-a-volume-for-persistent-storage) * [Postgres environment variables](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-google-kubernetes#postgres-environment-variables) * [Configure n8n](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-google-kubernetes#configure-n8n) * [Create a volume for file storage](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-google-kubernetes#create-a-volume-for-file-storage) * [Pod resources](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-google-kubernetes#pod-resources) * [Optional: Environment variables](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-google-kubernetes#optional-environment-variables) * [Deployments](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-google-kubernetes#deployments) * [Services](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-google-kubernetes#services) * [Send to Kubernetes cluster](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-google-kubernetes#send-to-kubernetes-cluster) * [Set up DNS](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-google-kubernetes#set-up-dns) * [Delete resources](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-google-kubernetes#delete-resources) * [Next steps](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-google-kubernetes#next-steps) Was this helpful? Copy git clone https://github.com/n8n-io/n8n-hosting.git Copy cd n8n-hosting/kubernetes Copy … allowedTopologies: - matchLabelExpressions: - key: failure-domain.beta.kubernetes.io/zone values: - us-central1-b - us-central1-c Copy … volumes: - name: n8n-claim0 persistentVolumeClaim: claimName: n8n-claim0 … Copy … resources: requests: memory: "250Mi" limits: memory: "500Mi" … Copy kubectl apply -f . Copy kubectl apply -f namespace.yaml Copy kubectl delete -f . --- # Use Docker Compose | Deploy | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/use-docker-compose.md) . These instructions cover how to run n8n on a Linux server using Docker Compose. If you have already installed Docker and Docker-Compose, then you can start with [step 3](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/use-docker-compose#3-dns-setup) . You can find Docker Compose configurations for various architectures in the [n8n-hosting repository](https://github.com/n8n-io/n8n-hosting) . **Self-hosting knowledge prerequisites** Self-hosting n8n requires technical knowledge, including: * Setting up and configuring servers and containers * Managing application resources and scaling * Securing servers and applications * Configuring n8n n8n recommends self-hosting for expert users. Mistakes can lead to data loss, security issues, and downtime. If you aren't experienced at managing servers, n8n recommends [n8n Cloud](https://n8n.io/cloud/) . **Stable and Beta versions** n8n releases a new minor version most weeks. The `stable` version is for production use. `beta` is the most recent release. The `beta` version may be unstable. To report issues, use the [forum](https://community.n8n.io/c/questions/12) . Current `stable`: 2.28.5 Current `beta`: 2.29.3 [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/use-docker-compose#id-1-install-docker-and-docker-compose) 1\. Install Docker and Docker Compose --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- The way that you install Docker and Docker Compose depends on your Linux distribution. You can find specific instructions for each component in the links below: * [Docker Engine](https://docs.docker.com/engine/install/) * [Docker Compose](https://docs.docker.com/compose/install/linux/) After following the installation instructions, verify that Docker and Docker Compose are available by typing: [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/use-docker-compose#id-2-optional-non-root-user-access) 2\. Optional: Non-root user access -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- You can optionally grant access to run Docker without the `sudo` command. To grant access to the user that you're currently logged in with (assuming they have `sudo` access), run: To grant access to a different user, type the following, substituting `` with the appropriate username: You will need to run `exec sg docker newgrp` from any of that user's existing sessions for it to access the new group permissions. You can verify that your current session recognizes the `docker` group by typing: [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/use-docker-compose#id-3-dns-setup) 3\. DNS setup --------------------------------------------------------------------------------------------------------------------------------- To host n8n online or on a network, create a dedicated subdomain pointed at your server. Add an A record to route the subdomain accordingly: Record type Name Destination A `n8n` (or your desired subdomain) `` [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/use-docker-compose#id-4-create-an-env-file) 4\. Create an `.env` file ------------------------------------------------------------------------------------------------------------------------------------------------------ Create a project directory to store your n8n environment configuration and Docker Compose files and navigate inside: Inside the `n8n-compose` directory, create an `.env` file to customize your n8n instance's details. Change it to match your own information: [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/use-docker-compose#id-5-create-local-files-directory) 5\. Create local files directory ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- Inside your project directory, create a directory called `local-files` for sharing files between the n8n instance and the host system (for example, using the [Read/Write Files from Disk node](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.readwritefile) ): The Docker Compose file below can automatically create this directory, but doing it manually ensures that it's created with the right ownership and permissions. [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/use-docker-compose#id-6-create-docker-compose-file) 6\. Create Docker Compose file ------------------------------------------------------------------------------------------------------------------------------------------------------------------- Create a `compose.yaml` file. Paste the following in the file: The Docker Compose file above configures two containers: one for n8n, and one to run [traefik](https://github.com/traefik/traefik) , an application proxy to manage TLS/SSL certificates and handle routing. It also creates and mounts two [Docker Volumes](https://docs.docker.com/engine/storage/volumes/) and mounts the `local-files` directory you created earlier: Name Type Container mount Description `n8n_data` [Volume](https://docs.docker.com/engine/storage/volumes/) `/home/node/.n8n` Where n8n saves its SQLite database file and encryption key. `traefik_data` [Volume](https://docs.docker.com/engine/storage/volumes/) `/letsencrypt` Where traefik saves TLS/SSL certificate data. `./local-files` [Bind](https://docs.docker.com/engine/storage/bind-mounts/) `/files` A local directory shared between the n8n instance and host. In n8n, use the `/files` path to read from and write to this directory. [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/use-docker-compose#id-7-start-docker-compose) 7\. Start Docker Compose ------------------------------------------------------------------------------------------------------------------------------------------------------- Start n8n by typing: To stop the containers, type: [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/use-docker-compose#id-8-done) 8\. Done ----------------------------------------------------------------------------------------------------------------------- You can now reach n8n using the subdomain + domain combination you defined in your `.env` file configuration. The above example would result in `https://n8n.example.com`. n8n is only accessible using secure HTTPS, not over plain HTTP. If you have trouble reaching your instance, check your server's firewall settings and your DNS configuration. [](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/use-docker-compose#next-steps) Next steps -------------------------------------------------------------------------------------------------------------------------- * Learn more about [configuring](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables) and [scaling](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling) n8n. * Or explore using n8n: try the [Quickstarts](https://docs.n8n.io/build-your-first-workflow) . [PreviousDeploy to OpenShift Local (CRC)](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/deploy-to-openshift-local-crc) [NextConfigure n8n](https://docs.n8n.io/deploy/host-n8n/configure-n8n) Last updated 3 days ago Was this helpful? * [1\. Install Docker and Docker Compose](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/use-docker-compose#id-1-install-docker-and-docker-compose) * [2\. Optional: Non-root user access](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/use-docker-compose#id-2-optional-non-root-user-access) * [3\. DNS setup](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/use-docker-compose#id-3-dns-setup) * [4\. Create an .env file](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/use-docker-compose#id-4-create-an-env-file) * [5\. Create local files directory](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/use-docker-compose#id-5-create-local-files-directory) * [6\. Create Docker Compose file](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/use-docker-compose#id-6-create-docker-compose-file) * [7\. Start Docker Compose](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/use-docker-compose#id-7-start-docker-compose) * [8\. Done](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/use-docker-compose#id-8-done) * [Next steps](https://docs.n8n.io/deploy/host-n8n/install-options/use-a-cloud-provider/use-docker-compose#next-steps) Was this helpful? Copy docker --version docker compose version Copy sudo usermod -aG docker ${USER} # Register the `docker` group membership with current session without changing your primary group exec sg docker newgrp Copy sudo usermod -aG docker Copy groups Copy mkdir n8n-compose cd n8n-compose Copy # DOMAIN_NAME and SUBDOMAIN together determine where n8n will be reachable from # The top level domain to serve from DOMAIN_NAME=example.com # The subdomain to serve from SUBDOMAIN=n8n # The above example serve n8n at: https://n8n.example.com # Optional timezone to set which gets used by Cron and other scheduling nodes # New York is the default value if not set GENERIC_TIMEZONE=Europe/Berlin # The email address to use for the TLS/SSL certificate creation SSL_EMAIL=user@example.com Copy mkdir local-files Copy services: traefik: image: "traefik" restart: always command: - "--api.insecure=true" - "--providers.docker=true" - "--providers.docker.exposedbydefault=false" - "--entrypoints.web.address=:80" - "--entrypoints.web.http.redirections.entryPoint.to=websecure" - "--entrypoints.web.http.redirections.entrypoint.scheme=https" - "--entrypoints.websecure.address=:443" - "--certificatesresolvers.mytlschallenge.acme.tlschallenge=true" - "--certificatesresolvers.mytlschallenge.acme.email=${SSL_EMAIL}" - "--certificatesresolvers.mytlschallenge.acme.storage=/letsencrypt/acme.json" ports: - "80:80" - "443:443" volumes: - traefik_data:/letsencrypt - /var/run/docker.sock:/var/run/docker.sock:ro n8n: image: docker.n8n.io/n8nio/n8n restart: always ports: - "127.0.0.1:5678:5678" labels: - traefik.enable=true - traefik.http.routers.n8n.rule=Host(`${SUBDOMAIN}.${DOMAIN_NAME}`) - traefik.http.routers.n8n.tls=true - traefik.http.routers.n8n.entrypoints=web,websecure - traefik.http.routers.n8n.tls.certresolver=mytlschallenge - traefik.http.middlewares.n8n.headers.SSLRedirect=true - traefik.http.middlewares.n8n.headers.STSSeconds=315360000 - traefik.http.middlewares.n8n.headers.browserXSSFilter=true - traefik.http.middlewares.n8n.headers.contentTypeNosniff=true - traefik.http.middlewares.n8n.headers.forceSTSHeader=true - traefik.http.middlewares.n8n.headers.SSLHost=${DOMAIN_NAME} - traefik.http.middlewares.n8n.headers.STSIncludeSubdomains=true - traefik.http.middlewares.n8n.headers.STSPreload=true - traefik.http.routers.n8n.middlewares=n8n@docker environment: - N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true - N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME} - N8N_PORT=5678 - N8N_PROTOCOL=https - NODE_ENV=production - WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/ - GENERIC_TIMEZONE=${GENERIC_TIMEZONE} - TZ=${GENERIC_TIMEZONE} - N8N_RESTRICT_FILE_ACCESS_TO=/files volumes: - n8n_data:/home/node/.n8n - ./local-files:/files volumes: n8n_data: traefik_data: Copy sudo docker compose up -d Copy sudo docker compose stop --- # HTTP request helpers | Connect | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/http-request-helpers.md) . n8n provides a flexible helper for making HTTP requests, which abstracts away most of the complexity. **Programmatic style only** The information in this document is for node building using the programmatic style. It doesn't apply to declarative style nodes. \## Usage Call the helper inside the `execute` function. Copy // If no auth needed const response = await this.helpers.httpRequest(options); // If auth needed const response = await this.helpers.httpRequestWithAuthentication.call( this, 'credentialTypeName', // For example: pipedriveApi options, ); `options` is an object: Copy { url: string; headers?: object; method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'HEAD'; body?: FormData | Array | string | number | object | Buffer | URLSearchParams; qs?: object; arrayFormat?: 'indices' | 'brackets' | 'repeat' | 'comma'; auth?: { username: string, password: string, }; disableFollowRedirect?: boolean; encoding?: 'arraybuffer' | 'blob' | 'document' | 'json' | 'text' | 'stream'; skipSslCertificateValidation?: boolean; returnFullResponse?: boolean; proxy?: { host: string; port: string | number; auth?: { username: string; password: string; }, protocol?: string; }; timeout?: number; json?: boolean; } `url` is required. The other fields are optional. The default method is `GET`. Some notes about the possible fields: * `body`: you can use a regular JavaScript object for JSON payload, a buffer for file uploads, an instance of FormData for `multipart/form-data`, and `URLSearchParams` for `application/x-www-form-urlencoded`. * `headers`: a key-value pair. * If `body` is an instance of `FormData` then n8n adds `content-type: multipart/form-data` automatically. * If `body` is an instance of `URLSearchParams`, then n8n adds `content-type: application/x-www-form-urlencoded`. * To override this behavior, set a `content-type` header. * `arrayFormat`: if your query string contains an array of data, such as `const qs = {IDs: [15,17]}`, the value of `arrayFormat` defines how n8n formats it. * `indices` (default): `{ a: ['b', 'c'] }` as `a[0]=b&a[1]=c` * `brackets`: `{ a: ['b', 'c'] }` as `a[]=b&a[]=c` * `repeat`: `{ a: ['b', 'c'] }` as `a=b&a=c` * `comma`: `{ a: ['b', 'c'] }` as `a=b,c` * `auth`: Used for Basic auth. Provide `username` and `password`. n8n recommends omitting this, and using `helpers.httpRequestWithAuthentication(...)` instead. * `disableFollowRedirect`: By default, n8n follows redirects. You can set this to true to prevent this from happening. * `skipSslCertificateValidation`: Used for calling HTTPS services without proper certificate * `returnFullResponse`: Instead of returning just the body, returns an object with more data in the following format: `{body: body, headers: object, statusCode: 200, statusMessage: 'OK'}` * `encoding`: n8n can detect the content type, but you can specify `arrayBuffer` to receive a Buffer you can read from and interact with. [](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/http-request-helpers#example) Example ---------------------------------------------------------------------------------------------------------------- For an example, refer to the [Mattermost node](https://github.com/n8n-io/n8n/blob/master/packages/nodes-base/nodes/Mattermost/v1/MattermostV1.node.ts) . [](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/http-request-helpers#deprecation-of-the-previous-helper) Deprecation of the previous helper ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- The previous helper implementation using `this.helpers.request(options)` used and exposed the `request-promise` library. This was removed in version 1. To minimize incompatibility, n8n made a transparent conversion to another library called `Axios`. If you are having issues, please report them in the [Community Forums](https://community.n8n.io/) or on [GitHub](https://github.com/n8n-io/n8n/issues) . [](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/http-request-helpers#migration-guide-to-the-new-helper) Migration guide to the new helper -------------------------------------------------------------------------------------------------------------------------------------------------------------------- The new helper is much more robust, library agnostic, and easier to use. New nodes should all use the new helper. You should strongly consider migrating existing custom nodes to the new helper. These are the main considerations when migrating: * Accepts `url`. Doesn't accept `uri`. * `encoding: null` now must be `encoding: arrayBuffer`. * `rejectUnauthorized: false` is now `skipSslCertificateValidation: true` * Use `body` according to `content-type` headers to clarify the payload. * `resolveWithFullResponse` is now `returnFullResponse` and has similar behavior [PreviousCredentials files](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/credentials-files) [NextItem linking](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/item-linking) Last updated 10 days ago Was this helpful? * [Example](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/http-request-helpers#example) * [Deprecation of the previous helper](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/http-request-helpers#deprecation-of-the-previous-helper) * [Migration guide to the new helper](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/http-request-helpers#migration-guide-to-the-new-helper) Was this helpful? --- # N8n Package | Connect | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/connect/n8n-api/n8n-package.md) . Beta — operations about n8n packages. Disabled by default; enable with `N8N_PUBLIC_API_PACKAGES_ENABLED=true`. ### [](https://docs.n8n.io/connect/n8n-api/n8n-package#post-n8n-packages-export) Beta: Export workflows as an n8n package post/api/v1/n8n-packages/export **Beta — disabled by default.** Set `N8N_PUBLIC_API_PACKAGES_ENABLED=true` on the instance to enable this endpoint. While disabled, requests return `404`. Export one or more workflows as a gzipped tar archive (.n8np). The response is streamed as `application/gzip` with a `Content-Disposition` attachment header. Requires the n8n Packages feature to be licensed. Authorizations ApiKeyAuth ApiKeyAuthBearerAuth X-N8N-API-KEYstringRequired Body application/json application/json workflowIdsstring\[\] Ā· min: 1 Ā· max: 300Required IDs of the workflows to include in the exported package. Example: `["2tUt1wbLX592XDdX"]` Responses 200 A gzipped tar archive containing the exported workflows. application/gzip string Ā· binaryOptional 400 The request is invalid or provides malformed data. 401 Unauthorized 403 Forbidden 404 The specified resource was not found. post/n8n-packages/export HTTP HTTPcURLJavaScriptPython 200 A gzipped tar archive containing the exported workflows. ### [](https://docs.n8n.io/connect/n8n-api/n8n-package#post-n8n-packages-import) Beta: Import an n8n package into a project post/api/v1/n8n-packages/import **Beta — disabled by default.** Set `N8N_PUBLIC_API_PACKAGES_ENABLED=true` on the instance to enable this endpoint. While disabled, requests return `404`. Imports a gzip-compressed tar package (`.n8np`) into the target project. Send the archive as the multipart field `package`. Optional routing uses form fields `projectId` and `folderId` (omit or send empty for defaults). The optional `credentialMatchingMode`, `credentialMissingMode`, `credentialBindings`, `workflowIdPolicy`, and `workflowPublishingPolicy` fields take their defaults when omitted. The required `workflowConflictPolicy` field controls what happens when a package workflow matches an existing workflow by source id in the target project. Maximum upload size is `N8N_ENDPOINTS_PAYLOAD_SIZE_MAX` MB (default 16). The package must declare its manifest at `manifest.json` and include every file referenced by the manifest. The caller is authorised through the `workflow:import` scope. With the default `workflowIdPolicy=new`, newly created workflows receive a fresh local id; imported workflows arrive inactive unless `workflowPublishingPolicy` publishes them after import. Credential references are resolved before any workflow is written. Only credentials owned by the target project (with `credential:read`) or global credentials (with `credential:read`) match. Credentials shared into the project as `credential:user` are not matched. Authorizations ApiKeyAuth ApiKeyAuthBearerAuth X-N8N-API-KEYstringRequired Body multipart/form-data multipart/form-data packagestring Ā· binaryRequired Gzip-compressed tar package (`.n8np`). projectIdstringOptional Target project id. Omit or send empty to import into the caller's personal project. folderIdstringOptional Optional folder within the target project. Omit or send empty for project root. credentialMatchingModestring Ā· enumOptional How credential references in `requirements.credentials` are matched on the target instance. Only `id-only` is supported today. Default: `id-only`Possible values: `id-only` credentialMissingModestring Ā· enumOptional What to do when a credential reference cannot be resolved. `create-stub` (default) creates empty credential placeholders in the target project for missing references. `must-preexist` requires every referenced credential to already exist. Default: `create-stub`Possible values: `must-preexist``create-stub` credentialBindingsstringOptional Optional JSON object mapping credential ids from the package manifest to credential ids on the target instance. These explicit bindings are validated and applied before `credentialMatchingMode` resolution runs. Default: `{}` workflowConflictPolicystring Ā· enumRequired `new-version` updates matching workflows and creates a new version, `fail` rejects the import when any matching workflow exists, and `skip` leaves matching workflows unchanged. Possible values: `new-version``fail``skip` workflowIdPolicystring Ā· enumOptional Controls the id each newly created workflow receives. `new` (default) mints a fresh id and records the package id as `sourceWorkflowId`, so the same package can be imported repeatedly without id collisions. `source` reuses the package's own workflow id on the target instance. Workflows matched to an existing workflow in the target project (status `updated` or `skipped`) always keep that workflow's current id, regardless of policy. Default: `new`Possible values: `new``source` workflowPublishingPolicystring Ā· enumOptional Controls whether imported workflows are published after content is written. `preserve-published-state` keeps new workflows inactive and republishes an updated workflow only when it was already published and the package workflow is published too, so drafts are never published. `match-source` follows the package workflow's published flag. `publish-all` publishes every imported workflow. `unpublish-all` leaves new workflows inactive and unpublishes updated workflows that were published. Default: `preserve-published-state`Possible values: `preserve-published-state``match-source``publish-all``unpublish-all` Responses 200 Import succeeded; the listed workflows were written to the target project. application/json packageobjectRequired Show properties workflowsobject\[\]Required Show properties credentialsobjectRequired Source credential ids grouped by whether they matched an existing credential or were created as stubs. Full source→target id mapping is in `bindings.credentials`. Show properties bindingsobjectRequired Source id → target id mappings produced during import, one map per entity type. Each value maps an id as it appeared in the package to the id on the target instance. Show properties 400 The request is invalid or provides malformed data. 401 Unauthorized 403 Forbidden 404 The specified resource was not found. 409 Import blocked, with at least one workflow source-id conflict among the issues. application/json 422 Import blocked by non-conflict issues only (e.g. unresolved credentials). application/json post/n8n-packages/import HTTP HTTPcURLJavaScriptPython 200 Import succeeded; the listed workflows were written to the target project. [PreviousFolders](https://docs.n8n.io/connect/n8n-api/folders) [NextModels](https://docs.n8n.io/connect/n8n-api/models) Last updated 10 days ago Was this helpful? * [postBeta: Export workflows as an n8n package](https://docs.n8n.io/connect/n8n-api/n8n-package#post-n8n-packages-export) * [postBeta: Import an n8n package into a project](https://docs.n8n.io/connect/n8n-api/n8n-package#post-n8n-packages-import) Was this helpful? Copy POST /api/v1/n8n-packages/export HTTP/1.1 X-N8N-API-KEY: YOUR_API_KEY Content-Type: application/json Accept: */* Content-Length: 36 { "workflowIds": [\ "2tUt1wbLX592XDdX"\ ] } Copy binary Copy POST /api/v1/n8n-packages/import HTTP/1.1 X-N8N-API-KEY: YOUR_API_KEY Content-Type: multipart/form-data Accept: */* Content-Length: 274 { "package": "binary", "projectId": "text", "folderId": "text", "credentialMatchingMode": "id-only", "credentialMissingMode": "create-stub", "credentialBindings": "{}", "workflowConflictPolicy": "new-version", "workflowIdPolicy": "new", "workflowPublishingPolicy": "preserve-published-state" } Copy { "package": { "sourceN8nVersion": "text", "sourceId": "text", "exportedAt": "2026-07-03T18:53:14.217Z" }, "workflows": [\ {\ "sourceWorkflowId": "text",\ "localId": "text",\ "name": "text",\ "projectId": "text",\ "parentFolderId": "text",\ "activeVersionId": "text",\ "publishing": {\ "state": "published",\ "error": "text",\ "blockedReason": "stub-credential",\ "skippedPublishReason": "stub-credential"\ },\ "status": "created"\ }\ ], "credentials": { "matched": [\ "text"\ ], "stubbed": [\ "text"\ ] }, "bindings": { "workflows": { "ANY_ADDITIONAL_PROPERTY": "text" }, "credentials": { "ANY_ADDITIONAL_PROPERTY": "text" } } } --- # Folders | Connect | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/connect/n8n-api/folders.md) . Operations about folders ### [](https://docs.n8n.io/connect/n8n-api/folders#get-projects-projectid-folders) Retrieve folders get/api/v1/projects/{projectId}/folders Retrieve folders within a project. Supports filtering, sorting, field selection, and pagination. Authorizations ApiKeyAuth ApiKeyAuthBearerAuth X-N8N-API-KEYstringRequired Path parameters projectIdstringRequired The ID of the project. Query parameters filterstringOptional JSON-encoded filter object. Supported fields — parentFolderId, name, tags (array of tag names), excludeFolderIdAndDescendants. Example: `{"parentFolderId":"abc123","name":"My Folder"}` selectstringOptional JSON-encoded array of fields to include. Valid fields — id, name, createdAt, updatedAt, project, tags, parentFolder, workflowCount, subFolderCount, path. Example: `["id","name","tags","workflowCount"]` sortBystring Ā· enumOptional Sort order for results. Possible values: `name:asc``name:desc``createdAt:asc``createdAt:desc``updatedAt:asc``updatedAt:desc` skipstringOptional Number of items to skip for pagination. Defaults to 0. takestringOptional Number of items to return. Defaults to 10. Responses 200 Operation successful. application/json countintegerOptional Total number of folders matching the query. dataobject Ā· folder\[\]Optional Show properties 400 The request is invalid or provides malformed data. 401 Unauthorized 403 Forbidden 404 The specified resource was not found. get/projects/{projectId}/folders HTTP HTTPcURLJavaScriptPython 200 Operation successful. ### [](https://docs.n8n.io/connect/n8n-api/folders#post-projects-projectid-folders) Create a folder post/api/v1/projects/{projectId}/folders Create a folder within a project. Authorizations ApiKeyAuth ApiKeyAuthBearerAuth X-N8N-API-KEYstringRequired Path parameters projectIdstringRequired The ID of the project. Body application/json application/json namestringRequiredExample: `My Folder` parentFolderIdstringOptionalExample: `abc123` Responses 201 Operation successful. application/json 400 The request is invalid or provides malformed data. 401 Unauthorized 403 Forbidden 404 The specified resource was not found. post/projects/{projectId}/folders HTTP HTTPcURLJavaScriptPython 201 Operation successful. ### [](https://docs.n8n.io/connect/n8n-api/folders#get-projects-projectid-folders-folderid) Get folder details get/api/v1/projects/{projectId}/folders/{folderId} Get folder details including sub-folder and workflow counts. Authorizations ApiKeyAuth ApiKeyAuthBearerAuth X-N8N-API-KEYstringRequired Path parameters projectIdstringRequired The ID of the project. folderIdstringRequired The ID of the folder. Responses 200 Operation successful. application/json idstringRead-onlyOptional namestringOptional parentFolderIdstring Ā· nullableOptional createdAtstring Ā· date-timeRead-onlyOptional updatedAtstring Ā· date-timeRead-onlyOptional totalSubFoldersintegerOptional Total number of sub-folders (recursive). totalWorkflowsintegerOptional Total number of workflows (recursive). 401 Unauthorized 403 Forbidden 404 The specified resource was not found. get/projects/{projectId}/folders/{folderId} HTTP HTTPcURLJavaScriptPython 200 Operation successful. ### [](https://docs.n8n.io/connect/n8n-api/folders#delete-projects-projectid-folders-folderid) Delete a folder delete/api/v1/projects/{projectId}/folders/{folderId} Delete a folder within a project. When `transferToFolderId` is provided, workflows and sub-folders are moved to the target folder before deletion. When omitted, workflows are moved to the project root and archived, and child folders are deleted. Authorizations ApiKeyAuth ApiKeyAuthBearerAuth X-N8N-API-KEYstringRequired Path parameters projectIdstringRequired The ID of the project. folderIdstringRequired The ID of the folder. Query parameters transferToFolderIdstringOptional Optional target folder ID to move workflows and sub-folders into before deleting. Responses 204 Operation successful. 400 The request is invalid or provides malformed data. 401 Unauthorized 403 Forbidden 404 The specified resource was not found. delete/projects/{projectId}/folders/{folderId} HTTP HTTPcURLJavaScriptPython 204 Operation successful. No content ### [](https://docs.n8n.io/connect/n8n-api/folders#patch-projects-projectid-folders-folderid) Update a folder patch/api/v1/projects/{projectId}/folders/{folderId} Update folder name or parent folder. Authorizations ApiKeyAuth ApiKeyAuthBearerAuth X-N8N-API-KEYstringRequired Path parameters projectIdstringRequired The ID of the project. folderIdstringRequired The ID of the folder. Body application/json application/json namestringOptionalExample: `Renamed Folder` parentFolderIdstringOptionalExample: `abc123` Responses 200 Operation successful. application/json idstringRead-onlyOptional namestringOptionalExample: `My Folder` parentFolderIdstring Ā· nullableOptional createdAtstring Ā· date-timeRead-onlyOptional updatedAtstring Ā· date-timeRead-onlyOptional 400 The request is invalid or provides malformed data. 401 Unauthorized 403 Forbidden 404 The specified resource was not found. patch/projects/{projectId}/folders/{folderId} HTTP HTTPcURLJavaScriptPython 200 Operation successful. [PreviousInsights](https://docs.n8n.io/connect/n8n-api/insights) [NextN8n Package](https://docs.n8n.io/connect/n8n-api/n8n-package) Last updated 10 days ago Was this helpful? * [getRetrieve folders](https://docs.n8n.io/connect/n8n-api/folders#get-projects-projectid-folders) * [postCreate a folder](https://docs.n8n.io/connect/n8n-api/folders#post-projects-projectid-folders) * [getGet folder details](https://docs.n8n.io/connect/n8n-api/folders#get-projects-projectid-folders-folderid) * [DELDelete a folder](https://docs.n8n.io/connect/n8n-api/folders#delete-projects-projectid-folders-folderid) * [patchUpdate a folder](https://docs.n8n.io/connect/n8n-api/folders#patch-projects-projectid-folders-folderid) Was this helpful? Copy GET /api/v1/projects/{projectId}/folders HTTP/1.1 X-N8N-API-KEY: YOUR_API_KEY Accept: */* Copy { "count": 1, "data": [\ {\ "id": "text",\ "name": "My Folder",\ "parentFolderId": "text",\ "createdAt": "2026-07-03T18:53:14.212Z",\ "updatedAt": "2026-07-03T18:53:14.212Z"\ }\ ] } Copy POST /api/v1/projects/{projectId}/folders HTTP/1.1 X-N8N-API-KEY: YOUR_API_KEY Content-Type: application/json Accept: */* Content-Length: 46 { "name": "My Folder", "parentFolderId": "abc123" } Copy { "id": "text", "name": "My Folder", "parentFolderId": "text", "createdAt": "2026-07-03T18:53:14.212Z", "updatedAt": "2026-07-03T18:53:14.212Z" } Copy GET /api/v1/projects/{projectId}/folders/{folderId} HTTP/1.1 X-N8N-API-KEY: YOUR_API_KEY Accept: */* Copy { "id": "text", "name": "text", "parentFolderId": "text", "createdAt": "2026-07-03T18:53:14.212Z", "updatedAt": "2026-07-03T18:53:14.212Z", "totalSubFolders": 1, "totalWorkflows": 1 } Copy DELETE /api/v1/projects/{projectId}/folders/{folderId} HTTP/1.1 X-N8N-API-KEY: YOUR_API_KEY Accept: */* Copy PATCH /api/v1/projects/{projectId}/folders/{folderId} HTTP/1.1 X-N8N-API-KEY: YOUR_API_KEY Content-Type: application/json Accept: */* Content-Length: 51 { "name": "Renamed Folder", "parentFolderId": "abc123" } Copy { "id": "text", "name": "My Folder", "parentFolderId": "text", "createdAt": "2026-07-03T18:53:14.212Z", "updatedAt": "2026-07-03T18:53:14.212Z" } --- # Tutorial: Build a declarative-style node | Connect | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/connect/create-nodes/build-your-node/tutorial-build-a-declarative-style-node.md) . This tutorial walks through building a declarative-style node. Before you begin, make sure this is the node style you need. Refer to [Choose your node building approach](https://docs.n8n.io/connect/create-nodes/plan-your-node/choose-a-node-building-style) for more information. [](https://docs.n8n.io/connect/create-nodes/build-your-node/tutorial-build-a-declarative-style-node#prerequisites) Prerequisites ------------------------------------------------------------------------------------------------------------------------------------- You need the following installed on your development machine: * [git](https://git-scm.com/downloads) * Node.js and npm. Minimum version Node 18.17.0. You can find instructions on how to install both using nvm (Node Version Manager) for Linux, Mac, and WSL [here](https://github.com/nvm-sh/nvm) . For Windows users, refer to Microsoft's guide to [Install NodeJS on Windows](https://docs.microsoft.com/en-us/windows/dev-environment/javascript/nodejs-on-windows) . You need some understanding of: * JavaScript/TypeScript * REST APIs * git [](https://docs.n8n.io/connect/create-nodes/build-your-node/tutorial-build-a-declarative-style-node#build-your-node) Build your node ----------------------------------------------------------------------------------------------------------------------------------------- In this section, you'll clone n8n's node starter repository, and build a node that integrates the [NASA API](https://api.nasa.gov/) . You'll create a node that uses two of NASA's services: APOD (Astronomy Picture of the Day) and Mars Rover Photos. To keep the code examples short, the node won't implement every available option for the Mars Rover Photos endpoint. **Existing node** n8n has a built-in NASA node. To avoid clashing with the existing node, you'll give your version a different name. ### [](https://docs.n8n.io/connect/create-nodes/build-your-node/tutorial-build-a-declarative-style-node#step-1-set-up-the-project) Step 1: Set up the project n8n provides a starter repository for node development. Using the starter ensures you have all necessary dependencies. It also provides a linter. Clone the repository and navigate into the directory: 1. [Generate a new repository](https://github.com/n8n-io/n8n-nodes-starter/generate) from the template repository. 2. Clone your new repository: `shell git clone https://github.com//.git n8n-nodes-nasa-pics cd n8n-nodes-nasa-pics` The starter contains example nodes and credentials. Delete the following directories and files: * `nodes/Example` * `nodes/GithubIssues` * `credentials/GithubIssuesApi.credentials.ts` * `credentials/GithubIssuesOAuth2Api.credentials.ts` Now create the following directories and files: `nodes/NasaPics` `nodes/NasaPics/NasaPics.node.json` `nodes/NasaPics/NasaPics.node.ts` `credentials/NasaPicsApi.credentials.ts` These are the key files required for any node. Refer to [Node file structure](https://docs.n8n.io/connect/create-nodes/plan-your-node/choose-node-file-structure) for more information on required files and recommended organization. Now install the project dependencies: ### [](https://docs.n8n.io/connect/create-nodes/build-your-node/tutorial-build-a-declarative-style-node#step-2-add-an-icon) Step 2: Add an icon Save the NASA SVG logo from [here](https://upload.wikimedia.org/wikipedia/commons/e/e5/NASA_logo.svg) as `nasapics.svg` in `nodes/NasaPics/`. n8n recommends using an SVG for your node icon, but you can also use PNG. If using PNG, the icon resolution should be 60x60px. Node icons should have a square or near-square aspect ratio. **Don't reference Font Awesome** If you want to use a Font Awesome icon in your node, download and embed the image. ### [](https://docs.n8n.io/connect/create-nodes/build-your-node/tutorial-build-a-declarative-style-node#step-3-create-the-node) Step 3: Create the node Every node must have a base file. Refer to [Node base file](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/base-files) for detailed information about base file parameters. In this example, the file is `NasaPics.node.ts`. To keep this tutorial short, you'll place all the node functionality in this one file. When building more complex nodes, you should consider splitting out your functionality into modules. Refer to [Node file structure](https://docs.n8n.io/connect/create-nodes/plan-your-node/choose-node-file-structure) for more information. #### [](https://docs.n8n.io/connect/create-nodes/build-your-node/tutorial-build-a-declarative-style-node#step-31-imports) Step 3.1: Imports Start by adding the import statements: #### [](https://docs.n8n.io/connect/create-nodes/build-your-node/tutorial-build-a-declarative-style-node#step-32-create-the-main-class) Step 3.2: Create the main class The node must export an interface that implements INodeType. This interface must include a `description` interface, which in turn contains the `properties` array. **Class names and file names** Make sure the class name and the file name match. For example, given a class `NasaPics`, the filename must be `NasaPics.node.ts`. #### [](https://docs.n8n.io/connect/create-nodes/build-your-node/tutorial-build-a-declarative-style-node#step-33-add-node-details) Step 3.3: Add node details All nodes need some basic parameters, such as their display name, icon, and the basic information for making a request using the node. Add the following to the `description`: n8n uses some of the properties set in `description` to render the node in the Editor UI. These properties are `displayName`, `icon`, `description`, and `subtitle`. #### [](https://docs.n8n.io/connect/create-nodes/build-your-node/tutorial-build-a-declarative-style-node#step-34-add-resources) Step 3.4: Add resources The resource object defines the API resource that the node uses. In this tutorial, you're creating a node to access two of NASA's API endpoints: `planetary/apod` and `mars-photos`. This means you need to define two resource options in `NasaPics.node.ts`. Update the `properties` array with the resource object: `type` controls which UI element n8n displays for the resource, and tells n8n what type of data to expect from the user. `options` results in n8n adding a dropdown that allows users to choose one option. Refer to [Node UI elements](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/node-ui-elements) for more information. #### [](https://docs.n8n.io/connect/create-nodes/build-your-node/tutorial-build-a-declarative-style-node#step-35-add-operations) Step 3.5: Add operations The operations object defines the available operations on a resource. In a declarative-style node, the operations object includes `routing` (within the `options` array). This sets up the details of the API call. Add the following to the `properties` array, after the `resource` object: This code creates two operations: one to get today's APOD image, and another to send a get request for photos from one of the Mars Rovers. The object named `roverName` requires the user to choose which Rover they want photos from. The `routing` object in the Mars Rover operation references this to create the URL for the API call. #### [](https://docs.n8n.io/connect/create-nodes/build-your-node/tutorial-build-a-declarative-style-node#step-36-optional-fields) Step 3.6: Optional fields Most APIs, including the NASA API that you're using in this example, have optional fields you can use to refine your query. To avoid overwhelming users, n8n displays these under **Additional Fields** in the UI. For this tutorial, you'll add one additional field, to allow users to pick a date to use with the APOD endpoint. Add the following to the properties array: ### [](https://docs.n8n.io/connect/create-nodes/build-your-node/tutorial-build-a-declarative-style-node#step-4-set-up-authentication-and-a-credential-test) Step 4: Set up authentication and a credential test The NASA API requires users to authenticate with an API key. You can also send a request to check that the API key works. Add the following to `nasaPicsApi.credentials.ts`: For more information about credentials files and options, refer to [Credentials file](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/credentials-files) . ### [](https://docs.n8n.io/connect/create-nodes/build-your-node/tutorial-build-a-declarative-style-node#step-5-add-node-metadata) Step 5: Add node metadata Metadata about your node goes in the JSON file at the root of your node. n8n refers to this as the codex file. In this example, the file is `NasaPics.node.json`. Add the following code to the JSON file: For more information on these parameters, refer to [Node codex files](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/codex-files) . ### [](https://docs.n8n.io/connect/create-nodes/build-your-node/tutorial-build-a-declarative-style-node#step-6-update-the-npm-package-details) Step 6: Update the npm package details Your npm package details are in the `package.json` at the root of the project. It's essential to include the `n8n` object with links to the credentials and base node file. Update this file to include the following information: You need to update the `package.json` to include your own information, such as your name and repository URL. For more information on npm `package.json` files, refer to [npm's package.json documentation](https://docs.npmjs.com/cli/v8/configuring-npm/package-json) . [](https://docs.n8n.io/connect/create-nodes/build-your-node/tutorial-build-a-declarative-style-node#test-your-node) Test your node --------------------------------------------------------------------------------------------------------------------------------------- You can test your node as you build it by running it in a local n8n instance. 1. Install n8n using npm: 1. When you are ready to test your node, publish it locally: 1. Install the node into your local n8n instance: **Check your directory** 1. Start n8n: 1. Open n8n in your browser. You should see your nodes when you search for them in the nodes panel. **Node names** #### [](https://docs.n8n.io/connect/create-nodes/build-your-node/tutorial-build-a-declarative-style-node#troubleshooting) Troubleshooting If there's no `custom` directory in your `.n8n` local installation, you have to create the `custom` directory manually and run `npm init`. The `.n8n` directory location depends on your operating system: * For Windows: `C:\Users\\.n8n\custom` * For Linux: `/home//.n8n/custom` * For MacOS: `/Users//.n8n/custom` Note: The `.n8n` folder is a hidden folder so it may not appear in your file browser. [](https://docs.n8n.io/connect/create-nodes/build-your-node/tutorial-build-a-declarative-style-node#next-steps) Next steps ------------------------------------------------------------------------------------------------------------------------------- * [Deploy your node](https://docs.n8n.io/connect/create-nodes/deploy-your-node) . * View an example of a declarative node: n8n's [Brevo node](https://github.com/n8n-io/n8n/tree/master/packages/nodes-base/nodes/Brevo) . Note that the main node is declarative, while the trigger node is in programmatic style. * Learn about [node versioning](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/versioning) . [PreviousUsing the n8n-node tool](https://docs.n8n.io/connect/create-nodes/build-your-node/using-the-n8n-node-tool) [NextTutorial: Build a programmatic-style node](https://docs.n8n.io/connect/create-nodes/build-your-node/tutorial-build-a-programmatic-style-node) Last updated 9 days ago Was this helpful? * [Prerequisites](https://docs.n8n.io/connect/create-nodes/build-your-node/tutorial-build-a-declarative-style-node#prerequisites) * [Build your node](https://docs.n8n.io/connect/create-nodes/build-your-node/tutorial-build-a-declarative-style-node#build-your-node) * [Step 1: Set up the project](https://docs.n8n.io/connect/create-nodes/build-your-node/tutorial-build-a-declarative-style-node#step-1-set-up-the-project) * [Step 2: Add an icon](https://docs.n8n.io/connect/create-nodes/build-your-node/tutorial-build-a-declarative-style-node#step-2-add-an-icon) * [Step 3: Create the node](https://docs.n8n.io/connect/create-nodes/build-your-node/tutorial-build-a-declarative-style-node#step-3-create-the-node) * [Step 4: Set up authentication and a credential test](https://docs.n8n.io/connect/create-nodes/build-your-node/tutorial-build-a-declarative-style-node#step-4-set-up-authentication-and-a-credential-test) * [Step 5: Add node metadata](https://docs.n8n.io/connect/create-nodes/build-your-node/tutorial-build-a-declarative-style-node#step-5-add-node-metadata) * [Step 6: Update the npm package details](https://docs.n8n.io/connect/create-nodes/build-your-node/tutorial-build-a-declarative-style-node#step-6-update-the-npm-package-details) * [Test your node](https://docs.n8n.io/connect/create-nodes/build-your-node/tutorial-build-a-declarative-style-node#test-your-node) * [Next steps](https://docs.n8n.io/connect/create-nodes/build-your-node/tutorial-build-a-declarative-style-node#next-steps) Was this helpful? Copy npm i Copy import { NodeConnectionTypes } from 'n8n-workflow'; import type { INodeType, INodeTypeDescription } from 'n8n-workflow'; Copy export class NasaPics implements INodeType { description: INodeTypeDescription = { // Basic node details will go here properties: [\ // Resources and operations will go here\ ] }; } Copy displayName: 'NASA Pics', name: 'nasaPics', icon: 'file:nasapics.svg', group: ['transform'], version: 1, subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}', description: 'Get data from NASAs API', defaults: { name: 'NASA Pics', }, usableAsTool: true, inputs: [ NodeConnectionTypes.Main ], outputs: [ NodeConnectionTypes.Main ], credentials: [\ {\ name: 'NasaPicsApi',\ required: true,\ },\ ], requestDefaults: { baseURL: 'https://api.nasa.gov', headers: { Accept: 'application/json', 'Content-Type': 'application/json', }, }, Copy properties: [\ {\ displayName: 'Resource',\ name: 'resource',\ type: 'options',\ noDataExpression: true,\ options: [\ {\ name: 'Astronomy Picture of the Day',\ value: 'astronomyPictureOfTheDay',\ },\ {\ name: 'Mars Rover Photos',\ value: 'marsRoverPhotos',\ },\ ],\ default: 'astronomyPictureOfTheDay',\ },\ // Operations will go here\ \ ] Copy { displayName: 'Operation', name: 'operation', type: 'options', noDataExpression: true, displayOptions: { show: { resource: [\ 'astronomyPictureOfTheDay',\ ], }, }, options: [\ {\ name: 'Get',\ value: 'get',\ action: 'Get the APOD',\ description: 'Get the Astronomy Picture of the day',\ routing: {\ request: {\ method: 'GET',\ url: '/planetary/apod',\ },\ },\ },\ ], default: 'get', }, { displayName: 'Operation', name: 'operation', type: 'options', noDataExpression: true, displayOptions: { show: { resource: [\ 'marsRoverPhotos',\ ], }, }, options: [\ {\ name: 'Get',\ value: 'get',\ action: 'Get Mars Rover photos',\ description: 'Get photos from the Mars Rover',\ routing: {\ request: {\ method: 'GET',\ },\ },\ },\ ], default: 'get', }, { displayName: 'Rover name', description: 'Choose which Mars Rover to get a photo from', required: true, name: 'roverName', type: 'options', options: [\ {name: 'Curiosity', value: 'curiosity'},\ {name: 'Opportunity', value: 'opportunity'},\ {name: 'Perseverance', value: 'perseverance'},\ {name: 'Spirit', value: 'spirit'},\ ], routing: { request: { url: '=/mars-photos/api/v1/rovers/{{$value}}/photos', }, }, default: 'curiosity', displayOptions: { show: { resource: [\ 'marsRoverPhotos',\ ], }, }, }, { displayName: 'Date', description: 'Earth date', required: true, name: 'marsRoverDate', type: 'dateTime', default:'', displayOptions: { show: { resource: [\ 'marsRoverPhotos',\ ], }, }, routing: { request: { // You've already set up the URL. qs appends the value of the field as a query string qs: { earth_date: '={{ new Date($value).toISOString().substr(0,10) }}', }, }, }, }, // Optional/additional fields will go here Copy { displayName: 'Additional Fields', name: 'additionalFields', type: 'collection', default: {}, placeholder: 'Add Field', displayOptions: { show: { resource: [\ 'astronomyPictureOfTheDay',\ ], operation: [\ 'get',\ ], }, }, options: [\ {\ displayName: 'Date',\ name: 'apodDate',\ type: 'dateTime',\ default: '',\ routing: {\ request: {\ // You've already set up the URL. qs appends the value of the field as a query string\ qs: {\ date: '={{ new Date($value).toISOString().substr(0,10) }}',\ },\ },\ },\ },\ ], } Copy import { IAuthenticateGeneric, ICredentialTestRequest, ICredentialType, INodeProperties, } from 'n8n-workflow'; export class NasaPicsApi implements ICredentialType { name = 'NasaPicsApi'; displayName = 'NASA Pics API'; // Uses the link to this tutorial as an example // Replace with your own docs links when building your own nodes documentationUrl = 'https://docs.n8n.io/integrations/creating-nodes/build/declarative-style-node/'; properties: INodeProperties[] = [\ {\ displayName: 'API Key',\ name: 'apiKey',\ type: 'string',\ default: '',\ },\ ]; authenticate: IAuthenticateGeneric = { type: 'generic', properties: { qs: { 'api_key': '={{$credentials.apiKey}}' } }, }; test: ICredentialTestRequest = { request: { baseURL: 'https://api.nasa.gov', url: '/apod', }, }; } Copy { "node": "n8n-nodes-nasapics", "nodeVersion": "1.0", "codexVersion": "1.0", "categories": [\ "Miscellaneous"\ ], "resources": { "credentialDocumentation": [\ {\ "url": ""\ }\ ], "primaryDocumentation": [\ {\ "url": ""\ }\ ] } } Copy { // All node names must start with "n8n-nodes-" "name": "n8n-nodes-nasapics", "version": "0.1.0", "description": "n8n node to call NASA's APOD and Mars Rover Photo services.", "keywords": [\ // This keyword is required for community nodes\ "n8n-community-node-package"\ ], "license": "MIT", "homepage": "https://n8n.io", "author": { "name": "Test", "email": "test@example.com" }, "repository": { "type": "git", // Change the git remote to your own repository // Add the new URL here "url": "git+" }, "main": "index.js", "scripts": { // don't change }, "files": [\ "dist"\ ], // Link the credentials and node "n8n": { "n8nNodesApiVersion": 1, "credentials": [\ "dist/credentials/NasaPicsApi.credentials.js"\ ], "nodes": [\ "dist/nodes/NasaPics/NasaPics.node.js"\ ] }, "devDependencies": { // don't change }, "peerDependencies": { // don't change } } Copy npm install n8n -g Copy # In your node directory npm run build npm link Copy # In the nodes directory within your n8n installation # node-package-name is the name from the package.json npm link Copy Make sure you run `npm link ` in the nodes directory within your n8n installation. The default location depends on your operating system: - For Windows: `C:\Users\\.n8n\custom` - For Linux: `/home//.n8n/custom` - For MacOS: `/Users//.n8n/custom` If your n8n installation set a different name using `N8N_CUSTOM_EXTENSIONS`, use that custom directory instead. Note: The `.n8n` folder is a hidden folder so it may not appear in your file browser. Copy n8n start Copy Make sure you search using the node name, not the package name. For example, if your npm package name is `n8n-nodes-weather-nodes`, and the package contains nodes named `rain`, `sun`, `snow`, you should search for `rain`, not `weather-nodes`. Copy # Navigate to your .n8n directory and run: mkdir custom cd custom npm init --- # Community edition features | Deploy | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/deploy/host-n8n/community-edition-features.md) . The community edition includes almost the complete feature set of n8n, except for the features listed here. The community edition doesn't include these features: * [Custom Variables](https://docs.n8n.io/build/code-in-n8n/define-custom-variables) * [Environments](https://docs.n8n.io/administer/use-source-control-and-environments) * [External secrets](https://docs.n8n.io/administer/manage-credentials/use-external-secret-stores) * [External storage for binary data](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/use-external-storage) * [Log streaming](https://docs.n8n.io/administer/observe-and-log/stream-logs-to-external-systems) ([Logging](https://docs.n8n.io/deploy/host-n8n/keep-n8n-running/set-up-logging) _is_ included) * [Multi-main mode](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/enable-queue-mode#multi-main-setup) ([Queue mode](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/enable-queue-mode) _is_ included) * [Projects](https://docs.n8n.io/administer/manage-users-and-access/set-permissions-and-roles-rbac/organize-work-in-projects) * SSO ([SAML](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/configure-sso) , [LDAP](https://docs.n8n.io/administer/manage-users-and-access/verify-user-identity/connect-ldap) ) * Sharing ([workflows](https://docs.n8n.io/build/manage-workflows/share-with-others) , [credentials](https://docs.n8n.io/administer/manage-credentials/share-credentials-securely) ) (Only the instance owner and the user who creates them can access workflows and credentials) * [Version control using Git](https://docs.n8n.io/administer/use-source-control-and-environments) These features are available on: the Enterprise Cloud plan, including the self-hosted Enterprise edition. Some of these features are available on the Starter and Pro Cloud plans, and the Business self-hosted plan. See [pricing](https://n8n.io/pricing/) for reference. [](https://docs.n8n.io/deploy/host-n8n/community-edition-features#registered-community-edition) Registered Community Edition --------------------------------------------------------------------------------------------------------------------------------- You can unlock extra features by registering your n8n community edition. You register with your email and receive a license key. Registering unlocks these features for the community edition: * Folders: Organize your workflows into tidy folders * [Debug in editor](https://docs.n8n.io/build/understand-workflows/understand-executions/debug-executions) : Copy and pin execution data when working on a workflow * [Custom execution data](https://docs.n8n.io/build/understand-workflows/understand-executions/customize-executions-data) : Save, find, and annotate execution metadata To register a new community edition instance, select the option during your initial account creation. To register an existing community edition instance: 1. Select the **three dots icon** ![three dots icon](https://docs.n8n.io/~gitbook/image?url=https%3A%2F%2F2773773108-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252Fjm0ZYRpZIPWge2ZSiDYO%252Fuploads%252Fgit-blob-513566d28f893c602d89d96c0a06037329725e61%252Fthree-dots-horizontal.png%3Falt%3Dmedia&width=54&dpr=3&quality=100&sign=35eb580b&sv=2) in the lower-left corner. 2. Select **Settings** and then **Usage and plan**. 3. Select **Unlock** to enter your email and then select **Send me a free license key**. 4. Check your email for the account you entered. Once you have a license key, activate it by clicking the button in the license email or by visiting **Options > Settings > Usage and plan** and selecting **Enter activation key**. Once activated, your license will not expire. We may change the unlocked features in the future. This will not impact previously unlocked features. [PreviousDeploy with the AI starter kit](https://docs.n8n.io/deploy/host-n8n/deploy-with-the-ai-starter-kit) Last updated 9 days ago Was this helpful? Was this helpful? --- # Retrieve relevant context | Build | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/build/integrate-ai/understand-ai-components/retrieve-relevant-context.md) . [](https://docs.n8n.io/build/integrate-ai/understand-ai-components/retrieve-relevant-context#what-is-rag) What is RAG -------------------------------------------------------------------------------------------------------------------------- Retrieval-Augmented Generation (RAG) is a technique that improves AI responses by combining language models with external data sources. Instead of relying solely on the model's internal training data, RAG systems retrieve relevant documents to ground responses in up-to-date, domain-specific, or proprietary knowledge. RAG workflows typically rely on vector stores to manage and search this external data efficiently. [](https://docs.n8n.io/build/integrate-ai/understand-ai-components/retrieve-relevant-context#what-is-a-vector-store) What is a vector store? ------------------------------------------------------------------------------------------------------------------------------------------------- A vector store is a special database designed to store and search high-dimensional vectors: numerical representations of text, images, or other data. When you upload a document, the vector store splits it into chunks and converts each chunk into a vector using an embedding model. You can query these vectors using similarity searches, which construct results based on _semantic meaning_, rather than keyword matches. This makes vector stores a powerful foundation for RAG and other AI systems that need to retrieve and reason over large sets of knowledge. [](https://docs.n8n.io/build/integrate-ai/understand-ai-components/retrieve-relevant-context#how-to-use-rag-in-n8n) How to use RAG in n8n ---------------------------------------------------------------------------------------------------------------------------------------------- **Start with a RAG template** šŸ‘‰ Try out RAG in n8n with the [RAG Starter Template](https://n8n.io/workflows/5010-rag-starter-template-using-simple-vector-stores-form-trigger-and-openai) . The template includes two ready-made workflows: one for uploading files and one for querying them. ### [](https://docs.n8n.io/build/integrate-ai/understand-ai-components/retrieve-relevant-context#inserting-data-into-your-vector-store) Inserting data into your vector store Before your agent can access custom knowledge, you need to upload that data to a vector store: 1. Add the nodes needed to fetch your source data. 2. Insert a **Vector Store** node (e.g. the [Simple Vector Store](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.vectorstoreinmemory) ) and choose the **Insert Documents** operation. 3. Select an **embedding model**, which converts your text into vector embeddings. Consult the FAQ for more information on [choosing the right embedding model](https://docs.n8n.io/build/integrate-ai/understand-ai-components/retrieve-relevant-context#how-do-i-choose-the-right-embedding-model) . 4. Add a [Default Data Loader](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.documentdefaultdataloader) node, which splits your content into chunks. You can use the default settings or define your own chunking strategy: * **Character Text Splitter:** splits by character length. * **Recursive Character Text Splitter:** recursively splits by Markdown, HTML, code blocks or simple characters (recommended for most use cases). * **Token Text Splitter:** splits by token count. 5. (Optional) Add **metadata** to each chunk to enrich the context and allow better filtering later. ### [](https://docs.n8n.io/build/integrate-ai/understand-ai-components/retrieve-relevant-context#querying-your-data) Querying your data You can query the data in two main ways: using an agent or directly through a node. ### [](https://docs.n8n.io/build/integrate-ai/understand-ai-components/retrieve-relevant-context#using-agents) Using agents 1. Add an [agent](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent) to your workflow. 2. Add the vector store as a **tool** and give it a **description** to help the agent understand when to use it: * Set the **limit** to define how many chunks to return. * Enable **Include Metadata** to provide extra context for each chunk. 3. Add the same **embedding model** you used when inserting the data. **Pro tip** To save tokens on an expensive model, you can first use the [Vector Store Question Answer tool](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolvectorstore) to retrieve relevant data, and only then pass the result to the Agent. To see this in action, check out [this template](https://n8n.io/workflows/5011-save-costs-in-rag-workflows-using-the-qanda-tool-with-multiple-models) . ### [](https://docs.n8n.io/build/integrate-ai/understand-ai-components/retrieve-relevant-context#using-the-node-directly) Using the node directly 1. Add your vector store node to the canvas and choose the **Get Many** operation. 2. Enter a query or prompt: * Set a **limit** for how many chunks to return. * Enable **Include Metadata** if needed. [](https://docs.n8n.io/build/integrate-ai/understand-ai-components/retrieve-relevant-context#faqs) FAQs ------------------------------------------------------------------------------------------------------------ ### [](https://docs.n8n.io/build/integrate-ai/understand-ai-components/retrieve-relevant-context#how-do-i-choose-the-right-embedding-model) How do I choose the right embedding model? The right embedding model differs from case to case. In general, smaller models (for example, `text-embedding-ada-002`) are faster and cheaper and thus ideal for short, general-purpose documents or lightweight RAG workflows. Larger models (for example, `text-embedding-3-large`) offer better semantic understanding. These are best for long documents, complex topics, or when accuracy is critical. ### [](https://docs.n8n.io/build/integrate-ai/understand-ai-components/retrieve-relevant-context#what-is-the-best-text-splitting-for-my-use-case) What is the best text splitting for my use case? This again depends a lot on your data: * Small chunks (for example, 200 to 500 tokens) are good for fine-grained retrieval. * Large chunks may carry more context but can become diluted or noisy. Using the right overlap size is important for the AI to understand the context of the chunk. That's also why using the Markdown or Code Block splitting can often help to make chunks better. Another good approach is to add more context to it (for example, about the document where the chunk came from). If you want you can read more about this, you can check out [this great article from Anthropic](https://www.anthropic.com/news/contextual-retrieval) . [PreviousStore and search data with vectors](https://docs.n8n.io/build/integrate-ai/understand-ai-components/store-and-search-data-with-vectors) [NextAgents vs chains](https://docs.n8n.io/build/integrate-ai/understand-ai-components/agents-vs-chains) Last updated 9 days ago Was this helpful? * [What is RAG](https://docs.n8n.io/build/integrate-ai/understand-ai-components/retrieve-relevant-context#what-is-rag) * [What is a vector store?](https://docs.n8n.io/build/integrate-ai/understand-ai-components/retrieve-relevant-context#what-is-a-vector-store) * [How to use RAG in n8n](https://docs.n8n.io/build/integrate-ai/understand-ai-components/retrieve-relevant-context#how-to-use-rag-in-n8n) * [Inserting data into your vector store](https://docs.n8n.io/build/integrate-ai/understand-ai-components/retrieve-relevant-context#inserting-data-into-your-vector-store) * [Querying your data](https://docs.n8n.io/build/integrate-ai/understand-ai-components/retrieve-relevant-context#querying-your-data) * [Using agents](https://docs.n8n.io/build/integrate-ai/understand-ai-components/retrieve-relevant-context#using-agents) * [Using the node directly](https://docs.n8n.io/build/integrate-ai/understand-ai-components/retrieve-relevant-context#using-the-node-directly) * [FAQs](https://docs.n8n.io/build/integrate-ai/understand-ai-components/retrieve-relevant-context#faqs) * [How do I choose the right embedding model?](https://docs.n8n.io/build/integrate-ai/understand-ai-components/retrieve-relevant-context#how-do-i-choose-the-right-embedding-model) * [What is the best text splitting for my use case?](https://docs.n8n.io/build/integrate-ai/understand-ai-components/retrieve-relevant-context#what-is-the-best-text-splitting-for-my-use-case) Was this helpful? --- # Verify user emails | Deploy | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/verify-user-emails.md) . You can require all new accounts to be verified by email. This prevents malicious admins from registering accounts without email verification. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/verify-user-emails#prerequisites) Prerequisites ------------------------------------------------------------------------------------------------------------------ * SMTP must be set up and n8n must be able to send emails. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/verify-user-emails#how-to-restrict-account-registration) How to restrict account registration ---------------------------------------------------------------------------------------------------------------------------------------------------------------- Set the environment variable `N8N_INVITE_LINKS_EMAIL_ONLY` to `true`. This locks down your instance so that only users with verified email addresses can register. For more details on configuring SMTP, see [Set up SMTP](https://docs.n8n.io/deploy/host-n8n/configure-n8n/user-management#step-one-smtp) . [PreviousHarden task runners](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/harden-task-runners) [NextEnable SSRF protection](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/enable-ssrf-protection) Last updated 10 days ago Was this helpful? * [Prerequisites](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/verify-user-emails#prerequisites) * [How to restrict account registration](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/verify-user-emails#how-to-restrict-account-registration) Was this helpful? --- # Set up SSL | Deploy | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/set-up-ssl.md) . There are two methods to support TLS/SSL in n8n. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/set-up-ssl#use-a-reverse-proxy-recommended) Use a reverse proxy (recommended) ------------------------------------------------------------------------------------------------------------------------------------------------ Use a reverse proxy like [Traefik](https://doc.traefik.io/traefik/) or a Network Load Balancer (NLB) in front of the n8n instance. This should also take care of certificate renewals. Refer to [Security | Data encryption](https://n8n.io/legal/#security) for more information. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/set-up-ssl#pass-certificates-into-n8n-directly) Pass certificates into n8n directly ------------------------------------------------------------------------------------------------------------------------------------------------------ You can also choose to pass certificates into n8n directly. To do so, set the `N8N_SSL_CERT` and `N8N_SSL_KEY` environment variables to point to your generated certificate and key file. You'll need to make sure the certificate stays renewed and up to date. Refer to [Deployment environment variables](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/deployment) for more information on these variables and [Configuration](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration) for more information on setting environment variables. [PreviousManage security policies](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/manage-security-policies) [NextConfigure SSO](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/configure-sso) Last updated 10 days ago Was this helpful? * [Use a reverse proxy (recommended)](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/set-up-ssl#use-a-reverse-proxy-recommended) * [Pass certificates into n8n directly](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/set-up-ssl#pass-certificates-into-n8n-directly) Was this helpful? --- # Control telemetry | Deploy | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/control-telemetry.md) . n8n collects anonymous telemetry data from self-hosted n8n installations. You can opt out of data telemetry collection. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/control-telemetry#collected-data) Collected data ------------------------------------------------------------------------------------------------------------------- Refer to [Privacy | Data collection in self-hosted n8n](https://docs.n8n.io/privacy-and-security#data-collection-in-self-hosted-n8n) for details on the data n8n collects. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/control-telemetry#how-collection-works) How collection works ------------------------------------------------------------------------------------------------------------------------------- n8n sends most data when events occur. Workflow execution counts and an instance pulse are sent periodically (every 6 hours). [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/control-telemetry#opting-out-of-data-collection) Opting out of data collection ------------------------------------------------------------------------------------------------------------------------------------------------- n8n enables telemetry collection by default. To disable it, configure the following environment variables. ### [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/control-telemetry#opt-out-of-telemetry-events) Opt out of telemetry events To opt out of diagnostic telemetry, set the `N8N_DIAGNOSTICS_ENABLED` environment variable to false: Copy export N8N_DIAGNOSTICS_ENABLED=false ### [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/control-telemetry#opt-out-of-checking-for-new-versions-of-n8n) Opt out of checking for new versions of n8n To opt out of version notifications, set the `N8N_VERSION_NOTIFICATIONS_ENABLED` environment variable to false: Copy export N8N_VERSION_NOTIFICATIONS_ENABLED=false [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/control-telemetry#disable-all-connection-to-n8n-servers) Disable all connection to n8n servers ----------------------------------------------------------------------------------------------------------------------------------------------------------------- To prevent all communication with n8n's servers, refer to [Isolate n8n](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/configuration-examples/isolate-n8n) . [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/control-telemetry#related-resources) Related resources ------------------------------------------------------------------------------------------------------------------------- * [Deployment environment variables](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/deployment) : More information on these environment variables. * [Configuration](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration) : How to set environment variables. [PreviousDisable the public API](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/disable-the-public-api) [NextBlock specific nodes](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/block-specific-nodes) Last updated 20 hours ago Was this helpful? * [Collected data](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/control-telemetry#collected-data) * [How collection works](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/control-telemetry#how-collection-works) * [Opting out of data collection](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/control-telemetry#opting-out-of-data-collection) * [Opt out of telemetry events](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/control-telemetry#opt-out-of-telemetry-events) * [Opt out of checking for new versions of n8n](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/control-telemetry#opt-out-of-checking-for-new-versions-of-n8n) * [Disable all connection to n8n servers](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/control-telemetry#disable-all-connection-to-n8n-servers) * [Related resources](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/control-telemetry#related-resources) Was this helpful? --- # Harden task runners | Deploy | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/harden-task-runners.md) . [Task runners](https://docs.n8n.io/deploy/host-n8n/configure-n8n/set-up-task-runners) are responsible for executing code from the [Code node](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code) . While Code node executions are secure, you can follow these recommendations to further harden your task runners. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/harden-task-runners#run-task-runners-as-sidecars-in-external-mode) Run task runners as sidecars in external mode ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- To increase the isolation between the core n8n process and code in the Code node, run task runners in [external mode](https://docs.n8n.io/deploy/host-n8n/configure-n8n/set-up-task-runners#setting-up-external-mode) . External task runners launch as separate containers, providing a fully isolated environment to execute the JavaScript defined in the Code node. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/harden-task-runners#use-the-distroless-image) Use the distroless image ----------------------------------------------------------------------------------------------------------------------------------------- For a reduced attack surface, use the distroless Docker image variant. Distroless images contain only the application and its runtime dependencies, excluding package managers, shells, and other utilities that aren't needed at runtime. To use the distroless image, append the `-distroless` suffix to the Docker tag. For example: `2.4.6-distroless`. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/harden-task-runners#run-as-the-nobody-user) Run as the nobody user ------------------------------------------------------------------------------------------------------------------------------------- For improved security, configure task runners to run as the unprivileged `nobody` user with user and group ID 65532. This prevents the container process from running with root privileges and limits potential damage from security vulnerabilities. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/harden-task-runners#configure-read-only-root-filesystem) Configure read-only root filesystem --------------------------------------------------------------------------------------------------------------------------------------------------------------- Configure a [read-only root filesystem](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) to prevent any modifications to the container's filesystem at runtime. This helps protect against malicious code that might attempt to modify system files. Task runners still require some temporary storage for operation. To accommodate this, mount a minimal `emptyDir` volume to `/tmp`. If your workflows require more temporary space, increase the size of the volume accordingly. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/harden-task-runners#configure-an-apparmor-profile) Configure an AppArmor profile --------------------------------------------------------------------------------------------------------------------------------------------------- As a defence-in-depth measure, apply an [AppArmor](https://apparmor.net/) profile to prevent the task runner container from reading sensitive `/proc` files such as `environ` and `mounts`. These files can expose environment variables, including secrets and credentials, to code running inside the container. Refer to the [Kubernetes AppArmor documentation](https://kubernetes.io/docs/tutorials/security/apparmor/) for how to apply a profile to a pod. Add the following rule to your AppArmor profile: This denies and logs any attempt to read, write, or link to per-process `environ` and `mounts` files. [PreviousBlock specific nodes](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/block-specific-nodes) [NextVerify user emails](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/verify-user-emails) Last updated 10 days ago Was this helpful? * [Run task runners as sidecars in external mode](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/harden-task-runners#run-task-runners-as-sidecars-in-external-mode) * [Use the distroless image](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/harden-task-runners#use-the-distroless-image) * [Run as the nobody user](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/harden-task-runners#run-as-the-nobody-user) * [Configure read-only root filesystem](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/harden-task-runners#configure-read-only-root-filesystem) * [Configure an AppArmor profile](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/harden-task-runners#configure-an-apparmor-profile) Was this helpful? Copy audit deny @{PROC}/[0-9]*/{environ,mounts} rwl, --- # Disable the public API | Deploy | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/disable-the-public-api.md) . The [n8n public REST API](https://docs.n8n.io/connect/n8n-api) allows you to programmatically perform many of the same tasks as you can in the n8n GUI. If you don't plan on using this API, n8n recommends disabling it to improve the security of your n8n installation. To disable the [public REST API](https://docs.n8n.io/connect/n8n-api) , set the `N8N_PUBLIC_API_DISABLED` environment variable to `true`, for example: Copy export N8N_PUBLIC_API_DISABLED=true [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/disable-the-public-api#disable-the-api-playground) Disable the API playground ------------------------------------------------------------------------------------------------------------------------------------------------ To disable the [API playground](https://docs.n8n.io/connect/n8n-api/use-an-api-playground) , set the `N8N_PUBLIC_API_SWAGGERUI_DISABLED` environment variable to `true`, for example: Copy export N8N_PUBLIC_API_SWAGGERUI_DISABLED=true [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/disable-the-public-api#related-resources) Related resources ------------------------------------------------------------------------------------------------------------------------------ Refer to [Deployment environment variables](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/deployment) for more information on these environment variables. Refer to [Configuration](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration) for more information on setting environment variables. [PreviousRun security audits](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/run-security-audits) [NextControl telemetry](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/control-telemetry) Last updated 10 days ago Was this helpful? * [Disable the API playground](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/disable-the-public-api#disable-the-api-playground) * [Related resources](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/disable-the-public-api#related-resources) Was this helpful? --- # Configure SSO | Deploy | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/configure-sso.md) . **Feature availability** * Available on Business and Enterprise plans. * You need to be an instance owner or admin to enable and configure SAML or OIDC. n8n supports the SAML and OIDC authentication protocols for single sign-on (SSO). See [OIDC vs SAML](https://www.onelogin.com/learn/oidc-vs-saml) for more general information on the two protocols, the differences between them, and their respective benefits. * [Set up SAML](https://docs.n8n.io/administer/manage-users-and-access/verify-user-identity/use-saml/set-up-saml) : a general guide to setting up SAML in n8n, and links to resources for common identity providers (IdPs). * [Set up OIDC](https://docs.n8n.io/administer/manage-users-and-access/verify-user-identity/use-oidc/set-up-oidc) : a general guide to setting up OpenID Connect (OIDC) SSO in n8n. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/configure-sso#configure-sso-with-environment-variables) Configure SSO with environment variables ------------------------------------------------------------------------------------------------------------------------------------------------------------------- You can also configure SSO from environment variables instead of through the UI. Available from n8n v2.18.0. See [SSO environment variables](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/sso) for the full list of variables, and [Manage instance settings using environment variables](https://docs.n8n.io/deploy/host-n8n/configure-n8n/manage-settings-using-environment-variables) for how the activation pattern works. [PreviousSet up SSL](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/set-up-ssl) [NextRun security audits](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/run-security-audits) Last updated 10 days ago Was this helpful? Was this helpful? --- # Security | Deploy | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security.md) . Securing your n8n instance can take several forms. At a high level, you can: * Conduct a [security audit](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/run-security-audits) to identify security risks. * [Set up SSL](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/set-up-ssl) to enforce secure connections. * [Set up Single Sign-On](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/configure-sso) for user account management. * Use [token exchange](https://docs.n8n.io/deploy/host-n8n/deploy-as-an-oem-integration/set-up-token-exchange) to log users in from your own identity provider when embedding n8n, or to call n8n APIs on their behalf. * Use [two-factor authentication (2FA)](https://docs.n8n.io/administer/manage-users-and-access/verify-user-identity/require-two-factor-auth) for your users. * Enable [encryption key rotation](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/rotate-encryption-keys) to periodically replace the key that encrypts credentials and other sensitive data. * Enable [JWE token decryption for OAuth 2.0 credentials](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/decrypt-oauth-20-tokens-with-jwe) so your identity provider can encrypt access and ID tokens that only your instance can decrypt. You can also protect sensitive data processed by your workflows: * [Redact execution data](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/redact-execution-data) to hide input and output data from workflow executions. More granularly, consider blocking or opting out of features or data collection you don't want: * [Disable the public API](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/disable-the-public-api) if you aren't using it. * [Opt out of data collection](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/control-telemetry) of the anonymous data n8n collects automatically. * [Block certain nodes](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/block-specific-nodes) from being available to your users. * [Protect against SSRF attacks](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/enable-ssrf-protection) to control which hosts and IP ranges workflow nodes can connect to. * [Restrict account registration](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/verify-user-emails) to email-verified users. [PreviousManage your license](https://docs.n8n.io/deploy/host-n8n/configure-n8n/manage-your-license) [NextManage security policies](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/manage-security-policies) Last updated 7 days ago Was this helpful? Was this helpful? --- # Manage settings using environment variables | Deploy | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/deploy/host-n8n/configure-n8n/manage-settings-using-environment-variables.md) . You can manage a subset of instance settings from environment variables, instead of configuring them through the UI. This is useful when you provision n8n instances automatically, such as through an internal deployment pipeline. Each supported area has a dedicated environment variable named `_MANAGED_BY_ENV`. Set this variable to `true` to activate environment variable management for that area. n8n then applies the related environment variables and locks the matching UI controls. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/manage-settings-using-environment-variables#how-it-works) How it works -------------------------------------------------------------------------------------------------------------------------------- When you set `_MANAGED_BY_ENV` to `true`: * n8n reapplies the settings from environment variables **on every startup**. * The matching UI controls become **read-only**. When `_MANAGED_BY_ENV` is `false` (the default), n8n ignores the related environment variables, even if you set them. **Values persist when you turn off** `***_MANAGED_BY_ENV**` Setting `*_MANAGED_BY_ENV` back to `false` restores UI write access but keeps the values that were last applied. Edit them through the UI afterward if you want to change them. **Unexpected read-only UI controls** If a setting appears as read-only and you didn't expect it, check whether the matching `*_MANAGED_BY_ENV` variable is `true` in your environment. The supported areas and their activating variables: * Instance owner: `N8N_INSTANCE_OWNER_MANAGED_BY_ENV` * SSO: `N8N_SSO_MANAGED_BY_ENV` * Security policy: `N8N_SECURITY_POLICY_MANAGED_BY_ENV` * Log streaming: `N8N_LOG_STREAMING_MANAGED_BY_ENV` * MCP: `N8N_MCP_MANAGED_BY_ENV` * Community packages: `N8N_COMMUNITY_PACKAGES_MANAGED_BY_ENV` **Set** `**_MANAGED_BY_ENV**` **to activate the group** The other environment variables for an area have no effect unless `_MANAGED_BY_ENV` is `true`. Set it to `true` to activate the group. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/manage-settings-using-environment-variables#instance-owner) Instance owner ------------------------------------------------------------------------------------------------------------------------------------ **Available from n8n v2.17.0** Pre-provision the [instance owner](https://docs.n8n.io/deploy/host-n8n/configure-n8n/user-management) from environment variables instead of going through the in-app setup. To change the owner email after setup, see [Change the instance owner email for self-hosted n8n](https://docs.n8n.io/deploy/host-n8n/configure-n8n/change-instance-owner-email) . `**N8N_INSTANCE_OWNER_PASSWORD_HASH**` **must be a bcrypt hash** This variable expects a pre-hashed bcrypt value. Setting a plaintext password breaks login. Variable Type Default Description `N8N_INSTANCE_OWNER_MANAGED_BY_ENV` Boolean `false` Set to `true` to manage the instance owner from environment variables. When `true`, n8n overwrites the instance owner details below on every startup, locks the UI control for that user, and rejects API writes. `N8N_INSTANCE_OWNER_EMAIL` String \- Email address for the instance owner. `N8N_INSTANCE_OWNER_FIRST_NAME` String \- First name for the instance owner. `N8N_INSTANCE_OWNER_LAST_NAME` String \- Last name for the instance owner. `N8N_INSTANCE_OWNER_PASSWORD_HASH` String \- Bcrypt hash of the instance owner's password. Setting a plaintext password breaks login. **Owner email must be unique** `N8N_INSTANCE_OWNER_EMAIL` must not already belong to another user on the instance. This setting updates the existing instance owner account; it doesn't transfer ownership to another existing user or merge user accounts. To use an email address that already belongs to another user, change or delete that user first so the email becomes available. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/manage-settings-using-environment-variables#sso) SSO -------------------------------------------------------------------------------------------------------------- **Available from n8n v2.18.0** **Feature availability** Single sign-on is available on Business and Enterprise plans. Configure [single sign-on](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/configure-sso) from environment variables. ### [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/manage-settings-using-environment-variables#activation-and-shared-settings) Activation and shared settings Variable Type Default Description `N8N_SSO_MANAGED_BY_ENV` Boolean `false` Set to `true` to manage SSO from environment variables. When `true`, n8n applies the SSO variables on every startup and locks the matching UI controls. `N8N_SSO_USER_ROLE_PROVISIONING` Enum string: `disabled`, `instance_role`, `instance_and_project_roles` `disabled` How n8n provisions roles for users who sign in through SSO. `disabled` doesn't provision any roles. `instance_role` provisions the instance-level role only. `instance_and_project_roles` provisions both instance and project roles. ### [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/manage-settings-using-environment-variables#oidc) OIDC Variable Type Default Description `N8N_SSO_OIDC_LOGIN_ENABLED` Boolean `false` Whether to enable OIDC login. `N8N_SSO_OIDC_CLIENT_ID` String \- OIDC client ID issued by your identity provider. `N8N_SSO_OIDC_CLIENT_SECRET` String \- OIDC client secret issued by your identity provider. `N8N_SSO_OIDC_DISCOVERY_ENDPOINT` String \- OIDC discovery endpoint URL (the `.well-known/openid-configuration` URL for your identity provider). `N8N_SSO_OIDC_PROMPT` String \- Optional OIDC `prompt` parameter to send with the authorization request, for example `login` or `consent`. `N8N_SSO_OIDC_ACR_VALUES` String \- Optional OIDC `acr_values` parameter. Use this to request a specific authentication context, for example a step-up MFA flow. ### [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/manage-settings-using-environment-variables#saml) SAML **SAML metadata variables are mutually exclusive** Set either `N8N_SSO_SAML_METADATA` (inline XML) or `N8N_SSO_SAML_METADATA_URL` (URL), not both. Variable Type Default Description `N8N_SSO_SAML_LOGIN_ENABLED` Boolean `false` Whether to enable SAML login. `N8N_SSO_SAML_METADATA` String \- SAML identity provider metadata as an XML string. Mutually exclusive with `N8N_SSO_SAML_METADATA_URL`; don't set both. `N8N_SSO_SAML_METADATA_URL` String \- URL to fetch SAML identity provider metadata from. Mutually exclusive with `N8N_SSO_SAML_METADATA`; don't set both. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/manage-settings-using-environment-variables#security-policy) Security policy -------------------------------------------------------------------------------------------------------------------------------------- **Available from n8n v2.18.0** Manage the instance security policy from environment variables, including MFA enforcement and personal space restrictions. Variable Type Default Description `N8N_SECURITY_POLICY_MANAGED_BY_ENV` Boolean `false` Set to `true` to manage the security policy from environment variables. When `true`, n8n applies the security policy variables on every startup and locks the matching UI controls. `N8N_MFA_ENFORCED_ENABLED` Boolean `false` Whether to enforce two-factor authentication for all users (`true`) or not (`false`). `N8N_PERSONAL_SPACE_PUBLISHING_ENABLED` Boolean `true` Whether users can publish from their personal space (`true`) or not (`false`). `N8N_PERSONAL_SPACE_SHARING_ENABLED` Boolean `true` Whether users can share resources from their personal space (`true`) or not (`false`). [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/manage-settings-using-environment-variables#log-streaming) Log streaming ---------------------------------------------------------------------------------------------------------------------------------- **Available from n8n v2.19.0** Manage [log streaming](https://docs.n8n.io/administer/observe-and-log/stream-logs-to-external-systems) destinations from environment variables. See [Configure using environment variables](https://docs.n8n.io/administer/observe-and-log/stream-logs-to-external-systems#configure-using-environment-variables) for the per-destination JSON shape. Variable Type Default Description `N8N_LOG_STREAMING_MANAGED_BY_ENV` Boolean `false` Set to `true` to manage log streaming from environment variables. When `true`, n8n applies the log streaming variables on every startup and locks the matching UI controls. `N8N_LOG_STREAMING_DESTINATIONS` JSON string \- JSON array of log streaming destinations. Each destination is an object with a `type` of `webhook`, `syslog`, or `sentry`, plus the configuration for that type. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/manage-settings-using-environment-variables#mcp) MCP -------------------------------------------------------------------------------------------------------------- **Available from n8n v2.20.0** Manage [instance-level MCP access](https://docs.n8n.io/connect/connect-to-n8n-mcp-server) from environment variables. Variable Type Default Description `N8N_MCP_MANAGED_BY_ENV` Boolean `false` Set to `true` to manage MCP settings from environment variables. When `true`, n8n applies the MCP variables on every startup and locks the matching UI controls. `N8N_MCP_ACCESS_ENABLED` Boolean `false` Whether to enable instance-level MCP access (`true`) or not (`false`). [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/manage-settings-using-environment-variables#community-packages) Community packages -------------------------------------------------------------------------------------------------------------------------------------------- **Available from n8n v2.21.0** Manage the set of installed [community packages](https://docs.n8n.io/integrations/community-nodes/installation-and-management) from environment variables. n8n reconciles the installed packages against the list on every startup. Managed packages can't be uninstalled or updated through the UI. `N8N_COMMUNITY_PACKAGES_ENABLED` must also be set to `true` (the default). When community packages are disabled, n8n ignores `N8N_COMMUNITY_PACKAGES_MANAGED_BY_ENV` and logs a warning. Variable Type Default Description `N8N_COMMUNITY_PACKAGES_MANAGED_BY_ENV` Boolean `false` Set to `true` to manage installed community packages from environment variables. When `true`, n8n reconciles the installed packages against `N8N_COMMUNITY_PACKAGES` on every startup, installing missing packages, correcting versions, and **uninstalling any currently-installed packages that aren't in the list**. The **Community nodes** settings page becomes read-only: you can't install, update, or uninstall packages from the UI while this is enabled. `N8N_COMMUNITY_PACKAGES` JSON string \- JSON array of community packages to install. Each entry is an object with a `name` (required) and optional `version` and `checksum` fields. You can also embed the version in the name as `@`. See [environment variable installation](https://docs.n8n.io/integrations/community-nodes/installation-and-management/environment-variable-installation) for the full per-field reference. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/manage-settings-using-environment-variables#combined-example) Combined example ---------------------------------------------------------------------------------------------------------------------------------------- The following example configures an instance with all six areas managed by environment variables. It creates the instance owner, configures OIDC SSO, enforces MFA, registers a webhook log streaming destination, enables MCP access, and manages a community package. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/manage-settings-using-environment-variables#set-environment-variables) Set environment variables ---------------------------------------------------------------------------------------------------------------------------------------------------------- For the supported ways to set environment variables, see [Configuration methods](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration) . [PreviousChange instance owner email](https://docs.n8n.io/deploy/host-n8n/configure-n8n/change-instance-owner-email) [NextSet up task runners](https://docs.n8n.io/deploy/host-n8n/configure-n8n/set-up-task-runners) Last updated 9 days ago Was this helpful? * [How it works](https://docs.n8n.io/deploy/host-n8n/configure-n8n/manage-settings-using-environment-variables#how-it-works) * [Instance owner](https://docs.n8n.io/deploy/host-n8n/configure-n8n/manage-settings-using-environment-variables#instance-owner) * [SSO](https://docs.n8n.io/deploy/host-n8n/configure-n8n/manage-settings-using-environment-variables#sso) * [Activation and shared settings](https://docs.n8n.io/deploy/host-n8n/configure-n8n/manage-settings-using-environment-variables#activation-and-shared-settings) * [OIDC](https://docs.n8n.io/deploy/host-n8n/configure-n8n/manage-settings-using-environment-variables#oidc) * [SAML](https://docs.n8n.io/deploy/host-n8n/configure-n8n/manage-settings-using-environment-variables#saml) * [Security policy](https://docs.n8n.io/deploy/host-n8n/configure-n8n/manage-settings-using-environment-variables#security-policy) * [Log streaming](https://docs.n8n.io/deploy/host-n8n/configure-n8n/manage-settings-using-environment-variables#log-streaming) * [MCP](https://docs.n8n.io/deploy/host-n8n/configure-n8n/manage-settings-using-environment-variables#mcp) * [Community packages](https://docs.n8n.io/deploy/host-n8n/configure-n8n/manage-settings-using-environment-variables#community-packages) * [Combined example](https://docs.n8n.io/deploy/host-n8n/configure-n8n/manage-settings-using-environment-variables#combined-example) * [Set environment variables](https://docs.n8n.io/deploy/host-n8n/configure-n8n/manage-settings-using-environment-variables#set-environment-variables) Was this helpful? Copy # Instance owner export N8N_INSTANCE_OWNER_MANAGED_BY_ENV=true export N8N_INSTANCE_OWNER_EMAIL= export N8N_INSTANCE_OWNER_FIRST_NAME= export N8N_INSTANCE_OWNER_LAST_NAME= export N8N_INSTANCE_OWNER_PASSWORD_HASH= # SSO using OIDC export N8N_SSO_MANAGED_BY_ENV=true export N8N_SSO_USER_ROLE_PROVISIONING=instance_role export N8N_SSO_OIDC_LOGIN_ENABLED=true export N8N_SSO_OIDC_CLIENT_ID= export N8N_SSO_OIDC_CLIENT_SECRET= export N8N_SSO_OIDC_DISCOVERY_ENDPOINT= # Security policy export N8N_SECURITY_POLICY_MANAGED_BY_ENV=true export N8N_MFA_ENFORCED_ENABLED=true export N8N_PERSONAL_SPACE_PUBLISHING_ENABLED=false export N8N_PERSONAL_SPACE_SHARING_ENABLED=false # Log streaming export N8N_LOG_STREAMING_MANAGED_BY_ENV=true export N8N_LOG_STREAMING_DESTINATIONS='[{"type":"webhook","url":"https://logs.example.com/n8n"}]' # MCP export N8N_MCP_MANAGED_BY_ENV=true export N8N_MCP_ACCESS_ENABLED=true # Community packages export N8N_COMMUNITY_PACKAGES_MANAGED_BY_ENV=true export N8N_COMMUNITY_PACKAGES='[{"name":"n8n-nodes-foo","version":"1.2.3"}]' --- # Block specific nodes | Deploy | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/block-specific-nodes.md) . For security reasons, you may want to block your users from accessing or working with specific n8n nodes. This is helpful if your users might be untrustworthy. Use the `NODES_EXCLUDE` environment variable to prevent your users from accessing specific nodes. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/block-specific-nodes#exclude-nodes) Exclude nodes -------------------------------------------------------------------------------------------------------------------- Update your `NODES_EXCLUDE` environment variable to include an array of strings containing any nodes you want to block your users from using. For example, setting the variable this way: Copy NODES_EXCLUDE: "[\"n8n-nodes-base.executeCommand\", \"n8n-nodes-base.readWriteFile\"]" Blocks the [Execute Command](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executecommand) and [Read/Write Files from Disk](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.readwritefile) nodes. Your n8n users won't be able to search for or use these nodes. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/block-specific-nodes#suggested-nodes-to-block) Suggested nodes to block ------------------------------------------------------------------------------------------------------------------------------------------ The nodes that can pose security risks vary based on your use case and user profile. Here are some nodes you might want to start with: * [Execute Command](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executecommand) * [Read/Write Files from Disk](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.readwritefile) [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/block-specific-nodes#enable-nodes-that-are-blocked-by-default) Enable nodes that are blocked by default -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Some nodes, like Execute Command, are blocked by default. Remove them from the exclude list to enable them: [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/block-specific-nodes#related-resources) Related resources ---------------------------------------------------------------------------------------------------------------------------- Refer to [Nodes environment variables](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/nodes) for more information on this environment variable. Refer to [Configuration](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration) for more information on setting environment variables. [PreviousControl telemetry](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/control-telemetry) [NextHarden task runners](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/harden-task-runners) Last updated 10 days ago Was this helpful? * [Exclude nodes](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/block-specific-nodes#exclude-nodes) * [Suggested nodes to block](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/block-specific-nodes#suggested-nodes-to-block) * [Enable nodes that are blocked by default](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/block-specific-nodes#enable-nodes-that-are-blocked-by-default) * [Related resources](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/block-specific-nodes#related-resources) Was this helpful? Copy NODES_EXCLUDE: "[]" --- # Rotate encryption keys | Deploy | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/rotate-encryption-keys.md) . **Feature availability** * Available on self-hosted n8n instances only. * You need to be the instance owner to enable the feature and rotate keys. Encryption key rotation lets you periodically replace the key that encrypts your n8n data, like credentials, OAuth tokens, and other sensitive content, without changing your instance's master encryption key. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/rotate-encryption-keys#how-encryption-key-rotation-works) How encryption key rotation works -------------------------------------------------------------------------------------------------------------------------------------------------------------- n8n uses a two-layer key model: * **Instance encryption key** (`N8N_ENCRYPTION_KEY`): your master key, set at deployment time. This key never changes. n8n uses it only to protect the data encryption keys. * **Data encryption key**: the key that directly encrypts your credential data. This is the key you rotate. n8n stores it encrypted in the database, protected by the instance key. When you rotate, n8n generates a new data encryption key and uses it for all future writes. Existing data encrypted with the previous key remains readable. n8n silently re-encrypts each record to the new key the next time you update it. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/rotate-encryption-keys#before-you-begin) Before you begin ---------------------------------------------------------------------------------------------------------------------------- **Take a full database backup before enabling this feature** Enabling encryption key rotation is a one-way change. There's no rollback path. See [Backwards compatibility and rollback](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/rotate-encryption-keys#backwards-compatibility-and-rollback) for details. You also need to make sure that: * All n8n instances, main and all workers, share the same `N8N_ENCRYPTION_KEY` value. * You have direct control over your environment variables and your n8n database. This is only possible on self-hosted deployments. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/rotate-encryption-keys#enable-encryption-key-rotation) Enable encryption key rotation -------------------------------------------------------------------------------------------------------------------------------------------------------- 1. Set the following environment variable on **all** n8n instances, both main and workers: 2. Restart all instances. On startup, n8n automatically generates the initial data encryption key and stores it, encrypted, in your database. 3. To confirm the feature is active, go to **Settings** > **Data Encryption Keys**. You should see the active key listed. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/rotate-encryption-keys#rotate-the-active-key) Rotate the active key -------------------------------------------------------------------------------------------------------------------------------------- Once the feature is enabled, you can rotate to a new data encryption key at any time. ### [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/rotate-encryption-keys#using-the-ui) Using the UI Go to **Settings** > **Data Encryption Keys** and select **Rotate key**. ### [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/rotate-encryption-keys#using-the-api) Using the API Make a `POST` call to the `/encryption/keys` endpoint. The request requires the `encryptionKey:manage` global scope. n8n never returns key material in API responses, only metadata such as the ID, algorithm, status, and timestamps. After rotation, n8n uses the new active key for all new writes. Records encrypted with previous keys remain readable. n8n re-encrypts them to the new key the next time you update each record. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/rotate-encryption-keys#backwards-compatibility-and-rollback) Backwards compatibility and rollback -------------------------------------------------------------------------------------------------------------------------------------------------------------------- **This is a one-way migration** Read this section carefully before enabling encryption key rotation. Once you enable encryption key rotation, n8n begins writing credentials and other sensitive data in a new format that includes a key identifier. Older versions of n8n, and instances running without the feature flag, can't read this format. * **Don't disable the feature flag** after any data has been written in the new format. Removing `N8N_ENV_FEAT_ENCRYPTION_KEY_ROTATION` or setting it to `false` makes all data encrypted after you enabled the feature permanently inaccessible. * **Don't downgrade your n8n version** after enabling. Older versions can't decrypt the new format. There's no automated tool to convert data encrypted in the new format back to the legacy format. The only recovery path is restoring from a database backup taken before you enabled the feature. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/rotate-encryption-keys#recommended-steps) Recommended steps ------------------------------------------------------------------------------------------------------------------------------ 1. **Back up your database**. Take a full snapshot before any changes. 2. **Enable on staging first**. Set `N8N_ENV_FEAT_ENCRYPTION_KEY_ROTATION=true` on a non-production environment, restart, and verify that credentials still decrypt correctly. 3. **Enable on production**. Only do this after validating staging behavior. 4. **Don't disable or downgrade**. Once production data has been written in the new format, keep the flag enabled and stay on the same or a newer n8n version. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/rotate-encryption-keys#related-resources) Related resources ------------------------------------------------------------------------------------------------------------------------------ * [Set a custom encryption key](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/configuration-examples/set-a-custom-encryption-key) : set the instance-level `N8N_ENCRYPTION_KEY` value. * [Deployment environment variables](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/deployment) : reference for `N8N_ENCRYPTION_KEY` and `N8N_ENV_FEAT_ENCRYPTION_KEY_ROTATION`. * [Configuring queue mode](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/enable-queue-mode) : make sure all workers share the same instance encryption key. [PreviousEnable SSRF protection](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/enable-ssrf-protection) [NextDecrypt OAuth 2.0 tokens with JWE](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/decrypt-oauth-20-tokens-with-jwe) Last updated 10 days ago Was this helpful? * [How encryption key rotation works](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/rotate-encryption-keys#how-encryption-key-rotation-works) * [Before you begin](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/rotate-encryption-keys#before-you-begin) * [Enable encryption key rotation](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/rotate-encryption-keys#enable-encryption-key-rotation) * [Rotate the active key](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/rotate-encryption-keys#rotate-the-active-key) * [Using the UI](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/rotate-encryption-keys#using-the-ui) * [Using the API](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/rotate-encryption-keys#using-the-api) * [Backwards compatibility and rollback](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/rotate-encryption-keys#backwards-compatibility-and-rollback) * [Recommended steps](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/rotate-encryption-keys#recommended-steps) * [Related resources](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/rotate-encryption-keys#related-resources) Was this helpful? Copy N8N_ENV_FEAT_ENCRYPTION_KEY_ROTATION=true --- # Enable SSRF protection | Deploy | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/enable-ssrf-protection.md) . **Available since 2.12.0** Server-Side Request Forgery (SSRF) attacks abuse workflow nodes to make requests to internal network resources, cloud metadata endpoints, or localhost services that shouldn't be accessible. SSRF protection is an additional application-level defense. You should always configure network-level protections (firewalls, security groups, network policies) on your infrastructure as your primary line of defense. n8n's SSRF protection adds defense-in-depth on top of those controls. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/enable-ssrf-protection#enable-ssrf-protection) Enable SSRF protection ---------------------------------------------------------------------------------------------------------------------------------------- Copy N8N_SSRF_PROTECTION_ENABLED=true When enabled, n8n validates all outbound HTTP requests from user-controllable nodes (such as the HTTP Request node) against the configured blocked and allowed ranges. This includes redirect targets and DNS resolution to prevent bypass techniques like DNS rebinding. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/enable-ssrf-protection#default-blocked-ranges) Default blocked ranges ---------------------------------------------------------------------------------------------------------------------------------------- When SSRF protection is enabled, the following IP ranges are blocked by default: Range Description `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16` RFC 1918 private addresses `127.0.0.0/8`, `::1/128` Loopback `169.254.0.0/16`, `fe80::/10` Link-local `fc00::/7`, `fd00::/8` IPv6 unique local `0.0.0.0/8`, `192.0.0.0/24`, `192.0.2.0/24`, `198.18.0.0/15`, `198.51.100.0/24`, `203.0.113.0/24` Reserved/special purpose You can extend this list with `N8N_SSRF_BLOCKED_IP_RANGES=default,100.0.0.0/8`. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/enable-ssrf-protection#allow-access-to-internal-services) Allow access to internal services -------------------------------------------------------------------------------------------------------------------------------------------------------------- If your workflows need to reach legitimate internal services, use allowlists. Allowlists take precedence over blocklists, following this order: hostname allowlist > IP allowlist > IP blocklist. Allow by hostname pattern (supports wildcards like `*.n8n.internal`): Allow by IP range: Only allowlist hostnames within your control (internal DNS zones). Hostname allowlists bypass IP blocklist checks. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/enable-ssrf-protection#related-resources) Related resources ------------------------------------------------------------------------------------------------------------------------------ Refer to [SSRF protection environment variables](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/ssrf-protection) for the full list of configuration options. Refer to [Configuration methods](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration) for more information on setting environment variables. [PreviousVerify user emails](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/verify-user-emails) [NextRotate encryption keys](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/rotate-encryption-keys) Last updated 10 days ago Was this helpful? * [Enable SSRF protection](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/enable-ssrf-protection#enable-ssrf-protection) * [Default blocked ranges](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/enable-ssrf-protection#default-blocked-ranges) * [Allow access to internal services](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/enable-ssrf-protection#allow-access-to-internal-services) * [Related resources](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/enable-ssrf-protection#related-resources) Was this helpful? Copy N8N_SSRF_ALLOWED_HOSTNAMES=*.n8n.internal,*.company.local Copy N8N_SSRF_ALLOWED_IP_RANGES=10.0.1.0/24,10.0.2.50/32 --- # Error handling | Connect | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/error-handling.md) . Proper error handling is crucial for creating robust n8n nodes that provide clear feedback to users when things go wrong. n8n provides two specialized error classes to handle different types of failures in node implementations: * [`**NodeApiError**`](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/error-handling#nodeapierror) : For API-related errors and external service failures * [`**NodeOperationError**`](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/error-handling#nodeoperationerror) : For operational errors, validation failures, and configuration issues [](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/error-handling#nodeapierror) NodeApiError -------------------------------------------------------------------------------------------------------------------- Use `NodeApiError` when dealing with external API calls and HTTP requests. This error class is specifically designed to handle API response errors and provides enhanced features for parsing and presenting API-related failures such as: * HTTP request failures * external API errors * authentication/authorization failures * rate limiting errors * service unavailable errors Initialize new `NodeApiError` instances using the following pattern: Copy new NodeApiError(node: INode, errorResponse: JsonObject, options?: NodeApiErrorOptions) ### [](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/error-handling#common-usage-patterns) Common usage patterns For basic API request failures, catch the error and wrap it in `NodeApiError`: Copy try { const response = await this.helpers.httpRequestWithAuthentication.call( this, credentialType, options ); return response; } catch (error) { throw new NodeApiError(this.getNode(), error as JsonObject); } Handle specific HTTP status codes with custom messages: Copy try { const response = await this.helpers.httpRequestWithAuthentication.call( this, credentialType, options ); return response; } catch (error) { if (error.httpCode === "404") { const resource = this.getNodeParameter("resource", 0); const errorOptions = { message: `${ resource.charAt(0).toUpperCase() + resource.slice(1) } not found`, description: "The requested resource could not be found. Please check your input parameters.", }; throw new NodeApiError( this.getNode(), error as JsonObject, errorOptions ); } if (error.httpCode === "401") { throw new NodeApiError(this.getNode(), error as JsonObject, { message: "Authentication failed", description: "Please check your credentials and try again.", }); } throw new NodeApiError(this.getNode(), error as JsonObject); } [](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/error-handling#nodeoperationerror) NodeOperationError -------------------------------------------------------------------------------------------------------------------------------- Use `NodeOperationError` for: * operational errors * validation failures * configuration issues that aren't related to external API calls * input validation errors * missing required parameters * data transformation errors * workflow logic errors Initialize new `NodeOperationError` instances using the following pattern: Copy new NodeOperationError(node: INode, error: Error | string | JsonObject, options?: NodeOperationErrorOptions) ### [](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/error-handling#common-usage-patterns-1) Common usage patterns Use `NodeOperationError` for validating user inputs: Copy const email = this.getNodeParameter("email", itemIndex); if (email.indexOf("@") === -1) { const description = `The email address '${email}' in the 'email' field isn't valid`; throw new NodeOperationError(this.getNode(), "Invalid email address", { description, itemIndex, // for multiple items, this will link the error to the specific item }); } When processing multiple items, include the item index for better error context: Copy for (let i = 0; i < items.length; i++) { try { // Process item const result = await processItem(items[i]); returnData.push(result); } catch (error) { if (this.continueOnFail()) { returnData.push({ json: { error: error.message }, pairedItem: { item: i }, }); continue; } throw new NodeOperationError(this.getNode(), error as Error, { description: error.description, itemIndex: i, }); } } [PreviousCode standards](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/code-standards) [NextVersioning](https://docs.n8n.io/connect/create-nodes/build-your-node/reference/versioning) Last updated 10 days ago Was this helpful? --- # Scaling | Deploy | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling.md) . When running n8n at scale, with a large number of users, workflows, or executions, you need to change your n8n configuration to ensure good performance. n8n can run in different [modes](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/enable-queue-mode) depending on your needs. The `queue` mode provides the best scalability. Refer to [Queue mode](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/enable-queue-mode) for configuration details. You can configure data saving and pruning to improve database performance. Refer to [Execution data](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/manage-execution-data) for details. [PreviousRedact execution data](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/redact-execution-data) [NextMeasure performance](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/measure-performance) Last updated 10 days ago Was this helpful? Was this helpful? --- # Accessing linked items in the Code node | Build | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/build/work-with-data/reference-data/link-data-items/accessing-linked-items-in-the-code-node.md) . Every item in a node's input data links back to the items used in previous nodes to generate it. This is useful if you need to retrieve linked items from further back than the immediate previous node. To access the linked items from earlier in the workflow, use `("").itemMatching(currentNodeinputIndex)`. For example, consider a workflow that does the following: 1. The Customer Datastore node generates example data: Copy [\ {\ "id": "23423532",\ "name": "Jay Gatsby",\ "email": "gatsby@west-egg.com",\ "notes": "Keeps asking about a green light??",\ "country": "US",\ "created": "1925-04-10"\ },\ {\ "id": "23423533",\ "name": "JosĆ© Arcadio BuendĆ­a",\ "email": "jab@macondo.co",\ "notes": "Lots of people named after him. Very confusing",\ "country": "CO",\ "created": "1967-05-05"\ },\ ...\ ] 2. The Edit Fields node simplifies this data: Copy [\ {\ "name": "Jay Gatsby"\ },\ {\ "name": "JosĆ© Arcadio BuendĆ­a"\ },\ ...\ ] 3. The Code node restores the email address to the correct person: Copy [\ {\ "name": "Jay Gatsby",\ "restoreEmail": "gatsby@west-egg.com"\ },\ {\ "name": "JosĆ© Arcadio BuendĆ­a",\ "restoreEmail": "jab@macondo.co"\ },\ ...\ ] The Code node does this using the following code: JavaScript Python Copy for(let i=0; i<$input.all().length; i++) { $input.all()[i].json.restoreEmail = $('Customer Datastore (n8n training)').itemMatching(i).json.email; } return $input.all(); Copy for i,item in enumerate(_input.all()): _input.all()[i].json.restoreEmail = _('Customer Datastore (n8n training)').itemMatching(i).json.email return _input.all(); You can view and download the example workflow from [n8n website | itemMatching usage example](https://n8n.io/workflows/1966-itemmatching-usage-example/) . [PreviousHow items link through workflows](https://docs.n8n.io/build/work-with-data/reference-data/link-data-items/how-items-link-through-workflows) [NextPreserving linking in the Code node](https://docs.n8n.io/build/work-with-data/reference-data/link-data-items/preserving-linking-in-the-code-node) Last updated 10 days ago Was this helpful? --- # Decrypt OAuth 2.0 tokens with JWE | Deploy | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/decrypt-oauth-20-tokens-with-jwe.md) . **Feature availability** * Available from n8n v2.21.0. * Available on any n8n instance with the `N8N_ENV_FEAT_OAUTH2_JWE` environment variable set to `true`. Self-hosted instances can set it directly. On Cloud, contact n8n support to request it. * Requires an identity provider (IdP) that can encrypt tokens as JWE. **Preview feature** JWE token decryption is in preview and gated by an environment flag. Field names, the environment variable, the JWKS endpoint path, and the supported algorithms can change before the feature reaches general availability. Pin your n8n version and retest your OAuth 2.0 credentials after each upgrade. JWE token decryption lets your identity provider return OAuth 2.0 access and ID tokens encrypted as [JWE](https://datatracker.ietf.org/doc/html/rfc7516) . Your n8n instance decrypts the tokens on the OAuth callback using a private key that never leaves the instance. This protects token contents from anything that sits between your IdP and n8n, including reverse proxies, browsers, and logs. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/decrypt-oauth-20-tokens-with-jwe#how-jwe-token-decryption-works) How JWE token decryption works ------------------------------------------------------------------------------------------------------------------------------------------------------------------ When you enable the feature, n8n: 1. Generates an RSA key pair on startup and stores the private key, encrypted with your instance encryption key, in the database. 2. Publishes the matching public key at an instance-wide JWKS endpoint, so your IdP can fetch it. 3. Decrypts incoming JWE tokens on the OAuth callback using the private key that matches the `kid` in the JWE header. The IdP encrypts each token with the public key it fetched from your JWKS endpoint. Only your instance can decrypt the result. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/decrypt-oauth-20-tokens-with-jwe#before-you-begin) Before you begin -------------------------------------------------------------------------------------------------------------------------------------- You need: * `N8N_ENV_FEAT_OAUTH2_JWE=true` on your n8n instance. Self-hosted instances can enable this directly. On Cloud, contact n8n support to request it. * All n8n instances, main and workers, sharing the same `N8N_ENCRYPTION_KEY` value. n8n uses this instance key to encrypt the JWE private key at rest. * An IdP that supports JWE-encrypted tokens with the `RSA-OAEP-256` key encryption algorithm. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/decrypt-oauth-20-tokens-with-jwe#enable-jwe-token-decryption) Enable JWE token decryption ------------------------------------------------------------------------------------------------------------------------------------------------------------ 1. Set the following environment variable on **all** n8n instances, both main and workers: 2. Restart all instances. On startup, n8n generates the RSA key pair and publishes the public key at the JWKS endpoint. 3. To confirm the feature is active, request the JWKS endpoint and check that it returns one key with `"alg": "RSA-OAEP-256"`: [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/decrypt-oauth-20-tokens-with-jwe#configure-your-identity-provider) Configure your identity provider ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- In the OAuth 2.0 client or application configuration on your IdP: 1. Enable encrypted tokens for the client that n8n connects to. 2. Set the client's JWKS URI to your instance's JWKS endpoint. n8n displays this URL on the credential, so you can copy it directly from there once you create the credential (see the next section). 3. Choose `RSA-OAEP-256` as the key encryption algorithm (`alg`). Pair it with any content encryption algorithm (`enc`) your IdP supports, for example `A128CBC-HS256` or `A256GCM`. Example: Okta[](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/decrypt-oauth-20-tokens-with-jwe#example-okta) 1. In the Okta admin console, open the OAuth 2.0 application that n8n uses, or create a new web application. 2. Under the application's OpenID Connect settings, enable token encryption. 3. Set the **Key management algorithm** to `RSA-OAEP-256` and choose a content encryption algorithm (for example `A256GCM`). 4. Set the **JWKS URI** to the value n8n shows in the credential's **JWKS URI** field. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/decrypt-oauth-20-tokens-with-jwe#configure-the-credential-in-n8n) Configure the credential in n8n -------------------------------------------------------------------------------------------------------------------------------------------------------------------- 1. Create or edit an [OAuth 2.0 API credential](https://docs.n8n.io/integrations/builtin/credentials/httprequest#using-oauth2) . 2. Toggle **Encrypted Tokens (JWE)** on. 3. Copy the value from the **JWKS URI** field and paste it into the JWKS URI setting on your IdP, if you haven't done so already. 4. Save the credential and connect. n8n decrypts the token returned by your IdP and stores the decrypted form for use in workflows. The response from your IdP must contain at least one JWE-encrypted token (access token, ID token, or both). If the response is fully plaintext, n8n rejects it with the error `Expected at least one JWE-encrypted token but received only plaintext`. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/decrypt-oauth-20-tokens-with-jwe#jwks-endpoint-reference) JWKS endpoint reference ---------------------------------------------------------------------------------------------------------------------------------------------------- n8n exposes the instance's public encryption keys at: Property Value Default path `/rest/.well-known/jwks.json` Authentication None (publicly accessible, by design) Rate limit `N8N_OAUTH_JWE_JWKS_PER_MINUTE` requests per IP per minute (default `60`) Cache headers `Cache-Control: public, max-age=3600, must-revalidate` Response format [JWK Set](https://datatracker.ietf.org/doc/html/rfc7517#section-5) (RFC 7517 §5) If you customized `N8N_ENDPOINT_REST`, substitute your value for `rest` in the path. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/decrypt-oauth-20-tokens-with-jwe#supported-algorithms) Supported algorithms ---------------------------------------------------------------------------------------------------------------------------------------------- n8n supports `RSA-OAEP-256` for key encryption. Configure your IdP to use this `alg` value when encrypting tokens. n8n doesn't restrict content encryption algorithms (`enc`); use any value your IdP supports. The JWKS schema reserves elliptic-curve algorithms (`ECDH-ES` and variants), but n8n doesn't yet generate EC keys. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/decrypt-oauth-20-tokens-with-jwe#troubleshooting) Troubleshooting ------------------------------------------------------------------------------------------------------------------------------------ * **The Encrypted Tokens (JWE) toggle doesn't appear on the credential.** Confirm that you've set `N8N_ENV_FEAT_OAUTH2_JWE=true` on every n8n instance and that you've restarted all instances. * **Error** `**Expected at least one JWE-encrypted token but received only plaintext**`**.** The IdP returned a plaintext token. Confirm that you've enabled token encryption for the client in the IdP and that the IdP fetched a key from your JWKS endpoint. * **The IdP can't fetch the JWKS URI.** Check that the JWKS endpoint is reachable from your IdP. Reverse proxies and authentication middleware sometimes block `/rest/.well-known/jwks.json`. The endpoint must be publicly reachable without authentication. * **The IdP fetches the JWKS too often and gets rate-limited.** Increase `N8N_OAUTH_JWE_JWKS_PER_MINUTE` on your n8n instances, or configure your IdP to cache the JWKS response for the full `max-age` window. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/decrypt-oauth-20-tokens-with-jwe#related-resources) Related resources ---------------------------------------------------------------------------------------------------------------------------------------- * [HTTP Request credentials: Using OAuth2](https://docs.n8n.io/integrations/builtin/credentials/httprequest#using-oauth2) : set up the generic OAuth 2.0 credential. * [Deployment environment variables](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/deployment) : reference for `N8N_ENV_FEAT_OAUTH2_JWE` and `N8N_OAUTH_JWE_JWKS_PER_MINUTE`. * [Encryption key rotation](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/rotate-encryption-keys) : rotate the data encryption key that protects the JWE private key at rest. * [JSON Web Encryption (RFC 7516)](https://datatracker.ietf.org/doc/html/rfc7516) : the JWE specification. [PreviousRotate encryption keys](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/rotate-encryption-keys) [NextRedact execution data](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/redact-execution-data) Last updated 10 days ago Was this helpful? * [How JWE token decryption works](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/decrypt-oauth-20-tokens-with-jwe#how-jwe-token-decryption-works) * [Before you begin](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/decrypt-oauth-20-tokens-with-jwe#before-you-begin) * [Enable JWE token decryption](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/decrypt-oauth-20-tokens-with-jwe#enable-jwe-token-decryption) * [Configure your identity provider](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/decrypt-oauth-20-tokens-with-jwe#configure-your-identity-provider) * [Configure the credential in n8n](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/decrypt-oauth-20-tokens-with-jwe#configure-the-credential-in-n8n) * [JWKS endpoint reference](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/decrypt-oauth-20-tokens-with-jwe#jwks-endpoint-reference) * [Supported algorithms](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/decrypt-oauth-20-tokens-with-jwe#supported-algorithms) * [Troubleshooting](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/decrypt-oauth-20-tokens-with-jwe#troubleshooting) * [Related resources](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/decrypt-oauth-20-tokens-with-jwe#related-resources) Was this helpful? Copy N8N_ENV_FEAT_OAUTH2_JWE=true Copy curl https:///rest/.well-known/jwks.json Copy //.well-known/jwks.json --- # Manage security policies | Deploy | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/manage-security-policies.md) . **Feature availability** Security settings are available on Business and Enterprise plans. Some settings require specific license features. Settings that aren't available on your plan display an **Upgrade** badge. Security settings let you manage instance-wide security policies. You can enforce two-factor authentication for all users and control what users can do in their personal spaces. To access security settings, navigate to **Settings** > **Security**. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/manage-security-policies#enforce-two-factor-authentication) Enforce two-factor authentication ---------------------------------------------------------------------------------------------------------------------------------------------------------------- You can require all users on your instance to set up two-factor authentication (2FA) when they sign in with email and password. **Applies to email and password logins only** 2FA enforcement applies to users authenticating with email and password. Users signing in through SSO (SAML or OIDC) aren't affected by this setting. To enforce 2FA: 1. Navigate to **Settings** > **Security**. 2. In the **Enforce two-factor authentication** section, toggle the switch on. When you enable this setting: * All users must set up 2FA before they can continue using the instance. * Users who haven't configured 2FA yet are prompted to do so on their next sign-in. To stop enforcing 2FA, toggle the switch off. Users who already set up 2FA keep it enabled but new users are no longer required to configure it. Refer to [Two-factor authentication](https://docs.n8n.io/administer/manage-users-and-access/verify-user-identity/require-two-factor-auth) for more information on how individual users can set up 2FA. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/manage-security-policies#personal-space-policies) Personal space policies -------------------------------------------------------------------------------------------------------------------------------------------- Personal space policies let instance admins control whether users can share and publish workflows and credentials from their personal spaces. ### [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/manage-security-policies#sharing-workflows-and-credentials) Sharing workflows and credentials Controls whether users can share workflows and credentials from their personal space with other users or projects. To manage sharing: 1. Navigate to **Settings** > **Security**. 2. In the **Personal Space** section, find **Sharing workflows and credentials**. 3. Toggle the switch to enable or disable sharing. When you disable sharing: * Existing shares remain in place. The setting only affects new sharing actions. * The number of currently shared workflows and credentials is displayed below the toggle. ### [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/manage-security-policies#publishing-workflows) Publishing workflows Controls whether users can publish workflows from their personal space to make them available for execution. To manage publishing: 1. Navigate to **Settings** > **Security**. 2. In the **Personal Space** section, find **Publishing workflows**. 3. Toggle the switch to enable or disable publishing. When you disable publishing: * Currently published workflows remain published. The setting only affects new publish actions. * The number of currently published personal workflows is displayed below the toggle. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/manage-security-policies#enforce-execution-data-redaction) Enforce execution data redaction -------------------------------------------------------------------------------------------------------------------------------------------------------------- You can enforce [execution data redaction](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/redact-execution-data) for all workflows on the instance. Enforcement sets an instance-wide minimum redaction policy that individual workflow settings can't weaken. **Feature availability** Data redaction enforcement is available on Enterprise Self-hosted and Enterprise Cloud plans. **Available from:** n8n version 2.26.0 To enforce data redaction: 1. Navigate to **Settings** > **Security**. 2. In the **Data redaction** section, toggle **Enforce data redaction** on. 3. Under **Redact executions**, select the enforcement scope: * **Production executions (Recommended)**: n8n redacts data from production executions in all workflows. * **Manual and production executions**: n8n redacts data from both manual and production executions in all workflows. 4. Confirm your choice in the dialog. When you enable enforcement: * n8n redacts execution data for all workflows within the selected scope, including workflows that don't have redaction enabled in their own settings. * Users can't set workflow-level redaction settings weaker than the enforced scope. Workflows can still opt into stricter redaction, for example redacting manual executions when only production enforcement is active. * New workflows start with the enforced scope as their redaction policy. Redaction enforcement requires an Enterprise license with the data redaction feature. For details on what redaction covers, revealing data, and permissions, refer to [Execution data redaction](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/redact-execution-data) . [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/manage-security-policies#configure-security-policy-with-environment-variables) Configure security policy with environment variables ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ You can also manage security policy settings from environment variables instead of through the UI. Available from n8n v2.18.0. Set `N8N_SECURITY_POLICY_MANAGED_BY_ENV` to `true` and provide the variables below. See [Manage instance settings using environment variables](https://docs.n8n.io/deploy/host-n8n/configure-n8n/manage-settings-using-environment-variables) for how the activation pattern works. When `N8N_SECURITY_POLICY_MANAGED_BY_ENV` is `true`, the **Enforce two-factor authentication** and **Personal Space** toggles on this page become read-only. Variable Type Default Description `N8N_SECURITY_POLICY_MANAGED_BY_ENV` Boolean `false` Set to `true` to manage the security policy from environment variables. When `true`, n8n applies the security policy variables on every startup and locks the matching UI controls. `N8N_MFA_ENFORCED_ENABLED` Boolean `false` Whether to enforce two-factor authentication for all users (`true`) or not (`false`). `N8N_PERSONAL_SPACE_PUBLISHING_ENABLED` Boolean `true` Whether users can publish from their personal space (`true`) or not (`false`). `N8N_PERSONAL_SPACE_SHARING_ENABLED` Boolean `true` Whether users can share resources from their personal space (`true`) or not (`false`). [PreviousSecurity](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security) [NextSet up SSL](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/set-up-ssl) Last updated 9 days ago Was this helpful? * [Enforce two-factor authentication](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/manage-security-policies#enforce-two-factor-authentication) * [Personal space policies](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/manage-security-policies#personal-space-policies) * [Sharing workflows and credentials](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/manage-security-policies#sharing-workflows-and-credentials) * [Publishing workflows](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/manage-security-policies#publishing-workflows) * [Enforce execution data redaction](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/manage-security-policies#enforce-execution-data-redaction) * [Configure security policy with environment variables](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/manage-security-policies#configure-security-policy-with-environment-variables) Was this helpful? --- # Enable queue mode | Deploy | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/enable-queue-mode.md) . You can run n8n in different modes depending on your needs. The queue mode provides the best scalability. **Binary data storage** n8n doesn't support queue mode with binary data storage in filesystem. If your workflows need to persist binary data in queue mode, you can use [S3 external storage](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/use-external-storage) . [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/enable-queue-mode#how-it-works) How it works -------------------------------------------------------------------------------------------------------------- When running in queue mode, you have multiple n8n instances set up, with one main instance receiving workflow information (such as triggers) and the worker instances performing the executions. Each worker is its own Node.js instance, running in `main` mode, but able to handle multiple simultaneous workflow executions due to their high IOPS (input-output operations per second). By using worker instances and running in queue mode, you can scale n8n up (by adding workers) and down (by removing workers) as needed to handle the workload. This is the process flow: 1. The main n8n instance handles timers and webhook calls, generating (but not running) a workflow execution. 2. It passes the execution ID to a message broker, [Redis](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/enable-queue-mode#start-redis) , which maintains the queue of pending executions and allows the next available worker to pick them up. 3. A worker in the pool picks up message from Redis. 4. The worker uses the execution ID to get workflow information from the database. 5. After completing the workflow execution, the worker: * Writes the results to the database. * Posts to Redis, saying that the execution has finished. 6. Redis notifies the main instance. ![](https://docs.n8n.io/~gitbook/image?url=https%3A%2F%2F2773773108-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252Fjm0ZYRpZIPWge2ZSiDYO%252Fuploads%252Fgit-blob-59811a80e5d001a2ec6c66a978626feac27b0637%252Fqueue-mode-flow.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=c9158091&sv=2) "Diagram showing the flow of data between the main n8n instance, Redis, the n8n workers, and the n8n database" [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/enable-queue-mode#configuring-workers) Configuring workers ---------------------------------------------------------------------------------------------------------------------------- Workers are n8n instances that do the actual work. They receive information from the main n8n process about the workflows that have to get executed, execute the workflows, and update the status after each execution is complete. **Per-process event log files** If your workers share a writable filesystem, give each worker process a unique event log path. Refer to [Per-process event log files](https://docs.n8n.io/administer/observe-and-log/stream-logs-to-external-systems#per-process-event-log-files) for details. ### [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/enable-queue-mode#set-encryption-key) Set encryption key n8n automatically generates an encryption key upon first startup. You can also provide your own custom key using [environment variable](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables) if desired. The encryption key of the main n8n instance must be shared with all worker and webhooks processor nodes to ensure these worker nodes are able to access credentials stored in the database. Set the encryption key for each worker node in a [configuration file](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration) or by setting the corresponding environment variable: ### [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/enable-queue-mode#set-executions-mode) Set executions mode **Database considerations** n8n recommends using Postgres 13+. Running n8n with execution mode set to `queue` with an SQLite database isn't recommended. Set the environment variable `EXECUTIONS_MODE` to `queue` on the main instance and any workers using the following command. Alternatively, you can set `executions.mode` to `queue` in the [configuration file](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables) . ### [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/enable-queue-mode#start-redis) Start Redis **Running Redis on a separate machine** You can run Redis on a separate machine, just make sure that it's accessible by the n8n instance. To run Redis in a Docker container, follow the instructions below: Run the following command to start a Redis instance: By default, Redis runs on `localhost` on port `6379` with no password. Based on your Redis configuration, set the following configurations for the main n8n process. These will allow n8n to interact with Redis. Using configuration file Using environment variables Description `queue.bull.redis.host:localhost` `QUEUE_BULL_REDIS_HOST=localhost` By default, Redis runs on `localhost`. `queue.bull.redis.port:6379` `QUEUE_BULL_REDIS_PORT=6379` The default port is `6379`. If Redis is running on a different port, configure the value. You can also set the following optional configurations: Using configuration file Using environment variables Description `queue.bull.redis.username:USERNAME` `QUEUE_BULL_REDIS_USERNAME` By default, Redis doesn't require a username. If you're using a specific user, configure it variable. `queue.bull.redis.password:PASSWORD` `QUEUE_BULL_REDIS_PASSWORD` By default, Redis doesn't require a password. If you're using a password, configure it variable. `queue.bull.redis.db:0` `QUEUE_BULL_REDIS_DB` The default value is `0`. If you change this value, update the configuration. `queue.bull.redis.timeoutThreshold:10000ms` `QUEUE_BULL_REDIS_TIMEOUT_THRESHOLD` Tells n8n how long it should wait if Redis is unavailable before exiting. The default value is `10000` (ms). `queue.bull.gracefulShutdownTimeout:30` `N8N_GRACEFUL_SHUTDOWN_TIMEOUT` A graceful shutdown timeout for workers to finish executing jobs before terminating the process. The default value is `30` seconds. Now you can start your n8n instance and it will connect to your Redis instance. ### [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/enable-queue-mode#start-workers) Start workers You will need to start worker processes to allow n8n to execute workflows. If you want to host workers on a separate machine, install n8n on the machine and make sure that it's connected to your Redis instance and the n8n database. Start worker processes by running the following command from the root directory: If you're using Docker, use the following command: You can set up multiple worker processes. Make sure that all the worker processes have access to Redis and the n8n database. #### [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/enable-queue-mode#worker-server) Worker server Each worker process runs a server that exposes optional endpoints: * `/healthz`: returns whether the worker is up, if you enable the `QUEUE_HEALTH_CHECK_ACTIVE` environment variable * `/healthz/readiness`: returns whether worker's DB and Redis connections are ready, if you enable the `QUEUE_HEALTH_CHECK_ACTIVE` environment variable * [credentials overwrite endpoint](https://docs.n8n.io/administer/manage-credentials/credential-overwrites) * [`/metrics`](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/configuration-examples/enable-prometheus-metrics) **Customizing health check endpoints** You can customize the health check endpoint path using the [`N8N_ENDPOINT_HEALTH`](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/endpoints) environment variable. #### [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/enable-queue-mode#view-running-workers) View running workers **Feature availability** * Available on Self-hosted Enterprise plans. * If you want access to this feature on Cloud Enterprise, [contact n8n](https://n8n-community.typeform.com/to/y9X2YuGa) . You can view running workers and their performance metrics in n8n by selecting **Settings** > **Workers**. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/enable-queue-mode#running-n8n-with-queues) Running n8n with queues ------------------------------------------------------------------------------------------------------------------------------------ When running n8n with queues, all the production workflow executions get processed by worker processes. For webhooks, this means the HTTP request is received by the main/webhook process, but the actual workflow execution is passed to a worker, which can add some overhead and latency. Redis acts as the message broker, and the database persists data, so access to both is required. Running a distributed system with this setup over SQLite isn't supported. **Migrate data** If you want to migrate data from one database to another, you can use the Export and Import commands. Refer to the [CLI commands for n8n](https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line#export-workflows-and-credentials) documentation to learn how to use these commands. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/enable-queue-mode#webhook-processors) Webhook processors -------------------------------------------------------------------------------------------------------------------------- **Keep in mind** Webhook processes rely on Redis and need the `EXECUTIONS_MODE` environment variable set too. Follow the [configure the workers](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/enable-queue-mode#configuring-workers) section above to setup webhook processor nodes. Webhook processors are another layer of scaling in n8n. Configuring the webhook processor is optional, and allows you to scale the incoming webhook requests. This method allows n8n to process a huge number of parallel requests. All you have to do is add more webhook processes and workers accordingly. The webhook process will listen to requests on the same port (default: `5678`). Run these processes in containers or separate machines, and have a load balancing system to route requests accordingly. n8n doesn't recommend adding the main process to the load balancer pool. If you add the main process to the pool, it will receive requests and possibly a heavy load. This will result in degraded performance for editing, viewing, and interacting with the n8n UI. You can start the webhook processor by executing the following command from the root directory: If you're using Docker, use the following command: ### [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/enable-queue-mode#configure-webhook-url) Configure webhook URL To configure your webhook URL, execute the following command on the machine running the main n8n instance: You can also set this value in the configuration file. ### [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/enable-queue-mode#configure-load-balancer) Configure load balancer When using multiple webhook processes you will need a load balancer to route requests. If you are using the same domain name for your n8n instance and the webhooks, you can set up your load balancer to route requests as follows: * Redirect webhook triggers to the webhook servers pool. Paths to consider: * `/webhook/*`: Webhook trigger node endpoints * `/webhook-waiting/*`: Human-in-the-loop webhook endpoints used by nodes that perform "send and wait" operations (for example, the Slack node). * All other paths (the n8n internal API, the static files for the editor, etc.) should get routed to the main process **Note:** The default URL for manual workflow executions is `/webhook-test/*`. Make sure that these URLs route to your main process. You can change this path in the configuration file `endpoints.webhook` or using the `N8N_ENDPOINT_WEBHOOK` environment variable. If you change these, update your load balancer accordingly. ### [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/enable-queue-mode#disable-webhook-processing-in-the-main-process-optional) Disable webhook processing in the main process (optional) You have webhook processors to execute the workflows. You can disable the webhook processing in the main process. This will make sure to execute all webhook executions in the webhook processors. In the configuration file set `endpoints.disableProductionWebhooksOnMainProcess` to `true` so that n8n doesn't process webhook requests on the main process. Alternatively, you can use the following command: When disabling the webhook process in the main process, run the main process and don't add it to the load balancer's webhook pool. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/enable-queue-mode#configure-worker-concurrency) Configure worker concurrency ---------------------------------------------------------------------------------------------------------------------------------------------- You can define the number of jobs a worker can run in parallel by using the `concurrency` flag. It defaults to `10`. To change it: [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/enable-queue-mode#concurrency-and-scaling-recommendations) Concurrency and scaling recommendations -------------------------------------------------------------------------------------------------------------------------------------------------------------------- n8n recommends setting concurrency to 5 or higher for your worker instances. Setting low concurrency values with a large numbers of workers can exhaust your database's connection pool, leading to processing delays and failures. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/enable-queue-mode#multi-main-setup) Multi-main setup ---------------------------------------------------------------------------------------------------------------------- **Feature availability** * Available on Self-hosted Enterprise plans. In queue mode you can run more than one `main` process for high availability. In a single-mode setup, the `main` process does two sets of tasks: * **regular tasks**, such as running the API, serving the UI, and listening for webhooks, and * **at-most-once tasks**, such as running non-HTTP triggers (timers, pollers, and persistent connections like RabbitMQ and IMAP), and pruning executions and binary data. In a multi-main setup, there are two kinds of `main` processes: * **followers**, which run **regular tasks**, and * the **leader**, which runs **both regular and at-most-once tasks**. ### [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/enable-queue-mode#leader-designation) Leader designation In a multi-main setup, all main instances handle the leadership process transparently to users. In case the current leader becomes unavailable, for example because it crashed or its event loop became too busy, other followers can take over. If the previous leader becomes responsive again, it becomes a follower. ### [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/enable-queue-mode#configuring-multi-main-setup) Configuring multi-main setup To deploy n8n in multi-main setup, ensure: * All `main` processes are running in queue mode and are connected to Postgres and Redis. * All `main` and `worker` processes are running the same version of n8n. * All `main` processes have set the environment variable `N8N_MULTI_MAIN_SETUP_ENABLED` to `true`. * All `main` processes are running behind a load balancer with session persistence (sticky sessions) enabled. If needed, you can adjust the leader key options: Using configuration file Using environment variables Description `multiMainSetup.ttl:10` `N8N_MULTI_MAIN_SETUP_KEY_TTL=10` Time to live (in seconds) for leader key in multi-main setup. `multiMainSetup.interval:3` `N8N_MULTI_MAIN_SETUP_CHECK_INTERVAL=3` Interval (in seconds) for leader check in multi-main setup. [PreviousMeasure performance](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/measure-performance) [NextControl concurrency](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/control-concurrency) Last updated 10 days ago Was this helpful? * [How it works](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/enable-queue-mode#how-it-works) * [Configuring workers](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/enable-queue-mode#configuring-workers) * [Set encryption key](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/enable-queue-mode#set-encryption-key) * [Set executions mode](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/enable-queue-mode#set-executions-mode) * [Start Redis](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/enable-queue-mode#start-redis) * [Start workers](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/enable-queue-mode#start-workers) * [Running n8n with queues](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/enable-queue-mode#running-n8n-with-queues) * [Webhook processors](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/enable-queue-mode#webhook-processors) * [Configure webhook URL](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/enable-queue-mode#configure-webhook-url) * [Configure load balancer](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/enable-queue-mode#configure-load-balancer) * [Disable webhook processing in the main process (optional)](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/enable-queue-mode#disable-webhook-processing-in-the-main-process-optional) * [Configure worker concurrency](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/enable-queue-mode#configure-worker-concurrency) * [Concurrency and scaling recommendations](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/enable-queue-mode#concurrency-and-scaling-recommendations) * [Multi-main setup](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/enable-queue-mode#multi-main-setup) * [Leader designation](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/enable-queue-mode#leader-designation) * [Configuring multi-main setup](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/enable-queue-mode#configuring-multi-main-setup) Was this helpful? Copy export N8N_ENCRYPTION_KEY= Copy export EXECUTIONS_MODE=queue Copy docker run --name some-redis -p 6379:6379 -d redis Copy ./packages/cli/bin/n8n worker Copy docker run --name n8n-queue -p 5679:5678 docker.n8n.io/n8nio/n8n worker Copy ./packages/cli/bin/n8n webhook Copy docker run --name n8n-queue -p 5679:5678 -e "EXECUTIONS_MODE=queue" docker.n8n.io/n8nio/n8n webhook Copy export WEBHOOK_URL=https://your-webhook-url.com Copy export N8N_DISABLE_PRODUCTION_MAIN_PROCESS=true Copy n8n worker --concurrency=5 --- # Code node | Build | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/build/code-in-n8n/cookbook/code-node.md) . This section contains examples and recipes for tasks you can do with the Code node. [](https://docs.n8n.io/build/code-in-n8n/cookbook/code-node#related-resources) Related resources ----------------------------------------------------------------------------------------------------- * [Built-in methods and variables reference](https://docs.n8n.io/build/code-in-n8n/use-built-in-shortcuts) * [Code node](https://docs.n8n.io/build/code-in-n8n/using-the-code-node) [Previousvars](https://docs.n8n.io/build/code-in-n8n/cookbook/built-in-methods-and-variables-examples/vars) [NextGet number of items returned by last node](https://docs.n8n.io/build/code-in-n8n/cookbook/code-node/get-number-of-items-returned-by-last-node) Last updated 10 days ago Was this helpful? Was this helpful? --- # Fix memory issues | Deploy | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/fix-memory-issues.md) . n8n doesn't restrict the amount of data each node can fetch and process. While this gives you freedom, it can lead to errors when workflow executions require more memory than available. This page explains how to identify and avoid these errors. **Only for self-hosted n8n** This page describes memory-related errors when [self-hosting n8n](https://docs.n8n.io/deploy/host-n8n) . Visit [Cloud data management](https://docs.n8n.io/deploy/use-n8n-cloud/configure-cloud/manage-your-data) to learn about memory limits for [n8n Cloud](https://docs.n8n.io/deploy/use-n8n-cloud) . [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/fix-memory-issues#identifying-out-of-memory-situations) Identifying out of memory situations -------------------------------------------------------------------------------------------------------------------------------------------------------------- n8n provides error messages that warn you in some out of memory situations. For example, messages such as **Execution stopped at this node (n8n may have run out of memory while executing it)**. Error messages including **Problem running workflow**, **Connection Lost**, or **503 Service Temporarily Unavailable** suggest that an n8n instance has become unavailable. When self-hosting n8n, you may also see error messages such as **Allocation failed - JavaScript heap out of memory** in your server logs. On n8n Cloud, or when using n8n's Docker image, n8n restarts automatically when encountering such an issue. However, when running n8n with npm you might need to restart it manually. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/fix-memory-issues#typical-causes) Typical causes ------------------------------------------------------------------------------------------------------------------ Such problems occur when a workflow execution requires more memory than available to an n8n instance. Factors increasing the memory usage for a workflow execution include: * Amount of [JSON data](https://docs.n8n.io/build/work-with-data/understand-n8ns-data-structure) . * Size of binary data. * Number of nodes in a workflow. * Some nodes are memory-heavy: the [Code](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code) node and the older Function node can increase memory consumption significantly. * Manual or automatic workflow executions: manual executions increase memory consumption as n8n makes a copy of the data for the frontend. * Additional workflows running at the same time. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/fix-memory-issues#avoiding-out-of-memory-situations) Avoiding out of memory situations -------------------------------------------------------------------------------------------------------------------------------------------------------- When encountering an out of memory situation, there are two options: either increase the amount of memory available to n8n or reduce the memory consumption. ### [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/fix-memory-issues#increase-available-memory) Increase available memory When self-hosting n8n, increasing the amount of memory available to n8n means provisioning your n8n instance with more memory. This may incur additional costs with your hosting provider. On n8n cloud you need to upgrade to a larger plan. ### [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/fix-memory-issues#reduce-memory-consumption) Reduce memory consumption This approach is more complex and means re-building the workflows causing the issue. This section provides some guidelines on how to reduce memory consumption. Not all suggestions are applicable to all workflows. * Split the data processed into smaller chunks. For example, instead of fetching 10,000 rows with each execution, process 200 rows with each execution. * Avoid using the Code node where possible. * Avoid manual executions when processing larger amounts of data. * Split the workflow up into sub-workflows and ensure each sub-workflow returns a limited amount of data to its parent workflow. Splitting the workflow might seem counter-intuitive at first as it usually requires adding at least two more nodes: the [Loop Over Items](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.splitinbatches) node to split up the items into smaller batches and the [Execute Workflow](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executeworkflow) node to start the sub-workflow. However, as long as your sub-workflow does the heavy lifting for each batch and then returns only a small result set to the main workflow, this reduces memory consumption. This is because the sub-workflow only holds the data for the current batch in memory, after which the memory is free again. ### [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/fix-memory-issues#increase-old-memory) Increase old memory This applies to self-hosting n8n. When encountering **JavaScript heap out of memory** errors, it's often useful to allocate additional memory to the old memory section of the V8 JavaScript engine. To do this, set the appropriate [V8 option](https://nodejs.org/api/cli.html#--max-old-space-sizesize-in-megabytes) `--max-old-space-size=SIZE` either through the CLI or through the `NODE_OPTIONS` [environment variable](https://nodejs.org/api/cli.html#node_optionsoptions) . [PreviousUse external storage](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/use-external-storage) [NextKeep n8n running](https://docs.n8n.io/deploy/host-n8n/keep-n8n-running) Last updated 7 days ago Was this helpful? * [Identifying out of memory situations](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/fix-memory-issues#identifying-out-of-memory-situations) * [Typical causes](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/fix-memory-issues#typical-causes) * [Avoiding out of memory situations](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/fix-memory-issues#avoiding-out-of-memory-situations) * [Increase available memory](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/fix-memory-issues#increase-available-memory) * [Reduce memory consumption](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/fix-memory-issues#reduce-memory-consumption) * [Increase old memory](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling/fix-memory-issues#increase-old-memory) Was this helpful? --- # Redact execution data | Deploy | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/redact-execution-data.md) . **Feature availability** Data redaction is available on Enterprise Self-hosted and Enterprise Cloud plans. **Available from:** n8n version 2.16.0 (per-workflow redaction), n8n version 2.26.0 (instance-level enforcement) Execution data redaction lets you hide the input and output data of workflow executions. This helps protect sensitive information like personal data, authentication tokens, and financial records from users who can view the workflow but don't need to see the underlying data. When you enable redaction, execution metadata (status, timing, node names) remains visible, but n8n replaces the actual data payload processed by each node with a redacted indicator. You can configure redaction per workflow, or [enforce it instance-wide](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/redact-execution-data#instance-level-enforcement) so that every workflow redacts execution data. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/redact-execution-data#why-use-execution-data-redaction) Why use execution data redaction ----------------------------------------------------------------------------------------------------------------------------------------------------------- Workflows often process data that the workflow builder or viewers shouldn't have access to outside of n8n. Common scenarios include: * **PII and compliance**: Workflows handling customer personal data (emails, addresses, financial records) need to meet GDPR, SOC 2, or internal security standards. * **Cross-department workflows**: A workflow built by one team processes sensitive data from another team that the builder wouldn't have access to otherwise. * **Least privilege principle**: Limiting data visibility to only those who need it, rather than everyone with workflow view access. Before execution data redaction, the only option was to disable execution history entirely at the workflow level, which removed all visibility into workflow success or failure status. Execution data redaction preserves execution monitoring while hiding the sensitive data payload. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/redact-execution-data#configure-redaction-settings) Configure redaction settings --------------------------------------------------------------------------------------------------------------------------------------------------- You configure redaction per workflow in the workflow settings. You need the `workflow:enableRedaction` or `workflow:disableRedaction` scope (or both) to change these settings. To configure redaction: 1. Open your workflow. 2. Select the **three dots icon** ![three dots icon](https://docs.n8n.io/~gitbook/image?url=https%3A%2F%2F2773773108-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252Fjm0ZYRpZIPWge2ZSiDYO%252Fuploads%252Fgit-blob-513566d28f893c602d89d96c0a06037329725e61%252Fthree-dots-horizontal.png%3Falt%3Dmedia&width=54&dpr=3&quality=100&sign=35eb580b&sv=2) in the upper-right corner. 3. Select **Settings**. 4. Find the **Redact production execution data** and **Redact manual execution data** settings. 5. For each setting, choose either **Default - Do not redact** or **Redact**. 6. Select **Save**. **Settings locked by instance enforcement** When [instance-level enforcement](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/redact-execution-data#instance-level-enforcement) is active, n8n locks the settings covered by the enforced scope to **Redact**. You can't turn them off at the workflow level. ### [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/redact-execution-data#redaction-settings-explained) Redaction settings explained There are two independent toggles that control redaction: Setting What it controls **Redact production execution data** Controls whether n8n redacts data from production (non-manually triggered) executions. Production executions include those triggered by webhooks, schedules, or other triggers when the workflow stays active. **Redact manual execution data** Controls whether n8n redacts data from manually triggered executions. Manual executions include those you start by selecting **Execute Workflow** in the editor. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/redact-execution-data#instance-level-enforcement) Instance-level enforcement ----------------------------------------------------------------------------------------------------------------------------------------------- Instance owners and admins can enforce redaction for all workflows on the instance instead of relying on each workflow's individual settings. Enforcement sets a minimum redaction policy (a "floor") that applies everywhere. To enable enforcement, navigate to **Settings** > **Security** and configure the **Data redaction** section. Refer to [Security settings](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/manage-security-policies#enforce-execution-data-redaction) for the step-by-step instructions. ### [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/redact-execution-data#enforcement-scope) Enforcement scope The enforcement scope controls which executions n8n redacts across the instance: Scope What it enforces **Production executions** n8n redacts data from production executions in every workflow. Manual executions follow each workflow's own settings. This is the recommended setting: it protects live data while keeping manual test runs visible for debugging. **Manual and production executions** n8n redacts data from all executions in every workflow. Use this when even test data is sensitive. ### [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/redact-execution-data#how-enforcement-interacts-with-workflow-settings) How enforcement interacts with workflow settings * **Enforcement applies when execution data is read.** n8n redacts data covered by the enforcement scope whenever anyone views an execution, including executions from workflows that don't have redaction enabled in their own settings. * **Workflow settings can't be weaker than the enforced scope.** The workflow settings UI locks the affected redaction toggles, and the [public API](https://docs.n8n.io/connect/n8n-api) rejects attempts to create or update a workflow with a redaction policy below the floor. Workflows can still opt into stricter redaction than the floor. * **New workflows start at the floor.** When you create a workflow while enforcement is active, its redaction policy defaults to the enforced scope. If you create a workflow through the public API without specifying a redaction policy, n8n sets it to the floor. * **Existing workflow settings stay as they are.** Enabling enforcement doesn't change the stored settings of existing workflows. Their execution data is still redacted at the enforced scope, and if you later disable enforcement, each workflow returns to its own settings. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/redact-execution-data#what-gets-redacted) What gets redacted ------------------------------------------------------------------------------------------------------------------------------- When n8n redacts an execution, it redacts: * **Item JSON data**: n8n replaces all input and output data (`item.json`) for each node with an empty object. * **Binary data**: n8n removes binary data (`item.binary`) such as files and images. * **Declared sensitive fields**: n8n always redacts fields that node authors mark as sensitive (using `sensitiveOutputFields`) and prevents revealing them, even for users with reveal access. * **Error metadata**: n8n redacts error messages, preserving only the error type and HTTP status code (for API errors) to aid in troubleshooting. In the redacted execution: * The execution viewer displays a **"Data redacted"** indicator with a shredder icon instead of the usual data tables. * Execution metadata remains visible: node names, execution status (success/failure), timing information, and the workflow structure. **Error information** When n8n redacts execution data, it also redacts error details to prevent sensitive information from leaking through error messages. Only the error type (for example, `NodeApiError`) and HTTP status code remain. This provides enough information to identify the category of failure without exposing data. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/redact-execution-data#reveal-redacted-data) Reveal redacted data ----------------------------------------------------------------------------------------------------------------------------------- Users with the **Reveal execution data** (`execution:reveal`) scope can temporarily view redacted execution data for a specific execution. Instance owners and admins have this scope by default. To reveal data: 1. Open the execution in the execution viewer. 2. Select the **Reveal data** button displayed in the redacted data area. 3. Review the confirmation dialog. It explains that: * The system logs the action in the audit trail. * You should only reveal data if you have a legitimate reason. * Unnecessary access may violate your organization's policy. 4. Select **Reveal data** to confirm. The execution data becomes visible for that execution in the current session. **Executions using dynamic credentials** n8n denies reveal requests for executions that used dynamic credentials, regardless of the user's permissions or the redaction policy in effect. This prevents exposing credentials that the execution resolved at runtime. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/redact-execution-data#audit-logging) Audit logging --------------------------------------------------------------------------------------------------------------------- [Log streaming](https://docs.n8n.io/administer/observe-and-log/stream-logs-to-external-systems) tracks reveal actions and enforcement policy changes. The following audit events are available: Event Description `n8n.audit.execution.data.revealed` n8n emits this event when a user reveals redacted execution data. Includes the user, execution ID, workflow ID, timestamp, IP address, and the redaction policy in effect. `n8n.audit.execution.data.reveal_failure` n8n emits this event when it denies a reveal attempt (for example, due to insufficient permissions). Includes the same fields plus the rejection reason. `n8n.audit.redaction-enforcement.updated` n8n emits this event when a user changes the instance-level enforcement policy. Includes the user and the policy values before and after the change. These events integrate with your existing log streaming destinations (syslog, webhooks, Sentry) and support compliance reporting and access auditing. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/redact-execution-data#permission-scopes) Permission scopes ----------------------------------------------------------------------------------------------------------------------------- Execution data redaction introduces the following permission scopes that you can assign through [custom project roles](https://docs.n8n.io/administer/manage-users-and-access/set-permissions-and-roles-rbac/create-custom-roles) : Scope Purpose `workflow:enableRedaction` Allows turning redaction on in workflow settings. Displayed as **Enable data redaction** in the role configuration UI. `workflow:disableRedaction` Allows turning redaction off in workflow settings. Displayed as **Disable data redaction** in the role configuration UI. By default, instance owners, admins, and project admins have the permissions to enable or disable redaction and to reveal redacted data. You can create custom roles to give more users, such as workflow builders, one or both scopes independently. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/redact-execution-data#what-redaction-doesnt-cover) What redaction doesn't cover -------------------------------------------------------------------------------------------------------------------------------------------------- Redaction controls the visibility of execution data when users view executions. It's not a backend access control, and some data paths fall outside its scope. Keep these limitations in mind when evaluating redaction for compliance: * **Code node** `**console.log**` **output**: data that a Code node logs with `console.log` isn't redacted. In manual executions, the output appears in the editor's Logs panel. In production executions, the output goes to the server's standard output (stdout) and any logging infrastructure attached to it. * **Data flowing between nodes**: redaction doesn't restrict what downstream nodes receive. During an execution, data flows between nodes without restriction, so any node in the workflow can send execution data to external systems. Redaction controls what users see in the execution viewer, not what the workflow itself does with the data. * **Webhook responses**: the response body that a workflow returns to a caller (for example, through the Respond to Webhook node or a node's respond option) is the raw data, not a redacted version. * **Authentication headers in outbound requests**: redaction doesn't alter the requests workflows make to external services, including any authentication headers they contain. * **No field-level redaction**: redaction applies to a node's entire data payload. You can't configure redaction for individual fields within the data. The exception is fields that node authors declare as sensitive, which n8n always redacts. * **Stored data stays as it is**: redaction doesn't encrypt or change execution data in the database. n8n applies redaction when serving the data through the API. Anyone with direct database access can read the underlying data. * **Enforcement doesn't propagate through source control**: instance-level enforcement is an instance policy and isn't included when you push workflows with [source control](https://docs.n8n.io/administer/use-source-control-and-environments) . A workflow pushed from an enforced instance to a non-enforced instance isn't redacted on the target instance. This matches the behavior of other instance-level policies, such as two-factor authentication enforcement. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/redact-execution-data#best-practices) Best practices ----------------------------------------------------------------------------------------------------------------------- ### [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/redact-execution-data#choosing-the-right-redaction-policy) Choosing the right redaction policy Scenario Recommended setting Workflows processing PII, financial data, or authentication tokens in production Redact production execution data Workflows where even test data is sensitive (for example, using copies of production data) Redact both production and manual execution data Workflows processing non-sensitive data, or during initial development No redaction ### [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/redact-execution-data#general-recommendations) General recommendations * **Start with production redaction**: For most workflows handling sensitive data, redacting production executions while keeping manual executions visible provides a good balance between security and ease of debugging. * **Redact manual data when needed**: If your test environment uses real or production-like data, enable manual execution redaction as well. * **Use log streaming**: Enable [log streaming](https://docs.n8n.io/administer/observe-and-log/stream-logs-to-external-systems) to capture reveal audit events. This provides an audit trail for compliance and allows you to monitor who accesses sensitive execution data. * **Review redaction settings during workflow reviews**: Include redaction policy as part of your workflow review or approval process, particularly for workflows that handle cross-department or customer-facing data. [](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/redact-execution-data#security-considerations) Security considerations ----------------------------------------------------------------------------------------------------------------------------------------- * n8n applies redaction at the API level and never sends redacted data to the browser. * When you [create custom nodes](https://docs.n8n.io/connect/create-nodes/overview) , you can declare specific output fields as sensitive (using `sensitiveOutputFields` in the node type definition). n8n always redacts these fields and prevents revealing them, even for users with reveal access. * If the redaction service can't resolve a node's type definition (for example, after uninstalling a community node), n8n fully redacts all output data for that node. This fail-closed approach prevents unknown nodes from leaking sensitive fields. * When redaction is enabled, execution data is also automatically redacted from [log streaming](https://docs.n8n.io/administer/observe-and-log/stream-logs-to-external-systems) and logging output. [PreviousDecrypt OAuth 2.0 tokens with JWE](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/decrypt-oauth-20-tokens-with-jwe) [NextScaling](https://docs.n8n.io/deploy/host-n8n/configure-n8n/scaling) Last updated 10 days ago Was this helpful? * [Why use execution data redaction](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/redact-execution-data#why-use-execution-data-redaction) * [Configure redaction settings](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/redact-execution-data#configure-redaction-settings) * [Redaction settings explained](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/redact-execution-data#redaction-settings-explained) * [Instance-level enforcement](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/redact-execution-data#instance-level-enforcement) * [Enforcement scope](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/redact-execution-data#enforcement-scope) * [How enforcement interacts with workflow settings](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/redact-execution-data#how-enforcement-interacts-with-workflow-settings) * [What gets redacted](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/redact-execution-data#what-gets-redacted) * [Reveal redacted data](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/redact-execution-data#reveal-redacted-data) * [Audit logging](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/redact-execution-data#audit-logging) * [Permission scopes](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/redact-execution-data#permission-scopes) * [What redaction doesn't cover](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/redact-execution-data#what-redaction-doesnt-cover) * [Best practices](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/redact-execution-data#best-practices) * [Choosing the right redaction policy](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/redact-execution-data#choosing-the-right-redaction-policy) * [General recommendations](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/redact-execution-data#general-recommendations) * [Security considerations](https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/redact-execution-data#security-considerations) Was this helpful? --- # Set up source control | Administer | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/administer/use-source-control-and-environments/set-up-source-control.md) . Link a Git repository to an n8n instance and configure your source control. n8n uses source control to provide environments. Refer to [Environments in n8n](https://docs.n8n.io/administer/use-source-control-and-environments/work-with-environments) for more information. [](https://docs.n8n.io/administer/use-source-control-and-environments/set-up-source-control#prerequisites) Prerequisites ----------------------------------------------------------------------------------------------------------------------------- To use source control with n8n, you need a Git repository with either: * SSH access (using deploy keys), or * HTTPS access (using Personal Access Tokens) This document assumes you are familiar with Git and your Git provider. [](https://docs.n8n.io/administer/use-source-control-and-environments/set-up-source-control#step-1-set-up-your-repository-and-branches) Step 1: Set up your repository and branches ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- For a new setup: 1. Create a new repository for use with n8n. 2. Create the branches you need. For example, if you plan to have different environments for test and production, set up a branch for each. To help decide what branches you need for your use case, refer to [Branch patterns](https://docs.n8n.io/administer/use-source-control-and-environments/choose-branching-patterns) . [](https://docs.n8n.io/administer/use-source-control-and-environments/set-up-source-control#step-2-configure-git-in-n8n) Step 2: Configure Git in n8n ---------------------------------------------------------------------------------------------------------------------------------------------------------- 1. Go to **Settings** > **Environments**. 2. Choose your connection method: * **SSH**: In **Git repository URL**, enter the SSH URL for your repository (for example, `git@github.com:username/repo.git`). * **HTTPS**: In **Git repository URL** enter the HTTPS URL for your repository (for example, `https://github.com/username/repo.git`). 3. Configure authentication based on your connection method: * **For SSH**: n8n supports ED25519 and RSA public key algorithms. ED25519 is the default. Select **RSA** under **SSH Key** if your git host requires RSA. Copy the SSH key. * **For HTTPS**: Enter your credentials: * **Username**: Your Git provider username. * **Token**: Your Personal Access Token (PAT) from your Git provider. [](https://docs.n8n.io/administer/use-source-control-and-environments/set-up-source-control#step-3-set-up-authentication) Step 3: Set up authentication ------------------------------------------------------------------------------------------------------------------------------------------------------------ Configure authentication based on your chosen connection method. ### [](https://docs.n8n.io/administer/use-source-control-and-environments/set-up-source-control#ssh-authentication-using-deploy-keys) SSH authentication (using deploy keys) Set up SSH access by creating a deploy key for the repository using the SSH key from n8n. The key must have write access. The steps depend on your Git provider. Help links for common providers: * [GitHub | Managing deploy keys](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/managing-deploy-keys) * [GitLab | Deploy keys](https://docs.gitlab.com/ee/user/project/deploy_keys/) ### [](https://docs.n8n.io/administer/use-source-control-and-environments/set-up-source-control#https-authentication-using-personal-access-tokens) HTTPS authentication (using Personal Access Tokens) Create a Personal Access Token (PAT) with repository access permissions. Help links for creating PATs with common providers: * [GitHub | Managing personal access tokens](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens) * [GitLab | Personal access tokens](https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html) * [Bitbucket | App passwords](https://support.atlassian.com/bitbucket-cloud/docs/app-passwords/) Required permissions for your token: * Repository read/write access * Contents read/write (for GitHub) * Source code pull/push (for GitLab) [](https://docs.n8n.io/administer/use-source-control-and-environments/set-up-source-control#step-4-connect-n8n-and-configure-your-instance) Step 4: Connect n8n and configure your instance ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 1. In **Settings** > **Environments** in n8n, select **Connect**. n8n connects to your Git repository. 2. Under **Instance settings**, choose which branch you want to use for the current n8n instance. 3. **Optional**: select **Protected instance** to prevent users editing source-controlled resources in this instance. This is useful for protecting production instances. 4. **Optional**: choose a custom color for the instance. This will appear in the menu next to the source control push and pull buttons. It helps users know which instance they're in. 5. Select **Save settings**. [PreviousChoose branching patterns](https://docs.n8n.io/administer/use-source-control-and-environments/choose-branching-patterns) [NextPush and pull changes](https://docs.n8n.io/administer/use-source-control-and-environments/push-and-pull-changes) Last updated 9 days ago Was this helpful? * [Prerequisites](https://docs.n8n.io/administer/use-source-control-and-environments/set-up-source-control#prerequisites) * [Step 1: Set up your repository and branches](https://docs.n8n.io/administer/use-source-control-and-environments/set-up-source-control#step-1-set-up-your-repository-and-branches) * [Step 2: Configure Git in n8n](https://docs.n8n.io/administer/use-source-control-and-environments/set-up-source-control#step-2-configure-git-in-n8n) * [Step 3: Set up authentication](https://docs.n8n.io/administer/use-source-control-and-environments/set-up-source-control#step-3-set-up-authentication) * [SSH authentication (using deploy keys)](https://docs.n8n.io/administer/use-source-control-and-environments/set-up-source-control#ssh-authentication-using-deploy-keys) * [HTTPS authentication (using Personal Access Tokens)](https://docs.n8n.io/administer/use-source-control-and-environments/set-up-source-control#https-authentication-using-personal-access-tokens) * [Step 4: Connect n8n and configure your instance](https://docs.n8n.io/administer/use-source-control-and-environments/set-up-source-control#step-4-connect-n8n-and-configure-your-instance) Was this helpful? --- # How memory works | Build | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/build/integrate-ai/understand-ai-components/how-memory-works.md) . Memory is a key part of AI chat services. The memory keeps a history of previous messages, allowing for an ongoing conversation with the AI, rather than every interaction starting fresh. [](https://docs.n8n.io/build/integrate-ai/understand-ai-components/how-memory-works#ai-memory-in-n8n) AI memory in n8n --------------------------------------------------------------------------------------------------------------------------- To add memory to your AI workflow you can use either: * [Simple Memory](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memorybufferwindow) : stores a customizable length of chat history for the current session. This is the easiest to get started with. * One of the memory services that n8n provides nodes for. These include: * [Motorhead](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memorymotorhead) * [Redis Chat Memory](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memoryredischat) * [Postgres Chat Memory](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memorypostgreschat) * [Xata](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memoryxata) * [Zep](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memoryzep) If you need to do advanced AI memory management in your workflows, use the [Chat Memory Manager](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memorymanager) node. This node is useful when you: * Can't add a memory node directly. * Need to do more complex memory management, beyond what the memory nodes offer. For example, you can add this node to check the memory size of the Agent node's response, and reduce it if needed. * Want to inject messages to the AI that look like user messages, to give the AI more context. [PreviousWhat agents do](https://docs.n8n.io/build/integrate-ai/understand-ai-components/what-agents-do) [NextHow tools work](https://docs.n8n.io/build/integrate-ai/understand-ai-components/how-tools-work) Last updated 9 days ago Was this helpful? --- # Row operations | Nodes | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datatable/rows.md) . Use row operations to delete, get, insert, update, upsert, or filter rows in a data table. Refer to the [Data Table node](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datatable) documentation for more information on the node itself. ### [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datatable/rows#delete-row) Delete row Use this operation to delete one or more rows from a data table, based on a defined condition(s). Enter these parameters: * **Resource:** Select **Row**. * **Operation:** Select **Delete**. * **Data table:** Select how to identify the data table to operate on: * **From list:** Select the table from a drop-down list of all your data tables. * **By Name:** Enter the name of your data table. * **By ID:** Enter the ID of your data table * **Must Match:** Select whether to delete rows that match **Any Condition** or **All Conditions** defined in the next step. * **Conditions:** Click **Add Condition** to define which rows from the data table to operate on. You can add multiple conditions. For each one: * **Column:** Select the column you want to compare. * **Condition:** Choose how to compare the column value: **Equals**, **Not Equals**, **Greater Than**, **Greater Than or Equal**, **Less Than**, **Less Than or Equal**, **Is Empty**, or **Is Not Empty**. * **Value:** Enter the value to compare the column against. You can use a fixed value or an expression that references data from previous nodes. This field doesn't exist for **Is Empty** and **Is Not Empty** conditions. #### [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datatable/rows#delete-row-options) Delete row options Use these options to further refine the action's behavior: * **Dry Run:** Enable to simulate deletion without modifying the table. The node returns rows that would be deleted, including their state before and after the operation. ### [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datatable/rows#get-row) Get row Use this operation to retrieve one or more rows from a data table, based on a defined condition(s). Enter these parameters: * **Resource:** Select **Row**. * **Operation:** Select **Get**. * **Data table:** Select how to identify the data table to operate on: * **From list:** Select the table from a drop-down list of all your data tables. * **By Name:** Enter the name of your data table. * **By ID:** Enter the ID of your data table * **Must Match:** Select whether to get rows that match **Any Condition** or **All Conditions** defined in the next step. * **Conditions:** Click **Add Condition** to define which rows from the data table to operate on. You can add multiple conditions. For each one: * **Column:** Select the column you want to compare. * **Condition:** Choose how to compare the column value: **Equals**, **Not Equals**, **Greater Than**, **Greater Than or Equal**, **Less Than**, **Less Than or Equal**, **Is Empty**, or **Is Not Empty**. * **Value:** Enter the value to compare the column against. You can use a fixed value or an expression that references data from previous nodes. This field doesn't exist for **Is Empty** and **Is Not Empty** conditions. * **Return All:** Enable to return all matching rows. Or, disable and enter a **Limit** for the number of rows to return, for example `50`. * **Order By:** Enable to define the column to order results on, and the direction (ascending or descending). Or, disable for no ordering of results. ### [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datatable/rows#if-row-exists) If row exists Use this operation to check whether a row matching the defined condition(s) exists in a data table. If a matching row is found, the node outputs the same input item it received, unchanged. If no matching rows exist, it outputs nothing. Enter these parameters: * **Resource:** Select **Row**. * **Operation:** Select **If Row Exists**. * **Data table:** Select how to identify the data table to operate on: * **From list:** Select the table from a drop-down list of all your data tables. * **By Name:** Enter the name of your data table. * **By ID:** Enter the ID of your data table * **Must Match:** Select whether rows must match **Any Condition** or **All Conditions** defined in the next step. * **Conditions:** Click **Add Condition** to define the data table rows to operate on. You can add multiple conditions. For each one: * **Column:** Select the column you want to compare. * **Condition:** Choose how to compare the column value: **Equals**, **Not Equals**, **Greater Than**, **Greater Than or Equal**, **Less Than**, **Less Than or Equal**, **Is Empty**, or **Is Not Empty**. * **Value:** Enter the value to compare the column against. You can use a fixed value or an expression that references data from previous nodes. This field doesn't exist for **Is Empty** and **Is Not Empty** conditions. ### [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datatable/rows#if-row-does-not-exist) If row does not exist Use this operation to check that no rows matching the defined condition(s) exists in a data table. If no matching row is found, the node outputs the same input item it received, unchanged. If a matching row exists, it outputs nothing. Enter these parameters: * **Resource:** Select **Row**. * **Operation:** Select **If Row Does Not Exist**. * **Data table:** Select how to identify the data table to operate on: * **From list:** Select the table from a drop-down list of all your data tables. * **By Name:** Enter the name of your data table. * **By ID:** Enter the ID of your data table. * **Must Match:** Select whether rows must match **Any Condition** or **All Conditions** defined in the next step. * **Conditions:** Click **Add Condition** to define the data table rows to operate on. You can add multiple conditions. For each one: * **Column:** Select the column you want to compare. * **Condition:** Choose how to compare the column value: **Equals**, **Not Equals**, **Greater Than**, **Greater Than or Equal**, **Less Than**, **Less Than or Equal**, **Is Empty**, or **Is Not Empty**. * **Value:** Enter the value to compare the column against. You can use a fixed value or an expression that references data from previous nodes. This field doesn't exist for **Is Empty** and **Is Not Empty** conditions. ### [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datatable/rows#insert-row) Insert row Use this operation to insert a new row into a data table. Enter these parameters: * **Resource:** Select **Row**. * **Operation:** Select **Insert**. * **Data table:** Select how to identify the data table to operate on: * **From list:** Select the table from a drop-down list of all your data tables. * **By Name:** Enter the name of your data table. * **By ID:** Enter the ID of your data table. * **Mapping Column Mode:** Select whether to: * **Map Each Column Manually:** Explicitly select which incoming data fields to map to which column. This allows you to map even when the incoming data field names don't match the data table column names. You can choose to delete certain values from the mapping. * **Map Automatically:** Allow the node to automatically match data fields to columns by name. For successful mapping, the field names in your incoming data must exactly match the column names in the data table. All fields will be mapped. #### [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datatable/rows#insert-row-options) Insert row options Use these options to further refine the action's behavior: * **Optimize Bulk:** Enable to prevent inserted data from being returned. This improves bulk insert performance by up to 5x. ### [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datatable/rows#update-row) Update row Use this operation to update one or more rows in a data table, based on a defined condition(s). Enter these parameters: * **Resource:** Select **Row**. * **Operation:** Select **Update**. * **Data table:** Select how to identify the data table to operate on: * **From list:** Select the table from a drop-down list of all your data tables. * **By Name:** Enter the name of your data table. * **By ID:** Enter the ID of your data table. * **Must Match:** Select whether to update rows that match **Any Condition** or **All Conditions** defined in the next step. * **Conditions:** Click **Add Condition** to define the data table rows to operate on. You can add multiple conditions. For each one: * **Column:** Select the column you want to compare. * **Condition:** Choose how to compare the column value: **Equals**, **Not Equals**, **Greater Than**, **Greater Than or Equal**, **Less Than**, **Less Than or Equal**, **Is Empty**, or **Is Not Empty**. * **Value:** Enter the value to compare the column against. You can use a fixed value or an expression that references data from previous nodes. This field doesn't exist for **Is Empty** and **Is Not Empty** conditions. * **Mapping Column Mode:** Select whether to: * **Map Each Column Manually:** Explicitly select which incoming data fields to map to which column. This allows you to map even when the incoming data field names don't match the data table column names. You can choose to delete certain values from the mapping. * **Map Auomatically:** Allow the node to automatically match data fields to columns by name. For successful mapping, the field names in your incoming data must exactly match the column names in the data table. All fields will be mapped. #### [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datatable/rows#update-row-options) Update row options Use these options to further refine the action's behavior: * **Dry Run:** Enable to simulate updating, without modifying the table. The node returns rows that would be updated, including their state before and after the operation. ### [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datatable/rows#upsert-row) Upsert row Use this operation to upsert into a data table. If a row matching the defined condition(s) exists, it's updated with the provided values. If no matching row exists, a new row is created. * **Resource:** Select **Row**. * **Operation:** Select **Upsert**. * **Data table:** Select how to identify the data table to operate on: * **From list:** Select the table from a drop-down list of all your data tables. * **By Name:** Enter the name of your data table. * **By ID:** Enter the ID of your data table. * **Must Match:** Select whether to upsert rows that match **Any Condition** or **All Conditions** defined in the next step. * **Conditions:** Click **Add Condition** to define the data table rows to operate on. You can add multiple conditions. For each one: * **Column:** Select the column you want to compare. * **Condition:** Choose how to compare the column value: **Equals**, **Not Equals**, **Greater Than**, **Greater Than or Equal**, **Less Than**, **Less Than or Equal**, **Is Empty**, or **Is Not Empty**. * **Value:** Enter the value to compare the column against. You can use a fixed value or an expression that references data from previous nodes. This field doesn't exist for **Is Empty** and **Is Not Empty** conditions. * **Mapping Column Mode:** Select whether to: * **Map Each Column Manually:** Explicitly select which incoming data fields to map to which column. This allows you to map even when the incoming data field names don't match the data table column names. You can choose to delete certain values from the mapping. * **Map Auomatically:** Allow the node to automatically match data fields to columns by name. For successful mapping, the field names in your incoming data must exactly match the column names in the data table. All fields will be mapped. #### [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datatable/rows#upsert-row-options) Upsert row options Use these options to further refine the action's behavior: * **Dry Run:** Enable to simulate the upsert operation without modifying the table. The node returns rows that would be affected, including their state before and after the operation. [PreviousData Table](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datatable) [NextTable operations](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datatable/tables) Last updated 10 days ago Was this helpful? --- # Microsoft Agent 365 Trigger | Nodes | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.microsoftagent365trigger.md) . **Early preview** This is an early preview for building agents with Microsoft Agent 365 and n8n. You need to be part of the [Frontier preview program](https://adoption.microsoft.com/copilot/frontier-program/) to get early access to Microsoft Agent 365. Use the Microsoft Agent 365 Trigger node to receive messages from Microsoft Agent 365 and respond with AI-powered agent capabilities. This node allows n8n to act as the backend for your Agent 365 agents. **Credentials** You can find authentication information for this node [here](https://docs.n8n.io/integrations/builtin/credentials/microsoftagent365) . [](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.microsoftagent365trigger#node-connectors) Node connectors ------------------------------------------------------------------------------------------------------------------------------------------------------- The Microsoft Agent 365 Trigger node can connect to the following sub-nodes: * **Model**: Connect a language model (Chat model sub-node) to process incoming messages * **Memory**: Connect a memory sub-node to maintain conversation context. A single n8n workflow powers multiple Agent instances on the Microsoft side, so multiple users will interact with the same workflow. Choose your session ID key carefully to scope conversations to individual Agent instances and prevent conversation history from bleeding between them. * **Tool**: Connect tool sub-nodes to give your agent additional capabilities [](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.microsoftagent365trigger#node-options) Node options ------------------------------------------------------------------------------------------------------------------------------------------------- ### [](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.microsoftagent365trigger#enable-microsoft-work-iq-tools-for-a365) Enable Microsoft Work IQ Tools for A365 Toggle this option to give your agent access to Microsoft 365 tools through the Model Context Protocol (MCP). Default: Off. When enabled, select one of: * **All**: Enable all available Microsoft MCP tools * **Selected**: Choose specific tools from the list: * Calendar * Mail * SharePoint * Teams * Word * and more [](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.microsoftagent365trigger#getting-started) Getting started ------------------------------------------------------------------------------------------------------------------------------------------------------- We recommend following these resources to set up your Agent 365 integration: 1. [Microsoft Agent 365 developer documentation](https://learn.microsoft.com/en-us/microsoft-agent-365/developer/) : Official documentation for building agents with Microsoft Agent 365 2. [Agent 365 CLI Documentation](https://learn.microsoft.com/en-us/microsoft-agent-365/developer/agent-365-cli) : Cross-platform command-line tool for deploying and managing Agent 365 applications on Azure [](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.microsoftagent365trigger#related-resources) Related resources ----------------------------------------------------------------------------------------------------------------------------------------------------------- Refer to [Microsoft Agent 365 developer documentation](https://learn.microsoft.com/en-us/microsoft-agent-365/developer/) for more information about the service. View n8n's [Advanced AI](https://docs.n8n.io/build/integrate-ai) documentation. [PreviousLangChain Code](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.code) [NextAzure AI Search Vector Store](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.vectorstoreazureaisearch) Last updated 9 days ago Was this helpful? * [Node connectors](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.microsoftagent365trigger#node-connectors) * [Node options](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.microsoftagent365trigger#node-options) * [Enable Microsoft Work IQ Tools for A365](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.microsoftagent365trigger#enable-microsoft-work-iq-tools-for-a365) * [Getting started](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.microsoftagent365trigger#getting-started) * [Related resources](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.microsoftagent365trigger#related-resources) Was this helpful? --- # Common issues | Nodes | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executecommand/common-issues.md) . Here are some common errors and issues with the [Execute Command node](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executecommand) and steps to resolve or troubleshoot them. [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executecommand/common-issues#command-failed-andltcommandandgt-binsh-andltcommandandgt-not-found) Command failed: /bin/sh: : not found ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- This error occurs when the shell environment can't find one of the commands in the **Command** parameter. To fix this error, review the following: * Check that the command and its arguments don't have typos in the **Command** parameter. * Check that the command is in the `PATH` of the user running n8n. * If you are running n8n with Docker, check if the command is available within the container by trying to run it manually. If your command isn't included in the container, you might have to extend the official n8n image with a [custom image](https://docs.docker.com/build/building/base-images/) that includes your command. * If n8n is already running: Copy # Find n8n's container ID, it will be the first column docker ps | grep n8n # Try to execute the command within the running container docker container exec * If n8n isn't running: Copy # Start up a new container that runs the command instead of n8n # Use the same image and tag that you use to run n8n normally docker run -it --rm --entrypoint /bin/sh docker.n8n.io/n8nio/n8n -c [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executecommand/common-issues#error-stdout-maxbuffer-length-exceeded) Error: stdout maxBuffer length exceeded --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- This error happens when your command returns more output than the Execute Command node is able to process at one time. To avoid this error, reduce output your command produces. Check your command's manual page or documentation to see if there are flags to limit or filter output. If not, you may need to pipe the output to another command to remove unneeded info. [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executecommand/common-issues#powershell-commands-get-truncated-at-line-breaks) PowerShell commands get truncated at line breaks ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- On Windows, the Execute Command node passes the **Command** parameter to the system shell as a single string. If your command contains line breaks, the shell only executes the first line and ignores the rest. This is a Windows shell limitation. The underlying `cmd.exe` process treats each line break as the end of the command. To fix this, write your PowerShell command on a single line. If the command is complex, join statements with semicolons: For longer scripts, save the script to a file and run it with the `-File` flag instead: [PreviousExecute Command](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executecommand) [NextExecute Sub-workflow](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executeworkflow) Last updated 3 days ago Was this helpful? * [Command failed: /bin/sh: : not found](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executecommand/common-issues#command-failed-andltcommandandgt-binsh-andltcommandandgt-not-found) * [Error: stdout maxBuffer length exceeded](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executecommand/common-issues#error-stdout-maxbuffer-length-exceeded) * [PowerShell commands get truncated at line breaks](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executecommand/common-issues#powershell-commands-get-truncated-at-line-breaks) Was this helpful? Copy powershell -Command "Get-ChildItem C:\Data; Write-Output 'Done'" Copy powershell -File C:\Scripts\my-script.ps1 --- # AI Agent | Nodes | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent.md) . An AI agent is an autonomous system that receives data, makes rational decisions, and acts within its environment to achieve specific goals. The AI agent's environment is everything the agent can access that isn't the agent itself. This agent uses external tools and APIs to perform actions and retrieve information. It can understand the capabilities of different tools and determine which tool to use depending on the task. **Connect a tool** You must connect at least one tool [sub-node](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes) to an AI Agent node. **Agent type** Prior to version 1.82.0, the AI Agent had a setting for working as different agent types. This has now been removed and all AI Agent nodes work as a `Tools Agent` which was the recommended and most frequently used setting. If you're working with older versions of the AI Agent in workflows or templates, as long as they were set to 'Tools Agent', they should continue to behave as intended with the updated node. [](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent#templates-and-examples) Templates and examples -------------------------------------------------------------------------------------------------------------------------------------------------- [Browse n8n-nodes-langchain.agent integration templates](https://n8n.io/integrations/agent) or [search all templates](https://n8n.io/workflows/) [](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent#related-resources) Related resources ---------------------------------------------------------------------------------------------------------------------------------------- Refer to [LangChain's documentation on agents](https://js.langchain.com/docs/concepts/agents/) for more information about the service. New to AI Agents? Read the [n8n blog introduction to AI agents](https://blog.n8n.io/ai-agents/) . View n8n's [Advanced AI](https://docs.n8n.io/build/integrate-ai) documentation. [](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent#common-issues) Common issues -------------------------------------------------------------------------------------------------------------------------------- For common errors or issues and suggested resolution steps, refer to [Common Issues](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/common-issues) . [PreviousRoot nodes](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes) [NextConversational Agent](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/conversational-agent) Last updated 9 days ago Was this helpful? * [Templates and examples](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent#templates-and-examples) * [Related resources](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent#related-resources) * [Common issues](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent#common-issues) Was this helpful? --- # Table operations | Nodes | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datatable/tables.md) . Use table operations to create, delete, list and update data tables. Refer to the [Data Table node](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datatable) documentation for more information on the node itself. ### [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datatable/tables#create-a-data-table) Create a data table Use this operation to create a new data table. Enter these parameters: * **Resource:** Select **Table**. * **Operation:** Select **Create**. * **Name:** Enter a name for the data table, or define using an expression. * **Columns:** Click **Add Column** to define parameters for the columns of the data table. You can add multiple columns. For each one: * **Name:** Set a name for the column, or define using an expression. * **Type:** Select the data type for the column: **Boolean**, **Date**, **Number**, or **String**.: #### [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datatable/tables#create-a-data-table-options) Create a data table options Use these options to further refine the action's behavior: * **Reuse Existing Tables:** Enable to return an existing table if one exists with the same name, without throwing an error. ### [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datatable/tables#delete-a-data-table) Delete a data table Use this operation to permanently delete an existing data table. This action can't be undone. Enter these parameters: * **Resource:** Select **Table**. * **Operation:** Select **Delete**. * **Data table:** Select how to identify the data table to delete: * **From list:** Select the table from a drop-down list of all your data tables. * **By Name:** Enter the name of your data table. * **By ID:** Enter the ID of your data table ### [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datatable/tables#list-data-tables) List data tables Use this operation to list existing data tables. You can return all tables, all tables up to a defined limit, or filter for tables to return. Enter these parameters: * **Resource:** Select **Table**. * **Operation:** Select **List**. * **Return All:** Enable to return all matching tables. Or, disable and enter a **Limit** for the number of tables to return, for example `50`. #### [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datatable/tables#list-data-tables-options) List data tables options Use these options to further refine the action's behavior: * **Filter by Name:** Enter a value or expression to return data tables whose names contain the specified text. Matching is case-insensitive. * **Sort Field:** Select a field to sort results on. * **Sort Direction:** Select whether to sort results in **Ascending** or **Descending** direction. ### [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datatable/tables#update-a-data-table) Update a data table Use this operation to update the name of an existing data tables. Enter these parameters: * **Resource:** Select **Table**. * **Operation:** Select **Update**. * **Data table:** Select how to identify the data table to update: * **From list:** Select the table from a drop-down list of all your data tables. * **By Name:** Enter the name of your data table. * **By ID:** Enter the ID of your data table * **New name:** Enter a value or expression to set a new name for the data table. [PreviousRow operations](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datatable/rows) [NextDate & Time](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datetime) Last updated 10 days ago Was this helpful? * [Create a data table](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datatable/tables#create-a-data-table) * [Delete a data table](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datatable/tables#delete-a-data-table) * [List data tables](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datatable/tables#list-data-tables) * [Update a data table](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datatable/tables#update-a-data-table) Was this helpful? --- # Workflow development | Nodes | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook/workflow-development.md) . The [Webhook node](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook) works a bit differently from other core nodes. n8n recommends following these processes for building, testing, and using your Webhook node in production. n8n generates two **Webhook URLs** for each Webhook node: a **Test URL** and a **Production URL**. [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook/workflow-development#build-and-test-workflows) Build and test workflows ---------------------------------------------------------------------------------------------------------------------------------------------------------- While building or testing a workflow, use the **Test** webhook URL. Using a test webhook ensures that you can view the incoming data in the editor UI, which is useful for debugging. Select **Listen for test event** to register the webhook before sending the data to the test webhook. The test webhook stays active for 120 seconds. When using the Webhook node on localhost on a [self-hosted](https://docs.n8n.io/deploy/host-n8n) n8n instance, run n8n in tunnel mode: * [npm with tunnel](https://docs.n8n.io/deploy/host-n8n/install-options/install-with-npm#n8n-with-tunnel) * [Docker with tunnel](https://docs.n8n.io/deploy/host-n8n/install-options/install-with-docker#n8n-with-tunnel) [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook/workflow-development#production-workflows) Production workflows -------------------------------------------------------------------------------------------------------------------------------------------------- When your workflow is ready, switch to using the **Production** webhook URL. You can then publish your workflow, and n8n runs it automatically when an external service calls the webhook URL. When working with a Production webhook, ensure that you have saved and published the workflow. Data flowing through the webhook isn't visible in the editor UI with the production webhook. Refer to [Create a workflow](https://docs.n8n.io/build/understand-workflows/create-and-run-workflows) for more information on publishing workflows. [PreviousWebhook](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook) [NextCommon issues](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook/common-issues) Last updated 10 days ago Was this helpful? * [Build and test workflows](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook/workflow-development#build-and-test-workflows) * [Production workflows](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook/workflow-development#production-workflows) Was this helpful? --- # Common issues | Nodes | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook/common-issues.md) . Here are some common issues and questions for the [Webhook node](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook) and suggested solutions. [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook/common-issues#listen-for-multiple-http-methods) Listen for multiple HTTP methods ------------------------------------------------------------------------------------------------------------------------------------------------------------------- By default, the Webhook node accepts calls that use a single method. For example, it can accept GET or POST requests, but not both. If you want to accept calls using multiple methods: 1. Open the node **Settings**. 2. Turn on **Allow Multiple HTTP Methods**. 3. Return to **Parameters**. By default, the node now accepts GET and POST calls. You can add other methods in the **HTTP Methods** field. The Webhook node has an output for each method, so you can perform different actions depending on the method. [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook/common-issues#use-the-http-request-node-to-trigger-the-webhook-node) Use the HTTP Request node to trigger the Webhook node ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- The [HTTP Request](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest) node makes HTTP requests to the URL you specify. 1. Create a new workflow. 2. Add the HTTP Request node to the workflow. 3. Select a method from the **Request Method** dropdown list. For example, if you select GET as the **HTTP method** in your Webhook node, select GET as the request method in the HTTP Request node. 4. Copy the URL from the Webhook node, and paste it in the **URL** field in the HTTP Request node. 5. If using the test URL for the webhook node: execute the workflow with the Webhook node. 6. Execute the HTTP Request node. [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook/common-issues#use-curl-to-trigger-the-webhook-node) Use curl to trigger the Webhook node --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- You can use [curl](https://curl.se/) to make HTTP requests that trigger the Webhook node. In the examples, replace `` with your webhook URL. The examples make GET requests. You can use whichever HTTP method you set in **HTTP Method**. Make an HTTP request without any parameters: Make an HTTP request with a body parameter: Make an HTTP request with header parameter: Make an HTTP request to send a file: Replace `/path/to/file` with the path of the file you want to send. [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook/common-issues#send-a-response-of-type-string) Send a response of type string --------------------------------------------------------------------------------------------------------------------------------------------------------------- By default, the response format is JSON or an array. To send a response of type string: 1. Select **Response Mode** > **When Last Node Finishes**. 2. Select **Response Data** > **First Entry JSON**. 3. Select **Add Option** > **Property Name**. 4. Enter the name of the property that contains the response. This defaults to `data`. 5. Connect an [Edit Fields node](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.set) to the Webhook node. 6. In the Edit Fields node, select **Add Value** > **String**. 7. Enter the name of the property in the **Name** field. The name should match the property name from step 4. 8. Enter the string value in the **Value** field. 9. Toggle **Keep Only Set** to on (green). When you call the Webhook, it sends the string response from the Edit Fields node. [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook/common-issues#test-url-versus-production-url) Test URL versus Production URL --------------------------------------------------------------------------------------------------------------------------------------------------------------- n8n generates two **Webhook URLs** for each Webhook node: a **Test URL** and a **Production URL**. While building or testing a workflow, use the **Test URL**. Once you're ready to use your Webhook URL in production, use the **Production URL**. **URL type** **How to trigger** **Listening duration** **Data shown in editor UI?** Test URL Select **Listen for test event** and trigger a test event from the source. 120 seconds āœ… Production URL Publish the workflow Until workflow is unpublished āŒ Refer to [Workflow development](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook/workflow-development) for more information. [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook/common-issues#ip-addresses-in-whitelist-are-failing-to-connect) IP addresses in whitelist are failing to connect --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- If you're unable to connect from IP addresses in your IP whitelist, check if you are running n8n behind a reverse proxy. If so, set the `N8N_PROXY_HOPS` [environment variable](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables) to the number of reverse-proxies n8n is running behind. [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook/common-issues#only-one-webhook-per-path-and-method) Only one webhook per path and method --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- n8n only permits registering one webhook for each path and HTTP method combination (for example, a `GET` request for `/my-request`). This avoids ambiguity over which webhook should receive requests. If you receive a message that the path and method you chose are already in use, you can either: * Unpublish the workflow with the conflicting webhook. * Change the webhook path and/or method for one of the conflicting webhooks. [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook/common-issues#timeouts-on-n8n-cloud) Timeouts on n8n Cloud --------------------------------------------------------------------------------------------------------------------------------------------- n8n Cloud uses Cloudflare to protect against malicious traffic. If your webhook doesn't respond within 100 seconds, the incoming request will fail with a [524 status code](https://developers.cloudflare.com/support/troubleshooting/http-status-codes/cloudflare-5xx-errors/error-524/) . Because of this, for long-running processes that might exceed this limit, you may need to introduce polling logic by configuring two separate webhooks: * One webhook to start the long-running process and send an immediate response. * A second webhook that you can call at intervals to query the status of the process and retrieve the result once it's complete. [PreviousWorkflow development](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook/workflow-development) [NextWorkflow Trigger](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.workflowtrigger) Last updated 22 hours ago Was this helpful? * [Listen for multiple HTTP methods](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook/common-issues#listen-for-multiple-http-methods) * [Use the HTTP Request node to trigger the Webhook node](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook/common-issues#use-the-http-request-node-to-trigger-the-webhook-node) * [Use curl to trigger the Webhook node](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook/common-issues#use-curl-to-trigger-the-webhook-node) * [Send a response of type string](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook/common-issues#send-a-response-of-type-string) * [Test URL versus Production URL](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook/common-issues#test-url-versus-production-url) * [IP addresses in whitelist are failing to connect](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook/common-issues#ip-addresses-in-whitelist-are-failing-to-connect) * [Only one webhook per path and method](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook/common-issues#only-one-webhook-per-path-and-method) * [Timeouts on n8n Cloud](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook/common-issues#timeouts-on-n8n-cloud) Was this helpful? Copy curl --request GET Copy curl --request POST --data 'key=value' Copy curl --request GET --header 'key=value' Copy curl --request POST --form 'key=@/path/to/file' --- # Common issues | Nodes | n8n Docs For the complete documentation index, see [llms.txt](https://docs.n8n.io/llms.txt) . This page is also available as [Markdown](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code/common-issues.md) . Here are some common errors and issues with the [Code node](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code) and steps to resolve or troubleshoot them. [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code/common-issues#code-doesnt-return-items-properly) Code doesn't return items properly ------------------------------------------------------------------------------------------------------------------------------------------------------------------- This error occurs when the code in your Code node doesn't return data in the expected format. In n8n, all data passed between nodes is an array of objects. Each of these objects wraps another object with the `json` key: Copy [\ {\ "json": {\ // your data goes here\ }\ }\ ] To troubleshoot this error, check the following: * Read the [data structure](https://docs.n8n.io/build/work-with-data/understand-n8ns-data-structure) to understand the data you receive in the Code node and the requirements for outputting data from the node. * Understand how data items work and how to connect data items from previous nodes with [item linking](https://docs.n8n.io/build/work-with-data/reference-data/link-data-items) . [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code/common-issues#a-json-property-isnt-an-object) A 'json' property isn't an object --------------------------------------------------------------------------------------------------------------------------------------------------------------- This error occurs when the Code node returns data where the `json` key isn't pointing to an object. This may happen if you set `json` to a different data structure, like an array: To resolve this, ensure that the `json` key references an object in your return data: [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code/common-issues#code-doesnt-return-an-object) Code doesn't return an object --------------------------------------------------------------------------------------------------------------------------------------------------------- This error may occur when your Code node doesn't return anything or if it returns an unexpected result. To resolve this, ensure that your Code node returns the [expected data structure](https://docs.n8n.io/build/work-with-data/understand-n8ns-data-structure) : This error may also occur if the code you provided returns `'undefined'` instead of the expected result. In that case, ensure that the data you are referencing in your Code node exists in each execution and that it has the structure your code expects. [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code/common-issues#import-and-export-may-only-appear-at-the-top-level) 'import' and 'export' may only appear at the top level -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- This error occurs if you try to use `import` or `export` in the Code node. These aren't supported by n8n's JavaScript sandbox. Instead, use the `require` function to load modules. To resolve this issue, try changing your `import` statements to use `require`: [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code/common-issues#cannot-find-module-andltmoduleandgt) Cannot find module '' ---------------------------------------------------------------------------------------------------------------------------------------------------------------- This error occurs if you try to use `require` in the Code node and n8n can't find the module. **Only for self-hosted** n8n doesn't support importing modules in the [Cloud](https://docs.n8n.io/deploy/use-n8n-cloud) version. If you're [self-hosting](https://docs.n8n.io/deploy/host-n8n) n8n, follow these steps: * Install the module into your n8n environment. * If you are running n8n with [npm](https://docs.n8n.io/deploy/host-n8n/install-options/install-with-npm) , install the module in the same environment as n8n. * If you are running n8n with [Docker](https://docs.n8n.io/deploy/host-n8n/install-options/install-with-docker) , you need to extend the official n8n image with a [custom image](https://docs.docker.com/build/building/base-images/) that includes your module. * Set the `NODE_FUNCTION_ALLOW_BUILTIN` and `NODE_FUNCTION_ALLOW_EXTERNAL` [environment variables](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/configuration-examples/enable-modules-in-code-node) to allow importing modules. [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code/common-issues#using-global-variables) Using global variables -------------------------------------------------------------------------------------------------------------------------------------------- Sometimes you may wish to set and retrieve simple global data related to a workflow across and within executions. For example, you may wish to include the date of the previous report when compiling a report with a list of project updates. To set, update, and retrieve data directly to a workflow, use the [static data](https://docs.n8n.io/build/code-in-n8n/cookbook/built-in-methods-and-variables-examples/getworkflowstaticdata) functions within your code. You can manage data either globally or tied to specific nodes. **Use Remove Duplicates when possible** If you're interested in using variables to avoid processing the same data items more than once, consider using the [Remove Duplicates node](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.removeduplicates) instead. The Remove Duplicates node can save information across executions to avoid processing the same items multiple times. [](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code/common-issues#cant-access-credentials-in-a-code-node) Can't access credentials in a code node ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- By design, Code nodes can't access credentials. They don't have access to n8n’s internal credential management system. This prevents exposure of sensitive authentication data. Attempts to reference credentials in a Code node using expressions or methods like `this.getCredentials()` or `$getCredentials()` will result in errors, such as `this.getCredentials is not a function` and `$getCredentials is not defined`. If you need to make authenticated API calls, use the [HTTP Request node](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest) which provides credential support. To work with credentials dynamically, handle the credential selection logic outside of the Code node: * Use a [Switch](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.switch) node to route to different nodes with different credentials. * Use expressions directly in credential fields to select credentials dynamically based on previous node data. * Use an HTTP Request node with Custom Auth to dynamically set headers, query parameters, or body values using expressions. [PreviousKeyboard shortcuts](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code/keyboard-shortcuts) [NextCompare Datasets](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.comparedatasets) Last updated 22 hours ago Was this helpful? * [Code doesn't return items properly](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code/common-issues#code-doesnt-return-items-properly) * [A 'json' property isn't an object](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code/common-issues#a-json-property-isnt-an-object) * [Code doesn't return an object](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code/common-issues#code-doesnt-return-an-object) * ['import' and 'export' may only appear at the top level](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code/common-issues#import-and-export-may-only-appear-at-the-top-level) * [Cannot find module ''](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code/common-issues#cannot-find-module-andltmoduleandgt) * [Using global variables](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code/common-issues#using-global-variables) * [Can't access credentials in a code node](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code/common-issues#cant-access-credentials-in-a-code-node) Was this helpful? Copy [\ {\ "json": [\ // Setting `json` to an array like this will produce an error\ ]\ }\ ] Copy [\ {\ "json": {\ // Setting `json` to an object as expected\ }\ }\ ] Copy [\ {\ "json": {\ // your data goes here\ }\ }\ ] Copy // Original code: // import express from "express"; // New code: const express = require("express"); ---