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": "DoBot Basic Task Management",
"nodes": [
{
"parameters": {
"httpMethod": "POST",
"path": "tasks-webhook",
"options": {}
},
"id": "trigger-basic-tasks",
"name": "Webhook Trigger (Tasks)",
"type": "n8n-nodes-base.webhook",
"typeVersion": 1,
"position": [
250,
300
]
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict"
},
"conditions": [
{
"id": "condition1",
"leftValue": "={{ $json.body?.message || $json.message || '' }}",
"rightValue": "create task",
"operator": {
"type": "string",
"operation": "contains"
}
}
],
"combinator": "and"
}
},
"id": "check-message-type",
"name": "Check Message Type",
"type": "n8n-nodes-base.if",
"typeVersion": 2,
"position": [
450,
200
]
},
{
"parameters": {
"jsCode": "// C\u00f3digo corregido para Extract Task Details\nconst message = $input.first().json.body?.message || $input.first().json.message || '';\n\nconsole.log('Received message:', message);\n\n// Extraer informaci\u00f3n de la tarea\nlet title = '';\nlet description = '';\n\n// Patrones para extraer t\u00edtulo\nconst titleMatch = message.match(/crear(?:.*?)[\"']([^\"']+)[\"']/) || \n message.match(/create(?:.*?)[\"']([^\"']+)[\"']/) ||\n message.match(/nueva tarea:?\\s*(.+)$/i) ||\n message.match(/new task:?\\s*(.+)$/i);\n\nif (titleMatch) {\n title = titleMatch[1].trim();\n description = 'Tarea creada desde N8N con DoBot';\n} else {\n // Si no se encuentra patr\u00f3n espec\u00edfico, usar mensaje completo\n title = message.replace(/create task|crear tarea/gi, '').trim() || 'Tarea sin t\u00edtulo';\n description = 'Tarea creada autom\u00e1ticamente';\n}\n\nconsole.log('Extracted title:', title);\n\nreturn [{\n title: title,\n description: description,\n status: 'Created'\n}];"
},
"id": "extract-task-details",
"name": "Extract Task Details",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
650,
150
]
},
{
"parameters": {
"url": "http://backend:3000/api/tasks",
"authentication": "none",
"requestMethod": "POST",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/json"
}
]
},
"sendBody": true,
"bodyParameters": {
"parameters": [
{
"name": "title",
"value": "={{ $json.title }}"
},
{
"name": "description",
"value": "={{ $json.description }}"
},
{
"name": "status",
"value": "={{ $json.status }}"
}
]
},
"options": {}
},
"id": "create-task-api",
"name": "Create Task (API)",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.1,
"position": [
850,
150
]
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict"
},
"conditions": [
{
"id": "condition1",
"leftValue": "={{ $json.body?.message || $json.message || '' }}",
"rightValue": "list tasks",
"operator": {
"type": "string",
"operation": "contains"
}
}
],
"combinator": "and"
}
},
"id": "check-list-command",
"name": "Check List Command",
"type": "n8n-nodes-base.if",
"typeVersion": 2,
"position": [
450,
350
]
},
{
"parameters": {
"url": "http://backend:3000/api/tasks",
"authentication": "none",
"options": {}
},
"id": "list-tasks-api",
"name": "List Tasks (API)",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.1,
"position": [
650,
350
]
},
{
"parameters": {
"jsCode": "// Formatear lista de tareas de forma segura\nconst tasksData = $input.first().json;\nconst tasks = Array.isArray(tasksData) ? tasksData : [];\n\nconsole.log('Processing tasks:', tasks.length);\n\nif (tasks.length === 0) {\n return [{\n message: 'No hay tareas en el sistema actualmente.'\n }];\n}\n\nconst taskList = tasks.map(task => {\n const id = task.id || 'N/A';\n const title = task.title || 'Sin t\u00edtulo';\n const status = task.status || 'Unknown';\n const assignee = task.assignee || 'Sin asignar';\n \n return `ID: ${id}\\nT\u00edtulo: ${title}\\nEstado: ${status}\\nAsignado a: ${assignee}\\n`;\n}).join('\\n');\n\nreturn [{\n message: `Tareas en el sistema:\\n\\n${taskList}`\n}];"
},
"id": "format-task-list",
"name": "Format Task List",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
850,
350
]
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict"
},
"conditions": [
{
"id": "condition1",
"leftValue": "={{ $json.body?.message || $json.message || '' }}",
"rightValue": "change status",
"operator": {
"type": "string",
"operation": "contains"
}
}
],
"combinator": "and"
}
},
"id": "check-change-status",
"name": "Check Change Status",
"type": "n8n-nodes-base.if",
"typeVersion": 2,
"position": [
450,
500
]
},
{
"parameters": {
"jsCode": "// Extraer detalles de cambio de estado\nconst message = $input.first().json.body?.message || $input.first().json.message || '';\n\nconsole.log('Processing status change:', message);\n\n// Remover el comando y obtener par\u00e1metros\nconst cleanMessage = message.replace(/change status of task:?/i, '').trim();\nconst parts = cleanMessage.split(',');\n\nconst taskId = parts[0]?.trim() || '';\nconst newStatus = parts[1]?.trim() || 'InProgress';\n\nconsole.log('Task ID:', taskId, 'New Status:', newStatus);\n\nif (!taskId) {\n throw new Error('ID de tarea requerido para cambiar estado');\n}\n\nreturn [{\n id: taskId,\n status: newStatus\n}];"
},
"id": "extract-status-details",
"name": "Extract Status Change Details",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
650,
500
]
},
{
"parameters": {
"url": "=http://backend:3000/api/tasks/{{ $json.id }}",
"authentication": "none",
"requestMethod": "PUT",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/json"
}
]
},
"sendBody": true,
"bodyParameters": {
"parameters": [
{
"name": "status",
"value": "={{ $json.status }}"
}
]
},
"options": {}
},
"id": "update-task-status-api",
"name": "Update Task Status (API)",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.1,
"position": [
850,
500
]
},
{
"parameters": {
"jsCode": "// Respuesta de confirmaci\u00f3n\nconst result = $input.first().json;\n\nreturn [{\n message: `\u2705 Tarea actualizada exitosamente`,\n taskId: result.id || 'unknown',\n newStatus: result.status || 'unknown',\n timestamp: new Date().toLocaleString('es-ES')\n}];"
},
"id": "format-success-response",
"name": "Format Success Response",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
1050,
500
]
}
],
"connections": {
"Webhook Trigger (Tasks)": {
"main": [
[
{
"node": "Check Message Type",
"type": "main",
"index": 0
},
{
"node": "Check List Command",
"type": "main",
"index": 0
},
{
"node": "Check Change Status",
"type": "main",
"index": 0
}
]
]
},
"Check Message Type": {
"main": [
[
{
"node": "Extract Task Details",
"type": "main",
"index": 0
}
]
]
},
"Extract Task Details": {
"main": [
[
{
"node": "Create Task (API)",
"type": "main",
"index": 0
}
]
]
},
"Check List Command": {
"main": [
[
{
"node": "List Tasks (API)",
"type": "main",
"index": 0
}
]
]
},
"List Tasks (API)": {
"main": [
[
{
"node": "Format Task List",
"type": "main",
"index": 0
}
]
]
},
"Check Change Status": {
"main": [
[
{
"node": "Extract Status Change Details",
"type": "main",
"index": 0
}
]
]
},
"Extract Status Change Details": {
"main": [
[
{
"node": "Update Task Status (API)",
"type": "main",
"index": 0
}
]
]
},
"Update Task Status (API)": {
"main": [
[
{
"node": "Format Success Response",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "1",
"meta": {
"templateCredsSetupCompleted": true
},
"id": "dobot-basic-tasks",
"tags": []
}
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
DoBot Basic Task Management. Uses httpRequest. Webhook trigger; 11 nodes.
Source: https://github.com/Johan0425/DoBot/blob/592d004f1306e342304f41ccd4f589948e7e86f9/n8n/n8n_task_flow.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 n8n template provides enterprise-level version control for your workflows using GitHub integration. Stop losing hours to broken workflows and manual exports – get proper commit history, visual di
This flow creates dummy files for every item added in your *Arrs (Radarr/Sonarr) with the tag .
This workflow acts as a central API gateway for all technical indicator agents in the Binance Spot Market Quant AI system. It listens for incoming webhook requests and dynamically routes them to the c
Sign PDF documents with legally-compliant digital signatures using X.509 certificates. Supports multiple PAdES signature levels (B, T, LT, LTA) with optional visible stamps.
📡 This workflow serves as the central Alpha Vantage API fetcher for Tesla trading indicators, delivering cleaned 20-point JSON outputs for three timeframes: , , and . It is required by the following a