Automatización de la aprobación de solicitudes de cambio con Monday.com, Jira, Slack y Google Sheets
Este es unProject Managementflujo de automatización del dominio deautomatización que contiene 25 nodos.Utiliza principalmente nodos como If, Set, Jira, Gmail, Slack. Automatización de la aprobación de solicitudes de cambio con Monday.com, Jira, Slack y Google Sheets
- •Cuenta de Google y credenciales de API de Gmail
- •Bot Token de Slack o URL de Webhook
- •Credenciales de API de Google Sheets
Nodos utilizados (25)
Categoría
{
"id": "qcrbyv2z8OnQhJ8F",
"meta": {
"instanceId": "8443f10082278c46aa5cf3acf8ff0f70061a2c58bce76efac814b16290845177",
"templateCredsSetupCompleted": true
},
"name": "Automate Change Request Approvals with Monday.com, Jira, Slack & Google Sheets",
"tags": [],
"nodes": [
{
"id": "4415994b-5b1d-4277-9089-201f714d2770",
"name": "Descripción General del Flujo de Trabajo",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2400,
160
],
"parameters": {
"color": 4,
"width": 389,
"height": 829,
"content": "## 🎯 Change Request Approval Workflow\n\nAutomated change management system that routes requests based on risk level and status.\n\n**What it does:**\n\n- Fetches change requests from Monday.com daily\n- Routes by status (Pending/Approved/Rejected)\n- Creates Jira tickets for approved requests\n- Logs approved requests to Google Sheets\n- Sends Slack notifications to stakeholders\n- Handles resubmissions for rejected requests\n\n**Use Case:** Perfect for IT teams managing change requests with approval workflows and risk-YOUR_OPENAI_KEY_HERE routing.\n\n**Required Setup:**\n\n- Monday.com board with change requests\n- Jira project for approved changes\n- Google Sheets for audit trail\n- Slack workspace for notifications\n- Gmail for email confirmations\n\n**Example Payload Structure:**\n\nMonday.com items should contain:\n- ID (string): Unique identifier\n- Name (string): Request title\n- Status (text): \"Pending\", \"Approved\", or \"Rejected\"\n- Component affected (text): System component name\n- Approvers (people): Assigned approvers\n- Description (long text): Detailed request description\n- Risk Level (status): \"High\", \"Medium\", or \"Low\"\n\n**Customization Options:**\n\n- **Schedule Timing**: Modify the cron expression in Schedule Trigger node to change execution times (default: weekdays at 3:00 AM)\n- **Slack Channels**: Update channel IDs in Slack nodes to send notifications to different channels\n- **Jira Issue Types**: Change issue type from \"Task\" to \"Story\", \"Bug\", or custom types in your project\n- **Email Recipients**: Modify the sendTo parameter in Gmail node to send to multiple recipients or use dynamic addresses\n- **Column Mapping**: Adjust column_values indices in Edit Fields node if your Monday.com board structure differs\n- **Risk Level Routing**: Customize the routing logic in IF nodes to handle additional risk levels or statuses\n\n**Troubleshooting:**\n\nQ: Workflow runs but no items are fetched from Monday.com?\nA: Verify your board ID and group ID are correct. Check that your Monday.com API credentials have read access to the board.\n\nQ: Slack notifications not sending?\nA: Ensure your Slack channel ID is correct (starts with 'C'). Verify the bot has permission to post in the channel.\n\nQ: Jira issue creation fails?\nA: Confirm your project ID and issue type ID are valid. Check that required fields in Jira are being populated.\n\nQ: Google Sheets not updating?\nA: Verify the spreadsheet ID and sheet GID are correct. Ensure your Google OAuth2 credentials have write access.\n\nQ: Column values returning empty?\nA: Column indices in Edit Fields node may not match your board structure. Check Monday.com API response to identify correct indices.\n\nQ: Workflow not running on schedule?\nA: Activate the workflow and check timezone settings. Verify the cron expression matches your desired schedule."
},
"typeVersion": 1
},
{
"id": "c051e25e-ccee-4210-a131-6ba155486876",
"name": "Nota - Programación",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1936,
112
],
"parameters": {
"width": 262,
"height": 253,
"content": "## ⏰ Daily Schedule\n\nRuns weekdays at 3:00 AM to process change requests.\n\n**Schedule:** Mon-Fri at 03:00\n\n**Cron:** `0 3 * * 1-5`\n\n**Customize:** Adjust timing based on your team's timezone and workflow needs."
},
"typeVersion": 1
},
{
"id": "7a86c05e-6d0f-4996-a558-6b0c744715c5",
"name": "Nota - Extraer",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1520,
96
],
"parameters": {
"width": 262,
"height": 293,
"content": "## 📄 Data Transformation\n\nExtracts and maps Monday.com columns to clean fields.\n\n**Mapped Fields:**\n\n- ID, Name, Status\n- Component affected\n- Approvers\n- Description\n- Risk Level\n\n**Note:** Adjust column indices if your board structure differs"
},
"typeVersion": 1
},
{
"id": "5c37acc1-3bc0-49af-8949-b0a816783513",
"name": "Nota - Slack Pendiente",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1056,
80
],
"parameters": {
"width": 262,
"height": 258,
"content": "## 💬 Slack Alert - Pending\n\n**Setup Required:**\n\n1. Replace channel ID with your Slack channel ID\n2. Connect Slack API credentials\n\n**Sends:** Notification for pending approvals with all request details"
},
"typeVersion": 1
},
{
"id": "6543192f-0aed-4e37-b6a8-476c11079bd6",
"name": "Nota - Ruta de Aprobado",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1008,
656
],
"parameters": {
"width": 262,
"height": 258,
"content": "## ✅ Approved Router\n\n**True Branch:** Status = \"Approved\"\n\n- Creates Jira ticket\n- Logs to Google Sheets\n\n**False Branch:** Status = \"Rejected\"\n\n- Handles resubmission flow"
},
"typeVersion": 1
},
{
"id": "d9053b68-9c61-42e1-a7ec-260daea118f6",
"name": "Nota - Jira",
"type": "n8n-nodes-base.stickyNote",
"position": [
-672,
32
],
"parameters": {
"width": 262,
"height": 237,
"content": "## 🎫 Create Jira Issue\n\n**Setup Required:**\n\n1. Select your Jira project from the dropdown\n2. Update issue type if needed\n3. Connect Jira credentials\n\n**Creates:** Task with request name and description"
},
"typeVersion": 1
},
{
"id": "b7c1819c-59ec-4f8e-932e-1ef92c45be41",
"name": "Nota - Hojas de Cálculo",
"type": "n8n-nodes-base.stickyNote",
"position": [
-768,
736
],
"parameters": {
"width": 262,
"height": 309,
"content": "## 📊 Audit Trail\n\n**Setup Required:**\n\n1. Select your Google Sheets document from the dropdown\n2. Select the sheet tab to log data\n3. Connect Google OAuth2 credentials\n\n**Logs:** All approved requests for compliance tracking"
},
"typeVersion": 1
},
{
"id": "42234c45-21e7-48c2-a9e7-cce57fb83764",
"name": "Nota - Correo Electrónico",
"type": "n8n-nodes-base.stickyNote",
"position": [
-176,
-16
],
"parameters": {
"width": 262,
"height": 301,
"content": "## 📧 Email Confirmation\n\n**Setup Required:**\n\n1. Replace email address with recipient\n2. Connect Gmail OAuth2 credentials\n\n**Sends:** Professional confirmation email with Jira ticket link"
},
"typeVersion": 1
},
{
"id": "02732fa9-e577-47b8-a458-fb0cffdd572d",
"name": "Nota - Ruta de Rechazado",
"type": "n8n-nodes-base.stickyNote",
"position": [
-512,
896
],
"parameters": {
"width": 262,
"height": 258,
"content": "## ❌ Rejected Router\n\n**True Branch:** Status = \"Rejected\"\n\n- Creates resubmission item in Monday.com\n\n**False Branch:** No action\n\n- End of workflow for other statuses"
},
"typeVersion": 1
},
{
"id": "602b9d11-71de-4fb2-af67-27962728ff67",
"name": "Nota - Reenviar",
"type": "n8n-nodes-base.stickyNote",
"position": [
-208,
880
],
"parameters": {
"width": 262,
"height": 285,
"content": "## 🔄 Resubmission Handler\n\n**Setup Required:**\n\n1. Use same board ID as fetch node\n2. Same Monday.com credentials\n\n**Creates:** New item prefixed with \"Resubmission:\" for rejected requests"
},
"typeVersion": 1
},
{
"id": "d07b2336-0cc0-4a83-a2a0-dbadf6c1bbee",
"name": "Nota - Slack Aprobado",
"type": "n8n-nodes-base.stickyNote",
"position": [
-144,
560
],
"parameters": {
"width": 262,
"height": 269,
"content": "## 💬 Slack Alert - Approved\n\n**Setup Required:**\n\n1. Use same Slack channel ID\n2. Same credentials as pending notification\n\n**Sends:** Confirmation with Jira ticket key for approved requests"
},
"typeVersion": 1
},
{
"id": "e4099998-608c-4273-9d5b-0bc057d83d69",
"name": "Nota - Ruta de Estado",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1280,
608
],
"parameters": {
"width": 262,
"height": 285,
"content": "## 🔀 Status Router\n\nRoutes requests based on status.\n\n**True Branch:** Status = \"Pending\"\n\n- Sends notification to stakeholders\n\n**False Branch:** Status = \"Approved\" or \"Rejected\"\n\n- Continues to next routing node"
},
"typeVersion": 1
},
{
"id": "0902612f-4be1-4185-b750-c0a868710ded",
"name": "Nota - Obtener",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1584,
592
],
"parameters": {
"width": 262,
"height": 269,
"content": "## 📋 Fetch Requests\n\n**Setup Required:**\n\n1. Replace board ID with your Monday.com board ID\n2. Update groupId if using different group\n3. Connect Monday.com credentials\n\n**Fetches:** All change request items from board"
},
"typeVersion": 1
},
{
"id": "cd563c72-6ce4-41ef-81cd-ed6ba950dd65",
"name": "Enrutar por Nivel de Riesgo",
"type": "n8n-nodes-base.if",
"position": [
-1008,
400
],
"parameters": {
"conditions": {
"string": [
{
"value1": "={{ $json.Status }}",
"value2": "Pending"
}
]
}
},
"typeVersion": 1
},
{
"id": "88ca5e62-8d3d-44c6-bab1-30ea9e73e789",
"name": "Enrutar Alto Riesgo por Componente",
"type": "n8n-nodes-base.if",
"position": [
-560,
688
],
"parameters": {
"conditions": {
"string": [
{
"value1": "={{ $json.Status }}",
"value2": "Rejected"
}
]
}
},
"typeVersion": 1
},
{
"id": "a7f1bad3-2585-495b-a951-8a2fe767bd8d",
"name": "Enrutar Bajo Riesgo por Componente",
"type": "n8n-nodes-base.if",
"position": [
-784,
496
],
"parameters": {
"conditions": {
"string": [
{
"value1": "={{ $json.Status }}",
"value2": "Approved"
}
]
}
},
"typeVersion": 1
},
{
"id": "e209b20d-78f6-458f-af95-bbe964956487",
"name": "Obtener múltiples elementos",
"type": "n8n-nodes-base.mondayCom",
"position": [
-1472,
400
],
"parameters": {
"boardId": "5013238363",
"groupId": "topics",
"resource": "boardItem",
"operation": "getAll"
},
"credentials": {
"mondayComApi": {
"id": "Kxmnf2TltEtJLxDA",
"name": "Monday.com account"
}
},
"typeVersion": 1
},
{
"id": "783aa30c-2402-4899-9734-7f05fce7fe02",
"name": "Editar Campos",
"type": "n8n-nodes-base.set",
"position": [
-1232,
400
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "a1970365-569f-4272-a0a1-cfb19592ae14",
"name": "id",
"type": "string",
"value": "={{ $json.id }}"
},
{
"id": "20ee1686-786d-4702-8786-562dd485ae77",
"name": "name",
"type": "string",
"value": "={{ $json.name }}"
},
{
"id": "3957374a-b750-40d9-889a-0b8cc320d317",
"name": "Component affected",
"type": "string",
"value": "={{ $json.column_values[4].text }}"
},
{
"id": "7724954e-5ab9-493d-ac12-f8da9754561b",
"name": "Approvers",
"type": "string",
"value": "={{ $json.column_values[5].text }}"
},
{
"id": "c749e528-e47e-4de6-b40a-8ae74acfcb52",
"name": "Status",
"type": "string",
"value": "={{ $json.column_values[1].text }}"
},
{
"id": "c74e1543-2ac9-46dc-aa93-0e45ca8f1dbd",
"name": "Description",
"type": "string",
"value": "={{ $json.column_values[6].text }}"
},
{
"id": "59caec12-5c47-498e-a784-28c3b92a2fb0",
"name": "Risk Level",
"type": "string",
"value": "={{ $json.column_values[3].text }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "6cbf14f0-4022-48af-9f29-0a5b1a3803f7",
"name": "Notificar a Parte Interesada Solicitud Pendiente",
"type": "n8n-nodes-base.slack",
"position": [
-784,
304
],
"webhookId": "d987216d-dd09-4518-aacd-01fbda90908f",
"parameters": {
"text": "=📢 New Request Requires Your Approval \n\n *Name*{{ $json.name }}\n|*Request:* {{ $json.Description }}\n*Risk Level:* {{ $json['Risk Level'] }}\n*Component:* {{ $json['Component affected'] }}\n*Approver:* {{ $json.Approvers }}\n\nPlease review and update the status in Monday.com",
"select": "channel",
"channelId": {
"__rl": true,
"mode": "list",
"value": "C09GNB90TED",
"cachedResultName": "general-information"
},
"otherOptions": {}
},
"credentials": {
"slackApi": {
"id": "rNqvWj9TfChPVRYY",
"name": "Slack account vivek"
}
},
"typeVersion": 2
},
{
"id": "39356117-0088-485e-a937-9a6f193f2efe",
"name": "Crear un issue",
"type": "n8n-nodes-base.jira",
"position": [
-560,
304
],
"parameters": {
"project": {
"__rl": true,
"mode": "list",
"value": "10001",
"cachedResultName": "Kanban"
},
"summary": "={{ $json.name }}",
"issueType": {
"__rl": true,
"mode": "list",
"value": "10006",
"cachedResultName": "Task"
},
"additionalFields": {
"description": "={{ $json.Description }}"
}
},
"credentials": {
"jiraSoftwareCloudApi": {
"id": "Q6d7sLBVOfGWmaLw",
"name": "Jira SW Cloud account vivek"
}
},
"typeVersion": 1
},
{
"id": "265a13bd-46ef-4152-8619-e81a7ded2b54",
"name": "Notificar a Parte Interesada Solicitud de Aprobación",
"type": "n8n-nodes-base.slack",
"position": [
-336,
304
],
"webhookId": "d987216d-dd09-4518-aacd-01fbda90908f",
"parameters": {
"text": "=📢 Approvals \n\n*Name*{{ $('Route Low Risk by Component').item.json.name }}\n*Request:* {{ $('Route Low Risk by Component').item.json.Description }}\n*Risk Level:* {{ $('Route Low Risk by Component').item.json[\"Risk Level\"] }}\n*Component:* {{ $('Route Low Risk by Component').item.json[\"Component affected\"] }}\n*Approver:*{{ $('Route Low Risk by Component').item.json.Approvers }} \n*Issue key:*https://herevivekpatidar.atlassian.net/jira/software/projects/KAN/boards/2?selectedIssue={{ $json.key }}\n\nPlease review it",
"select": "channel",
"channelId": {
"__rl": true,
"mode": "list",
"value": "C09GNB90TED",
"cachedResultName": "general-information"
},
"otherOptions": {}
},
"credentials": {
"slackApi": {
"id": "rNqvWj9TfChPVRYY",
"name": "Slack account vivek"
}
},
"typeVersion": 2
},
{
"id": "7fd3b533-0233-47ac-ad7e-894157180e65",
"name": "Solicitud de Reenvío",
"type": "n8n-nodes-base.mondayCom",
"position": [
-336,
688
],
"parameters": {
"name": "=ReSubmission: {{ $json.name }}",
"boardId": "5013238363",
"groupId": "topics",
"resource": "boardItem",
"additionalFields": {}
},
"credentials": {
"mondayComApi": {
"id": "Kxmnf2TltEtJLxDA",
"name": "Monday.com account"
}
},
"typeVersion": 1
},
{
"id": "6ab4dfe5-ab90-44ff-9e41-f3dc4b7ec317",
"name": "Añadir o actualizar fila en hoja",
"type": "n8n-nodes-base.googleSheets",
"position": [
-560,
496
],
"parameters": {
"columns": {
"value": {},
"schema": [
{
"id": "id",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "id",
"defaultMatch": true,
"canBeUsedToMatch": true
},
{
"id": "name",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Component affected",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Component affected",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Approvers",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Approvers",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Status",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Status",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Description",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Description",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Risk Level",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Risk Level",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "autoMapInputData",
"matchingColumns": [
"id"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "list",
"value": 783581772,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/17rcNd_ZpUQLm0uWEVbD-NY6GyFUkrD4BglvawlyBygM/edit#gid=783581772",
"cachedResultName": "Monday.com approved Request"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "17rcNd_ZpUQLm0uWEVbD-NY6GyFUkrD4BglvawlyBygM",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/17rcNd_ZpUQLm0uWEVbD-NY6GyFUkrD4BglvawlyBygM/edit?usp=drivesdk",
"cachedResultName": "sample_leads_50"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "kpPEOLCGn963qpoh",
"name": "automations@techdome.ai"
}
},
"typeVersion": 4.7
},
{
"id": "64da0343-40c7-47bf-b8f5-01eee31f65f0",
"name": "Enviar un mensaje",
"type": "n8n-nodes-base.gmail",
"position": [
-112,
304
],
"webhookId": "99e219b6-cad9-4b59-a375-b673b065f7da",
"parameters": {
"sendTo": "herevivekpatidar@gmail.com",
"message": "=Your change request has been approved. \n\nName:{{ $('Route Low Risk by Component').item.json.name }} \nComponent affected:{{ $('Route Low Risk by Component').item.json[\"Component affected\"] }}\n\nJira Ticket: https://herevivekpatidar.atlassian.net/jira/software/projects/KAN/boards/2?selectedIssue={{ $('Create an issue').item.json.key }} \n\n\nPlease proceed with the implementation as planned.",
"options": {},
"subject": "Change Request Approved",
"emailType": "text"
},
"credentials": {
"gmailOAuth2": {
"id": "gEIaWCTvGfYjMSb3",
"name": "Gmail credentials"
}
},
"typeVersion": 2.1
},
{
"id": "7de45a65-1eb9-48d5-b786-d55a9634ed0b",
"name": "Activador Programado",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-1760,
400
],
"parameters": {
"rule": {
"interval": [
{
"field": "cronExpression",
"expression": "0 3 * * 1-5"
}
]
}
},
"typeVersion": 1.2
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "aa9aba93-360e-4986-be02-11313973c18f",
"connections": {
"783aa30c-2402-4899-9734-7f05fce7fe02": {
"main": [
[
{
"node": "cd563c72-6ce4-41ef-81cd-ed6ba950dd65",
"type": "main",
"index": 0
}
]
]
},
"e209b20d-78f6-458f-af95-bbe964956487": {
"main": [
[
{
"node": "783aa30c-2402-4899-9734-7f05fce7fe02",
"type": "main",
"index": 0
}
]
]
},
"39356117-0088-485e-a937-9a6f193f2efe": {
"main": [
[
{
"node": "265a13bd-46ef-4152-8619-e81a7ded2b54",
"type": "main",
"index": 0
}
]
]
},
"7de45a65-1eb9-48d5-b786-d55a9634ed0b": {
"main": [
[
{
"node": "e209b20d-78f6-458f-af95-bbe964956487",
"type": "main",
"index": 0
}
]
]
},
"cd563c72-6ce4-41ef-81cd-ed6ba950dd65": {
"main": [
[
{
"node": "6cbf14f0-4022-48af-9f29-0a5b1a3803f7",
"type": "main",
"index": 0
}
],
[
{
"node": "a7f1bad3-2585-495b-a951-8a2fe767bd8d",
"type": "main",
"index": 0
}
]
]
},
"a7f1bad3-2585-495b-a951-8a2fe767bd8d": {
"main": [
[
{
"node": "39356117-0088-485e-a937-9a6f193f2efe",
"type": "main",
"index": 0
},
{
"node": "6ab4dfe5-ab90-44ff-9e41-f3dc4b7ec317",
"type": "main",
"index": 0
}
],
[
{
"node": "88ca5e62-8d3d-44c6-bab1-30ea9e73e789",
"type": "main",
"index": 0
}
]
]
},
"88ca5e62-8d3d-44c6-bab1-30ea9e73e789": {
"main": [
[
{
"node": "7fd3b533-0233-47ac-ad7e-894157180e65",
"type": "main",
"index": 0
}
]
]
},
"265a13bd-46ef-4152-8619-e81a7ded2b54": {
"main": [
[
{
"node": "64da0343-40c7-47bf-b8f5-01eee31f65f0",
"type": "main",
"index": 0
}
]
]
}
}
}¿Cómo usar este flujo de trabajo?
Copie el código de configuración JSON de arriba, cree un nuevo flujo de trabajo en su instancia de n8n y seleccione "Importar desde JSON", pegue la configuración y luego modifique la configuración de credenciales según sea necesario.
¿En qué escenarios es adecuado este flujo de trabajo?
Avanzado - Gestión de proyectos
¿Es de pago?
Este flujo de trabajo es completamente gratuito, puede importarlo y usarlo directamente. Sin embargo, tenga en cuenta que los servicios de terceros utilizados en el flujo de trabajo (como la API de OpenAI) pueden requerir un pago por su cuenta.
Flujos de trabajo relacionados recomendados
Rahul Joshi
@rahul08Rahul Joshi is a seasoned technology leader specializing in the n8n automation tool and AI-driven workflow automation. With deep expertise in building open-source workflow automation and self-hosted automation platforms, he helps organizations eliminate manual processes through intelligent n8n ai agent automation solutions.
Compartir este flujo de trabajo