This workflow follows the Gmail → 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 →
{
"name": "Productos",
"nodes": [
{
"parameters": {},
"type": "n8n-nodes-base.manualTrigger",
"typeVersion": 1,
"position": [
-1088,
-288
],
"id": "d120f327-c064-4fdf-b0d4-351beedf26fa",
"name": "Click"
},
{
"parameters": {
"url": "=https://api.escuelajs.co/api/v1/products/{{ $json.ID }}",
"options": {}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
-96,
-48
],
"id": "afa7ae9f-3da9-4484-a235-bf11d7711ca8",
"name": "Obtener informaci\u00f3n pokemon"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "e789b922-4d59-43a3-88bd-300f531f38b2",
"name": "name",
"value": "={{ $json.title }}",
"type": "string"
},
{
"id": "b1dcf023-a006-4d6d-a95a-4f8a8734c9d7",
"name": "id",
"value": "={{ $json.id }}",
"type": "number"
},
{
"id": "aa1355f8-56de-4ae3-a6ba-5a3dcfb69d66",
"name": "description",
"value": "={{ $json.description }}",
"type": "string"
},
{
"id": "8c2a3865-4b91-4fea-b85a-1586d8adff0c",
"name": "images[0]",
"value": "={{ $json.images[0] }}",
"type": "string"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
112,
-48
],
"id": "68fc6dc2-6920-488f-b2ba-40a5009ddd2d",
"name": "Extraer datos del pok\u00e9mon",
"disabled": true
},
{
"parameters": {
"operation": "update",
"documentId": {
"__rl": true,
"value": "164gZ0MoXqnnZvBfTc4ydYQ8NUsfemH-msyj1U5DiX4U",
"mode": "list",
"cachedResultName": "Pokemon tabla",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/164gZ0MoXqnnZvBfTc4ydYQ8NUsfemH-msyj1U5DiX4U/edit?usp=drivesdk"
},
"sheetName": {
"__rl": true,
"value": "gid=0",
"mode": "list",
"cachedResultName": "Pokemons-ID-Sheet",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1pLKMJdXI6pKzrxB6kKkxu5_-EkXyZvYgWUbAFC-Bnpo/edit#gid=0"
},
"columns": {
"mappingMode": "defineBelow",
"value": {
"ID": "={{ $json.id }}",
"description": "={{ $json.description }}",
"image": "={{ $json.images[0] }}",
"name": "={{ $json.title }}"
},
"matchingColumns": [
"ID"
],
"schema": [
{
"id": "ID",
"displayName": "ID",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true,
"removed": false
},
{
"id": "name",
"displayName": "name",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true,
"removed": false
},
{
"id": "description",
"displayName": "description",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true,
"removed": false
},
{
"id": "image",
"displayName": "image",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true,
"removed": false
},
{
"id": "row_number",
"displayName": "row_number",
"required": false,
"defaultMatch": false,
"display": true,
"type": "number",
"canBeUsedToMatch": true,
"readOnly": true,
"removed": true
}
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {}
},
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.7,
"position": [
416,
-48
],
"id": "867486f6-f757-407b-ab47-9f8c3ecb3071",
"name": "Actualizar informaci\u00f3n de Pokemons",
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"content": "## Google Sheet\nObtener Datos de los Productos\n",
"height": 256,
"width": 272,
"color": 4
},
"type": "n8n-nodes-base.stickyNote",
"position": [
-832,
-144
],
"typeVersion": 1,
"id": "78eea43f-c8ef-453a-9184-862407d513b0",
"name": "Sticky Note"
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 2
},
"conditions": [
{
"id": "f3e41c07-16bb-4c26-998c-3a8c64c21083",
"leftValue": "={{ $json.ID}}",
"rightValue": "",
"operator": {
"type": "number",
"operation": "exists",
"singleValue": true
}
}
],
"combinator": "and"
},
"options": {}
},
"type": "n8n-nodes-base.filter",
"typeVersion": 2.2,
"position": [
-400,
-48
],
"id": "2f029930-327f-4c74-9aa6-f9055c10dcbc",
"name": "Filtrar pokemons a buscar"
},
{
"parameters": {
"content": "## Google Sheet\nGuardar informaci\u00f3n en el documento",
"height": 320,
"width": 320,
"color": 4
},
"type": "n8n-nodes-base.stickyNote",
"position": [
320,
-160
],
"typeVersion": 1,
"id": "86476fb2-1081-43a1-9b3e-5db46ddb75b7",
"name": "Sticky Note1"
},
{
"parameters": {
"content": "## Filtro\n\u00danicamente pasan los que tienen ID",
"height": 256,
"width": 304,
"color": 3
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-496,
-144
],
"id": "cecc6b3e-7b91-4eec-b573-cd38d4149254",
"name": "Sticky Note2"
},
{
"parameters": {
"content": "## HTTP\nTraer informaci\u00f3n de los Productos de la API\n",
"height": 272,
"width": 416
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-144,
-144
],
"id": "9b8e6ea1-fe31-4e67-ad94-86d11da096db",
"name": "Sticky Note3"
},
{
"parameters": {
"sendTo": "gabik077@gmail.com",
"subject": "El proceso de migraci\u00f3n termin\u00f3",
"message": "={{ $json.emailBody }}",
"options": {}
},
"type": "n8n-nodes-base.gmail",
"typeVersion": 2.1,
"position": [
1392,
-64
],
"id": "96a4c349-01bf-426b-b884-ae313df35dc7",
"name": "Enviar correo de resultado del proceso",
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"fieldsToAggregate": {
"fieldToAggregate": [
{
"fieldToAggregate": "name"
},
{
"fieldToAggregate": "ID"
},
{
"fieldToAggregate": "description"
},
{
"fieldToAggregate": "image"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.aggregate",
"typeVersion": 1,
"position": [
736,
-48
],
"id": "a82e116e-b360-4d3d-a79f-b67b48b8ee5b",
"name": "Agrupar resultados"
},
{
"parameters": {
"content": "## Agrupar\nDatos de salida",
"height": 288,
"width": 224
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
672,
-144
],
"id": "dd58ab33-dc61-4a3a-86cc-6037e432d623",
"name": "Sticky Note4"
},
{
"parameters": {
"content": "## Enviar correo\nCon el resumen del proceso",
"height": 288,
"width": 358,
"color": 6
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
1280,
-144
],
"id": "96ed0af9-7c0b-4357-b8c9-e770908078f5",
"name": "Sticky Note5"
},
{
"parameters": {
"rule": {
"interval": [
{
"field": "minutes",
"minutesInterval": 1
},
{}
]
}
},
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1.2,
"position": [
-1072,
-64
],
"id": "bb9ecbfb-764a-4d8f-b041-a2fd6aabafd1",
"name": "Schedule Trigger"
},
{
"parameters": {
"documentId": {
"__rl": true,
"value": "164gZ0MoXqnnZvBfTc4ydYQ8NUsfemH-msyj1U5DiX4U",
"mode": "list",
"cachedResultName": "Pokemon tabla",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/164gZ0MoXqnnZvBfTc4ydYQ8NUsfemH-msyj1U5DiX4U/edit?usp=drivesdk"
},
"sheetName": {
"__rl": true,
"value": "Hoja 1",
"mode": "name"
},
"options": {}
},
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.7,
"position": [
-752,
-48
],
"id": "1f98245f-eaa6-47ca-a1a1-22bd87b466ae",
"name": "Obtener ids de Productos",
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"jsCode": "// Accedemos al primer y \u00fanico \u00edtem de entrada\nconst inputData = $input.first().json; \n\n// Extraemos los arreglos de datos\nconst ids = inputData.ID;\nconst names = inputData.name;\nconst descriptions = inputData.description;\n\n// Determinamos el n\u00famero real de productos\nconst productCount = ids ? ids.length : 0; \nlet tableRows = '';\n\nif (productCount > 0) {\n // 1. Iteramos sobre los productos usando el \u00edndice (i)\n for (let i = 0; i < productCount; i++) {\n const id = ids[i] || ''; // Usamos || '' para evitar 'undefined' si hay un error\n const name = names[i] || '';\n const description = descriptions[i] || '';\n\n // Construimos la fila de la tabla para el producto actual\n tableRows += `\n <tr>\n <td>${id}</td>\n <td>${name}</td>\n <td>${description}</td>\n </tr>\n `;\n }\n} else {\n tableRows = '<tr><td colspan=\"3\">No se encontraron nuevos productos.</td></tr>';\n}\n\n// 2. Construimos la estructura completa del cuerpo del correo\nconst emailBody = `\n <h1>Proceso termin\u00f3</h1>\n\n <h2>Nuevos Productos: (${productCount})</h2>\n\n <table border=\"1\" cellpadding=\"5\" cellspacing=\"0\" style=\"width:100%; border-collapse: collapse;\">\n <thead>\n <tr style=\"background-color: #f2f2f2;\">\n <th>ID</th>\n <th>Nombre</th>\n <th>Descripci\u00f3n</th>\n </tr>\n </thead>\n <tbody>\n ${tableRows}\n </tbody>\n </table>\n <br/>\n`;\n\n// 3. Devolvemos la cadena HTML completa en una nueva variable 'emailBody'\nreturn [\n { json: { emailBody: emailBody } }\n];"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
1024,
-48
],
"id": "63f8a59c-54a5-4156-9d15-2b8a73f82579",
"name": "Code in JavaScript"
},
{
"parameters": {
"content": "## Script de armado de tabla\nToma el json y arma una tabla en html",
"height": 288,
"width": 288,
"color": 7
},
"type": "n8n-nodes-base.stickyNote",
"position": [
928,
-160
],
"typeVersion": 1,
"id": "899f74b4-5bdf-480d-8585-17dce4d9e5a6",
"name": "Sticky Note6"
}
],
"connections": {
"Click": {
"main": [
[
{
"node": "Obtener ids de Productos",
"type": "main",
"index": 0
}
]
]
},
"Obtener informaci\u00f3n pokemon": {
"main": [
[
{
"node": "Extraer datos del pok\u00e9mon",
"type": "main",
"index": 0
}
]
]
},
"Extraer datos del pok\u00e9mon": {
"main": [
[
{
"node": "Actualizar informaci\u00f3n de Pokemons",
"type": "main",
"index": 0
}
]
]
},
"Filtrar pokemons a buscar": {
"main": [
[
{
"node": "Obtener informaci\u00f3n pokemon",
"type": "main",
"index": 0
}
]
]
},
"Actualizar informaci\u00f3n de Pokemons": {
"main": [
[
{
"node": "Agrupar resultados",
"type": "main",
"index": 0
}
]
]
},
"Agrupar resultados": {
"main": [
[
{
"node": "Code in JavaScript",
"type": "main",
"index": 0
}
]
]
},
"Schedule Trigger": {
"main": [
[]
]
},
"Obtener ids de Productos": {
"main": [
[
{
"node": "Filtrar pokemons a buscar",
"type": "main",
"index": 0
}
]
]
},
"Enviar correo de resultado del proceso": {
"main": [
[]
]
},
"Code in JavaScript": {
"main": [
[
{
"node": "Enviar correo de resultado del proceso",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "879c0241-34a8-4962-8546-a5f3944fbcf4",
"meta": {
"templateCredsSetupCompleted": true
},
"id": "rbEz8vPpEHxtbAjq",
"tags": [
{
"createdAt": "2025-10-23T22:51:14.465Z",
"updatedAt": "2025-10-23T22:51:14.465Z",
"id": "0u9XUElL7ygBGoSN",
"name": "products"
}
]
}
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.
gmailOAuth2googleSheetsOAuth2Api
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Productos. Uses httpRequest, googleSheets, gmail. Event-driven trigger; 17 nodes.
Source: https://github.com/Gabik077/n8n_workflows/blob/5e07c91327d10de3860996aac6ff3ca0c6b25aa5/workflows/Productos.json — 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 workflow ingests proof-of-delivery and completion documents from Gmail or a webhook, extracts key fields with an OpenRouter vision model, reconciles them against Google Sheets dispatch data, arch
Splitout Code. Uses manualTrigger, httpRequest, stickyNote, splitOut. Event-driven trigger; 46 nodes.
Automate CSV imports into HubSpot without the mess. Powered by n8n. Supercharged by Pollup AI.
AICARE Email Blast System. Uses googleDrive, httpRequest, googleSheets, gmail. Event-driven trigger; 39 nodes.
Tiktok to video copy (paylaşılacak). Uses httpRequest, googleDrive, googleSheets, gmail. Event-driven trigger; 39 nodes.