Processus d'automatisation Notion-GitHub

Intermédiaire

Ceci est unProject Managementworkflow d'automatisation du domainecontenant 14 nœuds.Utilise principalement des nœuds comme Set, Gmail, Github, Notion, Switch. Flux automatisé de Notion vers GitHub avec notifications par e-mail

Prérequis
  • Compte Google et informations d'identification Gmail API
  • Personal Access Token GitHub
  • Clé API Notion
Aperçu du workflow
Visualisation des connexions entre les nœuds, avec support du zoom et du déplacement
Exporter le workflow
Copiez la configuration JSON suivante dans n8n pour importer et utiliser ce workflow
{
  "id": "MkdncnBkezX9QPQZ",
  "meta": {
    "instanceId": "43fe624f1392ada2f15246a2a3a9f0bf4079ffe6ba53194387a75aad0085752f",
    "templateCredsSetupCompleted": true
  },
  "name": "notion-github",
  "tags": [
    {
      "id": "7w2Ku9VPbcMLEYjA",
      "name": "from6",
      "createdAt": "2025-07-02T10:28:35.419Z",
      "updatedAt": "2025-07-02T10:28:35.419Z"
    }
  ],
  "nodes": [
    {
      "id": "7c3adcf2-0f6c-4b9f-840c-9f1f1ad7b6fc",
      "name": "Obtenir plusieurs pages de base de données",
      "type": "n8n-nodes-base.notion",
      "position": [
        540,
        140
      ],
      "parameters": {
        "options": {},
        "resource": "databasePage",
        "operation": "getAll",
        "returnAll": true,
        "databaseId": {
          "__rl": true,
          "mode": "list",
          "value": "224315ef-5fbb-804c-b0ac-daa3fd2204d1",
          "cachedResultUrl": "https://www.notion.so/224315ef5fbb804cb0acdaa3fd2204d1",
          "cachedResultName": "Feature Tracker"
        }
      },
      "credentials": {
        "notionApi": {
          "id": "m58S8v9iNfyHkNCa",
          "name": "Notion account"
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "35ccdc8d-063d-4177-9dbf-ef5ab0490083",
      "name": "Créer un ticket",
      "type": "n8n-nodes-base.github",
      "position": [
        1260,
        -760
      ],
      "webhookId": "83ec3e24-50a4-4671-be98-ca979017b807",
      "parameters": {
        "body": "={{ $json.Description }}",
        "owner": {
          "__rl": true,
          "mode": "list",
          "value": "From6Agency",
          "cachedResultUrl": "https://github.com/From6Agency",
          "cachedResultName": "From6Agency"
        },
        "title": "={{ $json.Title }}",
        "labels": [],
        "assignees": [],
        "repository": {
          "__rl": true,
          "mode": "name",
          "value": "={{ $json.Repository }}"
        },
        "authentication": "oAuth2"
      },
      "credentials": {
        "githubOAuth2Api": {
          "id": "Gln4s2VSz3SN6tZc",
          "name": "GitHub account"
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "15822ab6-75eb-42f6-9735-462eee577f01",
      "name": "Trier les champs des tickets",
      "type": "n8n-nodes-base.set",
      "position": [
        740,
        140
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "ec9e556b-db8d-4c84-9278-ddae3c03dae4",
              "name": "Title",
              "type": "string",
              "value": "={{ $json.name }}"
            },
            {
              "id": "2f44fef2-db01-4d86-97d8-24e860b9191f",
              "name": "Description",
              "type": "string",
              "value": "={{ $json.property_description }}"
            },
            {
              "id": "262ee63f-14a6-4779-85e4-38d0a0eb1b45",
              "name": "Labels",
              "type": "string",
              "value": "={{ $json.property_labels[0] }}"
            },
            {
              "id": "93645af7-ae3f-476d-ab0a-ca4bb454f89a",
              "name": "Repository",
              "type": "string",
              "value": "={{ $json.property_repository[0] }}"
            },
            {
              "id": "7e55b3f9-1d18-43c0-8311-54c267613f72",
              "name": "Status",
              "type": "string",
              "value": "={{ $json.property_status }}"
            },
            {
              "id": "0050711a-c0af-473f-8e3f-6fca52dd96da",
              "name": "DatabasePageId",
              "type": "string",
              "value": "={{ $json.id }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "ab5feb3b-b90b-46b8-817e-4d5304f1c052",
      "name": "Déclencheur planifié",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        300,
        140
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "hours",
              "hoursInterval": 12
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "5d1c0a93-e655-40b6-800d-95fa9a45fb5a",
      "name": "Obtenir plusieurs utilisateurs",
      "type": "n8n-nodes-base.notion",
      "position": [
        1300,
        460
      ],
      "parameters": {
        "resource": "user",
        "operation": "getAll"
      },
      "credentials": {
        "notionApi": {
          "id": "m58S8v9iNfyHkNCa",
          "name": "Notion account"
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "26fb5264-ecc5-41c7-ba4b-190299ebe133",
      "name": "Mapper les utilisateurs Notion",
      "type": "n8n-nodes-base.set",
      "position": [
        1480,
        460
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "d7fa28c1-b8fd-4696-9c54-1fbfc1ecfeeb",
              "name": "Name",
              "type": "string",
              "value": "={{ $json.name }}"
            },
            {
              "id": "2d2bf9ae-2a65-4550-b5ab-2ba3c80af59f",
              "name": "Email",
              "type": "string",
              "value": "={{ $json.person.email }}"
            },
            {
              "id": "399b3419-f7c1-4a4d-866c-b376f264bdf5",
              "name": "type",
              "type": "string",
              "value": "={{ $json.type }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "bf194122-52fb-466d-9532-21edd54857c7",
      "name": "Définir le statut et l'URL du ticket",
      "type": "n8n-nodes-base.notion",
      "position": [
        1540,
        -760
      ],
      "parameters": {
        "pageId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Switch').item.json.DatabasePageId }}"
        },
        "options": {},
        "resource": "databasePage",
        "operation": "update",
        "propertiesUi": {
          "propertyValues": [
            {
              "key": "Status|status",
              "statusValue": "In progress"
            },
            {
              "key": "Issue URL|url",
              "urlValue": "={{ $json.html_url }}",
              "ignoreIfEmpty": true
            }
          ]
        }
      },
      "credentials": {
        "notionApi": {
          "id": "m58S8v9iNfyHkNCa",
          "name": "Notion account"
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "41f0a8c9-df5f-4fa8-a4e1-ed10017d1688",
      "name": "Commutateur",
      "type": "n8n-nodes-base.switch",
      "position": [
        980,
        140
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "c494ba90-0e31-44f0-b7d3-9d59b42fbc67",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.Status }}",
                    "rightValue": "To develop"
                  }
                ]
              }
            },
            {
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "e2566cab-fc35-4ef9-ba23-44a2c128b61c",
                    "operator": {
                      "name": "filter.operator.equals",
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.Status }}",
                    "rightValue": "Done"
                  }
                ]
              }
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 3.2
    },
    {
      "id": "3d653edc-4d9e-4efc-98b2-83ef168bc962",
      "name": "Exclure les bots",
      "type": "n8n-nodes-base.switch",
      "position": [
        1660,
        460
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "0abb60d1-baa3-42e2-9ced-913b24bf727d",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.type }}",
                    "rightValue": "person"
                  }
                ]
              }
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 3.2
    },
    {
      "id": "b4ce6176-284a-45d7-a852-e456a596f833",
      "name": "Envoyer un message",
      "type": "n8n-nodes-base.gmail",
      "position": [
        2060,
        460
      ],
      "webhookId": "0fac39e9-7020-44a0-98fd-b0cb16487604",
      "parameters": {
        "sendTo": "={{ $json.Email.join(', ') }}",
        "message": "=Your message stipulating that the issue  {{ $('Switch').item.json.Title }} has been marked as Done and closed within the {{ $('Switch').item.json.Repository }} repository.",
        "options": {},
        "subject": "A Github Issue has been closed !",
        "emailType": "text"
      },
      "credentials": {
        "gmailOAuth2": {
          "id": "9B0IqBqjWC8gKOUn",
          "name": "Gmail account"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "3b0bc8f4-4d6c-4c52-b123-78583df2ab89",
      "name": "Regrouper les destinataires",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        1880,
        460
      ],
      "parameters": {
        "options": {},
        "fieldsToAggregate": {
          "fieldToAggregate": [
            {
              "fieldToAggregate": "Email"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "5becc075-f6b8-4c57-8489-7152e9616ec6",
      "name": "Note adhésive 1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        260,
        -720
      ],
      "parameters": {
        "color": 6,
        "width": 880,
        "height": 1100,
        "content": "## 🔹 SECTION 1: Detect and Sort Issues from Notion\n**Combining**: Schedule Trigger + Notion Database + Field Mapping + Status Routing\n\n## ⏰ 1. Schedule Trigger\n🔧 **Node Type**: Schedule Trigger (you can use a webhook trigger if you are on Notion paid plan)\n\n## 💬 Description: Triggers the workflow every X minutes to check for new or updated Notion database pages.\n\n## 📑 2. Get Many Database Pages (Notion)\n🔧 **Node Type**: Notion → Get All Database Pages\n\n## 📋 What it does: Fetches all rows (pages) from a Notion database that represents tasks or feature requests.\n\n✏️ 3. Sort Issues Fields\n🔧 **Node Type**: Set\n\n## 📋 Goal: Restructures or cleans data fields such as Title, Status, Labels, and Repository.\n\n## 🔀 4. Switch: Issue Status Decision\n🔧 **Node Type**: Switch\n\n## 🎯 What it does: Separates logic based on the Status of the Notion item:\n\n**If status is \"To develop\"** → proceed to create issue\n\n**Else** → send notification to the team"
      },
      "typeVersion": 1
    },
    {
      "id": "246e38b3-eb3d-47f8-9818-e0c48e9c308f",
      "name": "Note adhésive 2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1160,
        -1360
      ],
      "parameters": {
        "color": 4,
        "width": 640,
        "height": 760,
        "content": "## 🔹 SECTION 2: GitHub Issue Creation (IF \"To develop\")\n**Combining**: GitHub Node + Notion Update\n\n## 🐙 5. Create an Issue (GitHub)\n🔧 **Node Type**: GitHub → Create Issue\n\n## ⚙️ What it does: Creates a new issue on the GitHub repo defined in the Notion row.\n\n## 📥 Inputs: Uses dynamic fields: Title, Description, Labels, Repository.\n\n## 🧩 6. Set Status and Issue URL (Notion Update)\n🔧 **Node Type**: Notion → Update Database Page\n\n## 🧠 Role: Updates the status of the issue in Notion to In progress and stores the created GitHub Issue URL."
      },
      "typeVersion": 1
    },
    {
      "id": "7a5f0935-2dc8-4db4-8044-1f261b1820dd",
      "name": "Note adhésive 3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1260,
        -380
      ],
      "parameters": {
        "color": 3,
        "width": 960,
        "height": 1020,
        "content": "## 🔹 SECTION 3: Notify Team on Already In-Progress Items (IF NOT \"To develop\")\nCombining: Notion Users + Filtering + Email Grouping + Gmail\n\n## 👥 7. Get Many Users (Notion Users)\n🔧 **Node Type**: Notion → Get All Users\n\n## 📥 What it does: Retrieves the list of team members (to be notified).\n\n## 🧠 8. Map Notion Users\n🔧 **Node Type**: Set\n\n## 📋 Role: Maps and formats data for each user (e.g., Name, Email, Role).\n\n## 🧹 9. Exclude Bot\n🔧 **Node Type**: Switch\n\n## 🚫 What it does: Excludes automation/bot users (e.g., notifications@noreply).\n\n## 🧮 10. Group Recipients\n🔧 **Node Type**: Aggregate\n\n## 🎯 Goal: Collects all user emails into a single array to send one email to all recipients.\n\n## 📬 11. Send a Message (Gmail)\n🔧 **Node Type**: Gmail → Send Email"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "7768a0ea-4dad-4586-b6b7-46b82a036dce",
  "connections": {
    "41f0a8c9-df5f-4fa8-a4e1-ed10017d1688": {
      "main": [
        [
          {
            "node": "35ccdc8d-063d-4177-9dbf-ef5ab0490083",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "5d1c0a93-e655-40b6-800d-95fa9a45fb5a",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "3d653edc-4d9e-4efc-98b2-83ef168bc962": {
      "main": [
        [
          {
            "node": "3b0bc8f4-4d6c-4c52-b123-78583df2ab89",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "5d1c0a93-e655-40b6-800d-95fa9a45fb5a": {
      "main": [
        [
          {
            "node": "26fb5264-ecc5-41c7-ba4b-190299ebe133",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "35ccdc8d-063d-4177-9dbf-ef5ab0490083": {
      "main": [
        [
          {
            "node": "bf194122-52fb-466d-9532-21edd54857c7",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "3b0bc8f4-4d6c-4c52-b123-78583df2ab89": {
      "main": [
        [
          {
            "node": "b4ce6176-284a-45d7-a852-e456a596f833",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "26fb5264-ecc5-41c7-ba4b-190299ebe133": {
      "main": [
        [
          {
            "node": "3d653edc-4d9e-4efc-98b2-83ef168bc962",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ab5feb3b-b90b-46b8-817e-4d5304f1c052": {
      "main": [
        [
          {
            "node": "7c3adcf2-0f6c-4b9f-840c-9f1f1ad7b6fc",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "15822ab6-75eb-42f6-9735-462eee577f01": {
      "main": [
        [
          {
            "node": "41f0a8c9-df5f-4fa8-a4e1-ed10017d1688",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "7c3adcf2-0f6c-4b9f-840c-9f1f1ad7b6fc": {
      "main": [
        [
          {
            "node": "15822ab6-75eb-42f6-9735-462eee577f01",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Foire aux questions

Comment utiliser ce workflow ?

Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.

Dans quelles scénarios ce workflow est-il adapté ?

Intermédiaire - Gestion de projet

Est-ce payant ?

Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.

Informations sur le workflow
Niveau de difficulté
Intermédiaire
Nombre de nœuds14
Catégorie1
Types de nœuds8
Description de la difficulté

Adapté aux utilisateurs expérimentés, avec des workflows de complexité moyenne contenant 6-15 nœuds

Liens externes
Voir sur n8n.io

Partager ce workflow

Catégories

Catégories: 34