{
  "name": "Monitor dynamic website changes with Firecrawl, Sheets & Gmail alerts",
  "nodes": [
    {
      "id": "042eb5f7-dbf1-47c5-a03f-f4e965a48d62",
      "name": "Webhook",
      "type": "n8n-nodes-base.webhook",
      "position": [
        -1820,
        -140
      ]
    },
    {
      "id": "71f3e740-7974-4302-94c8-161daa6c71c7",
      "name": "Firecrawl HTTP Request",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -1600,
        -140
      ]
    },
    {
      "id": "e8e42131-3da1-46ea-814a-247082658576",
      "name": "Get Timestamp",
      "type": "n8n-nodes-base.code",
      "position": [
        -1380,
        -140
      ]
    },
    {
      "id": "7262962a-e5c8-4e87-9b17-80b43557782a",
      "name": "Update Current Content",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -1160,
        -140
      ]
    },
    {
      "id": "d26b1096-0288-4ca7-8a0c-388996226728",
      "name": "Read Current and Latest Content",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -940,
        -140
      ]
    },
    {
      "id": "52c5313a-1ebb-4875-8c8b-61b407bc6cab",
      "name": "Is Equal?",
      "type": "n8n-nodes-base.if",
      "position": [
        -720,
        -140
      ]
    },
    {
      "id": "cd72f620-e31f-4c0d-8835-59ed187a1ccd",
      "name": "Respond Unchanged",
      "type": "n8n-nodes-base.respondToWebhook",
      "position": [
        -500,
        -240
      ]
    },
    {
      "id": "3ac13426-967f-46a8-af12-a5cac4bd4b20",
      "name": "Read Latest and Latest Content",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -500,
        -40
      ]
    },
    {
      "id": "6ca28b23-f8da-4dd1-af41-ca42f76b69f7",
      "name": "Extract Differences",
      "type": "n8n-nodes-base.code",
      "position": [
        -280,
        -240
      ]
    },
    {
      "id": "ec0188a2-f4c0-4f8d-b155-fe5eb67faf8f",
      "name": "Gmail",
      "type": "n8n-nodes-base.gmail",
      "position": [
        -60,
        -240
      ]
    },
    {
      "id": "1b85582b-48e1-4f70-8df2-fa5dbd505ddd",
      "name": "Append Log Row",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -60,
        -40
      ]
    },
    {
      "id": "a57f34af-ddca-4973-8c52-7947006cc5fa",
      "name": "Update Latest Content",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -60,
        160
      ]
    },
    {
      "id": "69c262ab-fcc5-480f-acff-01c982b68673",
      "name": "Respond Changed",
      "type": "n8n-nodes-base.respondToWebhook",
      "position": [
        160,
        60
      ]
    },
    {
      "id": "ccbaaf84-52cf-40dd-9147-e09e5c91e71e",
      "name": "📋 SETUP OVERVIEW",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2140,
        -840
      ],
      "parameters": {
        "width": 400,
        "height": 460,
        "content": "🎯 WORKFLOW PURPOSE:\nThis workflow monitors a webpage for content changes and sends email notifications when changes are detected.\n\n📊 KEY COMPONENTS:\n• Firecrawl API for web scraping\n• Google Sheets fo"
      }
    },
    {
      "id": "1adc1940-ff74-4454-b841-6e9379c76d9e",
      "name": "🔐 CREDENTIALS SETUP",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1700,
        -840
      ],
      "parameters": {
        "width": 400,
        "height": 460,
        "content": "⚙️ REQUIRED CREDENTIALS:\n\n1️⃣ FIRECRAWL API:\n• Sign up at https://firecrawl.dev\n• Get API key from dashboard\n• Create 'Bearer YOUR_TOKEN_HERE' credential in n8n\n• Name: 'Bearer YOUR_TOKEN_HERE account"
      }
    },
    {
      "id": "38fc9213-614c-467e-af3f-18fe8c62a99e",
      "name": "📊 GOOGLE SHEETS SETUP",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1320,
        100
      ],
      "parameters": {
        "width": 400,
        "height": 300,
        "content": "📋 SPREADSHEET STRUCTURE:\n\n🗂️ Create a Google Sheet with 2 tabs:\n\n1️⃣ 'Log' sheet (gid=0):\n• Column A: timestamp\n• Column B: content\n\n2️⃣ 'comparison' sheet (gid=725909638):\n• Column A: last_timestamp\n"
      }
    },
    {
      "id": "d9a32777-2a21-46ba-a179-534f27616b28",
      "name": "⚙️ CONFIGURATION",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1240,
        -840
      ],
      "parameters": {
        "width": 400,
        "height": 460,
        "content": "🔧 CUSTOMIZATION SETTINGS:\n\n🌐 TARGET WEBSITE:\n• Update Firecrawl node 'url' parameter\n\n📧 EMAIL SETTINGS:\n• Update Gmail node 'sendTo' field\n• Customize subject and message template\n\n🪝 WEBHOOK PATH:\n• C"
      }
    },
    {
      "id": "6b09600c-1a63-4b96-bf3a-eaeb6dfd02f0",
      "name": "🧪 TESTING & ACTIVATION",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        980,
        -840
      ],
      "parameters": {
        "width": 400,
        "height": 460,
        "content": "✅ TESTING STEPS:\n\n1️⃣ MANUAL TEST:\n• Click 'Execute Workflow' button\n• Check if all nodes execute successfully\n• Verify Google Sheets get populated\n• Check if email is sent (if content differs)\n\n2️⃣ W"
      }
    },
    {
      "id": "a43347e4-f5b3-4122-b3b8-45ff925a3402",
      "name": "🤖 AUTOMATION SETUP",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -780,
        -840
      ],
      "parameters": {
        "width": 400,
        "height": 460,
        "content": "⏰ SCHEDULING OPTIONS:\n\n🔄 CRON JOB (Recommended):\n• Set up external cron job to call webhook\n• Example: */30 * * * * (every 30 minutes)\n• Command: curl -X POST [webhook-url]\n\n⚡ N8N CRON TRIGGER:\n• Repl"
      }
    },
    {
      "id": "8184238c-654e-4b3e-b5f9-e9e8f423fe0f",
      "name": "🔧 MAINTENANCE & MONITORING",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -340,
        -840
      ],
      "parameters": {
        "width": 400,
        "height": 460,
        "content": "📈 MONITORING:\n\n📊 EXECUTION HISTORY:\n• Check n8n execution log regularly\n• Monitor for failed executions\n• Set up n8n error notifications\n\n📋 LOG REVIEW:\n• Check Google Sheets 'Log' tab\n• Verify timesta"
      }
    },
    {
      "id": "4b6fd3db-6276-4885-b704-d5709a9ad630",
      "name": "🔒 SECURITY & BEST PRACTICES",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        100,
        -840
      ],
      "parameters": {
        "width": 400,
        "height": 460,
        "content": "🛡️ SECURITY CONSIDERATIONS:\n\n🔐 API KEYS:\n• Store all credentials securely in n8n\n• Never hardcode API keys in workflow\n• Regularly rotate API keys\n\n📧 EMAIL SECURITY:\n• Use dedicated email for notifica"
      }
    },
    {
      "id": "10a36c1e-34ef-46dd-83a7-0cd4c6034a6c",
      "name": "🔍 COMMON ISSUES & SOLUTIONS",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        540,
        -840
      ],
      "parameters": {
        "width": 400,
        "height": 460,
        "content": "⚠️ COMMON PROBLEMS:\n\n🚫 FIRECRAWL ERRORS:\n• Check API key validity\n• Verify target URL is accessible\n• Check rate limits on Firecrawl account\n\n📊 GOOGLE SHEETS ISSUES:\n• Verify sheet ID and tab names\n• "
      }
    }
  ],
  "connections": {
    "Gmail": {
      "main": [
        [
          {
            "node": "Respond Changed",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Webhook": {
      "main": [
        [
          {
            "node": "Firecrawl HTTP Request",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Is Equal?": {
      "main": [
        [
          {
            "node": "Respond Unchanged",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Read Latest and Latest Content",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Timestamp": {
      "main": [
        [
          {
            "node": "Update Current Content",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Append Log Row": {
      "main": [
        [
          {
            "node": "Respond Changed",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract Differences": {
      "main": [
        [
          {
            "node": "Gmail",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update Latest Content": {
      "main": [
        [
          {
            "node": "Respond Changed",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Firecrawl HTTP Request": {
      "main": [
        [
          {
            "node": "Get Timestamp",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update Current Content": {
      "main": [
        [
          {
            "node": "Read Current and Latest Content",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Read Latest and Latest Content": {
      "main": [
        [
          {
            "node": "Extract Differences",
            "type": "main",
            "index": 0
          },
          {
            "node": "Append Log Row",
            "type": "main",
            "index": 0
          },
          {
            "node": "Update Latest Content",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Read Current and Latest Content": {
      "main": [
        [
          {
            "node": "Is Equal?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}