diff --git a/_snippets/integrations/creating-nodes/prerequisites.md b/_snippets/integrations/creating-nodes/prerequisites.md
index bd88ee4db..3bc55b128 100644
--- a/_snippets/integrations/creating-nodes/prerequisites.md
+++ b/_snippets/integrations/creating-nodes/prerequisites.md
@@ -1,3 +1,3 @@
* [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){:target=_blank class=.external-link}. 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){:target=_blank class=.external-link}.
+* 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).
diff --git a/docs/1-0-migration-checklist.md b/docs/1-0-migration-checklist.md
index cecd45e36..572d67fda 100644
--- a/docs/1-0-migration-checklist.md
+++ b/docs/1-0-migration-checklist.md
@@ -15,9 +15,9 @@ The release of n8n 1.0 marks a milestone in n8n's journey to make n8n available
### Python support in the Code node
-Although JavaScript remains the default language, you can now also select Python as an option in the [Code node](/code/code-node.md) and even make use of [many Python modules](https://pyodide.org/en/stable/usage/packages-in-pyodide.html#packages-in-pyodide){:target=_blank .external link}. Note that Python is unavailable in Code nodes added to a workflow before v1.0.
+Although JavaScript remains the default language, you can now also select Python as an option in the [Code node](/code/code-node.md) and even make use of [many Python modules](https://pyodide.org/en/stable/usage/packages-in-pyodide.html#packages-in-pyodide). Note that Python is unavailable in Code nodes added to a workflow before v1.0.
-[PR #4295](https://github.com/n8n-io/n8n/pull/4295){:target=_blank .external link}, [PR #6209](https://github.com/n8n-io/n8n/pull/6209){:target=_blank .external link}
+[PR #4295](https://github.com/n8n-io/n8n/pull/4295), [PR #6209](https://github.com/n8n-io/n8n/pull/6209)
### Execution order
@@ -29,7 +29,7 @@ n8n used to execute multi-input nodes as long as they received data on their fir
Your existing workflows will use the legacy order, while new workflows will execute using the v1 order. You can configure the execution order for each workflow in [workflow settings](/workflows/settings.md).
-[PR #4238](https://github.com/n8n-io/n8n/pull/4238){:target=_blank .external link}, [PR #6246](https://github.com/n8n-io/n8n/pull/6246){:target=_blank .external link}, [PR #6507](https://github.com/n8n-io/n8n/pull/6507){:target=_blank .external link}
+[PR #4238](https://github.com/n8n-io/n8n/pull/4238), [PR #6246](https://github.com/n8n-io/n8n/pull/6246), [PR #6507](https://github.com/n8n-io/n8n/pull/6507)
## Deprecations
@@ -37,7 +37,7 @@ Your existing workflows will use the legacy order, while new workflows will exec
n8n has deprecated support for MySQL and MariaDB as storage backends for n8n. These database systems are used by only a few users, yet they require continuous development and maintenance efforts. n8n recommends migrating to PostgreSQL for better compatibility and long-term support.
-[PR #6189](https://github.com/n8n-io/n8n/pull/6189){:target=_blank .external link}
+[PR #6189](https://github.com/n8n-io/n8n/pull/6189)
### EXECUTIONS_PROCESS and "own" mode
@@ -45,7 +45,7 @@ Previously, you could use the `EXECUTIONS_PROCESS` environment variable to speci
Note that executions start much faster in `main` mode than in `own` mode. However, if a workflow consumes more memory than is available, it might crash the entire n8n application instead of just the worker thread. To mitigate this, make sure to allocate enough system resources or configure [queue mode](/hosting/scaling/queue-mode.md) to distribute executions among multiple workers.
-[PR #6196](https://github.com/n8n-io/n8n/pull/6196){:target=_blank .external link}
+[PR #6196](https://github.com/n8n-io/n8n/pull/6196)
## Breaking changes
@@ -69,48 +69,48 @@ We've removed the Debian and RHEL images. If you were using these you need to ch
The entrypoint for the container has changed and you no longer need to specify the n8n command. If you were previously running `n8n worker --concurrency=5` it's now `worker --concurrency=5`
-[PR #6365](https://github.com/n8n-io/n8n/pull/6365){:target=_blank .external link}
+[PR #6365](https://github.com/n8n-io/n8n/pull/6365)
### Workflow failures due to expression errors
Workflow executions may fail due to syntax or runtime errors in expressions, such as those that reference non-existent nodes. While expressions already throw errors on the frontend, this change ensures that n8n also throws errors on the backend, where they were previously silently ignored. To receive notifications of failing workflows, n8n recommends setting up an "error workflow" under workflow settings.
-[PR #6352](https://github.com/n8n-io/n8n/pull/6352){:target=_blank .external link}
+[PR #6352](https://github.com/n8n-io/n8n/pull/6352)
### Mandatory owner account
-This change makes [User Management](/user-management/index.md) mandatory and removes support for other authentication methods, such as BasicAuth and External JWT. Note that the number of permitted users on [n8n.cloud](https://n8n.cloud/){:target=_blank .external link} or custom plans still varies depending on your subscription.
+This change makes [User Management](/user-management/index.md) mandatory and removes support for other authentication methods, such as BasicAuth and External JWT. Note that the number of permitted users on [n8n.cloud](https://n8n.cloud/) or custom plans still varies depending on your subscription.
-[PR #6362](https://github.com/n8n-io/n8n/pull/6362){:target=_blank .external link}
+[PR #6362](https://github.com/n8n-io/n8n/pull/6362)
### Directory for installing custom nodes
n8n will no longer load custom nodes from its global `node_modules` directory. Instead, you must install (or link) them to `~/.n8n/custom` (or a directory defined by `N8N_CUSTOM_EXTENSIONS`). Custom nodes that are npm packages will be located in `~/.n8n/nodes`.
If you have custom nodes that were linked using `npm link` into the global `node_modules` directory, you need to link them again, into `~/.n8n/nodes` instead.
-[PR #6396](https://github.com/n8n-io/n8n/pull/6396){:target=_blank .external link}
+[PR #6396](https://github.com/n8n-io/n8n/pull/6396)
### WebSockets
The `N8N_PUSH_BACKEND` environment variable can be used to configure one of two available methods for pushing updates to the user interface: `sse` and `websocket`. Starting with n8n 1.0, `websocket` is the default method.
-[PR #6196](https://github.com/n8n-io/n8n/pull/6196){:target=_blank .external link}
+[PR #6196](https://github.com/n8n-io/n8n/pull/6196)
### Date transformation functions
n8n provides various transformation functions that operate on dates. These functions may return either a JavaScript `Date` or a Luxon `DateTime` object. With the new behavior, the return type always matches the input. If you call a date transformation function on a `Date`, it returns a `Date`. Similarly, if you call it on a `DateTime` object, it returns a `DateTime` object.
-To identify any workflows and nodes that might be impacted by this change, you can use this [utility workflow](https://n8n.io/workflows/1929-v1-helper-find-params-with-affected-expressions/){:target=_blank .external link}.
+To identify any workflows and nodes that might be impacted by this change, you can use this [utility workflow](https://n8n.io/workflows/1929-v1-helper-find-params-with-affected-expressions/).
For more information about date transformation functions, please refer to the [official documentation](/code/builtin/data-transformation-functions/dates.md).
-[PR #6435](https://github.com/n8n-io/n8n/pull/6435){:target=_blank .external link}
+[PR #6435](https://github.com/n8n-io/n8n/pull/6435)
### Execution data retention
Starting from n8n 1.0, all successful, failed, and manual workflow executions will be saved by default. These settings can be modified for each workflow under "Workflow Settings," or globally using the respective environment variables. Additionally, the `EXECUTIONS_DATA_PRUNE` setting will be enabled by default, with `EXECUTIONS_DATA_PRUNE_MAX_COUNT` set to 10,000. These default settings are designed to prevent performance degradation when using SQLite. Make sure to configure them according to your individual requirements and system capacity.
-[PR #6577](https://github.com/n8n-io/n8n/pull/6577){:target=_blank .external link}
+[PR #6577](https://github.com/n8n-io/n8n/pull/6577)
### Removed N8N_USE_DEPRECATED_REQUEST_LIB
@@ -118,13 +118,13 @@ The legacy `request` library has been deprecated for some time now. As of n8n 1.
If you build custom nodes, refer to [HTTP request helpers](/integrations/creating-nodes/build/reference/http-helpers.md) for more information on migrating to the new interface.
-[PR #6413](https://github.com/n8n-io/n8n/pull/6413){:target=_blank .external link}
+[PR #6413](https://github.com/n8n-io/n8n/pull/6413)
### Removed WEBHOOK_TUNNEL_URL
As of version 0.227.0, n8n has renamed the `WEBHOOK_TUNNEL_URL` configuration option to `WEBHOOK_URL`. In n8n 1.0, `WEBHOOK_TUNNEL_URL` has been removed. Update your setup to reflect the new name. For more information about this configuration option, refer to [the docs](/hosting/configuration/configuration-examples/webhook-url.md).
-[PR #1408](https://github.com/n8n-io/n8n/pull/1408){:target=_blank .external link}
+[PR #1408](https://github.com/n8n-io/n8n/pull/1408)
### Remove Node 16 support
@@ -142,7 +142,7 @@ n8n now requires Node 18.17.0 or above.
## Reporting issues
-If you encounter any issues during the process of updating to n8n 1.0, please seek help in the community [forum](https://community.n8n.io/){:target=_blank .external link}.
+If you encounter any issues during the process of updating to n8n 1.0, please seek help in the community [forum](https://community.n8n.io/).
## Thank you
diff --git a/docs/choose-n8n.md b/docs/choose-n8n.md
index 6d4210ba4..83b8d21c7 100644
--- a/docs/choose-n8n.md
+++ b/docs/choose-n8n.md
@@ -24,7 +24,7 @@ There are different ways to set up n8n depending on how you intend to use it:
## Licenses
-n8n's [Sustainable Use License](https://github.com/n8n-io/n8n/blob/master/LICENSE.md){:target=\_blank .external-link} and [n8n Enterprise License](https://github.com/n8n-io/n8n/blob/master/LICENSE_EE.md){:target=\_blank .external-link} are based on the [fair-code](https://faircode.io/) model.
+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.
For a detailed explanation of the license, refer to [Sustainable Use License](/sustainable-use-license.md).
diff --git a/docs/code/cookbook/luxon.md b/docs/code/cookbook/luxon.md
index 4add0078c..f42fe314a 100644
--- a/docs/code/cookbook/luxon.md
+++ b/docs/code/cookbook/luxon.md
@@ -78,7 +78,7 @@ Luxon uses the n8n timezone. This value is either:
## Common tasks
-This section provides examples for some common operations. More examples, and detailed guidance, are available in [Luxon's own documentation](https://moment.github.io/luxon/#/?id=luxon){:target="_blank" .external-link}.
+This section provides examples for some common operations. More examples, and detailed guidance, are available in [Luxon's own documentation](https://moment.github.io/luxon/#/?id=luxon).
### Convert date string to Luxon
@@ -105,13 +105,13 @@ Most dates use `fromISO()`. This creates a Luxon DateTime from an ISO 8601 strin
```
-Luxon's API documentation has more information on [fromISO](https://moment.github.io/luxon/api-docs/index.html#datetimefromiso){:target="_blank" .external-link}.
+Luxon's API documentation has more information on [fromISO](https://moment.github.io/luxon/api-docs/index.html#datetimefromiso).
Luxon provides functions to handle conversions for a range of formats. Refer to Luxon's guide to [Parsing technical formats](https://moment.github.io/luxon/#/parsing?id=parsing-technical-formats) for details.
#### If you have a date as a string that doesn't use a standard format:
-Use Luxon's [Ad-hoc parsing](https://moment.github.io/luxon/#/parsing?id=ad-hoc-parsing){:target="_blank" .external-link}. To do this, use the `fromFormat()` function, providing the string and a set of [tokens](https://moment.github.io/luxon/#/parsing?id=table-of-tokens){:target="_blank" .external-link} that describe the format.
+Use Luxon's [Ad-hoc parsing](https://moment.github.io/luxon/#/parsing?id=ad-hoc-parsing). To do this, use the `fromFormat()` function, providing the string and a set of [tokens](https://moment.github.io/luxon/#/parsing?id=table-of-tokens) that describe the format.
For example, you have n8n's founding date, 23rd June 2019, formatted as `23-06-2019`. You want to turn this into a Luxon object:
@@ -127,7 +127,7 @@ For example, you have n8n's founding date, 23rd June 2019, formatted as `23-06-2
let newFormat = DateTime.fromFormat("23-06-2019", "dd-MM-yyyy")
```
-When using ad-hoc parsing, note Luxon's warning about [Limitations](https://moment.github.io/luxon/#/parsing?id=limitations){:target="_blank" .external-link}. If you see unexpected results, try their [Debugging](https://moment.github.io/luxon/#/parsing?id=debugging){:target="_blank" .external-link} guide.
+When using ad-hoc parsing, note Luxon's warning about [Limitations](https://moment.github.io/luxon/#/parsing?id=limitations). If you see unexpected results, try their [Debugging](https://moment.github.io/luxon/#/parsing?id=debugging) guide.
### Get n days from today
@@ -205,7 +205,7 @@ You can alter the format. For example:
On 23rd June 2019, this returns "16 June 2019".
-Refer to Luxon's guide on [toLocaleString (strings for humans)](https://moment.github.io/luxon/#/formatting?id=tolocalestring-strings-for-humans){:target="_blank" .external-link} for more information.
+Refer to Luxon's guide on [toLocaleString (strings for humans)](https://moment.github.io/luxon/#/formatting?id=tolocalestring-strings-for-humans) for more information.
### Get the time between two dates
diff --git a/docs/courses/level-one/chapter-4.md b/docs/courses/level-one/chapter-4.md
index 146fafb3d..648734363 100644
--- a/docs/courses/level-one/chapter-4.md
+++ b/docs/courses/level-one/chapter-4.md
@@ -38,6 +38,6 @@ You will build this workflow in eight steps:
7. [Scheduling the workflow](/courses/level-one/chapter-5/chapter-5.7.md)
8. [Activating and examining the workflow](/courses/level-one/chapter-5/chapter-5.8.md)
-To build this workflow, you will need the credentials found in the email you received from n8n when you signed up for this course. If you haven't signed up already, you can do it [here](https://n8n-community.typeform.com/to/PDEMrevI?typeform-source=127.0.0.1){:target="_blank" .external-link}. If you haven't received a confirmation email after signing up, [contact us](mailto:help@n8n.io).
+To build this workflow, you will need the credentials found in the email you received from n8n when you signed up for this course. If you haven't signed up already, you can do it [here](https://n8n-community.typeform.com/to/PDEMrevI?typeform-source=127.0.0.1). If you haven't received a confirmation email after signing up, [contact us](mailto:help@n8n.io).
[Start building!](/courses/level-one/chapter-5/chapter-5.1.md){ .md-button }
diff --git a/docs/courses/level-one/chapter-5/chapter-5.1.md b/docs/courses/level-one/chapter-5/chapter-5.1.md
index 2e00cec15..e5ab1c365 100644
--- a/docs/courses/level-one/chapter-5/chapter-5.1.md
+++ b/docs/courses/level-one/chapter-5/chapter-5.1.md
@@ -46,7 +46,7 @@ This node will use credentials.
[Credentials](/glossary.md#credential-n8n) are unique pieces of information that identify a user or a service and allow them to access apps or services (in our case, represented as n8n nodes). A common form of credentials is a username and a password, but they can take other forms depending on the service.
///
-In this case, you'll need the credentials for the ABCorp data warehouse API included in the email from n8n you received when you signed up for this course. If you haven't signed up yet, [sign up here](https://n8n-community.typeform.com/to/PDEMrevI){:target="_blank" .external-link}.
+In this case, you'll need the credentials for the ABCorp data warehouse API included in the email from n8n you received when you signed up for this course. If you haven't signed up yet, [sign up here](https://n8n-community.typeform.com/to/PDEMrevI).
In the **Parameters** of the HTTP Request node, make the following adjustments:
diff --git a/docs/courses/level-one/chapter-5/chapter-5.2.md b/docs/courses/level-one/chapter-5/chapter-5.2.md
index b6916e513..6b26a6a18 100644
--- a/docs/courses/level-one/chapter-5/chapter-5.2.md
+++ b/docs/courses/level-one/chapter-5/chapter-5.2.md
@@ -21,7 +21,7 @@ After this step, your workflow should look like this:
If we're going to insert data into Airtable, we first need to set up a table there. To do this:
-1. [Create an Airtable account](https://airtable.com/signup){:target="_blank" .external}.
+1. [Create an Airtable account](https://airtable.com/signup).
2. In your Airtable workspace add a new base from scratch and name it, for example, *beginner course*.
Create an Airtable base
diff --git a/docs/courses/level-two/chapter-1.md b/docs/courses/level-two/chapter-1.md
index 9f38032f3..e6ce3fe1a 100644
--- a/docs/courses/level-two/chapter-1.md
+++ b/docs/courses/level-two/chapter-1.md
@@ -5,7 +5,7 @@ contentType: tutorial
# Understanding the data structure
-In this chapter, you will learn about the data structure of n8n and how to use the [Code node](/integrations/builtin/core-nodes/n8n-nodes-base.code/index.md){:target="_blank"} to transform data and simulate node outputs.
+In this chapter, you will learn about the data structure of n8n and how to use the [Code node](/integrations/builtin/core-nodes/n8n-nodes-base.code/index.md) to transform data and simulate node outputs.
## Data structure of n8n
@@ -64,7 +64,7 @@ An n8n node performs its action on each item of incoming data.
## Creating data sets with the Code node
-Now that you are familiar with the n8n data structure, you can use it to create your own data sets or simulate node outputs. To do this, use the [Code node](/integrations/builtin/core-nodes/n8n-nodes-base.code/index.md){:target="_blank"} to write JavaScript code defining your array of objects with the following structure:
+Now that you are familiar with the n8n data structure, you can use it to create your own data sets or simulate node outputs. To do this, use the [Code node](/integrations/builtin/core-nodes/n8n-nodes-base.code/index.md) to write JavaScript code defining your array of objects with the following structure:
```javascript
return [
@@ -162,7 +162,7 @@ Let's build on the previous exercise, in which you used the Code node to create
## Transforming data
-The incoming data from some nodes may have a different data structure than the one used in n8n. In this case, you need to [transform the data](/data/transforming-data.md){:target="_blank" .external}, so that each item can be processed individually.
+The incoming data from some nodes may have a different data structure than the one used in n8n. In this case, you need to [transform the data](/data/transforming-data.md), so that each item can be processed individually.
The two most common operations for data transformation are:
diff --git a/docs/courses/level-two/chapter-3.md b/docs/courses/level-two/chapter-3.md
index fd0b9426d..e74b9b974 100644
--- a/docs/courses/level-two/chapter-3.md
+++ b/docs/courses/level-two/chapter-3.md
@@ -26,14 +26,14 @@ In a two-way sync, data is synchronized in both directions (between both systems
///
-In n8n, you can merge data from two different nodes using the [Merge node](/integrations/builtin/core-nodes/n8n-nodes-base.merge.md){:target="_blank"}, which provides several merging options:
+In n8n, you can merge data from two different nodes using the [Merge node](/integrations/builtin/core-nodes/n8n-nodes-base.merge.md), which provides several merging options:
-- [Append](/integrations/builtin/core-nodes/n8n-nodes-base.merge.md#append){:target="_blank"}
-- [Combine](/integrations/builtin/core-nodes/n8n-nodes-base.merge.md#combine){:target="_blank"}
- - [Merge by Fields](/integrations/builtin/core-nodes/n8n-nodes-base.merge.md#combine-by-matching-fields){:target="_blank"}: requires input fields to match on
- - [Merge by Position](/integrations/builtin/core-nodes/n8n-nodes-base.merge.md#combine-by-position){:target="_blank"}
- - [Combine all possible combinations](/integrations/builtin/core-nodes/n8n-nodes-base.merge.md#combine-by-all-possible-combinations){:target="_blank"}
-- [Choose Branch](/integrations/builtin/core-nodes/n8n-nodes-base.merge.md#choose-branch){:target="_blank"}
+- [Append](/integrations/builtin/core-nodes/n8n-nodes-base.merge.md#append)
+- [Combine](/integrations/builtin/core-nodes/n8n-nodes-base.merge.md#combine)
+ - [Merge by Fields](/integrations/builtin/core-nodes/n8n-nodes-base.merge.md#combine-by-matching-fields): requires input fields to match on
+ - [Merge by Position](/integrations/builtin/core-nodes/n8n-nodes-base.merge.md#combine-by-position)
+ - [Combine all possible combinations](/integrations/builtin/core-nodes/n8n-nodes-base.merge.md#combine-by-all-possible-combinations)
+- [Choose Branch](/integrations/builtin/core-nodes/n8n-nodes-base.merge.md#choose-branch)
Notice that Combine > Merge by Fields requires you enter input fields to match on. These fields should contain identical values between the data sources so n8n can properly match data together. In the **Merge node**, they're called `Input 1 Field` and `Input 2 Field`.
@@ -188,15 +188,15 @@ In some cases, you might need to perform the same operation on each element of a
n8n generally handles this repetitive processing automatically, as the nodes run once for each item, so you don't need to build loops into your workflows.
-However, there are some [exceptions of nodes and operations](/flow-logic/looping.md#node-exceptions){:target="_blank"} that will require you to build a loop into your workflow.
+However, there are some [exceptions of nodes and operations](/flow-logic/looping.md#node-exceptions) that will require you to build a loop into your workflow.
-To [create a loop in an n8n workflow](/flow-logic/looping.md#using-loops-in-n8n){:target="_blank"}, you need to connect the output of one node to the input of a previous node, and add an **If node** to check when to stop the loop.
+To [create a loop in an n8n workflow](/flow-logic/looping.md#using-loops-in-n8n), you need to connect the output of one node to the input of a previous node, and add an **If node** to check when to stop the loop.
## Splitting data in batches
If you need to process large volumes of incoming data, execute the **Code node** multiple times, or avoid API rate limits, it's best to split the data into batches (groups) and process these batches.
-For these processes, use the [**Loop Over Items node**](/integrations/builtin/core-nodes/n8n-nodes-base.splitinbatches.md){:target="_blank"}. This node splits input data into a specified batch size and, with each iteration, returns a predefined amount of data.
+For these processes, use the [**Loop Over Items node**](/integrations/builtin/core-nodes/n8n-nodes-base.splitinbatches.md). This node splits input data into a specified batch size and, with each iteration, returns a predefined amount of data.
/// warning | Execution of Loop Over Items node
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.
@@ -209,7 +209,7 @@ Build a workflow that reads the RSS feed from Medium and dev.to. The workflow sh
1. A **Code node** that returns the URLs of the RSS feeds of Medium (`https://medium.com/feed/n8n-io`) and dev.to (`https://dev.to/feed/n8n`).
2. A **Loop Over Items node** with `Batch Size: 1`, that takes in the inputs from the **Code node** and **RSS Read node** and iterates over the items.
3. An **RSS Read node** that gets the URL of the Medium RSS feed, passed as an expression: `{{ $json.url }}`.
- - The **RSS Read node** is one of the [exception nodes](/flow-logic/looping.md#node-exceptions){:target="_blank"} which processes only the first item it receives, so the **Loop Over Items node** is necessary for iterating over multiple items.
+ - The **RSS Read node** is one of the [exception nodes](/flow-logic/looping.md#node-exceptions) which processes only the first item it receives, so the **Loop Over Items node** is necessary for iterating over multiple items.
??? note "Show me the solution"
diff --git a/docs/courses/level-two/chapter-5/chapter-5.0.md b/docs/courses/level-two/chapter-5/chapter-5.0.md
index ca6bbf434..394dd0d35 100644
--- a/docs/courses/level-two/chapter-5/chapter-5.0.md
+++ b/docs/courses/level-two/chapter-5/chapter-5.0.md
@@ -32,8 +32,8 @@ n8n provides [core nodes](/integrations/builtin/node-types.md#core-nodes) for al
To build the workflows, you will need the following:
-* An [Airtable](https://airtable.com/){:target="_blank" .external-link} account and [credentials](/integrations/builtin/credentials/airtable.md).
-* A [Google](https://www.google.com/account/about/){:target="_blank" .external-link} account and [credentials](/integrations/builtin/credentials/google/index.md) to access Gmail.
-* A [Discord](https://discord.com/){:target="_blank" .external-link} account and webhook URL (you receive this using email when you sign up for this course).
+* An [Airtable](https://airtable.com/) account and [credentials](/integrations/builtin/credentials/airtable.md).
+* A [Google](https://www.google.com/account/about/) account and [credentials](/integrations/builtin/credentials/google/index.md) to access Gmail.
+* A [Discord](https://discord.com/) account and webhook URL (you receive this using email when you sign up for this course).
Next, you will build these three workflows with step-by-step instructions.
diff --git a/docs/courses/level-two/chapter-6.md b/docs/courses/level-two/chapter-6.md
index dd7bcfc00..9daacc340 100644
--- a/docs/courses/level-two/chapter-6.md
+++ b/docs/courses/level-two/chapter-6.md
@@ -20,5 +20,5 @@ You can test your knowledge by taking a **quiz**, which consists of questions ab
## What's next?
-- Create new workflows for your work or personal use and share them with us. Don't have any ideas? Find inspiration on the [workflows page](https://n8n.io/workflows){:target="_blank" .external-link} and on our [blog](https://n8n.io/blog/){:target="_blank" .external-link}.
+- Create new workflows for your work or personal use and share them with us. Don't have any ideas? Find inspiration on the [workflows page](https://n8n.io/workflows) and on our [blog](https://n8n.io/blog/).
- Dive deeper into n8n's features by reading the [docs](/index.md).
diff --git a/docs/courses/level-two/index.md b/docs/courses/level-two/index.md
index 62b057bdc..3ff90c2f0 100644
--- a/docs/courses/level-two/index.md
+++ b/docs/courses/level-two/index.md
@@ -32,7 +32,7 @@ You will learn all this by completing short practical exercises after the theore
To follow along this course (at a comfortable pace) you will need the following:
- **n8n set up**: You can use the [self-hosted version](/hosting/installation/npm.md) or [n8n Cloud](/manage-cloud/overview.md).
-- **A user ID**: [Sign up here](https://n8n-community.typeform.com/to/HQoQ7nXg){:target="_blank" .external-link} to get your unique ID and other credentials you will need in the course.
+- **A user ID**: [Sign up here](https://n8n-community.typeform.com/to/HQoQ7nXg) to get your unique ID and other credentials you will need in the course.
- **Basic n8n skills**: We strongly recommend taking the [Level 1 course](/courses/level-one/index.md) before this one.
- **Basic JavaScript understanding**
@@ -45,10 +45,10 @@ Completing the course should take around **two hours**. You don't have to comple
There are two milestones in this course that test your knowledge of what you have learned in the lessons:
- [x] Building the [main workflow](/courses/level-two/chapter-5/chapter-5.0.md)
-- [x] Passing the [quiz](https://n8n-community.typeform.com/to/r9hDbytg){:target="_blank" .external} at the end of the course
+- [x] Passing the [quiz](https://n8n-community.typeform.com/to/r9hDbytg) at the end of the course
-You can always **check your progress** throughout the course by entering your unique ID [here](https://internal.users.n8n.cloud/webhook/course-level-2/verify){:target="_blank" .external-link}.
+You can always **check your progress** throughout the course by entering your unique ID [here](https://internal.users.n8n.cloud/webhook/course-level-2/verify).
-If you successfully complete the milestones above, you will get [**a badge and an avatar**](https://community.n8n.io/badges/105/completed-n8n-course-level-2){:target="_blank" .external} in your forum profile. You can then share your profile and course verification ID to showcase your n8n skills to others.
+If you successfully complete the milestones above, you will get [**a badge and an avatar**](https://community.n8n.io/badges/105/completed-n8n-course-level-2) in your forum profile. You can then share your profile and course verification ID to showcase your n8n skills to others.
[Let's get started!](/courses/level-two/chapter-1.md){ .md-button }
diff --git a/docs/help-community/contributing.md b/docs/help-community/contributing.md
index 17001bf9b..34e14dafe 100644
--- a/docs/help-community/contributing.md
+++ b/docs/help-community/contributing.md
@@ -10,15 +10,15 @@ There are a several ways in which you can contribute to n8n, depending on your s
## Share some love: Review us
-- Star n8n on [GitHub](https://github.com/n8n-io/n8n){:target=_blank class=.external-link} and [Docker Hub](https://hub.docker.com/r/n8nio/n8n){:target=_blank class=.external-link}.
-- Follow us on [Twitter](https://twitter.com/n8n_io){:target=_blank class=.external-link}, [LinkedIn](https://www.linkedin.com/company/28491094), and [Facebook](https://www.facebook.com/n8nio/){:target=_blank class=.external-link}.
-- Upvote n8n on [AlternativeTo](https://alternativeto.net/software/n8n-io/){:target=_blank class=.external-link} and [Alternative.me](https://alternative.me/n8n-io){:target=_blank class=.external-link}.
-- Add n8n to your stack on [Stackshare](https://stackshare.io/n8n){:target=_blank class=.external-link}.
-- Write a review about n8n on [G2](https://www.g2.com/products/n8n/reviews){:target=_blank class=.external-link}, [Slant](https://www.slant.co/improve/options/37977/~n8n-review){:target=_blank class=.external-link}, and [Capterra](https://www.capterra.com/p/198028/n8n-io/){:target=_blank class=.external-link}.
+- 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/){:target=_blank class=.external-link} and help the community members out with their questions.
+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.
@@ -42,7 +42,7 @@ Create an integration for a third party service. Check out [the node creation do
There are different ways in which you can contribute to the n8n code base:
-- Fix [issues](https://github.com/n8n-io/n8n/issues){:target=_blank class=.external-link} reported on GitHub. The [CONTRIBUTING guide](https://github.com/n8n-io/n8n/blob/master/CONTRIBUTING.md){:target=_blank class=.external-link} will help you get your development environment ready in minutes.
+- 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.
@@ -50,11 +50,11 @@ There are different ways in which you can contribute to the n8n code base:
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){:target=_blank class=.external-link} and the guidelines for contributing to the docs are [here](https://github.com/n8n-io/n8n-docs/blob/master/CONTRIBUTING.md){:target=_blank class=.external-link}.
+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 the blog
-You can write an article for the [n8n blog](https://blog.n8n.io/){:target=_blank class=.external-link}. Your article can be, for example, a [workflow tutorial](https://blog.n8n.io/tag/tutorial/){:target=_blank class=.external-link}, an opinion piece on automation, or some domain-specific [automation guides](https://blog.n8n.io/tag/guide/){:target=_blank class=.external-link}.
+You can write an article for the [n8n blog](https://blog.n8n.io/). Your article can be, for example, a [workflow tutorial](https://blog.n8n.io/tag/tutorial/), an opinion piece on automation, or some domain-specific [automation guides](https://blog.n8n.io/tag/guide/).
### How to submit a post
@@ -62,18 +62,18 @@ n8n appreciates all contributions. Publishing a tutorial on your own site that s
1. Email your idea to [marketing@n8n.io](mailto:marketing@n8n.io) with the subject "Blog contribution: [Your Topic]."
2. Submit your draft:
- - Write your post in a Google Doc following the [style guide](https://www.notion.so/97dc73436a624933b75ddc941a361b70?pvs=21){:target=_blank class=.external-link}.
+ - Write your post in a Google Doc following the [style guide](https://www.notion.so/97dc73436a624933b75ddc941a361b70?pvs=21).
- If your blog post includes example workflows, include the workflow JSON in a separate section at the end.
- For author credit, provide a second Google Doc with your full name, a short byline, and your image. n8n will use this to create your author page and credit you as the author of the post.
3. Wait for feedback. We will respond if your draft fits with the blog's strategy and requirements. If you don't hear back within 30 days, it means we won't be moving forward with your blog post.
## Refer a candidate
-Do you know someone who would be a great fit for one of our [open positions](https://n8n.io/careers){:target=_blank class=.external-link}? Refer them to us! In return, we'll pay you €1,000 when the referral successfully passes their probationary period.
+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){:target=_blank class=.external-link}.
+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.
diff --git a/docs/help-community/help.md b/docs/help-community/help.md
index 15e0ecf33..8416555d5 100644
--- a/docs/help-community/help.md
+++ b/docs/help-community/help.md
@@ -8,7 +8,7 @@ hide:
# Get help with n8n
-If you need more help with n8n, you can ask for support in the [forum](https://community.n8n.io/){:target=_blank class=.external-link}. This is the best source of answers, as both the n8n support team and community members can help.
+If you need more help with n8n, you can ask for support in the [forum](https://community.n8n.io/). This is the best source of answers, as both the n8n support team and community members can help.
If your Cloud instance is having issues, or if you're an enterprise customer who needs support, you can contact [help@n8n.io](mailto:help@n8n.io).
diff --git a/docs/hosting/architecture/database-structure.md b/docs/hosting/architecture/database-structure.md
index 50cce5f3a..73eff16f8 100644
--- a/docs/hosting/architecture/database-structure.md
+++ b/docs/hosting/architecture/database-structure.md
@@ -58,7 +58,7 @@ Details of npm community nodes packages installed in your n8n instance. [install
### migrations
-A log of all database migrations. Read more about [Migrations](https://github.com/typeorm/typeorm/blob/master/docs/migrations.md) in TypeORM's documentation.
+A log of all database migrations. Read more about [Migrations](https://typeorm.io/docs/advanced-topics/migrations/) in TypeORM's documentation.
### project
diff --git a/docs/hosting/configuration/configuration-examples/prometheus.md b/docs/hosting/configuration/configuration-examples/prometheus.md
index a2c37a2dc..c17f8208c 100644
--- a/docs/hosting/configuration/configuration-examples/prometheus.md
+++ b/docs/hosting/configuration/configuration-examples/prometheus.md
@@ -7,7 +7,7 @@ contentType: howto
# Enable Prometheus metrics
-To collect and expose metrics, n8n uses the [prom-client](https://www.npmjs.com/package/prom-client){:target="_blank" .external-link} library.
+To collect and expose metrics, n8n uses the [prom-client](https://www.npmjs.com/package/prom-client) library.
The `/metrics` endpoint is disabled by default, but it's possible to enable it using the `N8N_METRICS` environment variable.
diff --git a/docs/hosting/configuration/configuration-examples/time-zone.md b/docs/hosting/configuration/configuration-examples/time-zone.md
index bfdf6479e..2df8500af 100644
--- a/docs/hosting/configuration/configuration-examples/time-zone.md
+++ b/docs/hosting/configuration/configuration-examples/time-zone.md
@@ -13,6 +13,6 @@ The default timezone is America/New_York. For instance, the Schedule node uses i
export GENERIC_TIMEZONE=Europe/Berlin
```
-You can find the name of your timezone [here](https://momentjs.com/timezone/){:target="_blank" .external-link}.
+You can find the name of your timezone [here](https://momentjs.com/timezone/).
Refer to [Environment variables reference](/hosting/configuration/environment-variables/timezone-localization.md) for more information on this variable.
diff --git a/docs/hosting/configuration/environment-variables/database.md b/docs/hosting/configuration/environment-variables/database.md
index 9035811a5..7f969a86d 100644
--- a/docs/hosting/configuration/environment-variables/database.md
+++ b/docs/hosting/configuration/environment-variables/database.md
@@ -48,4 +48,4 @@ This page outlines environment variables to configure your chosen database for y
| Variable | Type | Default | Description |
| :------- | :---- | :------- | :---------- |
| `DB_SQLITE_POOL_SIZE` | Number | `0` | Controls whether to open the SQLite file in [WAL mode](https://www.sqlite.org/wal.html) or [rollback journal mode](https://www.sqlite.org/lockingv3.html#rollback). Uses rollback journal mode when set to zero. When greater than zero, uses WAL mode with the value determining the number of parallel SQL read connections to configure. WAL mode is much more performant and reliable than the rollback journal mode. |
-| `DB_SQLITE_VACUUM_ON_STARTUP` | Boolean | `false` | Runs [VACUUM](https://www.sqlite.org/lang_vacuum.html){:target="_blank" .external-link} operation on startup to rebuild the database. Reduces file size and optimizes indexes. This is a long running blocking operation and increases start-up time. |
+| `DB_SQLITE_VACUUM_ON_STARTUP` | Boolean | `false` | Runs [VACUUM](https://www.sqlite.org/lang_vacuum.html) operation on startup to rebuild the database. Reduces file size and optimizes indexes. This is a long running blocking operation and increases start-up time. |
diff --git a/docs/hosting/configuration/environment-variables/timezone-localization.md b/docs/hosting/configuration/environment-variables/timezone-localization.md
index 921c8a61a..aca276c61 100644
--- a/docs/hosting/configuration/environment-variables/timezone-localization.md
+++ b/docs/hosting/configuration/environment-variables/timezone-localization.md
@@ -17,4 +17,4 @@ hide:
| Variable | Type | Default | Description |
| :------- | :---- | :------- | :---------- |
| `GENERIC_TIMEZONE` | * | `America/New_York` |The n8n instance timezone. Important for schedule nodes (such as Cron). |
-| `N8N_DEFAULT_LOCALE` | String | `en` | A locale identifier, compatible with the [Accept-Language header](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language){:target="_blank" .external-link}. n8n doesn't support regional identifiers, such as `de-AT`. When running in a locale other than the default, n8n displays UI strings in the selected locale, and falls back to `en` for any untranslated strings. |
+| `N8N_DEFAULT_LOCALE` | String | `en` | A locale identifier, compatible with the [Accept-Language header](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language). n8n doesn't support regional identifiers, such as `de-AT`. When running in a locale other than the default, n8n displays UI strings in the selected locale, and falls back to `en` for any untranslated strings. |
diff --git a/docs/hosting/installation/server-setups/azure.md b/docs/hosting/installation/server-setups/azure.md
index 20471e192..339b732e5 100644
--- a/docs/hosting/installation/server-setups/azure.md
+++ b/docs/hosting/installation/server-setups/azure.md
@@ -9,7 +9,7 @@ This hosting guide shows you how to self-host n8n on Azure. It uses n8n with Pos
## Prerequisites
-You need [The Azure command line tool](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli){:target="_blank" .external-link}
+You need [The Azure command line tool](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli)
--8<-- "_snippets/self-hosting/warning.md"
@@ -25,7 +25,7 @@ The steps in this guide use a mix of the Azure UI and command line tool, but you
## Open the Azure Kubernetes Service
-From [the Azure portal](https://portal.azure.com/){:target="_blank" .external-link} select **Kubernetes services**.
+From [the Azure portal](https://portal.azure.com/) select **Kubernetes services**.
## Create a cluster
@@ -62,7 +62,7 @@ For larger scale n8n deployments, Postgres provides a more robust database backe
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.
/// note | 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){:target="_blank" .external-link}.
+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).
///
### Postgres environment variables
@@ -94,7 +94,7 @@ volumes:
### Pod resources
-[Kubernetes lets you](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/){:target="_blank" .external-link} 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:
+[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:
```yaml
…
@@ -154,7 +154,7 @@ kubectl apply -f namespace.yaml
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.
/// note | Static IP addresses with AKS
-[Read this tutorial](https://learn.microsoft.com/en-us/azure/aks/static-ip){:target="_blank" .external-link} for more details on how to use a static IP address 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.
///
## Delete resources
diff --git a/docs/hosting/installation/server-setups/digital-ocean.md b/docs/hosting/installation/server-setups/digital-ocean.md
index 2f9298d5f..fe33c6f61 100644
--- a/docs/hosting/installation/server-setups/digital-ocean.md
+++ b/docs/hosting/installation/server-setups/digital-ocean.md
@@ -7,8 +7,8 @@ contentType: tutorial
This hosting guide shows you how to self-host n8n on a DigitalOcean droplet. It uses:
-* [Caddy](https://caddyserver.com){:target="_blank" .external-link} (a reverse proxy) to allow access to the Droplet from the internet. Caddy will also automatically create and manage SSL / TLS certificates for your n8n instance.
-* [Docker Compose](https://docs.docker.com/compose/){:target="_blank" .external-link} to create and define the application components and how they work together.
+* [Caddy](https://caddyserver.com) (a reverse proxy) to allow access to the Droplet from the internet. Caddy will also automatically create and manage SSL / TLS certificates for your n8n instance.
+* [Docker Compose](https://docs.docker.com/compose/) to create and define the application components and how they work together.
--8<-- "_snippets/self-hosting/warning.md"
@@ -19,7 +19,7 @@ This hosting guide shows you how to self-host n8n on a DigitalOcean droplet. It
1. [Log in](https://cloud.digitalocean.com/login) to DigitalOcean.
2. Select the project to host the Droplet, or [create a new project](https://docs.digitalocean.com/products/projects/how-to/create/).
3. In your project, select **Droplets** from the **Manage** menu.
-4. [Create a new Droplet](https://docs.digitalocean.com/products/droplets/how-to/create/) using the [Docker image](https://marketplace.digitalocean.com/apps/docker){:target="_blank" .external-link} available on the **Marketplace** tab.
+4. [Create a new Droplet](https://docs.digitalocean.com/products/droplets/how-to/create/) using the [Docker image](https://marketplace.digitalocean.com/apps/docker) available on the **Marketplace** tab.
/// note | Droplet resources
When creating the Droplet, DigitalOcean asks you to choose a plan. For most usage levels, a basic shared CPU plan is enough.
@@ -29,7 +29,7 @@ DigitalOcean lets you choose between SSH key and password-based authentication.
///
## Log in to your Droplet and create new user
-The rest of this guide requires you to log in to the Droplet using a terminal with SSH. Refer to [How to Connect to Droplets with SSH](https://docs.digitalocean.com/products/droplets/how-to/connect-with-ssh/){:target="_blank" .external-link} for more information.
+The rest of this guide requires you to log in to the Droplet using a terminal with SSH. Refer to [How to Connect to Droplets with SSH](https://docs.digitalocean.com/products/droplets/how-to/connect-with-ssh/) for more information.
You should create a new user, to avoid working as the root user:
@@ -73,7 +73,7 @@ The host operating system (the DigitalOcean Droplet) copies the two folders you
### Create Docker volumes
-To persist the Caddy cache between restarts and speed up start times, create [a Docker volume](https://docs.docker.com/storage/volumes/){:target="_blank" .external-link} that Docker reuses between restarts:
+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:
```shell
sudo docker volume create caddy_data
@@ -87,7 +87,7 @@ sudo docker volume create n8n_data
## 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 Droplet. 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){:target="_blank" .external-link}.
+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 Droplet. 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).
## Open ports
diff --git a/docs/hosting/installation/server-setups/google-cloud.md b/docs/hosting/installation/server-setups/google-cloud.md
index 76bfb73d1..5c6b84e52 100644
--- a/docs/hosting/installation/server-setups/google-cloud.md
+++ b/docs/hosting/installation/server-setups/google-cloud.md
@@ -9,8 +9,8 @@ This hosting guide shows you how to self-host n8n on Google Cloud (GCP). It uses
## Prerequisites
-- The [gcloud command line tool](https://cloud.google.com/sdk/gcloud/){:target="_blank" .external-link}
-- The [gke-gcloud-auth-plugin](https://cloud.google.com/blog/products/containers-kubernetes/kubectl-auth-changes-in-gke){:target="_blank" .external-link} (install the gcloud CLI first)
+- 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)
--8<-- "_snippets/self-hosting/warning.md"
@@ -22,7 +22,7 @@ Google Cloud offers several options suitable for hosting n8n, including Cloud Ru
This guide uses the Google Kubernetes Engine (GKE) as the hosting option. Using Kubernetes requires some additional complexity and configuration, but is the best method for scaling n8n as demand changes.
-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/){:target="_blank" .external-link} instead to undertake all the steps.
+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.
## Create project
@@ -64,7 +64,7 @@ For larger scale n8n deployments, Postgres provides a more robust database backe
### 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){:target="_blank" .external-link} 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`.
+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`.
```yaml
…
@@ -166,7 +166,7 @@ kubectl apply -f namespace.yaml
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.
/// note | 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){:target="_blank" .external-link} for more details on how reserved IP addresses work with GKE and Kubernetes resources.
+[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.
///
## Delete resources
diff --git a/docs/hosting/installation/server-setups/heroku.md b/docs/hosting/installation/server-setups/heroku.md
index 269026dcc..9d345c455 100644
--- a/docs/hosting/installation/server-setups/heroku.md
+++ b/docs/hosting/installation/server-setups/heroku.md
@@ -8,8 +8,8 @@ contentType: tutorial
This hosting guide shows you how to self-host n8n on Heroku. It uses:
-- [Docker Compose](https://docs.docker.com/compose/){:target="_blank" .external-link} to create and define the application components and how they work together.
-- [Heroku's PostgreSQL service](https://devcenter.heroku.com/categories/heroku-postgres){:target="_blank" .external-link} to host n8n's data storage.
+- [Docker Compose](https://docs.docker.com/compose/) to create and define the application components and how they work together.
+- [Heroku's PostgreSQL service](https://devcenter.heroku.com/categories/heroku-postgres) to host n8n's data storage.
- A **Deploy to Heroku** button offering a one click, with minor configuration, deployment.
--8<-- "_snippets/self-hosting/warning.md"
@@ -41,7 +41,7 @@ Select **Deploy app**.
After Heroku builds and deploys the app it provides links to **Manage App** or **View** the application.
/// note | Heroku and DNS
-Refer to the [Heroku documentation](https://devcenter.heroku.com/categories/networking-dns){:target="_blank" .external-link} to find out how to connect your domain to a Heroku application.
+Refer to the [Heroku documentation](https://devcenter.heroku.com/categories/networking-dns) to find out how to connect your domain to a Heroku application.
///
## Changing the deployment template
@@ -56,7 +56,7 @@ By default the Dockerfile pulls the latest n8n image, if you want to use a diffe
Heroku doesn't allow Docker-based applications to define an exposed port with the `EXPOSE` command. Instead, Heroku provides a `PORT` environment variable that it dynamically populates at application runtime. The `entrypoint.sh` file overrides the default Docker image command to instead set the port variable that Heroku provides. You can then access n8n on port 80 in a web browser.
/// note | Docker limitations with Heroku
-[Read this guide](https://devcenter.heroku.com/articles/container-registry-and-runtime#unsupported-dockerfile-commands){:target="_blank" .external-link} for more details on the limitations of using Docker with Heroku.
+[Read this guide](https://devcenter.heroku.com/articles/container-registry-and-runtime#unsupported-dockerfile-commands) for more details on the limitations of using Docker with Heroku.
///
### Configuring Heroku
diff --git a/docs/hosting/installation/server-setups/hetzner.md b/docs/hosting/installation/server-setups/hetzner.md
index 0c4aa5e98..da4de9611 100644
--- a/docs/hosting/installation/server-setups/hetzner.md
+++ b/docs/hosting/installation/server-setups/hetzner.md
@@ -7,8 +7,8 @@ contentType: tutorial
This hosting guide shows you how to self-host n8n on a Hetzner cloud server. It uses:
-* [Caddy](https://caddyserver.com){:target="_blank" .external-link} (a reverse proxy) to allow access to the Server from the internet.
-* [Docker Compose](https://docs.docker.com/compose/){:target="_blank" .external-link} to create and define the application components and how they work together.
+* [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.
--8<-- "_snippets/self-hosting/warning.md"
@@ -30,7 +30,7 @@ Hetzner lets you choose between SSH and password-based authentication. SSH is mo
///
## 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){:target="_blank" .external-link} for more information. You can find the public IP in the listing of the servers in your project.
+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.
## Install Docker Compose
@@ -66,7 +66,7 @@ The host operating system (the server) copies the two folders you created to Doc
### 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/){:target="_blank" .external-link} that Docker reuses between restarts:
+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:
```shell
docker volume create caddy_data
@@ -80,7 +80,7 @@ sudo docker volume create n8n_data
## 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){:target="_blank" .external-link}.
+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).
## Open ports
diff --git a/docs/integrations/builtin/app-nodes/n8n-nodes-base.airtable/index.md b/docs/integrations/builtin/app-nodes/n8n-nodes-base.airtable/index.md
index 4708ab302..177cd3f90 100644
--- a/docs/integrations/builtin/app-nodes/n8n-nodes-base.airtable/index.md
+++ b/docs/integrations/builtin/app-nodes/n8n-nodes-base.airtable/index.md
@@ -63,7 +63,7 @@ To filter records from your Airtable base, use the **Filter By Formula** option.
Similarly, if you want to return all the users that don't belong to the organization `n8n`, use the following formula: `NOT({Organization}='n8n')`.
-Refer to the Airtable [documentation](https://support.airtable.com/hc/en-us/articles/203255215-Formula-Field-Reference){:target=_balnk .external-link} to learn more about the formulas.
+Refer to the Airtable [documentation](https://support.airtable.com/hc/en-us/articles/203255215-Formula-Field-Reference) to learn more about the formulas.
## Common issues
diff --git a/docs/integrations/builtin/app-nodes/n8n-nodes-base.googlesheets/document-operations.md b/docs/integrations/builtin/app-nodes/n8n-nodes-base.googlesheets/document-operations.md
index 19cced144..c9ef4f577 100644
--- a/docs/integrations/builtin/app-nodes/n8n-nodes-base.googlesheets/document-operations.md
+++ b/docs/integrations/builtin/app-nodes/n8n-nodes-base.googlesheets/document-operations.md
@@ -31,7 +31,7 @@ Enter these parameters:
- `en` (639-1)
- `fil` (639-2 if no 639-1 format exists)
- `en_US` (combination of ISO language and country).
- - Refer to [List of ISO 639 language codes](https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes){:target=_blank .external link} and [List of ISO 3166 country codes](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes){:target=_blank .external link} for language and country codes. Note that Google doesn't support all locales/languages.
+ - Refer to [List of ISO 639 language codes](https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes) and [List of ISO 3166 country codes](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes) for language and country codes. Note that Google doesn't support all locales/languages.
- **Recalculation Interval**: Enter the desired recalculation interval for the spreadsheet functions. This affects how often `NOW`, `TODAY`, `RAND`, and `RANDBETWEEN` are updated. Select **On Change** for recalculating whenever there is a change in the spreadsheet, **Minute** for recalculating every minute, or **Hour** for recalculating every hour. Refer to [Set a spreadsheet’s location & calculation settings](https://support.google.com/docs/answer/58515) for more information about these options.
Refer to the [Method: spreadsheets.create | Google Sheets](https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets/create) API documentation for more information.
@@ -49,4 +49,4 @@ Enter these parameters:
- Select **From list** to choose the 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`.
-Refer to the [Method: files.delete | Google Drive](https://developers.google.com/drive/api/reference/rest/v2/files/delete) API documentation for more information.
\ No newline at end of file
+Refer to the [Method: files.delete | Google Drive](https://developers.google.com/drive/api/reference/rest/v2/files/delete) API documentation for more information.
diff --git a/docs/integrations/builtin/app-nodes/n8n-nodes-base.s3.md b/docs/integrations/builtin/app-nodes/n8n-nodes-base.s3.md
index 9711c4644..913ead61d 100644
--- a/docs/integrations/builtin/app-nodes/n8n-nodes-base.s3.md
+++ b/docs/integrations/builtin/app-nodes/n8n-nodes-base.s3.md
@@ -12,9 +12,9 @@ Use the S3 node to automate work in non-AWS S3 storage and integrate S3 with oth
Use the S3 node for non-AWS S3 solutions like:
-* [MinIO](https://min.io/){:target="_blank" .external-link}
-* [Wasabi](https://wasabi.com/){:target="_blank" .external-link}
-* [Digital Ocean spaces](https://www.digitalocean.com/products/spaces){:target="_blank" .external-link}
+* [MinIO](https://min.io/)
+* [Wasabi](https://wasabi.com/)
+* [Digital Ocean spaces](https://www.digitalocean.com/products/spaces)
On this page, you'll find a list of operations the S3 node supports and links to more resources.
@@ -56,6 +56,6 @@ Refer to [S3 credentials](/integrations/builtin/credentials/s3.md) for guidance
### Setting file permissions in Wasabi
-When uploading files to [Wasabi](https://wasabi.com/){:target="_blank" .external-link}, you must set permissions for the files using the **ACL** dropdown and not the toggles.
+When uploading files to [Wasabi](https://wasabi.com/), you must set permissions for the files using the **ACL** dropdown and not the toggles.

diff --git a/docs/integrations/builtin/app-nodes/n8n-nodes-base.slack.md b/docs/integrations/builtin/app-nodes/n8n-nodes-base.slack.md
index 6f7537cb8..fe18ac103 100644
--- a/docs/integrations/builtin/app-nodes/n8n-nodes-base.slack.md
+++ b/docs/integrations/builtin/app-nodes/n8n-nodes-base.slack.md
@@ -85,50 +85,50 @@ If those aren't enough, use the table below to look up the resource and operatio
-| **Resource** | **Operation** | **Slack API method** |
-| --- | --- | --- |
-| Channel | Archive | [conversations.archive](https://api.slack.com/methods/conversations.archive){:target=blank .external-link} |
-| Channel | Close | [conversations.close](https://api.slack.com/methods/conversations.close){:target=blank .external-link} |
-| Channel | Create | [conversations.create](https://api.slack.com/methods/conversations.create){:target=blank .external-link} |
-| Channel | Get | [conversations.info](https://api.slack.com/methods/conversations.info){:target=blank .external-link} |
-| Channel | Get Many | [conversations.list](https://api.slack.com/methods/conversations.list){:target=blank .external-link} |
-| Channel | History | [conversations.history](https://api.slack.com/methods/conversations.history){:target=blank .external-link} |
-| Channel | Invite | [conversations.invite](https://api.slack.com/methods/conversations.invite){:target=blank .external-link} |
-| Channel | Join | [conversations.join](https://api.slack.com/methods/conversations.join){:target=blank .external-link} |
-| Channel | Kick | [conversations.kick](https://api.slack.com/methods/conversations.kick){:target=blank .external-link} |
-| Channel | Leave | [conversations.leave](https://api.slack.com/methods/conversations.leave){:target=blank .external-link} |
-| Channel | Member | [conversations.members](https://api.slack.com/methods/conversations.members){:target=blank .external-link} |
-| Channel | Open | [conversations.open](https://api.slack.com/methods/conversations.open){:target=blank .external-link} |
-| Channel | Rename | [conversations.rename](https://api.slack.com/methods/conversations.rename){:target=blank .external-link} |
-| Channel | Replies | [conversations.replies](https://api.slack.com/methods/conversations.replies){:target=blank .external-link} |
-| Channel | Set Purpose | [conversations.setPurpose](https://api.slack.com/methods/conversations.setPurpose){:target=blank .external-link} |
-| Channel | Set Topic | [conversations.setTopic](https://api.slack.com/methods/conversations.setTopic){:target=blank .external-link} |
-| Channel | Unarchive | [conversations.unarchive](https://api.slack.com/methods/conversations.unarchive){:target=blank .external-link} |
-| File | Get | [files.info](https://api.slack.com/methods/files.info){:target=blank .external-link} |
-| File | Get Many | [files.list](https://api.slack.com/methods/files.list){:target=blank .external-link} |
-| File | Upload | [files.upload](https://api.slack.com/methods/files.upload){:target=blank .external-link} |
-| Message | Delete | [chat.delete](https://api.slack.com/methods/chat.delete){:target=blank .external-link} |
-| Message | Get Permalink | [chat.getPermalink](https://api.slack.com/methods/chat.getPermalink){:target=blank .external-link} |
-| Message | Search | [search.messages](https://api.slack.com/methods/search.messages){:target=blank .external-link} |
-| Message | Send | [chat.postMessage](https://api.slack.com/methods/chat.postMessage){:target=blank .external-link} |
-| Message | Send and Wait for Approval | [chat.postMessage](https://api.slack.com/methods/chat.postMessage){:target=blank .external-link} |
-| Message | Update | [chat.update](https://api.slack.com/methods/chat.update){:target=blank .external-link} |
-| Reaction | Add | [reactions.add](https://api.slack.com/methods/reactions.add){:target=blank .external-link} |
-| Reaction | Get | [reactions.get](https://api.slack.com/methods/reactions.get){:target=blank .external-link} |
-| Reaction | Remove | [reactions.remove](https://api.slack.com/methods/reactions.remove){:target=blank .external-link} |
-| Star | Add | [stars.add](https://api.slack.com/methods/stars.add){:target=blank .external-link} |
-| Star | Delete | [stars.remove](https://api.slack.com/methods/stars.remove){:target=blank .external-link} |
-| Star | Get Many | [stars.list](https://api.slack.com/methods/stars.list){:target=blank .external-link} |
-| User | Get | [users.info](https://api.slack.com/methods/users.info){:target=blank .external-link} |
-| User | Get Many | [users.list](https://api.slack.com/methods/users.list){:target=blank .external-link} |
-| User | Get User's Profile | [users.profile.get](https://api.slack.com/methods/users.profile.get){:target=blank .external-link} |
-| User | Get User's Status | [users.getPresence](https://api.slack.com/methods/users.getPresence){:target=blank .external-link} |
-| User | Update User's Profile | [users.profile.set](https://api.slack.com/methods/users.profile.set){:target=blank .external-link} |
-| User Group | Create | [usergroups.create](https://api.slack.com/methods/usergroups.create){:target=blank .external-link} |
-| User Group | Disable | [usergroups.disable](https://api.slack.com/methods/usergroups.disable){:target=blank .external-link} |
-| User Group | Enable | [usergroups.enable](https://api.slack.com/methods/usergroups.enable){:target=blank .external-link} |
-| User Group | Get Many | [usergroups.list](https://api.slack.com/methods/usergroups.list){:target=blank .external-link} |
-| User Group | Update | [usergroups.update](https://api.slack.com/methods/usergroups.update){:target=blank .external-link} |
+| **Resource** | **Operation** | **Slack API method** |
+|--------------|----------------------------|------------------------------------------------------------------------------------|
+| Channel | Archive | [conversations.archive](https://api.slack.com/methods/conversations.archive) |
+| Channel | Close | [conversations.close](https://api.slack.com/methods/conversations.close) |
+| Channel | Create | [conversations.create](https://api.slack.com/methods/conversations.create) |
+| Channel | Get | [conversations.info](https://api.slack.com/methods/conversations.info) |
+| Channel | Get Many | [conversations.list](https://api.slack.com/methods/conversations.list) |
+| Channel | History | [conversations.history](https://api.slack.com/methods/conversations.history) |
+| Channel | Invite | [conversations.invite](https://api.slack.com/methods/conversations.invite) |
+| Channel | Join | [conversations.join](https://api.slack.com/methods/conversations.join) |
+| Channel | Kick | [conversations.kick](https://api.slack.com/methods/conversations.kick) |
+| Channel | Leave | [conversations.leave](https://api.slack.com/methods/conversations.leave) |
+| Channel | Member | [conversations.members](https://api.slack.com/methods/conversations.members) |
+| Channel | Open | [conversations.open](https://api.slack.com/methods/conversations.open) |
+| Channel | Rename | [conversations.rename](https://api.slack.com/methods/conversations.rename) |
+| Channel | Replies | [conversations.replies](https://api.slack.com/methods/conversations.replies) |
+| Channel | Set Purpose | [conversations.setPurpose](https://api.slack.com/methods/conversations.setPurpose) |
+| Channel | Set Topic | [conversations.setTopic](https://api.slack.com/methods/conversations.setTopic) |
+| Channel | Unarchive | [conversations.unarchive](https://api.slack.com/methods/conversations.unarchive) |
+| File | Get | [files.info](https://api.slack.com/methods/files.info) |
+| File | Get Many | [files.list](https://api.slack.com/methods/files.list) |
+| File | Upload | [files.upload](https://api.slack.com/methods/files.upload) |
+| Message | Delete | [chat.delete](https://api.slack.com/methods/chat.delete) |
+| Message | Get Permalink | [chat.getPermalink](https://api.slack.com/methods/chat.getPermalink) |
+| Message | Search | [search.messages](https://api.slack.com/methods/search.messages) |
+| Message | Send | [chat.postMessage](https://api.slack.com/methods/chat.postMessage) |
+| Message | Send and Wait for Approval | [chat.postMessage](https://api.slack.com/methods/chat.postMessage) |
+| Message | Update | [chat.update](https://api.slack.com/methods/chat.update) |
+| Reaction | Add | [reactions.add](https://api.slack.com/methods/reactions.add) |
+| Reaction | Get | [reactions.get](https://api.slack.com/methods/reactions.get) |
+| Reaction | Remove | [reactions.remove](https://api.slack.com/methods/reactions.remove) |
+| Star | Add | [stars.add](https://api.slack.com/methods/stars.add) |
+| Star | Delete | [stars.remove](https://api.slack.com/methods/stars.remove) |
+| Star | Get Many | [stars.list](https://api.slack.com/methods/stars.list) |
+| User | Get | [users.info](https://api.slack.com/methods/users.info) |
+| User | Get Many | [users.list](https://api.slack.com/methods/users.list) |
+| User | Get User's Profile | [users.profile.get](https://api.slack.com/methods/users.profile.get) |
+| User | Get User's Status | [users.getPresence](https://api.slack.com/methods/users.getPresence) |
+| User | Update User's Profile | [users.profile.set](https://api.slack.com/methods/users.profile.set) |
+| User Group | Create | [usergroups.create](https://api.slack.com/methods/usergroups.create) |
+| User Group | Disable | [usergroups.disable](https://api.slack.com/methods/usergroups.disable) |
+| User Group | Enable | [usergroups.enable](https://api.slack.com/methods/usergroups.enable) |
+| User Group | Get Many | [usergroups.list](https://api.slack.com/methods/usergroups.list) |
+| User Group | Update | [usergroups.update](https://api.slack.com/methods/usergroups.update) |
diff --git a/docs/integrations/builtin/app-nodes/n8n-nodes-base.whatsapp/index.md b/docs/integrations/builtin/app-nodes/n8n-nodes-base.whatsapp/index.md
index 8c99d0248..231f10bfb 100644
--- a/docs/integrations/builtin/app-nodes/n8n-nodes-base.whatsapp/index.md
+++ b/docs/integrations/builtin/app-nodes/n8n-nodes-base.whatsapp/index.md
@@ -36,7 +36,7 @@ Refer to [WhatsApp Business Cloud credentials](/integrations/builtin/credentials
## Related resources
-Refer to [WhatsApp Business Platform's Cloud API documentation](https://developers.facebook.com/docs/whatsapp/cloud-api){:target=_blank} for details about the operations.
+Refer to [WhatsApp Business Platform's Cloud API documentation](https://developers.facebook.com/docs/whatsapp/cloud-api) for details about the operations.
## Common issues
diff --git a/docs/integrations/builtin/core-nodes/n8n-nodes-base.ldap.md b/docs/integrations/builtin/core-nodes/n8n-nodes-base.ldap.md
index 6db30b0ad..2a7363366 100644
--- a/docs/integrations/builtin/core-nodes/n8n-nodes-base.ldap.md
+++ b/docs/integrations/builtin/core-nodes/n8n-nodes-base.ldap.md
@@ -81,7 +81,7 @@ You can also configure this operation using these options:
* **Single Level**: Often referred to as "one," selecting this option will search only the immediate children of the **Base DN** entry.
* **Whole Subtree**: Often referred to as "sub," selecting this option will search the **Base DN** entry and all its subordinates to any depth.
-Refer to [The LDAP Search Operation](https://ldap.com/the-ldap-search-operation/){:target="_blank" .external-link} for more information on search scopes.
+Refer to [The LDAP Search Operation](https://ldap.com/the-ldap-search-operation/) for more information on search scopes.
## Update
diff --git a/docs/integrations/builtin/credentials/brevo.md b/docs/integrations/builtin/credentials/brevo.md
index b4f4bd3d5..729b2c201 100644
--- a/docs/integrations/builtin/credentials/brevo.md
+++ b/docs/integrations/builtin/credentials/brevo.md
@@ -28,5 +28,5 @@ Refer to [Brevo's API documentation](https://developers.brevo.com/reference/gett
To configure this credential, you'll need:
-- An **API Key**: Refer to the [Brevo API Quick Start documentation](https://developers.brevo.com/docs/getting-started#quick-start){:target=_blank .external-class} for instructions on creating a new API key.
+- An **API Key**: Refer to the [Brevo API Quick Start documentation](https://developers.brevo.com/docs/getting-started#quick-start) for instructions on creating a new API key.
diff --git a/docs/integrations/builtin/credentials/google/service-account.md b/docs/integrations/builtin/credentials/google/service-account.md
index d4b26dce4..2445151d1 100644
--- a/docs/integrations/builtin/credentials/google/service-account.md
+++ b/docs/integrations/builtin/credentials/google/service-account.md
@@ -15,7 +15,7 @@ Using service accounts is more complex than OAuth2. Before you begin:
## Prerequisites
-* Create a [Google Cloud](https://cloud.google.com/){:targe=_blank .external-link} account.
+* Create a [Google Cloud](https://cloud.google.com/) account.
## Set up Service Account
diff --git a/docs/integrations/builtin/credentials/s3.md b/docs/integrations/builtin/credentials/s3.md
index f782830f7..06604a577 100644
--- a/docs/integrations/builtin/credentials/s3.md
+++ b/docs/integrations/builtin/credentials/s3.md
@@ -16,9 +16,9 @@ You can use these credentials to authenticate the following nodes:
Create an account on an S3-compatible server. Use the S3 node for generic or non-AWS S3 like:
-* [DigitalOcean Spaces](https://www.digitalocean.com/products/spaces){:target="_blank" .external-link}
-* [MinIO](https://min.io/){:target="_blank" .external-link}
-* [Wasabi](https://wasabi.com/){:target="_blank" .external-link}
+* [DigitalOcean Spaces](https://www.digitalocean.com/products/spaces)
+* [MinIO](https://min.io/)
+* [Wasabi](https://wasabi.com/)
## Supported authentication methods
@@ -26,7 +26,7 @@ Create an account on an S3-compatible server. Use the S3 node for generic or non
## Related resources
-Refer to your S3-compatible provider's documentation for more information on the services. For example, refer to [Wasabi's REST API documentation](https://docs.wasabi.com/docs/rest-api-introduction){:target="_blank" .external-link} or [DigitalOcean's Spaces API Reference Documentation](https://docs.digitalocean.com/reference/api/spaces-api/){:target="_blank" .external-link}.
+Refer to your S3-compatible provider's documentation for more information on the services. For example, refer to [Wasabi's REST API documentation](https://docs.wasabi.com/docs/rest-api-introduction) or [DigitalOcean's Spaces API Reference Documentation](https://docs.digitalocean.com/reference/api/spaces-api/).
## Using S3 endpoint
@@ -49,26 +49,26 @@ To configure the credential for use with DigitalOcean spaces:
- Your DigitalOceans endpoint depends on the data center region your bucket's in.
2. For the **Region**, enter the region your bucket's located in, for example, `nyc3`.
- If you plan to use this credential to create new Spaces, enter `us-east-1` instead.
-3. From your DigitalOceans control panel, go to [**API**](https://cloud.digitalocean.com/account/api/spaces){:target="_blank" .external-link}.
+3. From your DigitalOceans control panel, go to [**API**](https://cloud.digitalocean.com/account/api/spaces).
4. Open the **Spaces Keys** tab.
5. Select **Generate New Key**.
6. Enter a **Name** for your key, like `n8n integration` and select the checkmark.
7. Copy the **Key** displayed next to the name and enter this as the **Access Key ID** in n8n.
8. Copy the **Secret** value and enter this as the **Secret Access Key** in n8n.
- - Refer to [Sharing Access to Buckets with Access Keys](https://docs.digitalocean.com/products/spaces/how-to/manage-access/#access-keys){:target="_blank" .external-link} for more information on generating the key and secret.
+ - Refer to [Sharing Access to Buckets with Access Keys](https://docs.digitalocean.com/products/spaces/how-to/manage-access/#access-keys) for more information on generating the key and secret.
9. Keep the **Force Path Style** toggle turned off unless you want to use subdomain/virtual calling format.
10. Decide how you want the n8n credential to handle SSL:
- To respect SSL certificate validation, keep the default of **Ignore SSL Issues** turned off.
- To connect even if SSL certificate validation fails, turn on **Ignore SSL Issues**.
-Refer to DigitalOcean's [Spaces API Reference Documentation](https://docs.digitalocean.com/reference/api/spaces-api/){:target="_blank" .external-link} for more information.
+Refer to DigitalOcean's [Spaces API Reference Documentation](https://docs.digitalocean.com/reference/api/spaces-api/) for more information.
### Using Wasabi
To configure the credential for use with Wasabi:
1. For the **S3 Endpoint**, enter the service URL for your bucket's region. Start it with `https://`.
- - Refer to [What are the service URLs for Wasabi's different storage regions?](https://knowledgebase.wasabi.com/hc/en-us/articles/360015106031-What-are-the-service-URLs-for-Wasabi-s-different-storage-regions){:target="_blank" .external-link} to identify the correct URL.
+ - Refer to [Service URLs for Wasabi's Storage Regions](https://docs.wasabi.com/v1/docs/service-urls-for-wasabis-storage-regions) to identify the correct URL.
2. For the **Region**, enter the region slug portion of the service URL. For example, if you entered `https://s3.us-east-2.wasabisys.com` as the **S3 Endpoint**, `us-east-2` is the region.
3. Log into you Wasabi Console as the root user.
4. Open the **Menu** and select **Access Keys**.
@@ -76,8 +76,8 @@ To configure the credential for use with Wasabi:
6. Select whether the key is for the **Root User** or a **Sub-User** and select **CREATE**.
7. Copy the **Access Key** and enter it in n8n as the **Access Key ID**.
8. Copy the **Secret Key** and enter it in n8n as the **Secret Access Key**.
- - Refer to [Creating a Wasabi API Access Key Set](https://knowledgebase.wasabi.com/hc/en-us/articles/360019677192-Creating-a-Wasabi-API-Access-Key-Set){:target="_blank" .external-link} for more information on generating the key and secret.
-9. Wasabi recommends turning on the **Force Path Style** toggle "because the path-style offers the greatest flexibility in bucket names, avoiding domain name issues." Refer to the Wasabi [REST API Introduction](https://docs.wasabi.com/docs/rest-api-introduction){:target="_blank" .external-link} for more information.
+ - Refer to [Creating a New Access Key](https://docs.wasabi.com/v1/docs/creating-a-new-access-key) for more information on generating the key and secret.
+9. Wasabi recommends turning on the **Force Path Style** toggle "because the path-style offers the greatest flexibility in bucket names, avoiding domain name issues." Refer to the Wasabi [REST API Introduction](https://docs.wasabi.com/docs/rest-api-introduction) for more information.
10. Decide how you want the n8n credential to handle SSL:
- To respect SSL certificate validation, keep the default of **Ignore SSL Issues** turned off.
- To connect even if SSL certificate validation fails, turn on **Ignore SSL Issues**.
diff --git a/docs/integrations/builtin/credentials/timescaledb.md b/docs/integrations/builtin/credentials/timescaledb.md
index 8409c8e11..862de512a 100644
--- a/docs/integrations/builtin/credentials/timescaledb.md
+++ b/docs/integrations/builtin/credentials/timescaledb.md
@@ -21,7 +21,7 @@ An available instance of [TimescaleDB](https://www.timescale.com/).
## Related resources
-Refer to [Timescale's documentation](https://docs.timescale.com/) for more information about the service.
+Refer to the [Timescale documentation](https://docs.timescale.com/) for more information about the service.
## Using database connection
@@ -38,4 +38,4 @@ To configure this credential, you'll need:
- **Require**: Sets the `ssl-mode` parameter to `require`, which is the default for TimescaleDB connection strings. Only try an SSL connection. If a root CA file is present, verify that a trusted certificate authority (CA) issued the server certificate.
- **Port**: The port number of the TimescaleDB server.
-Refer to [Timescale's connection settings documentation](https://docs.timescale.com/use-timescale/latest/integrations/query-admin/qstudio/#connection-settings) for more information about the non-SSL fields. Refer to [Connect with a stricter SSL](https://docs.timescale.com/use-timescale/latest/security/strict-ssl/) for more information about the SSL options.
+Refer to the [Timescale connection settings documentation](https://docs.tigerdata.com/integrations/latest/find-connection-details/) for more information about the non-SSL fields. Refer to [Connect with a stricter SSL](https://docs.tigerdata.com/use-timescale/latest/security/strict-ssl/) for more information about the SSL options.
diff --git a/docs/integrations/builtin/trigger-nodes/n8n-nodes-base.crowddevtrigger.md b/docs/integrations/builtin/trigger-nodes/n8n-nodes-base.crowddevtrigger.md
index e440c9835..30bd9fb6c 100644
--- a/docs/integrations/builtin/trigger-nodes/n8n-nodes-base.crowddevtrigger.md
+++ b/docs/integrations/builtin/trigger-nodes/n8n-nodes-base.crowddevtrigger.md
@@ -16,7 +16,7 @@ You can find authentication information for this node [here](/integrations/built
///
/// note | Examples and templates
-For usage examples and templates to help you get started, refer to n8n's [crowd.dev Trigger integrations](https://n8n.io/integrations/crowddev-trigger/){:target="_blank" .external-link} list.
+For usage examples and templates to help you get started, refer to n8n's [crowd.dev Trigger integrations](https://n8n.io/integrations/crowddev-trigger/) list.
///
## Events
@@ -30,4 +30,4 @@ n8n provides an app node for crowd.dev. You can find the node docs [here](/integ
View [example workflows and related content](https://n8n.io/integrations/crowddev/) on n8n's website.
-Refer to [crowd.dev's documentation](https://docs.crowd.dev/reference/getting-started-with-crowd-dev-api) for more information about the service.
+Refer to [crowd.dev's documentation](https://docs.crowd.dev/docs) for more information about the service.
diff --git a/docs/integrations/builtin/trigger-nodes/n8n-nodes-base.googlesheetstrigger/index.md b/docs/integrations/builtin/trigger-nodes/n8n-nodes-base.googlesheetstrigger/index.md
index 020b0b27d..080dfe533 100644
--- a/docs/integrations/builtin/trigger-nodes/n8n-nodes-base.googlesheetstrigger/index.md
+++ b/docs/integrations/builtin/trigger-nodes/n8n-nodes-base.googlesheetstrigger/index.md
@@ -8,7 +8,7 @@ priority: high
# Google Sheets Trigger node
-[Google Sheets](https://www.google.com/sheets){:target=_blank} is a web-based spreadsheet program that's part of Google's office software suite within its Google Drive service.
+[Google Sheets](https://www.google.com/sheets) is a web-based spreadsheet program that's part of Google's office software suite within its Google Drive service.
/// note | Credentials
You can find authentication information for this node [here](/integrations/builtin/credentials/google/index.md).
diff --git a/docs/integrations/builtin/trigger-nodes/n8n-nodes-base.slacktrigger.md b/docs/integrations/builtin/trigger-nodes/n8n-nodes-base.slacktrigger.md
index 102a7481d..edd62733a 100644
--- a/docs/integrations/builtin/trigger-nodes/n8n-nodes-base.slacktrigger.md
+++ b/docs/integrations/builtin/trigger-nodes/n8n-nodes-base.slacktrigger.md
@@ -67,7 +67,7 @@ To use this node, you need to create an application in Slack and enable event su
You must add the appropriate scopes to your Slack app for this trigger node to work.
-The node requires scopes for the [conversations.list](https://api.slack.com/methods/conversations.list){:target=blank .external-link} and [users.list](https://api.slack.com/methods/users.list){:target=blank .external-link} methods at minimum. Check out the [Scopes | Slack credentials](/integrations/builtin/credentials/slack.md#scopes) list for a more complete list of scopes.
+The node requires scopes for the [conversations.list](https://api.slack.com/methods/conversations.list) and [users.list](https://api.slack.com/methods/users.list) methods at minimum. Check out the [Scopes | Slack credentials](/integrations/builtin/credentials/slack.md#scopes) list for a more complete list of scopes.
## Common issues
diff --git a/docs/integrations/builtin/trigger-nodes/n8n-nodes-base.venafitlsprotectcloudtrigger.md b/docs/integrations/builtin/trigger-nodes/n8n-nodes-base.venafitlsprotectcloudtrigger.md
index 66445109e..0cddbee7f 100644
--- a/docs/integrations/builtin/trigger-nodes/n8n-nodes-base.venafitlsprotectcloudtrigger.md
+++ b/docs/integrations/builtin/trigger-nodes/n8n-nodes-base.venafitlsprotectcloudtrigger.md
@@ -9,7 +9,7 @@ contentType: [integration, reference]
[Venafi](https://www.venafi.com/) is a cybersecurity company providing services for machine identity management. They offer solutions to manage and protect identities for a wide range of machine types, delivering global visibility, lifecycle automation, and actionable intelligence.
-Use the n8n Venafi TLS Protect Cloud Trigger node to start a workflow in n8n in response to events in the [cloud-based Venafi TLS Protect](https://vaas.venafi.com/){:target=_blank} service.
+Use the n8n Venafi TLS Protect Cloud Trigger node to start a workflow in n8n in response to events in the [cloud-based Venafi TLS Protect](https://vaas.venafi.com/) service.
/// note | Credentials
You can find authentication information for this node [here](/integrations/builtin/credentials/venafitlsprotectcloud.md).
diff --git a/docs/integrations/creating-nodes/build/node-development-environment.md b/docs/integrations/creating-nodes/build/node-development-environment.md
index 6eea9d2b8..dcd94e63b 100644
--- a/docs/integrations/creating-nodes/build/node-development-environment.md
+++ b/docs/integrations/creating-nodes/build/node-development-environment.md
@@ -11,19 +11,19 @@ This document lists the essential dependencies for developing a node, as well as
To build and test a node, you need:
-* 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 (Windows Subsystem for Linux) [here](https://github.com/nvm-sh/nvm){:target=_blank class=.external-link}. 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){:target=_blank class=.external-link}.
+* 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 (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](/integrations/creating-nodes/test/run-node-locally.md) to test your node.
-You should also have [git](https://git-scm.com/){:target=_blank class=.external-link} installed. This allows you to clone and use the [n8n-node-starter](https://github.com/n8n-io/n8n-nodes-starter){:target=_blank class=.external-link}.
+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
-n8n recommends using [VS Code](https://code.visualstudio.com/){:target=_blank class=.external-link} as your editor.
+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){:target=_blank class=.external-link}
-* [EditorConfig](https://marketplace.visualstudio.com/items?itemName=EditorConfig.EditorConfig){:target=_blank class=.external-link}
-* [Prettier](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode){:target=_blank class=.external-link}
+* [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.
diff --git a/docs/integrations/creating-nodes/build/reference/node-base-files/standard-parameters.md b/docs/integrations/creating-nodes/build/reference/node-base-files/standard-parameters.md
index 050249998..d72379def 100644
--- a/docs/integrations/creating-nodes/build/reference/node-base-files/standard-parameters.md
+++ b/docs/integrations/creating-nodes/build/reference/node-base-files/standard-parameters.md
@@ -104,8 +104,10 @@ This parameter tells n8n the credential options. Each object defines an authenti
The object must include:
-* `name`: the credential name. Must match the `name` property in the credential file. For example, `name: 'asanaApi'` in [`Asana.node.ts`](https://github.com/n8n-io/n8n/blob/master/packages/nodes-base/nodes/Asana/Asana.node.ts){:target=_blank .external-class} links to `name = 'asanaApi'` in [`AsanaApi.credential.ts`](https://github.com/n8n-io/n8n/blob/master/packages/nodes-base/credentials/AsanaApi.credentials.ts){:target=_blank .external-class}.
+
+* `name`: the credential name. Must match the `name` property in the credential file. For example, `name: 'asanaApi'` in [`Asana.node.ts`](https://github.com/n8n-io/n8n/blob/master/packages/nodes-base/nodes/Asana/Asana.node.ts) links to `name = 'asanaApi'` in [`AsanaApi.credential.ts`](https://github.com/n8n-io/n8n/blob/master/packages/nodes-base/credentials/AsanaApi.credentials.ts).
* `required`: Boolean. Specify whether authentication is required to use this node.
+
## `requestDefaults`
diff --git a/docs/integrations/creating-nodes/build/reference/node-codex-files.md b/docs/integrations/creating-nodes/build/reference/node-codex-files.md
index 468ad570a..f86afb560 100644
--- a/docs/integrations/creating-nodes/build/reference/node-codex-files.md
+++ b/docs/integrations/creating-nodes/build/reference/node-codex-files.md
@@ -5,7 +5,7 @@ contentType: reference
# Node codex files
-The codex file contains metadata about your node. This file is the JSON file at the root of your node. For example, the [`HttpBin.node.json`](https://github.com/n8n-io/n8n-nodes-starter/blob/master/nodes/HttpBin/HttpBin.node.json){:target=_blank .external-class} file in the n8n starter.
+The codex file contains metadata about your node. This file is the JSON file at the root of your node. For example, the [`HttpBin.node.json`](https://github.com/n8n-io/n8n-nodes-starter/blob/master/nodes/HttpBin/HttpBin.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`.
diff --git a/docs/integrations/creating-nodes/build/reference/node-file-structure.md b/docs/integrations/creating-nodes/build/reference/node-file-structure.md
index 566f3078e..6573f501d 100644
--- a/docs/integrations/creating-nodes/build/reference/node-file-structure.md
+++ b/docs/integrations/creating-nodes/build/reference/node-file-structure.md
@@ -31,7 +31,7 @@ You can choose whether to place all your node's functionality in one file, or sp
A basic pattern is to separate out operations. Refer to the [HttpBin starter node](https://github.com/n8n-io/n8n-nodes-starter/tree/master/nodes/HttpBin) for an example of this.
-For more complex nodes, n8n recommends a directory structure. Refer to the [Airtable node](https://github.com/n8n-io/n8n/tree/master/packages/nodes-base/nodes/Airtable){:target=_blank .external-class} or [Microsoft Outlook node](https://github.com/n8n-io/n8n/tree/master/packages/nodes-base/nodes/Microsoft/Outlook) as examples.
+For more complex nodes, n8n recommends a directory structure. Refer to the [Airtable node](https://github.com/n8n-io/n8n/tree/master/packages/nodes-base/nodes/Airtable) or [Microsoft Outlook node](https://github.com/n8n-io/n8n/tree/master/packages/nodes-base/nodes/Microsoft/Outlook) as examples.
* `actions`: a directory containing sub-directories that represent resources.
* Each sub-directory should contain two types of files:
@@ -56,6 +56,6 @@ n8n supports both approaches. If you include more than one node, each node shoul
## A best-practice example for programmatic nodes
-n8n's built-in [Airtable node](https://github.com/n8n-io/n8n/tree/master/packages/nodes-base/nodes/Airtable){:target=_blank .external-class} implements a modular structure and versioning, following recommended patterns.
+n8n's built-in [Airtable node](https://github.com/n8n-io/n8n/tree/master/packages/nodes-base/nodes/Airtable) implements a modular structure and versioning, following recommended patterns.
diff --git a/docs/integrations/creating-nodes/plan/node-ui-design.md b/docs/integrations/creating-nodes/plan/node-ui-design.md
index 7f816b4dd..b0d44eaaf 100644
--- a/docs/integrations/creating-nodes/plan/node-ui-design.md
+++ b/docs/integrations/creating-nodes/plan/node-ui-design.md
@@ -151,7 +151,7 @@ When performing an operation on a specific record, such as "update a task commen
#### Dates and timestamps
-n8n uses [ISO timestamp strings](https://en.wikipedia.org/wiki/ISO_8601){:target=_blank class=.external-link} for dates and times. Make sure that any date or timestamp field you add supports all ISO 8601 formats.
+n8n uses [ISO timestamp strings](https://en.wikipedia.org/wiki/ISO_8601) for dates and times. Make sure that any date or timestamp field you add supports all ISO 8601 formats.
#### JSON
diff --git a/docs/release-notes.md b/docs/release-notes.md
index 85faed78e..39f63cf5a 100644
--- a/docs/release-notes.md
+++ b/docs/release-notes.md
@@ -41,7 +41,7 @@ View the [commits](https://github.com/n8n-io/n8n/compare/n8n@1.104.0...n8n@1.104
**Release date:** 2025-07-23
/// note | Next version
-This is the `next` version. n8n recommends using the `latest` version. The `next` version may be unstable. To report issues, use the [forum](https://community.n8n.io/c/questions/12){:target=_blank .external-link}.
+This is the `next` version. n8n recommends using the `latest` version. The `next` version may be unstable. To report issues, use the [forum](https://community.n8n.io/c/questions/12).
///
This release contains bug fixes.
@@ -4934,7 +4934,7 @@ This release contains new features, performance improvements, and bug fixes.
#### Tournament
-This releases replaces RiotTmpl, the templating language used in expressions, with n8n's own templating language, [Tournament](https://github.com/n8n-io/tournament){:target=_blank .external-linmk}. You can now use arrow functions in expressions.
+This releases replaces RiotTmpl, the templating language used in expressions, with n8n's own templating language, [Tournament](https://github.com/n8n-io/tournament). You can now use arrow functions in expressions.
@@ -5350,7 +5350,7 @@ For full details, refer to the [n8n v1.0 migration guide](/1-0-migration-checkli
#### Python support
-Although JavaScript remains the default language, you can now also select Python as an option in the [Code node](/code/code-node.md) and even make use of [many Python modules](https://pyodide.org/en/stable/usage/packages-in-pyodide.html#packages-in-pyodide){:target=_blank .external link}. Note that Python is unavailable in Code nodes added to a workflow before v1.0.
+Although JavaScript remains the default language, you can now also select Python as an option in the [Code node](/code/code-node.md) and even make use of [many Python modules](https://pyodide.org/en/stable/usage/packages-in-pyodide.html#packages-in-pyodide). Note that Python is unavailable in Code nodes added to a workflow before v1.0.
diff --git a/docs/release-notes/0-x.md b/docs/release-notes/0-x.md
index 41c2bef5a..e71d33cc1 100644
--- a/docs/release-notes/0-x.md
+++ b/docs/release-notes/0-x.md
@@ -3340,9 +3340,9 @@ Enhancements to the **Trigger** inputs panel: When using a trigger node, you wil
### Node enhancements
-* [HubSpot node](/integrations/builtin/app-nodes/n8n-nodes-base.hubspot.md){:target=_blank}: you can now assign a stage on ticket update.
-* [Todoist node](/integrations/builtin/app-nodes/n8n-nodes-base.todoist.md){:target=_blank}: it's now possible to move tasks between sections.
-* [Twake node](/integrations/builtin/app-nodes/n8n-nodes-base.twake.md){:target=_blank}: updated icon, credential test added, and added support for custom operations.
+* [HubSpot node](/integrations/builtin/app-nodes/n8n-nodes-base.hubspot.md): you can now assign a stage on ticket update.
+* [Todoist node](/integrations/builtin/app-nodes/n8n-nodes-base.todoist.md): it's now possible to move tasks between sections.
+* [Twake node](/integrations/builtin/app-nodes/n8n-nodes-base.twake.md): updated icon, credential test added, and added support for custom operations.
### Bug fixes
@@ -3378,8 +3378,8 @@ Added support for the client_credentials grant type for OAuth2.
### Node enhancements
-* [Twilio node](/integrations/builtin/app-nodes/n8n-nodes-base.twilio.md){:target=_blank}: added the ability to make a voice call using TTS.
-* [Wise node](/integrations/builtin/app-nodes/n8n-nodes-base.wise.md){:target=_blank}: added support for downloading statements as JSON, CSV, or PDF.
+* [Twilio node](/integrations/builtin/app-nodes/n8n-nodes-base.twilio.md): added the ability to make a voice call using TTS.
+* [Wise node](/integrations/builtin/app-nodes/n8n-nodes-base.wise.md): added support for downloading statements as JSON, CSV, or PDF.
### Bug fixes
@@ -3387,9 +3387,9 @@ Added support for the client_credentials grant type for OAuth2.
* Core: fixes an issue with combined expressions not resolving if one expression was invalid.
* Core: fixed an issue that was causing the public API to fail to build on Windows.
* Editor: ensure errors display correctly.
-* [HTTP Request node](/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/index.md){:target=_blank}: better handling for requests that return null.
-* [Pipedrive node](/integrations/builtin/app-nodes/n8n-nodes-base.pipedrive.md){:target=_blank}: fixes a limits issue with the GetAll operation on the Lead resource.
-* [Postbin node](/integrations/builtin/app-nodes/n8n-nodes-base.postbin.md){:target=_blank}: remove a false error.
+* [HTTP Request node](/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/index.md): better handling for requests that return null.
+* [Pipedrive node](/integrations/builtin/app-nodes/n8n-nodes-base.pipedrive.md): fixes a limits issue with the GetAll operation on the Lead resource.
+* [Postbin node](/integrations/builtin/app-nodes/n8n-nodes-base.postbin.md): remove a false error.
### Contributors
@@ -3427,7 +3427,7 @@ This release introduces the public API.
#### The n8n public API
-This release introduces the n8n public REST API. Using n8n's public API, you can programmatically perform many of the same tasks as you can in the GUI. The API includes a built-in Swagger UI playground. Refer to the [API documentation](/api/index.md){:target=_blank} for more information.
+This release introduces the n8n public REST API. Using n8n's public API, you can programmatically perform many of the same tasks as you can in the GUI. The API includes a built-in Swagger UI playground. Refer to the [API documentation](/api/index.md) for more information.
@@ -3470,14 +3470,14 @@ n8n now supports running an error workflow in response to an activation error.
#### Cal.com trigger
-This release adds a new trigger node for Cal.com. Refer to the [Cal Trigger documentation](/integrations/builtin/trigger-nodes/n8n-nodes-base.caltrigger.md){:target=_blank} for more guidance.
+This release adds a new trigger node for Cal.com. Refer to the [Cal Trigger documentation](/integrations/builtin/trigger-nodes/n8n-nodes-base.caltrigger.md) for more guidance.
### Node enhancements
-* [GitHub node](/integrations/builtin/app-nodes/n8n-nodes-base.github.md){:target=_blank}: add the Get All operation to the Organization resource.
-* [QuickBooks node](/integrations/builtin/app-nodes/n8n-nodes-base.quickbooks.md){:target=_blank}: add a new optional field for tax items.
+* [GitHub node](/integrations/builtin/app-nodes/n8n-nodes-base.github.md): add the Get All operation to the Organization resource.
+* [QuickBooks node](/integrations/builtin/app-nodes/n8n-nodes-base.quickbooks.md): add a new optional field for tax items.
### Bug fixes
@@ -3486,8 +3486,8 @@ This release adds a new trigger node for Cal.com. Refer to the [Cal Trigger docu
* Resolve crashes in queue mode.
* Correct delete button hover spacing.
* Resolve a bug causing stuck loading states.
-* [EmailReadImap node](/integrations/builtin/core-nodes/n8n-nodes-base.emailimap.md){:target=_blank}: improve error handling.
-* [HubSpot node](/integrations/builtin/app-nodes/n8n-nodes-base.hubspot.md){:target=_blank}: fix contact loading.
+* [EmailReadImap node](/integrations/builtin/core-nodes/n8n-nodes-base.emailimap.md): improve error handling.
+* [HubSpot node](/integrations/builtin/app-nodes/n8n-nodes-base.hubspot.md): fix contact loading.
### Contributors
@@ -3524,11 +3524,11 @@ PostBin serves as a wrapper for standard HTTP libraries which can be used to tes
* **Core**: Mitigated possible XSS vulnerability when importing workflow templates.
* **Editor UI**: fixed erroneous hover state detection close to the sticky note button.
* **Editor UI**: fixed display behavior of credentials assigned to versioned nodes.
-* [Discord node](/integrations/builtin/app-nodes/n8n-nodes-base.discord/index.md){:target=_blank}: Fixed rate limit handling.
-* [Gmail node](/integrations/builtin/app-nodes/n8n-nodes-base.gmail/index.md){:target=_blank}: Fixed sending attachments in filesystem data mode.
-* [Google Sheets node](/integrations/builtin/app-nodes/n8n-nodes-base.googlesheets/index.md){:target=_blank}: Fixed an error preventing the *Use Header Names as JSON Paths* option from working as expected.
-* [Nextcloud node](/integrations/builtin/app-nodes/n8n-nodes-base.nextcloud.md){:target=_blank}: Updated the node so the list:folder operation works with Nextcloud version 24.
-* [YouTube node](/integrations/builtin/app-nodes/n8n-nodes-base.youtube.md){:target=_blank}: Fixed problem with uploading large files.
+* [Discord node](/integrations/builtin/app-nodes/n8n-nodes-base.discord/index.md): Fixed rate limit handling.
+* [Gmail node](/integrations/builtin/app-nodes/n8n-nodes-base.gmail/index.md): Fixed sending attachments in filesystem data mode.
+* [Google Sheets node](/integrations/builtin/app-nodes/n8n-nodes-base.googlesheets/index.md): Fixed an error preventing the *Use Header Names as JSON Paths* option from working as expected.
+* [Nextcloud node](/integrations/builtin/app-nodes/n8n-nodes-base.nextcloud.md): Updated the node so the list:folder operation works with Nextcloud version 24.
+* [YouTube node](/integrations/builtin/app-nodes/n8n-nodes-base.youtube.md): Fixed problem with uploading large files.
## n8n@0.178.2
@@ -3564,7 +3564,7 @@ n8n supplies hundreds of nodes, allowing you to create workflows that link multi
One of the most complex parts of setting up API calls is managing authentication. To simplify this, n8n now provides a way to use existential credential types (credentials associated with n8n nodes) in the HTTP Request node.
-For more information, refer to [Custom API operations](/integrations/custom-operations.md){:target=_blank}.
+For more information, refer to [Custom API operations](/integrations/custom-operations.md).
#### Node details view
@@ -3574,18 +3574,18 @@ An improved node view, showing more detail about node inputs.
### Node enhancements
-[Salesforce Node](/integrations/builtin/app-nodes/n8n-nodes-base.salesforce.md){:target=_blank}: Add the **Country** field.
+[Salesforce Node](/integrations/builtin/app-nodes/n8n-nodes-base.salesforce.md): Add the **Country** field.
### Bug fixes
* **Editor UI**: don't display the dividing line unless necessary.
* **Editor UI**: don't display the 'Welcome' sticky in template workflows.
-* [Slack Node](/integrations/builtin/app-nodes/n8n-nodes-base.slack.md){:target=_blank}: Fix the kick operation for the channel resource.
+* [Slack Node](/integrations/builtin/app-nodes/n8n-nodes-base.slack.md): Fix the kick operation for the channel resource.
## n8n@0.177.0
-View the [commits](https://github.com/n8n-io/n8n/compare/n8n@0.176.0...n8n@0.177.0){:target="_blank" .external-link} for this version.
+View the [commits](https://github.com/n8n-io/n8n/compare/n8n@0.176.0...n8n@0.177.0) for this version.
**Release date:** 2022-05-17
This release contains node enhancements, an improved welcome experience, and bug fixes.
@@ -3596,7 +3596,7 @@ This release contains node enhancements, an improved welcome experience, and bug
#### Improved welcome experience
-A new [introductory video](https://youtu.be/RpjQTGKm-ok){:target="_blank" .external-link}, automatically displayed for new users.
+A new [introductory video](https://youtu.be/RpjQTGKm-ok), automatically displayed for new users.
#### Automatically convert Luxon dates to strings
@@ -3606,26 +3606,26 @@ n8n now automatically converts Luxon DateTime objects to strings.
### Node enhancements
-* [Google Drive Node](/integrations/builtin/app-nodes/n8n-nodes-base.googledrive/index.md){:target="_blank"}: Drive upload, delete, and share operations now support shared Drives.
-* [Microsoft OneDrive](/integrations/builtin/app-nodes/n8n-nodes-base.microsoftonedrive.md){:target="_blank"}: Add the rename operation for files and folders.
-* [Trello](/integrations/builtin/app-nodes/n8n-nodes-base.trello.md){:target="_blank"}: Add support for operations relating to board members.
+* [Google Drive Node](/integrations/builtin/app-nodes/n8n-nodes-base.googledrive/index.md): Drive upload, delete, and share operations now support shared Drives.
+* [Microsoft OneDrive](/integrations/builtin/app-nodes/n8n-nodes-base.microsoftonedrive.md): Add the rename operation for files and folders.
+* [Trello](/integrations/builtin/app-nodes/n8n-nodes-base.trello.md): Add support for operations relating to board members.
### Bug fixes
* **core:** Fix call to `/executions-current` with unsaved workflow.
* **core:** Fix issue with fixedCollection having all default values.
-* [Edit Image Node](/integrations/builtin/core-nodes/n8n-nodes-base.editimage.md){:target="_blank"}: Fix font selection.
-* [Ghost Node](/integrations/builtin/app-nodes/n8n-nodes-base.ghost.md){:target="_blank"}: Fix post tags and add credential tests.
-* [Google Calendar Node](/integrations/builtin/app-nodes/n8n-nodes-base.googlecalendar/index.md){:target="_blank"}: Make it work with public calendars and clean up.
-* [KoBoToolbox Node](/integrations/builtin/app-nodes/n8n-nodes-base.kobotoolbox.md){:target="_blank"}: Fix query and sort + use question name in attachments.
-* [Mailjet Trigger Node](/integrations/builtin/app-nodes/n8n-nodes-base.mailjet.md){:target="_blank"}: Fix issue that node couldn't get activated.
-* [Pipedrive Node](/integrations/builtin/app-nodes/n8n-nodes-base.pipedrive.md){:target="_blank"}: Fix resolve properties when using multi option field.
+* [Edit Image Node](/integrations/builtin/core-nodes/n8n-nodes-base.editimage.md): Fix font selection.
+* [Ghost Node](/integrations/builtin/app-nodes/n8n-nodes-base.ghost.md): Fix post tags and add credential tests.
+* [Google Calendar Node](/integrations/builtin/app-nodes/n8n-nodes-base.googlecalendar/index.md): Make it work with public calendars and clean up.
+* [KoBoToolbox Node](/integrations/builtin/app-nodes/n8n-nodes-base.kobotoolbox.md): Fix query and sort + use question name in attachments.
+* [Mailjet Trigger Node](/integrations/builtin/app-nodes/n8n-nodes-base.mailjet.md): Fix issue that node couldn't get activated.
+* [Pipedrive Node](/integrations/builtin/app-nodes/n8n-nodes-base.pipedrive.md): Fix resolve properties when using multi option field.
### Contributors
-[Cristobal Schlaubitz Garcia](https://github.com/CxGarcia){:target="_blank" .external-link}
-[Yann Jouanique](https://github.com/Yann-J){:target="_blank" .external-link}
+[Cristobal Schlaubitz Garcia](https://github.com/CxGarcia)
+[Yann Jouanique](https://github.com/Yann-J)
## n8n@0.176.0
diff --git a/docs/sustainable-use-license.md b/docs/sustainable-use-license.md
index d81a3032d..450bc57a1 100644
--- a/docs/sustainable-use-license.md
+++ b/docs/sustainable-use-license.md
@@ -13,7 +13,7 @@ contentType: explanation
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){:target=\_blank .external-link} and [n8n Enterprise License](https://github.com/n8n-io/n8n/blob/master/LICENSE_EE.md){:target=\_blank .external-link} are based on the [fair-code](https://faircode.io/) model.
+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
diff --git a/docs/workflows/export-import.md b/docs/workflows/export-import.md
index 71cdb7bff..9f9b4c2ea 100644
--- a/docs/workflows/export-import.md
+++ b/docs/workflows/export-import.md
@@ -31,5 +31,5 @@ From the top navigation bar, select the three dots in the upper right