AutomationFlowsData & Sheets › Notion Database Alerts to SIGNL4

Notion Database Alerts to SIGNL4

Original n8n title: Database Alerts with Notion and Signl4

Database Alerts With Notion And Signl4. Uses notionTrigger, notion, interval, signl4. Event-driven trigger; 13 nodes.

Event trigger★★★★☆ complexity13 nodesNotion TriggerNotionSignl4
Data & Sheets Trigger: Event Nodes: 13 Complexity: ★★★★☆ Added:

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 →

Download .json
{
  "nodes": [
    {
      "name": "Function",
      "type": "n8n-nodes-base.function",
      "position": [
        230,
        710
      ],
      "parameters": {
        "functionCode": "// Code here will run only once, no matter how many input items there are.\n// More info and help: https://docs.n8n.io/nodes/n8n-nodes-base.function\n\n// Loop over inputs and add a new field called 'myNewField' to the JSON of each one\nfor (item of items) {\n  \nvar type = \"Status\";\n// Acknowledged\nif ((item.json.body.alert.statusCode == 2)  && (item.json.body.eventType == 201)) {\n    type = \"Acknowledged\";\n}\n// Closed\nif ((item.json.body.alert.statusCode == 4) & (item.json.body.eventType == 201)) {\n    type = \"Closed\";\n}\n// New Alert\nif ((item.json.body.alert.statusCode == 1) & (item.json.body.eventType == 200)) {\n    type = \"New Alert\";\n}\n\n// No one on duty\nif ((item.json.body.alert.statusCode == 16) & (item.json.body.eventType == 201)) {\n    type = \"No one on duty\";\n}\n \n// Annotation\nvar annotation = \"\";\nif ((item.json.body.eventType == 203) & (item.json.body.annotation != undefined) ) {\n    type = \"Annotated\";\n    annotation = item.json.body.annotation.message;\n}\nif (annotation != \"\") {\n    annotation = \": \" + annotation;\n}\n \nvar username = \"System\";\nif (item.json.body.user != undefined) {\n    username = item.json.body.user.username;\n}\n \nvar data = type + \" by \" + username + annotation;\n \nitem.json.s4Status = data; //  + \": \" + JSON.stringify(item.json);\n\n\nitem.json.s4Up = false;\nif (type == \"Closed\") {\n  item.json.s4Up = true;\n}\n\n}\n\n// You can write logs to the browser console\nconsole.log('Done!');\n\nreturn items;\n\n\n"
      },
      "typeVersion": 1
    },
    {
      "name": "Notion Trigger",
      "type": "n8n-nodes-base.notionTrigger",
      "disabled": true,
      "position": [
        230,
        210
      ],
      "parameters": {
        "event": "pageAddedToDatabase",
        "pollTimes": {
          "item": [
            {
              "mode": "everyX",
              "unit": "minutes",
              "value": 1
            }
          ]
        },
        "databaseId": "0f26823d-f509-43bb-b0e9-e9bb4ab91217"
      },
      "credentials": {
        "notionApi": "<your credential>"
      },
      "typeVersion": 1
    },
    {
      "name": "Webhook",
      "type": "n8n-nodes-base.webhook",
      "position": [
        50,
        710
      ],
      "parameters": {
        "path": "95fd62c7-fc8c-4f6f-8441-bbf85a2da81a",
        "options": {},
        "httpMethod": "POST"
      },
      "typeVersion": 1
    },
    {
      "name": "Function",
      "type": "n8n-nodes-base.function",
      "position": [
        230,
        710
      ],
      "parameters": {
        "functionCode": "// Code here will run only once, no matter how many input items there are.\n// More info and help: https://docs.n8n.io/nodes/n8n-nodes-base.function\n\n// Loop over inputs and add a new field called 'myNewField' to the JSON of each one\nfor (item of items) {\n  \nvar type = \"Status\";\n// Acknowledged\nif ((item.json.body.alert.statusCode == 2)  && (item.json.body.eventType == 201)) {\n    type = \"Acknowledged\";\n}\n// Closed\nif ((item.json.body.alert.statusCode == 4) & (item.json.body.eventType == 201)) {\n    type = \"Closed\";\n}\n// New Alert\nif ((item.json.body.alert.statusCode == 1) & (item.json.body.eventType == 200)) {\n    type = \"New Alert\";\n}\n\n// No one on duty\nif ((item.json.body.alert.statusCode == 16) & (item.json.body.eventType == 201)) {\n    type = \"No one on duty\";\n}\n \n// Annotation\nvar annotation = \"\";\nif ((item.json.body.eventType == 203) & (item.json.body.annotation != undefined) ) {\n    type = \"Annotated\";\n    annotation = item.json.body.annotation.message;\n}\nif (annotation != \"\") {\n    annotation = \": \" + annotation;\n}\n \nvar username = \"System\";\nif (item.json.body.user != undefined) {\n    username = item.json.body.user.username;\n}\n \nvar data = type + \" by \" + username + annotation;\n \nitem.json.s4Status = data; //  + \": \" + JSON.stringify(item.json);\n\n\nitem.json.s4Up = false;\nif (type == \"Closed\") {\n  item.json.s4Up = true;\n}\n\n}\n\n// You can write logs to the browser console\nconsole.log('Done!');\n\nreturn items;\n\n\n"
      },
      "typeVersion": 1
    },
    {
      "name": "Notion Update",
      "type": "n8n-nodes-base.notion",
      "position": [
        420,
        710
      ],
      "parameters": {
        "pageId": "={{$node[\"Webhook\"].json[\"body\"][\"alert\"][\"externalEventId\"]}}",
        "resource": "databasePage",
        "operation": "update",
        "propertiesUi": {
          "propertyValues": [
            {
              "key": "Description|rich_text",
              "peopleValue": [],
              "textContent": "={{$node[\"Function\"].json[\"s4Status\"]}}",
              "relationValue": [],
              "multiSelectValue": []
            }
          ]
        }
      },
      "credentials": {
        "notionApi": "<your credential>"
      },
      "typeVersion": 1
    },
    {
      "name": "Interval",
      "type": "n8n-nodes-base.interval",
      "position": [
        50,
        380
      ],
      "parameters": {
        "interval": 20
      },
      "typeVersion": 1
    },
    {
      "name": "SIGNL4 Resolve",
      "type": "n8n-nodes-base.signl4",
      "position": [
        420,
        540
      ],
      "parameters": {
        "operation": "resolve",
        "externalId": "={{$node[\"Notion Read Open\"].json[\"id\"]}}"
      },
      "credentials": {
        "signl4Api": "<your credential>"
      },
      "typeVersion": 1
    },
    {
      "name": "SIGNL4 Alert",
      "type": "n8n-nodes-base.signl4",
      "position": [
        420,
        210
      ],
      "parameters": {
        "message": "=Machine Alert: {{$node[\"Notion Trigger\"].json[\"Name\"]}}",
        "additionalFields": {
          "title": "n8n Alert",
          "externalId": "={{$node[\"Notion Trigger\"].json[\"id\"]}}",
          "locationFieldsUi": {
            "locationFieldsValues": {
              "latitude": "52.3992137",
              "longitude": "13.0583823"
            }
          }
        }
      },
      "credentials": {
        "signl4Api": "<your credential>"
      },
      "typeVersion": 1
    },
    {
      "name": "Notion Update Read",
      "type": "n8n-nodes-base.notion",
      "position": [
        570,
        380
      ],
      "parameters": {
        "pageId": "={{$node[\"Notion Read New\"].json[\"id\"]}}",
        "resource": "databasePage",
        "operation": "update",
        "propertiesUi": {
          "propertyValues": [
            {
              "key": "Read|checkbox",
              "peopleValue": [],
              "checkboxValue": true,
              "relationValue": [],
              "multiSelectValue": []
            }
          ]
        }
      },
      "credentials": {
        "notionApi": "<your credential>"
      },
      "typeVersion": 1
    },
    {
      "name": "Notion Read Open",
      "type": "n8n-nodes-base.notion",
      "position": [
        230,
        540
      ],
      "parameters": {
        "options": {
          "filter": {
            "multipleCondition": {
              "condition": {
                "and": [
                  {
                    "key": "Up|checkbox",
                    "condition": "equals",
                    "checkboxValue": true,
                    "multiSelectValue": []
                  },
                  {
                    "key": "Read|checkbox",
                    "condition": "equals",
                    "checkboxValue": true,
                    "multiSelectValue": []
                  }
                ]
              }
            }
          }
        },
        "resource": "databasePage",
        "operation": "getAll",
        "databaseId": "0f26823d-f509-43bb-b0e9-e9bb4ab91217"
      },
      "credentials": {
        "notionApi": "<your credential>"
      },
      "typeVersion": 1
    },
    {
      "name": "Notion Read New",
      "type": "n8n-nodes-base.notion",
      "position": [
        230,
        380
      ],
      "parameters": {
        "options": {
          "filter": {
            "multipleCondition": {
              "condition": {
                "and": [
                  {
                    "key": "Read|checkbox",
                    "condition": "equals",
                    "multiSelectValue": []
                  },
                  {
                    "key": "Up|checkbox",
                    "condition": "equals",
                    "multiSelectValue": []
                  }
                ]
              }
            }
          }
        },
        "resource": "databasePage",
        "operation": "getAll",
        "databaseId": "0f26823d-f509-43bb-b0e9-e9bb4ab91217"
      },
      "credentials": {
        "notionApi": "<your credential>"
      },
      "typeVersion": 1
    },
    {
      "name": "Notion Update Final",
      "type": "n8n-nodes-base.notion",
      "position": [
        570,
        540
      ],
      "parameters": {
        "pageId": "={{$node[\"Notion Read Open\"].json[\"id\"]}}",
        "resource": "databasePage",
        "operation": "update",
        "propertiesUi": {
          "propertyValues": [
            {
              "key": "Read|checkbox",
              "peopleValue": [],
              "relationValue": [],
              "multiSelectValue": []
            }
          ]
        }
      },
      "credentials": {
        "notionApi": "<your credential>"
      },
      "typeVersion": 1
    },
    {
      "name": "SIGNL4 Alert 2",
      "type": "n8n-nodes-base.signl4",
      "position": [
        420,
        380
      ],
      "parameters": {
        "message": "=Machine Alert: {{$node[\"Notion Read New\"].json[\"Name\"]}}",
        "additionalFields": {
          "title": "n8n Alert",
          "externalId": "={{$node[\"Notion Read New\"].json[\"id\"]}}",
          "locationFieldsUi": {
            "locationFieldsValues": {
              "latitude": "52.3992137",
              "longitude": "13.0583823"
            }
          }
        }
      },
      "credentials": {
        "signl4Api": "<your credential>"
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "Webhook": {
      "main": [
        [
          {
            "node": "Function",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Function": {
      "main": [
        [
          {
            "node": "Notion Update",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Interval": {
      "main": [
        [
          {
            "node": "Notion Read Open",
            "type": "main",
            "index": 0
          },
          {
            "node": "Notion Read New",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Notion Trigger": {
      "main": [
        [
          {
            "node": "SIGNL4 Alert",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "SIGNL4 Alert 2": {
      "main": [
        [
          {
            "node": "Notion Update Read",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "SIGNL4 Resolve": {
      "main": [
        [
          {
            "node": "Notion Update Final",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Notion Read New": {
      "main": [
        [
          {
            "node": "SIGNL4 Alert 2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Notion Read Open": {
      "main": [
        [
          {
            "node": "SIGNL4 Resolve",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

How this works

Stay instantly informed about critical changes in your Notion databases, ensuring your team responds swiftly to updates without constant manual checks. This workflow suits operations managers, IT support teams, or any group relying on Notion for project tracking and incident management, delivering real-time alerts via Signl4 to mobile devices for immediate action. The key step involves the Notion trigger detecting database modifications, which then filters and processes the data before sending targeted push notifications through Signl4's alerting system.

Use this workflow when you need event-driven notifications for specific Notion database events, such as new entries or status changes in shared workspaces, to maintain operational efficiency. Avoid it for high-volume databases where frequent triggers might overwhelm your Signl4 team, or if you prefer email over mobile alerts. Common variations include adding conditional logic to alert only certain users or integrating with Slack for hybrid communication.

About this workflow

Database Alerts With Notion And Signl4. Uses notionTrigger, notion, interval, signl4. Event-driven trigger; 13 nodes.

Source: https://github.com/Zie619/n8n-workflows — original creator credit. Request a take-down →

More Data & Sheets workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Data & Sheets

This workflow converts Notion pages to markdown, and then converts that markdown back to Notion blocks. It will triple the content of the last updated page it finds. This is useless by itself, but you

Notion Trigger, Notion, HTTP Request
Data & Sheets

Invoice OCR with NOTION and MINDEE. Uses httpRequest, mindee, notion, notionTrigger. Event-driven trigger; 11 nodes.

HTTP Request, Mindee, Notion +1
Data & Sheets

Create images with NOTION and RENDERFORM. Uses notionTrigger, httpRequest, notion. Event-driven trigger; 9 nodes.

Notion Trigger, HTTP Request, Notion
Data & Sheets

Workflow 01.01. Uses notion, executeWorkflowTrigger, httpRequest. Event-driven trigger; 60 nodes.

Notion, Execute Workflow Trigger, HTTP Request
Data & Sheets

Automate sales call analysis and store structured insights in Notion with AI-powered intelligence.

Execute Workflow Trigger, Notion, HTTP Request