{ "name": "Uptime Ping Alert — sai che un sito è giù prima dei tuoi utenti", "nodes": [ { "parameters": { "rule": { "interval": [{ "field": "minutes", "minutesInterval": 5 }] } }, "id": "trigger-5m", "name": "Ogni 5 minuti", "type": "n8n-nodes-base.scheduleTrigger", "typeVersion": 1.2, "position": [0, 0] }, { "parameters": { "url": "https://esempio.com", "options": { "timeout": 10000, "ignoreHttpStatusErrors": true } }, "id": "ping", "name": "Chiama il sito", "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.2, "position": [220, 0] }, { "parameters": { "jsCode": "// Passa in avanti SOLO se lo stato è cambiato rispetto all'ultimo controllo (evita di\n// avvisarti ogni 5 minuti finché il sito resta giù, o su ogni ping quando è su).\nconst state = $getWorkflowStaticData('global');\nconst code = $input.first().json.statusCode || 0;\nconst giu = code === 0 || code >= 500;\nconst eraGiu = state.giu === true;\nif (giu === eraGiu) return [];\nstate.giu = giu;\nreturn [{ json: { giu, code, quando: new Date().toISOString() } }];" }, "id": "filter-change", "name": "Solo se cambia stato", "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [440, 0] }, { "parameters": { "chatId": "={{ $env.TELEGRAM_CHAT_ID || 'INSERISCI_CHAT_ID' }}", "text": "={{ $json.giu ? '🔴 Il sito è DOWN (status ' + $json.code + ') — ' + $json.quando : '🟢 Il sito è tornato SU — ' + $json.quando }}", "additionalFields": {} }, "id": "notify-telegram", "name": "Manda su Telegram", "type": "n8n-nodes-base.telegram", "typeVersion": 1.2, "position": [660, 0], "credentials": { "telegramApi": { "id": "CONFIGURA_IN_N8N", "name": "Bot Telegram (crea la credenziale in n8n)" } } } ], "connections": { "Ogni 5 minuti": { "main": [[{ "node": "Chiama il sito", "type": "main", "index": 0 }]] }, "Chiama il sito": { "main": [[{ "node": "Solo se cambia stato", "type": "main", "index": 0 }]] }, "Solo se cambia stato": { "main": [[{ "node": "Manda su Telegram", "type": "main", "index": 0 }]] } }, "active": false, "settings": { "executionOrder": "v1" } }