Workflow n8n

Automatisation Notion avec n8n : alertes et mises à jour en temps réel

Ce workflow n8n a pour objectif d'automatiser la gestion des données dans Notion tout en envoyant des alertes via SIGNL4. Dans un contexte où la collaboration et la gestion de projets sont essentielles, ce type d'automatisation permet aux équipes de rester informées des changements importants sans avoir à surveiller manuellement les mises à jour. Par exemple, une équipe de projet peut recevoir des notifications instantanées lorsqu'une tâche est mise à jour ou lorsqu'un nouvel élément est ajouté à une base de données Notion. Le workflow débute par un déclencheur Webhook qui permet de recevoir des données externes. Ensuite, il utilise un nœud Notion Trigger pour surveiller les événements dans une base de données spécifique. Lorsqu'un changement est détecté, le workflow exécute une série de fonctions pour traiter ces informations. Par la suite, il envoie une alerte via SIGNL4, assurant que les membres de l'équipe reçoivent une notification pertinente. Les mises à jour dans Notion sont gérées par plusieurs nœuds qui permettent de lire et d'écrire des données, garantissant que toutes les informations sont à jour. Les bénéfices de ce workflow incluent une réduction significative du temps passé à surveiller manuellement les mises à jour et une meilleure réactivité de l'équipe face aux changements. En intégrant des alertes automatiques, les utilisateurs peuvent se concentrer sur des tâches à plus forte valeur ajoutée, tout en étant assurés d'être informés en temps réel. Tags clés : automatisation, Notion, SIGNL4.

Catégorie: Webhook · Tags: automatisation, Notion, SIGNL4, alertes, workflow0

Vue d'ensemble du workflow n8n

Schéma des nœuds et connexions de ce workflow n8n, généré à partir du JSON n8n.

Détail des nœuds du workflow n8n

  • Function

    Ce noeud exécute un code JavaScript personnalisé pour traiter des données.

  • Notion Trigger

    Ce noeud déclenche le workflow en surveillant les événements d'une base de données Notion.

  • Webhook

    Ce noeud reçoit des requêtes HTTP via un webhook pour déclencher le workflow.

  • Function

    Ce noeud exécute un autre code JavaScript personnalisé pour effectuer des traitements supplémentaires.

  • Notion Update

    Ce noeud met à jour une page dans Notion avec les propriétés spécifiées.

  • Interval

    Ce noeud déclenche le workflow à intervalles réguliers selon la configuration spécifiée.

  • SIGNL4 Resolve

    Ce noeud résout une alerte dans SIGNL4 en utilisant un identifiant externe.

  • SIGNL4 Alert

    Ce noeud envoie une alerte à SIGNL4 avec un message et des champs supplémentaires.

  • Notion Update Read

    Ce noeud lit et met à jour une page dans Notion avec les propriétés spécifiées.

  • Notion Read Open

    Ce noeud lit des données d'une base de données Notion selon les options fournies.

  • Notion Read New

    Ce noeud lit les nouvelles entrées d'une base de données Notion selon les options fournies.

  • Notion Update Final

    Ce noeud met à jour une page finale dans Notion avec les propriétés spécifiées.

  • SIGNL4 Alert 2

    Ce noeud envoie une deuxième alerte à SIGNL4 avec un message et des champs supplémentaires.

Inscris-toi pour voir l'intégralité du workflow

Inscription gratuite

S'inscrire gratuitementBesoin d'aide ?
{
  "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": "Notion"
      },
      "typeVersion": 1
    },
    {
      "name": "Webhook",
      "type": "n8n-nodes-base.webhook",
      "position": [
        50,
        710
      ],
      "webhookId": "95fd62c7-fc8c-4f6f-8441-bbf85a2da81a",
      "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": "Notion"
      },
      "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": "SIGNL4"
      },
      "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": "SIGNL4"
      },
      "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": "Notion"
      },
      "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": "Notion"
      },
      "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": "Notion"
      },
      "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": "Notion"
      },
      "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": "SIGNL4"
      },
      "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
          }
        ]
      ]
    }
  }
}

Pour qui est ce workflow ?

Ce workflow s'adresse aux équipes de projet et aux entreprises qui utilisent Notion pour la gestion de leurs tâches et de leurs données. Il est particulièrement utile pour les organisations qui cherchent à automatiser leurs processus tout en maintenant une communication efficace grâce à des alertes en temps réel. Un niveau technique intermédiaire est recommandé pour la mise en place de ce workflow.

Problème résolu

Ce workflow résout le problème de la surveillance manuelle des mises à jour dans Notion, ce qui peut être chronophage et source de frustration. En automatisant l'envoi d'alertes via SIGNL4, les utilisateurs réduisent le risque de manquer des informations importantes et améliorent leur réactivité. Après la mise en place de ce workflow, les équipes peuvent se concentrer sur leurs tâches principales tout en étant informées des changements critiques en temps réel.

Étapes du workflow

Étape 1 : Le déclencheur Webhook reçoit des données externes. Étape 2 : Le nœud Notion Trigger surveille les événements dans la base de données Notion. Étape 3 : En cas de changement, le workflow exécute une fonction pour traiter les données. Étape 4 : Une alerte est envoyée via SIGNL4 pour notifier les membres de l'équipe. Étape 5 : Les mises à jour dans Notion sont gérées par plusieurs nœuds pour garantir que toutes les informations sont à jour.

Guide de personnalisation du workflow n8n

Pour personnaliser ce workflow, vous pouvez modifier l'URL du Webhook pour l'adapter à votre application. Il est également possible de changer l'ID de la base de données Notion que vous souhaitez surveiller. Si vous souhaitez ajouter d'autres alertes, vous pouvez intégrer des nœuds SIGNL4 supplémentaires. Assurez-vous de sécuriser votre flux en configurant les autorisations nécessaires dans Notion et SIGNL4. Enfin, vous pouvez ajuster les paramètres d'intervalle pour définir la fréquence de vérification des mises à jour.