{
  "name": "Weekly client re-engagement system with GoHighLevel, Gmail, Sheets, and Slack",
  "nodes": [
    {
      "id": "5152120f-eb1c-4741-a0c4-c6073fb3403c",
      "name": "Workflow Overview",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -784,
        -256
      ],
      "parameters": {
        "width": 387,
        "height": 609,
        "content": "## 📋 Weekly Client Engagement Pulse\n\nThis workflow automatically identifies clients who haven't been contacted in 14+ days and sends:\n- ✉️ Automated follow-up email to inactive clients\n- 📊 Google Shee"
      }
    },
    {
      "id": "adf66a9e-7cb9-4fef-b345-4c13abcbaa9e",
      "name": "Note: Schedule Trigger",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -336,
        -400
      ],
      "parameters": {
        "width": 340,
        "height": 380,
        "content": "## ⏰ Schedule Trigger Node\n\n**What it does:**\nAutomatically runs this workflow every Monday at 9:00 AM.\n\n**Cron Expression:** `0 9 * * 1`\n- `0` = Minute (0)\n- `9` = Hour (9 AM)\n- `*` = Any day of mont"
      }
    },
    {
      "id": "7c5340fa-e80a-4db7-953e-8b3b31b2536f",
      "name": "Note: HighLevel Fetch",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        32,
        -384
      ],
      "parameters": {
        "width": 340,
        "height": 380,
        "content": "## 🔗 HighLevel CRM Node\n\n**What it does:**\nFetches ALL contacts from your HighLevel CRM.\n\n**Setup Steps:**\n1. Click \"Create New Credential\"\n2. Select \"HighLevel OAuth2 API\"\n3. Authorize access to your"
      }
    },
    {
      "id": "6037ea36-f052-483b-b6e9-ec4e8399c64c",
      "name": "Note: Filter Logic",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        416,
        -416
      ],
      "parameters": {
        "width": 340,
        "height": 380,
        "content": "## 🔍 Filter Inactive Contacts\n\n**What it does:**\nIdentifies contacts with NO activity in the last 14 days.\n\n**Logic:**\n```javascript\n// Calculate 14 days ago\nconst fourteenDaysAgo = new Date();\nfourte"
      }
    },
    {
      "id": "94f2604f-359d-4b62-9d12-3c11cfe3dfe6",
      "name": "Note: Split Array",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        304,
        320
      ],
      "parameters": {
        "width": 340,
        "height": 572,
        "content": "## 📤 Split Out Node\n\n**What it does:**\nConverts array of contacts into individual items (one per contact).\n\n**Why needed:**\nThe filter node returns an array. We need to process each contact separately"
      }
    },
    {
      "id": "f09969ea-72a8-4651-bcf9-4a57a1ca404a",
      "name": "Note: Condition Check",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        656,
        384
      ],
      "parameters": {
        "width": 340,
        "height": 572,
        "content": "## ❓ IF Condition Node\n\n**What it does:**\nDouble-checks that contact truly needs attention.\n\n**Condition:**\n```\nneedsAttention === true\n```\n\n**Why needed:**\nSafety check to ensure only flagged contact"
      }
    },
    {
      "id": "661b394d-2dc8-4ff9-8d4d-eff137b18c4f",
      "name": "Note: Email Sender",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        784,
        -464
      ],
      "parameters": {
        "width": 340,
        "height": 412,
        "content": "## 📧 Gmail Send Email Node\n\n**What it does:**\nSends personalized re-engagement email to inactive client.\n\n**Setup:**\n1. Connect Gmail OAuth2 credential\n2. Replace `YOUR_RECIPIENT_EMAIL@example.com` wi"
      }
    },
    {
      "id": "2e2f7125-ae70-49a3-815e-cf332e9cc468",
      "name": "Note: Google Sheets Logger",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1216,
        -176
      ],
      "parameters": {
        "width": 340,
        "height": 420,
        "content": "## 📊 Google Sheets Log Node\n\n**What it does:**\nAppends each inactive contact to tracking spreadsheet.\n\n**Setup Required:**\n1. Create Google Sheet with columns:\n   - id, contactName, firstName, lastNam"
      }
    },
    {
      "id": "187ea926-1dc1-4a44-b200-59242193544d",
      "name": "Note: Message Formatter",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1088,
        432
      ],
      "parameters": {
        "width": 340,
        "height": 676,
        "content": "## 🔄 Format Slack Message\n\n**What it does:**\nAggregates all inactive contacts and formats a summary message.\n\n**Processing:**\n1. Loops through all contacts\n2. Handles null lastName values\n3. Extracts "
      }
    },
    {
      "id": "67e28ac0-5c86-4f24-8cba-e7dca6b353a8",
      "name": "Note: Slack Notifier",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1440,
        336
      ],
      "parameters": {
        "width": 340,
        "height": 676,
        "content": "## 💬 Slack Notification Node\n\n**What it does:**\nSends summary report to account managers via Slack.\n\n**Setup:**\n1. Create Slack app or use OAuth2\n2. Install to workspace\n3. Select channel (e.g., #clie"
      }
    },
    {
      "id": "10d80719-f5c3-46e0-adff-f932f9a7eb98",
      "name": "Note: Error Trigger",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -560,
        560
      ],
      "parameters": {
        "width": 340,
        "height": 420,
        "content": "## 🚨 Error Trigger Node\n\n**What it does:**\nAutomatically catches ANY error in this workflow.\n\n**Triggers When:**\n- API connection fails\n- Authentication expires\n- Rate limits hit\n- Invalid data format"
      }
    },
    {
      "id": "0f7d2301-2dd7-4f24-8580-38b7e5c19ccc",
      "name": "Note: Error Alerting",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -80,
        608
      ],
      "parameters": {
        "width": 340,
        "height": 420,
        "content": "## 📢 Error Alert to Slack\n\n**What it does:**\nImmediately notifies team when workflow breaks.\n\n**Message Format:**\n```\n❌ Workflow Error: Weekly Client Engagement Pulse\n\nNode: [Node Name]\nError: [Error "
      }
    },
    {
      "id": "5b9c5442-0ba8-4501-9adb-701b4166863d",
      "name": "Trigger: Weekly Scheduler",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -240,
        144
      ]
    },
    {
      "id": "8dd6f18c-dff9-409b-b83d-336722d28b2d",
      "name": "Fetch HighLevel Contacts",
      "type": "n8n-nodes-base.highLevel",
      "position": [
        -16,
        144
      ]
    },
    {
      "id": "1bd6795e-3915-420a-9f72-c05b0c788e89",
      "name": "Filter Inactive Contacts (14+ days)",
      "type": "n8n-nodes-base.code",
      "position": [
        208,
        144
      ]
    },
    {
      "id": "bc7bab6f-c83f-4bfa-878c-0beea381686e",
      "name": "Split Clients Array",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        432,
        144
      ]
    },
    {
      "id": "24b870ce-2065-4719-bc24-8c37be738046",
      "name": "IF: Needs Attention",
      "type": "n8n-nodes-base.if",
      "position": [
        656,
        144
      ]
    },
    {
      "id": "65a984e9-6140-4c5e-8411-4081e3207684",
      "name": "Send Re-engagement Email",
      "type": "n8n-nodes-base.gmail",
      "position": [
        880,
        48
      ]
    },
    {
      "id": "22c49b1c-b43a-4a34-99c0-0e93e2f3df7a",
      "name": "Log Inactive Client in Google Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        880,
        240
      ]
    },
    {
      "id": "a1ba79ab-323f-4710-bfce-22ec818e568f",
      "name": "Format Slack Message",
      "type": "n8n-nodes-base.code",
      "position": [
        1104,
        240
      ]
    },
    {
      "id": "7d64a0f4-6c39-4ce1-bd23-ca1d4706effe",
      "name": "Send Slack Notification to Account Manager",
      "type": "n8n-nodes-base.slack",
      "position": [
        1328,
        240
      ]
    },
    {
      "id": "13d74e9a-9687-4d20-bbf4-e6df8d3f2744",
      "name": "Error Trigger",
      "type": "n8n-nodes-base.errorTrigger",
      "position": [
        -240,
        464
      ]
    },
    {
      "id": "26fe07d2-e839-406c-b2b7-cf85dde3a998",
      "name": "Send Error Alert to Slack",
      "type": "n8n-nodes-base.slack",
      "position": [
        -16,
        464
      ]
    }
  ],
  "connections": {
    "Error Trigger": {
      "main": [
        [
          {
            "node": "Send Error Alert to Slack",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "IF: Needs Attention": {
      "main": [
        [
          {
            "node": "Send Re-engagement Email",
            "type": "main",
            "index": 0
          },
          {
            "node": "Log Inactive Client in Google Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split Clients Array": {
      "main": [
        [
          {
            "node": "IF: Needs Attention",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Format Slack Message": {
      "main": [
        [
          {
            "node": "Send Slack Notification to Account Manager",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch HighLevel Contacts": {
      "main": [
        [
          {
            "node": "Filter Inactive Contacts (14+ days)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Trigger: Weekly Scheduler": {
      "main": [
        [
          {
            "node": "Fetch HighLevel Contacts",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter Inactive Contacts (14+ days)": {
      "main": [
        [
          {
            "node": "Split Clients Array",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Log Inactive Client in Google Sheets": {
      "main": [
        [
          {
            "node": "Format Slack Message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}