This workflow corresponds to n8n.io template #6466 — we link there as the canonical source.
This workflow follows the Gmail Trigger → Google Drive 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 →
{
"nodes": [
{
"id": "6f21b176-7f42-4cbb-938e-5ffd61aac490",
"name": "Upload to Google Drive",
"type": "n8n-nodes-base.googleDrive",
"position": [
-720,
-320
],
"parameters": {
"driveId": {
"__rl": true,
"mode": "list",
"value": "My Drive"
},
"options": {},
"folderId": {
"__rl": true,
"mode": "id",
"value": "YOUR_GOOGLE_DRIVE_FOLDER_ID"
}
},
"typeVersion": 3
},
{
"id": "9ff0cc89-232e-4720-8ffd-ad3a516d0fd2",
"name": "Gmail Trigger",
"type": "n8n-nodes-base.gmailTrigger",
"position": [
-1248,
-320
],
"parameters": {
"filters": {},
"pollTimes": {
"item": [
{
"mode": "everyMinute"
}
]
}
},
"typeVersion": 1
},
{
"id": "ab199d88-e3c0-4ce4-96af-fe338e45484e",
"name": "If (has Attachments)",
"type": "n8n-nodes-base.if",
"position": [
-976,
-320
],
"parameters": {
"options": {},
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"conditions": [
{
"id": "has-attachments",
"operator": {
"type": "number",
"operation": "notEquals"
},
"leftValue": "={{ $json.attachments.length }}",
"rightValue": 0
}
]
}
},
"typeVersion": 2
},
{
"id": "3b2f527f-7376-4a5e-b937-44877b90046d",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1312,
-880
],
"parameters": {
"color": 7,
"width": 832,
"height": 768,
"content": "## Gmail Attachment Extractor to Google Drive\n\nHow It Works\nThis workflow operates in three main steps:\n\nGmail New Email Trigger:\n\nThe workflow starts with a Gmail Trigger node, set to monitor for new emails in your specified Gmail inbox (e.g., your primary inbox).\n\nIt checks for emails that contain attachments.\n\nConditional Check (Optional but Recommended):\n\nAn If node checks if the email actually has attachments. This prevents errors if an email without an attachment somehow triggers the workflow.\n\nUpload to Google Drive:\n\nA Google Drive node receives the email data and its attachments.\n\nIt's configured to upload these attachments to a specific folder in your Google Drive.\n\nThe attachments are named dynamically based on their original filenames.\n\n\n\n"
},
"typeVersion": 1
},
{
"id": "48285db9-5075-4bd4-8642-5749267324b8",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-416,
-928
],
"parameters": {
"color": 7,
"height": 880,
"content": "## Setup Steps\nTo get this workflow up and running, follow these instructions:\n\nStep 1: Create Gmail and Google Drive Credentials in n8n\n\nIn your n8n instance, click on Credentials in the left sidebar.\n\nClick New Credential.\n\nSearch for and select \"Gmail OAuth2 API\" and follow the authentication steps with your Google account. Save it.\n\nClick New Credential again.\n\nSearch for and select \"Google Drive OAuth2 API\" and follow the authentication steps with your Google account. Save it.\n\nMake note of the Credential Names (e.g., \"My Gmail Account\", \"My Google Drive Account\").\n\nStep 2: Create a Destination Folder in Google Drive\n\nGo to your Google Drive (drive.google.com).\n\nCreate a new folder where you want to save the email attachments (e.g., Email Attachments Archive).\n\nCopy the Folder ID from the URL (e.g., https://drive.google.com/drive/folders/YOUR_FOLDER_ID_HERE)."
},
"typeVersion": 1
},
{
"id": "1cf8d9e0-1d2b-4d9e-a1bc-5e4713ffb848",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1632,
-832
],
"parameters": {
"color": 7,
"height": 688,
"content": "## Configure the Nodes\n\nGmail Trigger Node:\n\nSelect your Gmail credential under the \"Credentials\" section.\n\nThe default settings monitor new emails with attachments. You can adjust Polling Interval if needed.\n\nUpload to Google Drive Node:\n\nSelect your Google Drive credential under the \"Credentials\" section.\n\nIn the \"Folder ID\" field, replace YOUR_GOOGLE_DRIVE_FOLDER_ID with the ID you copied in Step 2.\n\nThe File Name is set dynamically to ={{ $node[\"Gmail Trigger\"].json[\"attachments\"][0][\"filename\"] }} to use the original attachment name.\n\n"
},
"typeVersion": 1
}
],
"connections": {
"Gmail Trigger": {
"main": [
[
{
"node": "If (has Attachments)",
"type": "main",
"index": 0
}
]
]
},
"If (has Attachments)": {
"main": [
[
{
"node": "Upload to Google Drive",
"type": "main",
"index": 0
}
]
]
}
}
}
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Description: This workflow monitors your Gmail inbox for new emails, specifically those with attachments, and automatically saves those attachments to a designated folder in your Google Drive.
Source: https://n8n.io/workflows/6466/ — 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 uses the item handling nodes, and expression-support in n8n, without using a node, to extract multiple attachments from a GMail (trigger input) message/event, and (conditionally) upload
Receive any business document via email. The attachment is automatically classified (Invoice, Contract, or Purchase Order) using easybits Extractor, then routed down the correct path where a second Ex
This template is built to be customized for your specific needs. This template has the core logic and n8n node specific references sorted to work with dynamic file names throughout the workflow. Store
This is an elite enterprise-grade solution for Talent Acquisition and HR Ops teams. It automates the high-volume task of resume screening by transforming unstructured PDF applications into structured
📩🤖 This workflow automatically processes emails received in Gmail, extracts their attachments, and organizes them into specific folders in Google Drive based on the sender's email address.