diff --git a/docs/nodes/credentials/Beeminder/README.md b/docs/nodes/credentials/Beeminder/README.md
index 0314c1d30..202d2864b 100644
--- a/docs/nodes/credentials/Beeminder/README.md
+++ b/docs/nodes/credentials/Beeminder/README.md
@@ -14,12 +14,12 @@ Create a [Beeminder](https://Beeminder.io/account) account.
## Using API Key
-1. Access your [Beeminder dashboard](https://beeminder.com/home).
+1. Open your [Beeminder dashboard](https://beeminder.com/home).
2. Click on your avatar at the top-right corner.
3. Select 'ACCOUNT SETTINGS' from the dropdown list.
4. Scroll up and click on the ***APPS & API*** tab.
5. Copy the ***Auth Token*** displayed in the ***API*** section.
-6. Enter a name for your credentials in the ***Credentials Name*** field in the 'Beeminder API' credentials in n8n.
+6. Enter the name for your credentials in the ***Credentials Name*** field in the 'Beeminder API' credentials in n8n.
7. Enter your username in the ***User*** field.
8. Paste the Auth Token in the ***Auth Token*** field.
9. Click on the ***Save*** button to save your credentials.
diff --git a/docs/nodes/credentials/PipeDrive/README.md b/docs/nodes/credentials/PipeDrive/README.md
index 9d729101d..febbf9526 100644
--- a/docs/nodes/credentials/PipeDrive/README.md
+++ b/docs/nodes/credentials/PipeDrive/README.md
@@ -15,36 +15,51 @@ Create a [Pipedrive](https://pipedrive.com/) account.
## Using OAuth
-::: tip ⛅️ Note for n8n.cloud users
+
1. Create a [Developer Sandbox Account](https://pipedrive.readme.io/docs/developer-sandbox-account).
-2. Access your Pipedrive Dashboard.
-3. Click on your user profile in the top right and select 'Tools and apps' from the dropdown list.
+2. Open your Pipedrive Dashboard.
+3. Click on your user profile in the top right and select 'Tools and integrations' from the dropdown list.
4. From the sidebar under the ***Tools*** section, select 'Marketplace manager'.
5. Click on the ***Create new app*** button.
6. Select either 'Yes' or 'No' when asked if you would like to publish your app on the Pipedrive marketplace.
7. Click on the ***Next*** button.
-8. Enter a name in the ***App name*** field.
+8. Enter the name of the app in the ***App name*** field.
9. Copy the 'OAuth Callback URL' provided in the 'Pipedrive OAuth2 API' credentials in n8n.
10. On the Pipedrive app creation page, scroll down to the ***OAuth & Access scopes*** section and paste the URL in the ***Callback URL*** field.
-11. Click on the ***Save*** button on the top.
-12. Select your app from the 'Marketplace Manager'
-13. Scroll down to ***OAuth & Access scopes*** section and copy the ***Client ID*** and ***Client Secret***.
-14. Use these credentials with your Pipedrive node credentials in n8n.
-15. Click on the circle button in the OAuth section to connect a Pipedrive account to n8n.
-16. Click on the ***Save*** button to save your credentials.
+11. Based on your use-case, select the scopes from the ***Access scopes*** section.
+12. Scroll up and click on the ***Save*** button on the top.
+13. Select your app from the 'Marketplace manager'
+14. Scroll down to ***OAuth & Access scopes*** section and copy the ***Client ID***.
+15. Enter the name for your credentials in the ***Credentials Name*** field in the 'Pipedrive OAuth2 API' credentials in n8n.
+16. Paste the client ID in the ***Client ID*** field in the 'Pipedrive OAuth2 API' credentials in n8n.
+17. On the Pipedrive application page, click on the ***Show*** button next to ***Client Secret***.
+18. Copy the ***Client Secret***.
+19. Paste the client secret in the ***Client Secret*** field in the 'Pipedrive OAuth2 API' credentials in n8n.
+20. Click on the circle button in the OAuth section to connect a Pipedrive account to n8n.
+21. Click on the ***Save*** button to save your credentials.
-
+The following video demonstrates the steps mentioned above.
-## Using Access Token
+
+
+
-1. Access your Pipedrive Dashboard.
+## Using API Token
+
+1. Open your Pipedrive Dashboard.
2. Click on your user profile in the top right.
-3. Select 'Settings' from the dropdown list.
-4. Click on the 'API' tab.
-5. Click on the ***Generate new token*** button.
-6. Use the displayed token with your Pipedrive node credentials in n8n.
+3. Select 'Personal preferences' from the dropdown list.
+4. Click on the ***API*** tab.
+5. Click on the ***Copy*** button to copy the API Token.
+6. Enter the name for your credentials in the ***Credentials Name*** field in the 'Pipedrive API' credentials in n8n.
+7. Paste the API token in the ***API Token*** field in the 'Pipedrive API' credentials in n8n.
+8. Click on the ***Create*** button to save your credentials.
-
+The following video demonstrates the steps mentioned above.
+
+
+
+
diff --git a/docs/nodes/credentials/PipeDrive/using-access-token.gif b/docs/nodes/credentials/PipeDrive/using-access-token.gif
deleted file mode 100644
index a44823246..000000000
Binary files a/docs/nodes/credentials/PipeDrive/using-access-token.gif and /dev/null differ
diff --git a/docs/nodes/credentials/PipeDrive/using-oauth.gif b/docs/nodes/credentials/PipeDrive/using-oauth.gif
deleted file mode 100644
index 2965426ad..000000000
Binary files a/docs/nodes/credentials/PipeDrive/using-oauth.gif and /dev/null differ
diff --git a/docs/nodes/credentials/SendGrid/README.md b/docs/nodes/credentials/SendGrid/README.md
new file mode 100644
index 000000000..80f00d4eb
--- /dev/null
+++ b/docs/nodes/credentials/SendGrid/README.md
@@ -0,0 +1,33 @@
+---
+permalink: /credentials/sendgrid
+description: Learn to configure credentials for the SendGrid node in n8n
+---
+
+# SendGrid
+
+You can use these credentials to authenticate the following nodes with SendGrid.
+- [SendGrid](../../nodes-library/nodes/SendGrid/README.md)
+
+
+## Prerequisites
+
+Create a [SendGrid](https://SendGrid.com/) account.
+
+## Using API Key
+
+1. Open your SendGrid [dashboard](https://app.sendgrid.com/).
+2. Click on ***Settings*** on the left sidebar.
+3. Click on ***API Keys***.
+4. Click on the ***Create API Key*** button.
+5. Enter the name of the key in the ***API Key Name*** field.
+6. Click on the ***Create & View*** button.
+7. Click on the displayed API key to copy the key.
+8. Enter the name for your credentials in the ***Credentials Name*** field in the 'SendGrid API' credentials in n8n.
+9. Paste the 'API Key' in the ***API Key*** field.
+10. Click on the ***Create*** button to save your credentials.
+
+The following video demonstrates the steps mentioned above.
+
+
+
+
diff --git a/docs/nodes/credentials/Slack/README.md b/docs/nodes/credentials/Slack/README.md
index f04a26e24..5c833a3ef 100644
--- a/docs/nodes/credentials/Slack/README.md
+++ b/docs/nodes/credentials/Slack/README.md
@@ -18,38 +18,58 @@ Create a [Slack](https://slack.com/) account.
You'll only need to enter the Credentials Name and click on the circle button in the OAuth section to connect your Slack account to n8n.
:::
-1. Access your Slack workspace.
-2. Click on your workspace name in the top left.
-3. Click the 'Settings & administration' option, and then 'Manage apps'.
-4. Click on the 'Build' button in the top right.
-5. Click on the 'Start Building' button if this is your first Slack app, else click on the 'Create New App' button.
-6. Enter an app name and select your desired workspace.
-7. Scroll down and you will see your authentication information under the ***App Credentials*** section.
-8. Copy and paste ***Client ID*** and ***Client Secret*** in the Slack OAuth2 API credentials in n8n.
-9. Click on the 'Permissions' button in the ***Add features and functionality*** section.
+1. Open the [Slack API](https://api.slack.com/) page.
+2. Click on the ***Start Building*** button.
+3. Enter the name of the app in the ***App Name*** field.
+4. Select a workspace from the ***Development Slack Workspace*** dropdown list.
+5. Click on the ***Create App*** button.
+6. Scroll down to the ***App Credentials*** section.
+7. Copy and paste ***Client ID*** and ***Client Secret*** in the 'Slack OAuth2 API' credentials in n8n.
+8. On the Basic Information page, scroll up to the ***Add features and functionality*** section and click on 'Permissions'.
+9. Click on the ***Add New Redirect URL*** in the ***Redirect URLs***.
10. Copy the 'OAuth Callback URL' provided in the 'Slack OAuth2 API' credentials in n8n.
-11. Click on the ***Add New Redirect URL*** in the ***Redirect URLs*** section in the Slack OAuth & Permissions page.
-12. Paste the 'OAuth Callback URL' in the field and click on the ***Save URLs*** button.
-13. Scroll down and add any scopes you plan to use under the ***User Token Scopes*** section.
-14. If you're building a bot, add the required scopes for the bot under the ***Bot Token Scopes*** section.
-15. Click on the circle button in the OAuth section to connect a Slack account to n8n.
-16. Click the ***Save*** button to save your credentials in n8n.
+11. Paste the URL in the ***Redirect URLs*** field and click on the ***Add*** button.
+12. Click on the ***Save URLs*** button.
+13. Scroll down to the ***Scopes*** section.
+14. Add the required scopes under the ***Bot Token Scopes*** section. You can refer to the list of scopes on the [Scopes and permissions](https://api.slack.com/scopes) documentation on Slack.
+15. Enter a name for your credentials in the ***Credentials Name*** field in the 'Slack OAuth2 API' credentials in n8n.
+16. Click on the circle button in the OAuth section to connect a Slack account to n8n.
+17. Click the ***Save*** button to save your credentials in n8n.
+18. On the Slack OAuth & Permissions page, scroll up to the ***OAuth Tokens & Redirect URLs*** section and click on the ***Install to Workspace*** button.
+19. Click on the ***Allow*** button.
-
+The following video demonstrates the steps mentioned above.
+
+
+
+
+
+The following video demonstrates the steps to authenticate the Slack node on [n8n.cloud](https://n8n.cloud).
+
+
+
+
## Using Access Token
-1. Access your Slack workspace.
-2. Click on your username in the top left.
-3. Click the 'Settings & administration' option, and then 'Manage apps'.
-4. Click on ***Build*** in the top right.
-5. Click on the ***Start Building*** button if this is your first Slack app, else click on the ***Create an App*** button.
-6. Enter an app name and select your desired workspace.
-7. Click on the 'Permissions' button in the ***Add features and functionality*** section.
-8. Scroll down and add any scopes you plan to use under the ***User Token Scopes*** section.
-9. If you're building a bot, add the required scopes for the bot under the ***Bot Token Scopes*** section.
-10. Click on the ***Install to Workspace*** button in the ***OAuth Tokens & Redirect URLs*** section.
-11. Click on the ***Allow*** button to install the app in your workspace.
-12. Use the displayed Access Token with your Slack node credentials in n8n.
+1. Open the [Slack API](https://api.slack.com/) page.
+2. Click on the ***Start Building*** button.
+3. Enter the name of the app in the ***App Name*** field.
+4. Select a workspace from the ***Development Slack Workspace*** dropdown list.
+5. Click on the ***Create App*** button.
+6. Click on 'Permissions' in the ***Add features and functionality*** section.
+7. Scroll down to the ***Scopes*** section.
+8. If you want your app to act on behalf of users that authorize the app, add the required scopes under the ***User Token Scopes*** section.
+9. If you're building a bot, add the required scopes under the ***Bot Token Scopes*** section. You can refer to the list of scopes on the [Scopes and permissions](https://api.slack.com/scopes) documentation on Slack.
+10. Scroll up to the ***OAuth Tokens & Redirect URLs*** section and click on the ***Install to Workspace*** button.
+11. Click on the ***Allow*** button.
+12. Copy the displayed 'OAuth Access Token' under the ***OAuth Tokens for Your Team*** section.
+13. Paste it in the ***Access Token*** field in the 'Slack API' credentials in n8n.
+14. Enter a name for your credentials in the ***Credentials Name*** field in the 'Slack API' credentials in n8n.
+15. Click the ***Save*** button to save your credentials in n8n.
-
+The following video demonstrates the steps mentioned above.
+
+
+
+
diff --git a/docs/nodes/credentials/Slack/using-access-token.gif b/docs/nodes/credentials/Slack/using-access-token.gif
deleted file mode 100644
index 3ad779a5b..000000000
Binary files a/docs/nodes/credentials/Slack/using-access-token.gif and /dev/null differ
diff --git a/docs/nodes/credentials/Slack/using-oauth.gif b/docs/nodes/credentials/Slack/using-oauth.gif
deleted file mode 100644
index 167f51db4..000000000
Binary files a/docs/nodes/credentials/Slack/using-oauth.gif and /dev/null differ
diff --git a/docs/nodes/credentials/Zendesk/README.md b/docs/nodes/credentials/Zendesk/README.md
index 8ad9d6195..3e60c51c6 100644
--- a/docs/nodes/credentials/Zendesk/README.md
+++ b/docs/nodes/credentials/Zendesk/README.md
@@ -15,7 +15,7 @@ Create a [Zendesk](https://zendesk.com/) account.
## Using OAuth
-1. Access your Zendesk dashboard.
+1. Open your Zendesk dashboard.
2. Click on the gear icon on the left.
3. Click on 'API' under the ***CHANNELS*** section in the sidebar.
4. Click on the ***OAuth Clients*** tab.
@@ -37,11 +37,13 @@ Create a [Zendesk](https://zendesk.com/) account.
The following video demonstrates the steps mentioned above.
+
+
## Using Access Token
-1. Access your Zendesk dashboard.
+1. Open your Zendesk dashboard.
2. Click on the gear icon on the left.
3. Click on 'API' under the ***CHANNELS*** section in the sidebar.
4. If ***Token access*** is disabled, click on the switch to toggle it to 'Enabled'.
@@ -57,7 +59,9 @@ The following video demonstrates the steps mentioned above.
The following video demonstrates the steps mentioned above.
+
+
## FAQs
diff --git a/docs/nodes/nodes-library/core-nodes/FunctionItem/README.md b/docs/nodes/nodes-library/core-nodes/FunctionItem/README.md
index 5cfeb9db5..9d11a2df4 100644
--- a/docs/nodes/nodes-library/core-nodes/FunctionItem/README.md
+++ b/docs/nodes/nodes-library/core-nodes/FunctionItem/README.md
@@ -34,7 +34,10 @@ return item;
### Method: getBinaryData()
Returns all the binary data (all keys) of the item which gets currently processed.
-
+```json
+item.filename = getBinaryData().attachment_0.fileName;
+return item;
+```
### Method: setBinaryData(binaryData)
diff --git a/docs/nodes/nodes-library/nodes/Beeminder/README.md b/docs/nodes/nodes-library/nodes/Beeminder/README.md
index eb2a98bfe..e84fd3acb 100644
--- a/docs/nodes/nodes-library/nodes/Beeminder/README.md
+++ b/docs/nodes/nodes-library/nodes/Beeminder/README.md
@@ -1,5 +1,5 @@
---
-permalink: /nodes/n8n-nodes-base.Beeminder
+permalink: /nodes/n8n-nodes-base.beeminder
description: Learn how to use the Beeminder node in n8n
---
diff --git a/docs/nodes/nodes-library/nodes/SendGrid/README.md b/docs/nodes/nodes-library/nodes/SendGrid/README.md
new file mode 100644
index 000000000..8242173f0
--- /dev/null
+++ b/docs/nodes/nodes-library/nodes/SendGrid/README.md
@@ -0,0 +1,94 @@
+---
+permalink: /nodes/n8n-nodes-base.sendGrid
+description: Learn how to use the SendGrid node in n8n
+---
+
+# SendGrid
+
+[SendGrid](https://SendGrid.co) provides a cloud-based service that assists businesses with email delivery.
+
+::: tip 🔑 Credentials
+You can find authentication information for this node [here](../../../credentials/SendGrid/README.md).
+:::
+
+## Basic Operations
+
+::: details Contact
+- Create/Update a contact
+- Delete a contact
+- Get a contact by ID
+- Get all contacts
+:::
+
+::: details List
+- Create a list
+- Delete a list
+- Get a list
+- Get all lists
+- Update a list
+:::
+
+## Example Usage
+
+This workflow allows you to create, update and get a contact using the SendGrid node. You can also find the [workflow](https://n8n.io/workflows/901) on n8n.io. This example usage workflow uses the following nodes.
+- [Start](../../core-nodes/Start/README.md)
+- [SendGrid]()
+
+The final workflow should look like the following image.
+
+
+
+### 1. Start node
+
+The Start node exists by default when you create a new workflow.
+
+### 2. SendGrid node (upsert:contact)
+
+This node will create a contact in SendGrid.
+
+1. First of all, you'll have to enter credentials for the SendGrid node. You can find out how to do that [here](../../../credentials/SendGrid/README.md).
+2. Select 'Contact' from the ***Resource*** dropdown list.
+3. Select 'Create/Update' from the ***Operation*** dropdown list.
+4. Enter an email address in the ***Email*** field.
+5. Click on the ***Add Field*** button and select 'First Name'.
+6. Enter the name of the contact in the ***First Name*** field.
+7. Click on ***Execute Node*** to run the node.
+
+In the screenshot below, you will notice that the node creates contact with their first name.
+
+
+
+### 3. SendGrid1 node (upsert:contact)
+
+This node will update the contact that we created in the previous node.
+
+::: v-pre
+1. Select the credentials that you entered in the previous node.
+2. Select 'Contact' from the ***Resource*** dropdown list.
+3. Select 'Create/Update' from the ***Operation*** dropdown list.
+4. Click on the gears icon next to the ***Email*** field and click on ***Add Expression***.
+5. Select the following in the ***Variable Selector*** section: Nodes > SendGrid > Parameters > email. You can also add the following expression: `{{$node["SendGrid"].parameter["email"]}}`.
+6. Click on the ***Add Field*** button and select 'Last Name'.
+7. Enter the last name of the contact in the ***Last Name*** field.
+8. Click on ***Execute Node*** to run the node.
+:::
+In the screenshot below, you will notice that the node updates the contact that we created in the previous node.
+
+
+
+### 4. SendGrid2 node (get:contact)
+
+This node will return the information of the contact that we created using the SendGrid node.
+::: v-pre
+1. Select the credentials that you entered in the previous node.
+2. Select 'Contact' from the ***Resource*** dropdown list.
+3. Select 'Get' from the ***Operation*** dropdown list.
+4. Select 'Email' from the ***By*** dropdown list.
+5. Click on the gears icon next to the ***Email*** field and click on ***Add Expression***.
+6. Select the following in the ***Variable Selector*** section: Nodes > SendGrid > Parameters > email. You can also add the following expression: `{{$node["SendGrid"].parameter["email"]}}`.
+7. Click on ***Execute Node*** to run the node.
+:::
+
+In the screenshot below, you will notice that the node returns the information of the contact that we created using the SendGrid node.
+
+
diff --git a/docs/nodes/nodes-library/nodes/SendGrid/SendGrid1_node.png b/docs/nodes/nodes-library/nodes/SendGrid/SendGrid1_node.png
new file mode 100644
index 000000000..2aad8e708
Binary files /dev/null and b/docs/nodes/nodes-library/nodes/SendGrid/SendGrid1_node.png differ
diff --git a/docs/nodes/nodes-library/nodes/SendGrid/SendGrid2_node.png b/docs/nodes/nodes-library/nodes/SendGrid/SendGrid2_node.png
new file mode 100644
index 000000000..cc354f174
Binary files /dev/null and b/docs/nodes/nodes-library/nodes/SendGrid/SendGrid2_node.png differ
diff --git a/docs/nodes/nodes-library/nodes/SendGrid/SendGrid_node.png b/docs/nodes/nodes-library/nodes/SendGrid/SendGrid_node.png
new file mode 100644
index 000000000..387079639
Binary files /dev/null and b/docs/nodes/nodes-library/nodes/SendGrid/SendGrid_node.png differ
diff --git a/docs/nodes/nodes-library/nodes/SendGrid/workflow.png b/docs/nodes/nodes-library/nodes/SendGrid/workflow.png
new file mode 100644
index 000000000..33ae2de18
Binary files /dev/null and b/docs/nodes/nodes-library/nodes/SendGrid/workflow.png differ
diff --git a/docs/reference/changelog.md b/docs/reference/changelog.md
index 616cfc055..c64461080 100644
--- a/docs/reference/changelog.md
+++ b/docs/reference/changelog.md
@@ -25,7 +25,7 @@ For a comprehensive list of changes, check out the [commits](https://github.com/
- AWS Lambda: Fixed an issue with signature
- AWS SNS: Fixed an issue with signature
- Fixed an issue with nodes not executing if two input gets passed and one of them didn't return any data
-- The code editor can be closed either by clicking on the close (X) button or using the `ESC` key
+- The code editor does not get closed when clicked anywhere outside the editor
- Added CLI commands to [export](start-workflows-via-cli.md#export-workflows-and-credentials) and [import](start-workflows-via-cli.md#import-workflows-and-credentials) credentials and workflows
- The title in the browser tab now resets for new workflows
diff --git a/docs/reference/function-nodes.md b/docs/reference/function-nodes.md
index a6204f58c..03d30197e 100644
--- a/docs/reference/function-nodes.md
+++ b/docs/reference/function-nodes.md
@@ -22,3 +22,9 @@ possible via the methods `getBinaryData` and `setBinaryData`.
Both nodes support promises. So instead of returning the item or items directly, it is also possible to
return a promise which resolves accordingly.
+
+#### Comparison
+| Data to access | Function | FunctionItem |
+| :-------------------------- | :--------------------- | :--------------- |
+| JSON data | items\[_index_\].json | item |
+| Binary data | items\[_index_\].binary | getBinaryData() |