{
  "name": "Automate client renewal alerts from GoHighLevel to Gmail, Slack & Google Sheets",
  "nodes": [
    {
      "id": "e89a6dcb-42d4-4674-bd3d-2f91b86231b2",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -3120,
        -64
      ],
      "parameters": {
        "width": 420,
        "height": 656,
        "content": "## 🔄 Client Retention Renewal Reminder Workflow\n\nAutomatically identifies clients with contracts expiring within 10 days and sends personalized renewal reminders.\n\n### What This Workflow Does:\n- **Run"
      }
    },
    {
      "id": "9ffba3e1-2389-47df-8257-708871c6c5e4",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2656,
        -208
      ],
      "parameters": {
        "width": 280,
        "height": 240,
        "content": "## ⏰ Schedule Trigger Setup\n\nRuns daily at 9:00 AM server time.\n\n**Configuration:**\n- Cron: `0 9 * * *`\n- Frequency: Every day\n- Time: 9:00 AM\n\n**Why 9 AM?**\nEarly morning execution ensures:\n- Emails "
      }
    },
    {
      "id": "94e0e170-fe29-42a6-9926-d052fbc28fd5",
      "name": "Schedule Daily at 9 AM",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -2560,
        48
      ]
    },
    {
      "id": "05b63bb3-1942-4f24-9d53-3b3f2a25a7f5",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2432,
        240
      ],
      "parameters": {
        "width": 280,
        "height": 396,
        "content": "## 📥 Fetch Contacts from CRM\n\n**Setup Instructions:**\n1. Connect your GoHighLevel account\n2. Set limit to 50 (or adjust based on needs)\n3. Ensure API permissions include contact read access\n\n**Require"
      }
    },
    {
      "id": "5e3e0e62-267e-4728-a4ae-f92581607f06",
      "name": "Fetch Contacts from GoHighLevel",
      "type": "n8n-nodes-base.highLevel",
      "position": [
        -2336,
        48
      ]
    },
    {
      "id": "9e665b65-003d-430d-a7f7-48228b7dcad8",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2208,
        -272
      ],
      "parameters": {
        "width": 260,
        "height": 292,
        "content": "## 🔍 Validate Data Quality\n\nEnsures contacts have custom fields before processing.\n\n**Why This Matters:**\n- Prevents errors in downstream nodes\n- Filters out incomplete contact records\n- Improves work"
      }
    },
    {
      "id": "eb37756d-3de4-4d63-8215-b4e8520bcb5e",
      "name": "Check Has Custom Fields",
      "type": "n8n-nodes-base.if",
      "position": [
        -2112,
        48
      ]
    },
    {
      "id": "f102174e-cba7-4d13-a322-f2327d9f1449",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1936,
        208
      ],
      "parameters": {
        "width": 280,
        "height": 404,
        "content": "## 🎯 Filter Expiring Contracts\n\n**Logic:**\n- Finds Contract End Date field\n- Calculates days until expiry\n- Filters: 0-10 days remaining\n\n**Customization:**\nChange `daysUntilExpiry <= 10` to adjust re"
      }
    },
    {
      "id": "6f9a5a69-8ce9-46c1-88f2-d12a44a3f319",
      "name": "Filter Renewals Code",
      "type": "n8n-nodes-base.code",
      "position": [
        -1888,
        48
      ]
    },
    {
      "id": "6f7a46e5-115c-4bef-9cc7-e30b96b1b94d",
      "name": "Verify Expiring Within 10 Days",
      "type": "n8n-nodes-base.filter",
      "position": [
        -1664,
        48
      ]
    },
    {
      "id": "3b9392da-852b-4692-bfac-5c177bbda695",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1536,
        -400
      ],
      "parameters": {
        "width": 280,
        "height": 340,
        "content": "## 📧 Send Client Email\n\n**Setup:**\n1. Connect Gmail account\n2. Replace recipient with: `={{ $json.email }}`\n3. Customize email template\n\n**Email Variables:**\n- `firstName` - Client first name\n- `lastN"
      }
    },
    {
      "id": "17f722d7-781c-41d4-bd15-b84b187df947",
      "name": "Send Renewal Email via Gmail",
      "type": "n8n-nodes-base.gmail",
      "position": [
        -1440,
        -48
      ]
    },
    {
      "id": "3e716197-e31d-49d9-8c3e-b1ba215bed06",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1488,
        304
      ],
      "parameters": {
        "width": 280,
        "height": 384,
        "content": "## 📢 Slack Team Notification\n\n**Setup:**\n1. Connect Slack workspace\n2. Select channel for renewal alerts\n3. Customize message format\n\n**Recommended Channels:**\n- #renewals\n- #account-management\n- #sal"
      }
    },
    {
      "id": "79b9f0dd-1fd1-4562-b93e-99e3bc111aeb",
      "name": "Send Slack Alert to Team",
      "type": "n8n-nodes-base.slack",
      "position": [
        -1440,
        144
      ]
    },
    {
      "id": "f3448850-b573-416a-b34c-8e1e7d985151",
      "name": "Merge Email and Slack Results",
      "type": "n8n-nodes-base.merge",
      "position": [
        -1216,
        48
      ]
    },
    {
      "id": "96ae9e61-3ffc-4f04-b6ac-2a58495dc455",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1072,
        -272
      ],
      "parameters": {
        "width": 260,
        "height": 296,
        "content": "## 📊 Generate Summary Report\n\nCreates execution summary with:\n- Total reminders sent\n- Timestamp of execution\n- Success status\n\n**Used for:**\n- Tracking workflow performance\n- Logging to Google Sheets"
      }
    },
    {
      "id": "c61d0e08-0b24-4be6-bbcd-b58de927212a",
      "name": "Generate Summary Report",
      "type": "n8n-nodes-base.code",
      "position": [
        -992,
        48
      ]
    },
    {
      "id": "9e39598a-d4f0-43e9-9885-a306371772e1",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -752,
        256
      ],
      "parameters": {
        "width": 280,
        "height": 268,
        "content": "## 📝 Log to Google Sheets\n\n**Setup:**\n1. Create a Google Sheet for tracking\n2. Add columns: summary, totalRemindersSent, timestamp, message\n3. Connect your Google account\n4. Select your spreadsheet an"
      }
    },
    {
      "id": "ace3170b-c470-4458-b601-db08918f1572",
      "name": "Log Results to Google Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -768,
        48
      ]
    }
  ],
  "connections": {
    "Filter Renewals Code": {
      "main": [
        [
          {
            "node": "Verify Expiring Within 10 Days",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Daily at 9 AM": {
      "main": [
        [
          {
            "node": "Fetch Contacts from GoHighLevel",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check Has Custom Fields": {
      "main": [
        [
          {
            "node": "Filter Renewals Code",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Generate Summary Report": {
      "main": [
        [
          {
            "node": "Log Results to Google Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send Slack Alert to Team": {
      "main": [
        [
          {
            "node": "Merge Email and Slack Results",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Send Renewal Email via Gmail": {
      "main": [
        [
          {
            "node": "Merge Email and Slack Results",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge Email and Slack Results": {
      "main": [
        [
          {
            "node": "Generate Summary Report",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Verify Expiring Within 10 Days": {
      "main": [
        [
          {
            "node": "Send Renewal Email via Gmail",
            "type": "main",
            "index": 0
          },
          {
            "node": "Send Slack Alert to Team",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch Contacts from GoHighLevel": {
      "main": [
        [
          {
            "node": "Check Has Custom Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}