{
  "name": "Ssl certificate expiry notifier (no paid APIs)",
  "nodes": [
    {
      "id": "b8c160c6-29a3-4b7d-ab78-e126206627b1",
      "name": "URLs to Monitor",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        60,
        140
      ]
    },
    {
      "id": "21c4d282-5bb4-4d34-8cad-28e4e91843be",
      "name": "Fetch URLs",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -640,
        400
      ]
    },
    {
      "id": "3d6ebf5c-a89d-4890-ab64-01c6db1d8486",
      "name": "Check SSL",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -380,
        400
      ]
    },
    {
      "id": "1b7427f1-41aa-4aea-8a98-dccb44e958e0",
      "name": "Expiry Alert",
      "type": "n8n-nodes-base.if",
      "position": [
        60,
        620
      ]
    },
    {
      "id": "8efd16a5-ff9e-4138-aa70-ebd087fb27ef",
      "name": "Send Email",
      "type": "n8n-nodes-base.emailSend",
      "position": [
        360,
        400
      ]
    },
    {
      "id": "7ce561b1-1102-4fc1-972b-7dca1793e023",
      "name": "Daily Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -900,
        400
      ]
    },
    {
      "id": "12d2c49f-9d56-4ace-bc06-82ea850df133",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1620,
        -380
      ],
      "parameters": {
        "width": 500,
        "height": 1240,
        "content": "## 🔐 SSL Expiry Notifier (No Paid APIs)\n\n### 👤 Who is this for?\nThis workflow is designed for IT admins, DevOps engineers, and web professionals who need to **monitor SSL certificate expirations** acr"
      }
    },
    {
      "id": "68db9999-8a66-479f-8708-c2b9b6556a76",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1000,
        220
      ],
      "parameters": {
        "width": null,
        "height": 320,
        "content": "### 🕒 Daily Trigger\nRuns the workflow every day at 8:00 AM.  \nAdjust the time or frequency as needed using cron or interval settings.\n"
      }
    },
    {
      "id": "b39cd547-196f-48ea-b7b5-8b09561032ce",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -700,
        220
      ],
      "parameters": {
        "width": null,
        "height": 320,
        "content": "### 📄 Fetch URLs\nReads website URLs from a Google Sheet.  \nMake sure the sheet has a column named `URL` containing the domains you want to monitor.\n"
      }
    },
    {
      "id": "455e64c4-38da-4965-bfd6-b11a699243b1",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -420,
        220
      ],
      "parameters": {
        "width": null,
        "height": 320,
        "content": "### 🔍 Check SSL\nQueries `ssl-checker.io` (free API) for SSL certificate data of each domain.  \nReturns valid_from, valid_till, days_left, and host info.\n"
      }
    },
    {
      "id": "51b3423d-ea6e-4878-9d2e-177e04222100",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        460
      ],
      "parameters": {
        "width": null,
        "height": 300,
        "content": "### ⚠️ Expiry Alert\nChecks if `days_left` is less than or equal to 7.  \nOnly domains that meet this condition will trigger an email alert.\n"
      }
    },
    {
      "id": "17cfd4d8-cbfe-46f0-bdf1-3a89f557200b",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        300,
        220
      ],
      "parameters": {
        "width": null,
        "height": 320,
        "content": "### 📧 Send Email\nSends an email to the specified recipients if a certificate is expiring soon.  \nThe message includes days left and the domain name in an HTML template.\n"
      }
    },
    {
      "id": "64c0883c-223f-4276-886b-d9996aa099dd",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        -60
      ],
      "parameters": {
        "width": null,
        "height": 400,
        "content": "### 🔄 Update Sheet\nUpdates the original Google Sheet with new certificate data:\n- Valid From\n- Valid Till\n- Days Left  \nMatches by URL to ensure correct row is updated.\n"
      }
    }
  ],
  "connections": {
    "Check SSL": {
      "main": [
        [
          {
            "node": "URLs to Monitor",
            "type": "main",
            "index": 0
          },
          {
            "node": "Expiry Alert",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch URLs": {
      "main": [
        [
          {
            "node": "Check SSL",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send Email": {
      "main": [
        []
      ]
    },
    "Expiry Alert": {
      "main": [
        [
          {
            "node": "Send Email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Daily Trigger": {
      "main": [
        [
          {
            "node": "Fetch URLs",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}