Limpieza automática de transacciones no activas de GoHighLevel a Slack y Sheets

Intermedio

Este es unCRMflujo de automatización del dominio deautomatización que contiene 15 nodos.Utiliza principalmente nodos como Code, Slack, Filter, HighLevel, GoogleSheets. Limpiar automáticamente transacciones inactivas de GoHighLevel a Slack y Sheets

Requisitos previos
  • Bot Token de Slack o URL de Webhook
  • Credenciales de API de Google Sheets

Categoría

Vista previa del flujo de trabajo
Visualización de las conexiones entre nodos, con soporte para zoom y panorámica
Exportar flujo de trabajo
Copie la siguiente configuración JSON en n8n para importar y usar este flujo de trabajo
{
  "id": "FpblHtpWHqFmqzwu",
  "meta": {
    "instanceId": "8443f10082278c46aa5cf3acf8ff0f70061a2c58bce76efac814b16290845177",
    "templateCredsSetupCompleted": true
  },
  "name": "Automate Inactive Deal Cleanup from GoHighLevel to Slack and Sheets",
  "tags": [],
  "nodes": [
    {
      "id": "a30f842e-09db-4524-bb2a-f6fb696cd818",
      "name": "Descripción del Flujo de Trabajo",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1408,
        -96
      ],
      "parameters": {
        "color": 4,
        "width": 386,
        "height": 400,
        "content": "## 🎯 Workflow Overview\n\nThis workflow automatically identifies and archives inactive deals in HighLevel CRM pipelines.\n\n**What it does:**\n- Runs daily to check all opportunities\n- Filters deals with no activity for 10+ days\n- Archives inactive deals automatically\n- Logs all actions to Google Sheets\n- Sends summary report to Slack\n\n**Business Value:**\n- Keeps pipelines clean and focused\n- Prevents lost opportunities from cluttering views\n- Maintains audit trail in Google Sheets\n- Team visibility via Slack notifications"
      },
      "typeVersion": 1
    },
    {
      "id": "0558197c-899a-470f-93b0-131da334b0f7",
      "name": "Configuración de Programación",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -992,
        -400
      ],
      "parameters": {
        "width": 282,
        "height": 311,
        "content": "## ⏰ Schedule Configuration\n\n**Current:** Runs daily at 9 AM\n\n**To modify:**\n1. Click this node\n2. Adjust cron expression\n3. Common patterns:\n   - Every 6 hours: `0 */6 * * *`\n   - Twice daily: `0 9,17 * * *`\n   - Weekdays only: `0 9 * * 1-5`"
      },
      "typeVersion": 1
    },
    {
      "id": "86b8ca02-40c9-4f1d-8192-8c076eb62bc6",
      "name": "Diariamente a las 9 AM",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -800,
        -64
      ],
      "parameters": {
        "rule": {
          "interval": [
            {}
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "860e1aca-04f7-4001-a58b-d2fa695da3e1",
      "name": "Configuración de HighLevel",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -688,
        112
      ],
      "parameters": {
        "width": 264,
        "height": 274,
        "content": "## 📊 HighLevel Setup\n\n**Required:**\n- OAuth2 credentials configured\n- Location ID in credential settings\n\n**This fetches:**\n- All opportunities from your account\n- Includes contact data\n- No pagination limit issues"
      },
      "typeVersion": 1
    },
    {
      "id": "9d54a579-e7b9-4d02-a1cd-58f76ebf4c73",
      "name": "Obtener Todas las Oportunidades",
      "type": "n8n-nodes-base.highLevel",
      "position": [
        -576,
        -64
      ],
      "parameters": {
        "filters": {},
        "resource": "opportunity",
        "operation": "getAll",
        "requestOptions": {}
      },
      "credentials": {
        "highLevelOAuth2Api": {
          "id": "5QWHSi134dLIBEsC",
          "name": "HighLevel account"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "6f31695d-a18d-46c1-aa00-3ce68013db10",
      "name": "Lógica de Filtrado",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -496,
        -384
      ],
      "parameters": {
        "width": 262,
        "height": 296,
        "content": "## 🔍 Inactivity Filter\n\n**Logic:**\n- Calculates days since last activity\n- Uses `last_activity_at` or `updatedAt`\n- Threshold: **10 days**\n\n**To adjust threshold:**\nChange `10` in the rightValue field\n- 7 days = more aggressive\n- 14 days = more lenient"
      },
      "typeVersion": 1
    },
    {
      "id": "09134267-b553-4979-9be3-d3e74e263b74",
      "name": "Filtrar Tratos Inactivos 10+ Días",
      "type": "n8n-nodes-base.filter",
      "position": [
        -352,
        -64
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "c3d4e5f6-a7b8-9012-cdef-123456789012",
              "operator": {
                "type": "number",
                "operation": "gt"
              },
              "leftValue": "={{ Math.floor((new Date() - new Date($json.lastActionDate || $json.updatedAt)) / (1000 * 60 * 60 * 24)) }}",
              "rightValue": 10
            }
          ]
        }
      },
      "typeVersion": 2
    },
    {
      "id": "b9dd983f-bbba-4956-85fd-d3813997f27b",
      "name": "Configuración de Archivo",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -192,
        112
      ],
      "parameters": {
        "width": 254,
        "height": 264,
        "content": "## 📦 Archive Action\n\n**What happens:**\n- Updates opportunity status\n- Marks as archived/closed\n- Preserves all deal data\n\n**Note:** Configure the `status` field in updateFields to match your HighLevel setup (e.g., \"archived\", \"lost\", \"closed\")"
      },
      "typeVersion": 1
    },
    {
      "id": "dc7991c7-79ad-48a3-b79d-d8359afa4d8c",
      "name": "Archivar Trato Inactivo",
      "type": "n8n-nodes-base.highLevel",
      "position": [
        -128,
        -64
      ],
      "parameters": {
        "resource": "opportunity",
        "operation": "update",
        "updateFields": {
          "status": "archived"
        },
        "opportunityId": "={{ $json.id }}",
        "requestOptions": {}
      },
      "credentials": {
        "highLevelOAuth2Api": {
          "id": "5QWHSi134dLIBEsC",
          "name": "HighLevel account"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "7f905180-3a1a-4b6f-b049-438b49d50929",
      "name": "Lógica de Procesamiento",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        48,
        -288
      ],
      "parameters": {
        "width": 256,
        "height": 296,
        "content": "## 🧮 Data Processing\n\n**Transforms deal data:**\n- Calculates days inactive\n- Extracts contact info\n- Formats for Google Sheets\n- Adds metadata fields\n\n**Output fields:**\nid, name, contactName, daysSinceActivity, monetaryValue, source, tags"
      },
      "typeVersion": 1
    },
    {
      "id": "7fe4471f-287d-4319-8ab0-02f245d9c8f2",
      "name": "Formatear Datos del Trato",
      "type": "n8n-nodes-base.code",
      "position": [
        112,
        32
      ],
      "parameters": {
        "jsCode": "// Process and format inactive deal data for logging\nconst formattedData = $input.all().map(item => {\n  const opp = item.json;\n  const lastActivity = new Date(opp.lastActionDate || opp.updatedAt);\n  const daysSinceActivity = Math.floor((Date.now() - lastActivity) / (1000 * 60 * 60 * 24));\n  \n  return {\n    json: {\n      id: opp.id,\n      name: opp.name,\n      pipelineId: opp.pipelineId,\n      pipelineStageId: opp.pipelineStageId,\n      contactId: opp.contactId,\n      contactName: opp.contact?.name || 'N/A',\n      lastActionDate: opp.lastActionDate,\n      updatedAt: opp.updatedAt,\n      daysSinceActivity: daysSinceActivity,\n      isInactive: daysSinceActivity > 10,\n      monetaryValue: opp.monetaryValue || 0,\n      source: opp.source || 'Unknown',\n      tags: Array.isArray(opp.contact?.tags) ? opp.contact.tags.join(', ') : '',\n      archivedAt: new Date().toISOString()\n    }\n  };\n});\n\nreturn formattedData;"
      },
      "typeVersion": 2
    },
    {
      "id": "909dfef7-0703-4893-9465-e806445e492e",
      "name": "Configuración de Sheets",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        368,
        224
      ],
      "parameters": {
        "width": 278,
        "height": 346,
        "content": "## 📋 Google Sheets Setup\n\n**Required:**\n1. Create Google Sheet\n2. Add sheet named \"Inactive Pipeliner\"\n3. Connect OAuth2 credential\n4. Replace documentId below\n\n**Columns auto-created:**\nid, name, contactName, daysSinceActivity, monetaryValue, source, tags, archivedAt"
      },
      "typeVersion": 1
    },
    {
      "id": "046731cb-c515-4430-ba58-f75b46797401",
      "name": "Registrar en Google Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        400,
        64
      ],
      "parameters": {
        "columns": {
          "value": {},
          "schema": [
            {
              "id": "id",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "id",
              "defaultMatch": true,
              "canBeUsedToMatch": true
            },
            {
              "id": "name",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "contactName",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "contactName",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "daysSinceActivity",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "daysSinceActivity",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "monetaryValue",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "monetaryValue",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "source",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "source",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "tags",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "tags",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "archivedAt",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "archivedAt",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "autoMapInputData",
          "matchingColumns": [
            "id"
          ]
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "Inactive Pipeliner"
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Workflow Description').item.json.sheetId }}"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "kpPEOLCGn963qpoh",
          "name": "automations@techdome.ai"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "3a9b90d5-901f-4dd8-a118-cf76b3da61f5",
      "name": "Configuración de Slack",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        576,
        -304
      ],
      "parameters": {
        "width": 246,
        "height": 328,
        "content": "## 💬 Slack Notification\n\n**Setup:**\n1. Connect Slack OAuth2\n2. Select your channel\n3. Remove hardcoded channel ID\n\n**Message includes:**\n- Total archived count\n- Sum of monetary values\n- List of deal names"
      },
      "typeVersion": 1
    },
    {
      "id": "e1acc249-b80a-4d7d-aa63-b6265b641170",
      "name": "Enviar Reporte Slack",
      "type": "n8n-nodes-base.slack",
      "position": [
        432,
        -128
      ],
      "webhookId": "2ee869d2-6132-4bfe-8cd3-53415ad11fce",
      "parameters": {
        "text": "=:bookmark_tabs: *Inactive Pipeline Cleaner Report*\n\n*Date:* {{ $now.format('MMMM dd, yyyy') }}\n*Total Deals Archived:* {{ $json.count }}\n*Total Monetary Value:* ${{ $json.totalValue.toLocaleString() }}\n\n*Archived Deals:*\n{{ $json.dealsList.split(',').map((deal, idx) => `${idx + 1}. ${deal.trim()}`).join('\\n') }}",
        "select": "channel",
        "channelId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Workflow Description').item.json.slackChannel }}"
        },
        "otherOptions": {}
      },
      "credentials": {
        "slackApi": {
          "id": "rNqvWj9TfChPVRYY",
          "name": "Slack account vivek"
        }
      },
      "typeVersion": 2.1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "5d204940-94de-4c34-8521-884e2f4345f8",
  "connections": {
    "86b8ca02-40c9-4f1d-8192-8c076eb62bc6": {
      "main": [
        [
          {
            "node": "9d54a579-e7b9-4d02-a1cd-58f76ebf4c73",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "7fe4471f-287d-4319-8ab0-02f245d9c8f2": {
      "main": [
        [
          {
            "node": "046731cb-c515-4430-ba58-f75b46797401",
            "type": "main",
            "index": 0
          },
          {
            "node": "e1acc249-b80a-4d7d-aa63-b6265b641170",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "dc7991c7-79ad-48a3-b79d-d8359afa4d8c": {
      "main": [
        [
          {
            "node": "7fe4471f-287d-4319-8ab0-02f245d9c8f2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "9d54a579-e7b9-4d02-a1cd-58f76ebf4c73": {
      "main": [
        [
          {
            "node": "09134267-b553-4979-9be3-d3e74e263b74",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "09134267-b553-4979-9be3-d3e74e263b74": {
      "main": [
        [
          {
            "node": "dc7991c7-79ad-48a3-b79d-d8359afa4d8c",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Preguntas frecuentes

¿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?

Intermedio - CRM

¿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.

Información del flujo de trabajo
Nivel de dificultad
Intermedio
Número de nodos15
Categoría1
Tipos de nodos7
Descripción de la dificultad

Adecuado para usuarios con experiencia intermedia, flujos de trabajo de complejidad media con 6-15 nodos

Autor
Rahul Joshi

Rahul Joshi

@rahul08

Rahul 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.

Enlaces externos
Ver en n8n.io

Compartir este flujo de trabajo

Categorías

Categorías: 34