This workflow corresponds to n8n.io template #8257 — we link there as the canonical source.
This workflow follows the Google Drive → Google Sheets recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"meta": {
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "28a1d05e-2b90-4654-ad8b-b78e7403dabd",
"name": "Webhook",
"type": "n8n-nodes-base.webhook",
"position": [
-624,
40
],
"parameters": {
"path": "n8n-template-insta-webhook",
"options": {},
"responseMode": "responseNode",
"multipleMethods": true
},
"typeVersion": 2
},
{
"id": "7d238158-1d62-4280-9c3d-ec0631ff9240",
"name": "If",
"type": "n8n-nodes-base.if",
"position": [
-400,
-128
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "a3aa0a1a-a5b2-4bf3-9a34-639ce39138f0",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.query['hub.mode'] }}",
"rightValue": "subscribe"
},
{
"id": "fcf913d6-363e-46fe-bcb7-b77cce5a8d88",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.query['hub.verify_token'] }}",
"rightValue": "youtube-automation-n8n-token"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "1a1629ed-5508-45b2-b139-6cb3650401bc",
"name": "Respond to Webhook",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
-176,
-128
],
"parameters": {
"options": {},
"respondWith": "text",
"responseBody": "={{ $json.query['hub.challenge'] }}"
},
"typeVersion": 1.4
},
{
"id": "3a7ebfa8-ac9e-4c05-a4dc-c1a8a7ccf89d",
"name": "If Sender is Me",
"type": "n8n-nodes-base.if",
"position": [
-400,
136
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "2d8fd5c8-8bcc-4be8-9f3d-66f64748b670",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.body.entry[0].messaging[0].sender.id }}",
"rightValue": "123456"
},
{
"id": "f0f4d497-2945-47fc-a193-8a4504b031cd",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.body.entry[0].messaging[0].recipient.id }}",
"rightValue": "123456"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "7e3690c5-bffa-4202-bf0e-0add7cc8de07",
"name": "Get Reel",
"type": "n8n-nodes-base.httpRequest",
"position": [
48,
64
],
"parameters": {
"url": "={{ $('If Sender is Me').first().json.body.entry[0].messaging[0].message.attachments[0].payload.url }}",
"options": {}
},
"typeVersion": 4.2
},
{
"id": "aa7d406d-6b21-4d4e-9671-9f592ad81880",
"name": "Update Sheet with the Reel",
"type": "n8n-nodes-base.googleSheets",
"onError": "continueRegularOutput",
"position": [
496,
136
],
"parameters": {
"columns": {
"value": {
"URL": "={{ $json.webViewLink }}",
"Status": "Downloaded",
"Timestamp": "={{ $('Get Timestamp Code').item.json.timestamp }}"
},
"schema": [
{
"id": "Timestamp",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Timestamp",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "URL",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "URL",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Status",
"type": "string",
"display": true,
"required": false,
"displayName": "Status",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"URL"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "list",
"value": 969588995,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1ItzGn2Wrs7FCXTzGGxbCbhUElUR4Q78S7_OFSbWbBRk/edit#gid=969588995",
"cachedResultName": "Sheet"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1ItzGn2Wrs7FCXTzGGxbCbhUElUR4Q78S7_OFSbWbBRk",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1ItzGn2Wrs7FCXTzGGxbCbhUElUR4Q78S7_OFSbWbBRk/edit?usp=drivesdk",
"cachedResultName": "n8n Template | Instagram Reels Downloader"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.6,
"alwaysOutputData": false
},
{
"id": "e41cd87b-220d-4db5-b2ad-92a55a9b1152",
"name": "Get Timestamp Code",
"type": "n8n-nodes-base.code",
"position": [
-176,
64
],
"parameters": {
"jsCode": "return {\n timestamp: new Date().toLocaleString(\"en-In\", {\n timeZone: \"asia/Kolkata\",\n }),\n id: new Date().toISOString()\n};\n"
},
"typeVersion": 2
},
{
"id": "db50d4e7-7010-4fe7-ad28-ce5e3d4eb93f",
"name": "Message",
"type": "n8n-nodes-base.telegram",
"position": [
720,
144
],
"parameters": {
"text": "={{ $json.Timestamp }}\n\nDownloaded Reel & Saved to Drive.\nURL - {{ $json.URL }}",
"chatId": "123456789",
"additionalFields": {
"appendAttribution": false
}
},
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "bf2293bc-4ed4-441c-84aa-523d7056d43a",
"name": "Upload file",
"type": "n8n-nodes-base.googleDrive",
"position": [
272,
136
],
"parameters": {
"driveId": {
"__rl": true,
"mode": "list",
"value": "My Drive"
},
"options": {},
"folderId": {
"__rl": true,
"mode": "list",
"value": "1WcR_S-0wDexvEX16NmEH9SZFiJD8Ajk7",
"cachedResultUrl": "https://drive.google.com/drive/folders/1WcR_S-0wDexvEX16NmEH9SZFiJD8Ajk7",
"cachedResultName": "Trials"
}
},
"credentials": {
"googleDriveOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 3
},
{
"id": "a670fed0-c9d0-4dc2-9603-7a84646ff16c",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1216,
-144
],
"parameters": {
"width": 528,
"height": 512,
"content": "## Insta Reel Auto Downloader \u2013 Key Steps\n#### Webhook Listener: \n- Receives events (set this path in Meta Dev).\n#### Challenge Validate: \n- Responds to webhook handshake with verify token.\n#### Sender Filter: \n- Processes only your own events/messages.\n#### Fetch Reel: \n- Downloads IG reel from message/attachment URL.\n#### Timestamp + ID: \n- Adds unique ISO timestamp per event.\n#### Drive Upload: \n- Saves video file to Google Drive.\n#### Sheet Log: \n- Records download info in Google Sheet.\n#### Telegram: \n- Sends download/link alert to you."
},
"typeVersion": 1
},
{
"id": "841103f4-de00-4a5e-b797-9fa4f0a45a68",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
272,
-160
],
"parameters": {
"width": 448,
"content": "## Setup Tips\n- Set Google Drive, Sheets, and Telegram creds in credentials.\n- Update webhook path and verify_token to match your app.\n- Make sure Sheet tab & folder IDs are correct.\n- Use this as a plug-and-play IG reel downloader + logger!"
},
"typeVersion": 1
}
],
"connections": {
"If": {
"main": [
[
{
"node": "Respond to Webhook",
"type": "main",
"index": 0
}
]
]
},
"Webhook": {
"main": [
[
{
"node": "If",
"type": "main",
"index": 0
}
],
[
{
"node": "If Sender is Me",
"type": "main",
"index": 0
}
]
]
},
"Get Reel": {
"main": [
[
{
"node": "Upload file",
"type": "main",
"index": 0
}
]
]
},
"Upload file": {
"main": [
[
{
"node": "Update Sheet with the Reel",
"type": "main",
"index": 0
},
{
"node": "If Sender is Me",
"type": "main",
"index": 0
}
]
]
},
"If Sender is Me": {
"main": [
[
{
"node": "Get Timestamp Code",
"type": "main",
"index": 0
}
]
]
},
"Get Timestamp Code": {
"main": [
[
{
"node": "Get Reel",
"type": "main",
"index": 0
}
]
]
},
"Update Sheet with the Reel": {
"main": [
[
{
"node": "Message",
"type": "main",
"index": 0
}
]
]
}
}
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
googleDriveOAuth2ApigoogleSheetsOAuth2ApitelegramApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Automate Instagram Reel Downloads, Storage, and Activity Logging Handles incoming webhook requests (ideal for Instagram/Facebook API triggers). Validates the webhook via challenge-response and custom verify token. Checks for messages from yourself (filtering…
Source: https://n8n.io/workflows/8257/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
This template is for developers, teams, and automation enthusiasts who want a private, PIN-protected Telegram chatbot that answers questions from their own documents — without relying on external AI A
This workflow automates the creation of user-generated-content-style product videos by combining Gemini's image generation with OpenAI's SORA 2 video generation. It accepts webhook requests with produ
Listens for completed Fireflies transcripts, qualifies whether a proposal is needed using OpenAI, drafts structured proposal content, populates a Google Doc template, converts to PDF, and sends it to
💥 Automate YouTube thumbnail creation from video links -vide. Uses telegramTrigger, httpRequest, googleDrive, gmail. Event-driven trigger; 25 nodes.
💥 Automate YouTube thumbnail creation from video links -vide. Uses telegramTrigger, httpRequest, googleDrive, gmail. Event-driven trigger; 25 nodes.