GoHighLevelから非アクティブ取引をSlackとシートへ自動クローズ
中級
これはCRM分野の自動化ワークフローで、15個のノードを含みます。主にCode, Slack, Filter, HighLevel, GoogleSheetsなどのノードを使用。 GoHighLevel 内の非アクティブな取引を Slack と Sheets へ自動のに削除
前提条件
- •Slack Bot Token または Webhook URL
- •Google Sheets API認証情報
カテゴリー
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
"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": "ワークフロー説明",
"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": "スケジュール設定",
"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": "毎日午前9時",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-800,
-64
],
"parameters": {
"rule": {
"interval": [
{}
]
}
},
"typeVersion": 1.2
},
{
"id": "860e1aca-04f7-4001-a58b-d2fa695da3e1",
"name": "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": "すべての商談を取得",
"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": "フィルターロジック",
"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": "10日以上非アクティブな商談をフィルター",
"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": "アーカイブ設定",
"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": "非アクティブ商談をアーカイブ",
"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": "処理ロジック",
"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": "商談データをフォーマット",
"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": "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": "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": "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": "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
}
]
]
}
}
}よくある質問
このワークフローの使い方は?
上記のJSON設定コードをコピーし、n8nインスタンスで新しいワークフローを作成して「JSONからインポート」を選択、設定を貼り付けて認証情報を必要に応じて変更してください。
このワークフローはどんな場面に適していますか?
中級 - 顧客管理
有料ですか?
このワークフローは完全無料です。ただし、ワークフローで使用するサードパーティサービス(OpenAI APIなど)は別途料金が発生する場合があります。
関連ワークフロー
GoHighLevel から顧客の续约リマインドを自動のに Gmail と Slack へ送信
GoHighLevelからGmail、Slack、Google Sheetsへ顧客更新の自動リマインダーを送信
If
Code
Gmail
+
If
Code
Gmail
19 ノードRahul Joshi
顧客管理
営業担当パフォーマンストラッカー
HighLevel CRM、GPT-4o、Notion、そしてSlackを使った自動化のな営業ランキング
If
Code
Slack
+
If
Code
Slack
21 ノードRahul Joshi
顧客管理
Stripe決済から自動テンプレートを顧客に配送
Stripe、GPT-4o、Gmailを使った自動テンプレート配信システム
If
Code
Gmail
+
If
Code
Gmail
44 ノードRahul Joshi
顧客管理
GoHighLevelパイプライン速度追跡ツールと自動化された停滞トランザクションアラート
GoHighLevel、Gmail、Slackを使用してパイプライン速度を分析し、停滞取引にアラートを発する
If
Code
Gmail
+
If
Code
Gmail
25 ノードRahul Joshi
コンテンツ作成
GoHighLevelからSlack・Sheets・Calendarへ高価値リード通知を自動化
GoHighLevelの高価値リードアラートをSlack、Sheets、Calendarに自動送信
If
Code
Slack
+
If
Code
Slack
17 ノードRahul Joshi
リード獲得
アフターサービスレビューコレクター
振り返り収集と感情分析:HighLevel、GPT-4o、Gmail、Slack
If
Wait
Gmail
+
If
Wait
Gmail
20 ノードRahul Joshi
顧客管理
ワークフロー情報
難易度
中級
ノード数15
カテゴリー1
ノードタイプ7
作成者
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.
外部リンク
n8n.ioで表示 →
このワークフローを共有