This workflow follows the Emailsend → Google Sheets recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"name": "OTDR Vodafone Alerts",
"nodes": [
{
"parameters": {
"httpMethod": "POST",
"path": "otdr-alerts",
"responseMode": "lastNode",
"options": {}
},
"name": "Webhook \u2014 Receive from FastAPI",
"type": "n8n-nodes-base.webhook",
"position": [
200,
300
]
},
{
"parameters": {
"conditions": {
"boolean": [
{
"value1": "={{$json[\"should_alert\"]}}",
"value2": true
}
]
}
},
"name": "Should Alert?",
"type": "n8n-nodes-base.if",
"position": [
420,
300
]
},
{
"parameters": {
"conditions": {
"string": [
{
"value1": "={{$json[\"severity\"]}}",
"operation": "equals",
"value2": "CRITICAL"
}
]
}
},
"name": "Is CRITICAL?",
"type": "n8n-nodes-base.if",
"position": [
640,
200
]
},
{
"parameters": {
"conditions": {
"string": [
{
"value1": "={{$json[\"severity\"]}}",
"operation": "equals",
"value2": "HIGH"
}
]
}
},
"name": "Is HIGH?",
"type": "n8n-nodes-base.if",
"position": [
640,
400
]
},
{
"parameters": {
"fromEmail": "otdr-alerts@vodafone.de",
"toEmail": "manager@vodafone.de",
"subject": "=\ud83d\udea8 KRITISCH: OTDR Alarm \u2014 {{$json[\"technician\"]}} \u2014 {{$json[\"location\"]}}",
"text": "=KRITISCHER OTDR ALARM\n=============================\n{{$json[\"summary_line\"]}}\n\nTechniker : {{$json[\"technician\"]}}\nAuftrag : {{$json[\"order_number\"]}}\nStandort : {{$json[\"location\"]}}\nGPS : {{$json[\"gps_lat\"]}}, {{$json[\"gps_lon\"]}}\nAdresse : {{$json[\"gps_address\"]}}\nGoogle Maps: {{$json[\"maps_link\"]}}\nZeit : {{$json[\"timestamp_human\"]}}\nDatei : {{$json[\"filename\"]}}\n\nErgebnis : {{$json[\"overall_pass\"] ? \"BESTANDEN\" : \"FEHLGESCHLAGEN\"}}\nSchwere : {{$json[\"severity\"]}}\n\nFehlgeschlagene Pr\u00fcfungen:\n{{$json[\"failed_checks\"].map(c => ` - ${c.parameter}: ${c.measured} (Limit: ${c.threshold})`).join('\\n')}}\n\nML Ereignisse: {{$json[\"ml_event_count\"]}} erkannt, {{$json[\"ml_suspicious_count\"]}} verd\u00e4chtig\n\nKI-Analyse:\n{{$json[\"ai_summary\"]}}\n\n---\nOTDR System \u2014 Vodafone Deutschland"
},
"name": "Email CRITICAL \u2014 Management",
"type": "n8n-nodes-base.emailSend",
"position": [
860,
100
]
},
{
"parameters": {
"authentication": "webhook",
"resource": "message",
"operation": "post",
"channel": "vodafone-otdr-alerts",
"text": "=:rotating_light: *KRITISCHER OTDR ALARM*\n\n*{{$json[\"summary_line\"]}}*\n\n:technologist: Techniker: {{$json[\"technician\"]}}\n:clipboard: Auftrag: {{$json[\"order_number\"]}}\n:round_pushpin: Standort: {{$json[\"location\"]}}\n:world_map: <{{$json[\"maps_link\"]}}|Google Maps \u00f6ffnen>\n:clock3: Zeit: {{$json[\"timestamp_human\"]}}\n\n:x: Fehlgeschlagen: {{$json[\"failed_count\"]}} Checks\n:warning: ML verd\u00e4chtig: {{$json[\"ml_suspicious_count\"]}} Ereignisse\n\nKI: {{$json[\"ai_summary\"].substring(0,200)}}..."
},
"name": "Slack/Teams CRITICAL",
"type": "n8n-nodes-base.slack",
"position": [
860,
220
]
},
{
"parameters": {
"fromEmail": "otdr-alerts@vodafone.de",
"toEmail": "supervisor@vodafone.de",
"subject": "=\u274c OTDR Fehlgeschlagen \u2014 {{$json[\"technician\"]}} \u2014 {{$json[\"location\"]}}",
"text": "=OTDR MESSUNG FEHLGESCHLAGEN\n=============================\n{{$json[\"summary_line\"]}}\n\nTechniker : {{$json[\"technician\"]}}\nAuftrag : {{$json[\"order_number\"]}}\nStandort : {{$json[\"location\"]}}\nGPS : {{$json[\"gps_lat\"]}}, {{$json[\"gps_lon\"]}}\nAdresse : {{$json[\"gps_address\"]}}\nMaps : {{$json[\"maps_link\"]}}\nZeit : {{$json[\"timestamp_human\"]}}\n\nFehlgeschlagene Checks:\n{{$json[\"failed_checks\"].map(c => ` - ${c.parameter}: ${c.measured} (Limit: ${c.threshold})`).join('\\n')}}\n\nML: {{$json[\"ml_event_count\"]}} Ereignisse erkannt\n\nKI-Analyse:\n{{$json[\"ai_summary\"]}}"
},
"name": "Email HIGH \u2014 Supervisor",
"type": "n8n-nodes-base.emailSend",
"position": [
860,
380
]
},
{
"parameters": {
"fromEmail": "otdr-alerts@vodafone.de",
"toEmail": "team@vodafone.de",
"subject": "=\u26a0\ufe0f OTDR Warnung \u2014 {{$json[\"technician\"]}} \u2014 {{$json[\"location\"]}}",
"text": "=OTDR WARNUNG / MEDIUM PRIORITY\n\n{{$json[\"summary_line\"]}}\n\nTechniker: {{$json[\"technician\"]}}\nStandort : {{$json[\"location\"]}}\nZeit : {{$json[\"timestamp_human\"]}}\nMaps : {{$json[\"maps_link\"]}}\n\nBitte \u00fcberpr\u00fcfen."
},
"name": "Email MEDIUM/WARNING \u2014 Team",
"type": "n8n-nodes-base.emailSend",
"position": [
860,
560
]
},
{
"parameters": {
"operation": "append",
"documentId": "YOUR_GOOGLE_SHEET_ID",
"sheetName": "Messungen",
"columns": {
"mappingMode": "defineBelow",
"value": {
"Datum": "={{$json[\"date\"]}}",
"Uhrzeit": "={{$json[\"time\"]}}",
"Techniker": "={{$json[\"technician\"]}}",
"Auftrag": "={{$json[\"order_number\"]}}",
"Standort": "={{$json[\"location\"]}}",
"GPS Lat": "={{$json[\"gps_lat\"]}}",
"GPS Lon": "={{$json[\"gps_lon\"]}}",
"GPS Adresse": "={{$json[\"gps_address\"]}}",
"GPS Genauigkeit": "={{$json[\"gps_accuracy\"]}}",
"GPS Methode": "={{$json[\"gps_method\"]}}",
"GPS Verifiziert": "={{$json[\"gps_verified\"]}}",
"GPS Abstand (m)": "={{$json[\"gps_distance_from_plan_m\"]}}",
"Ergebnis": "={{$json[\"overall_pass\"] ? \"BESTANDEN\" : \"FEHLGESCHLAGEN\"}}",
"Schwere": "={{$json[\"severity\"]}}",
"Bestanden": "={{$json[\"passed_count\"]}}",
"Fehler": "={{$json[\"failed_count\"]}}",
"ML Ereignisse": "={{$json[\"ml_event_count\"]}}",
"ML Verd\u00e4chtig": "={{$json[\"ml_suspicious_count\"]}}",
"Maps Link": "={{$json[\"maps_link\"]}}",
"Dateiname": "={{$json[\"filename\"]}}",
"KI Zusammenfassung": "={{$json[\"ai_summary\"]}}"
}
}
},
"name": "Google Sheets \u2014 Archive ALL",
"type": "n8n-nodes-base.googleSheets",
"position": [
420,
560
]
}
],
"connections": {
"Webhook \u2014 Receive from FastAPI": {
"main": [
[
{
"node": "Should Alert?",
"type": "main",
"index": 0
},
{
"node": "Google Sheets \u2014 Archive ALL",
"type": "main",
"index": 0
}
]
]
},
"Should Alert?": {
"main": [
[
{
"node": "Is CRITICAL?",
"type": "main",
"index": 0
}
],
[]
]
},
"Is CRITICAL?": {
"main": [
[
{
"node": "Email CRITICAL \u2014 Management",
"type": "main",
"index": 0
},
{
"node": "Slack/Teams CRITICAL",
"type": "main",
"index": 0
}
],
[
{
"node": "Is HIGH?",
"type": "main",
"index": 0
}
]
]
},
"Is HIGH?": {
"main": [
[
{
"node": "Email HIGH \u2014 Supervisor",
"type": "main",
"index": 0
}
],
[
{
"node": "Email MEDIUM/WARNING \u2014 Team",
"type": "main",
"index": 0
}
]
]
}
}
}
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
OTDR Vodafone Alerts. Uses emailSend, slack, googleSheets. Webhook trigger; 9 nodes.
Source: https://github.com/hocinelho/otdr-einblasen-mvp/blob/2276c861c039e2f3a74c7a32babe9b95cb093b94/n8n/workflow.json — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
This workflow is a production-ready Meta Ads Webhook dispatcher for the Ad Account object. It receives webhook deliveries from Meta, returns the required acknowledgement, routes events by , logs them
Enhance financial oversight with this automated n8n workflow. Triggered every 5 minutes, it fetches real-time bank transactions via an API, enriches and transforms the data, and applies smart logic to
This workflow automates competitive price intelligence using Bright Data's enterprise web scraping API. On a scheduled basis (default: daily at 9 AM), the system loops through configured competitor pr
SEO managers, content marketers, bloggers, and growth teams who want to automatically catch declining content performance before it's too late — without manually checking Google Search Console every w
Automate tax deadline monitoring with AI-powered insights. This workflow checks your tax calendar daily at 8 AM, uses GPT-4 to analyze upcoming deadlines across multiple jurisdictions, detects overdue