AutomationFlowsEmail & Gmail › Automation Flow From Notion to Github with Email Notifications

Automation Flow From Notion to Github with Email Notifications

ByFady Bekkar @fadybekkar on n8n.io

This automation allows you to track feature requests in Notion, create GitHub issues automatically, and notify your team via email based on issue status. It's ideal for technical and functional teams who collaborate on project delivery using Notion and GitHub.

Cron / scheduled trigger★★★★☆ complexity14 nodesNotionGitHubGmail
Email & Gmail Trigger: Cron / scheduled Nodes: 14 Complexity: ★★★★☆ Added:
Automation Flow From Notion to Github with Email Notifications — n8n workflow card showing Notion, GitHub, Gmail integration

This workflow corresponds to n8n.io template #5889 — we link there as the canonical source.

This workflow follows the Gmail → Notion 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 →

Download .json
{
  "id": "MkdncnBkezX9QPQZ",
  "meta": {
    "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": "Get many database pages",
      "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": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "35ccdc8d-063d-4177-9dbf-ef5ab0490083",
      "name": "Create an issue",
      "type": "n8n-nodes-base.github",
      "position": [
        1260,
        -760
      ],
      "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": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "15822ab6-75eb-42f6-9735-462eee577f01",
      "name": "Sort Issues Fields",
      "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": "Schedule Trigger",
      "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": "Get many users",
      "type": "n8n-nodes-base.notion",
      "position": [
        1300,
        460
      ],
      "parameters": {
        "resource": "user",
        "operation": "getAll"
      },
      "credentials": {
        "notionApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "26fb5264-ecc5-41c7-ba4b-190299ebe133",
      "name": "Map Notion Users",
      "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": "Set Status and Issue URL",
      "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": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "41f0a8c9-df5f-4fa8-a4e1-ed10017d1688",
      "name": "Switch",
      "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": "Exclude Bot",
      "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": "Send a message",
      "type": "n8n-nodes-base.gmail",
      "position": [
        2060,
        460
      ],
      "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": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "3b0bc8f4-4d6c-4c52-b123-78583df2ab89",
      "name": "Group Recipients",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        1880,
        460
      ],
      "parameters": {
        "options": {},
        "fieldsToAggregate": {
          "fieldToAggregate": [
            {
              "fieldToAggregate": "Email"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "5becc075-f6b8-4c57-8489-7152e9616ec6",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        260,
        -720
      ],
      "parameters": {
        "color": 6,
        "width": 880,
        "height": 1100,
        "content": "## \ud83d\udd39 SECTION 1: Detect and Sort Issues from Notion\n**Combining**: Schedule Trigger + Notion Database + Field Mapping + Status Routing\n\n## \u23f0 1. Schedule Trigger\n\ud83d\udd27 **Node Type**: Schedule Trigger (you can use a webhook trigger if you are on Notion paid plan)\n\n## \ud83d\udcac Description: Triggers the workflow every X minutes to check for new or updated Notion database pages.\n\n## \ud83d\udcd1 2. Get Many Database Pages (Notion)\n\ud83d\udd27 **Node Type**: Notion \u2192 Get All Database Pages\n\n## \ud83d\udccb What it does: Fetches all rows (pages) from a Notion database that represents tasks or feature requests.\n\n\u270f\ufe0f 3. Sort Issues Fields\n\ud83d\udd27 **Node Type**: Set\n\n## \ud83d\udccb Goal: Restructures or cleans data fields such as Title, Status, Labels, and Repository.\n\n## \ud83d\udd00 4. Switch: Issue Status Decision\n\ud83d\udd27 **Node Type**: Switch\n\n## \ud83c\udfaf What it does: Separates logic based on the Status of the Notion item:\n\n**If status is \"To develop\"** \u2192 proceed to create issue\n\n**Else** \u2192 send notification to the team"
      },
      "typeVersion": 1
    },
    {
      "id": "246e38b3-eb3d-47f8-9818-e0c48e9c308f",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1160,
        -1360
      ],
      "parameters": {
        "color": 4,
        "width": 640,
        "height": 760,
        "content": "## \ud83d\udd39 SECTION 2: GitHub Issue Creation (IF \"To develop\")\n**Combining**: GitHub Node + Notion Update\n\n## \ud83d\udc19 5. Create an Issue (GitHub)\n\ud83d\udd27 **Node Type**: GitHub \u2192 Create Issue\n\n## \u2699\ufe0f What it does: Creates a new issue on the GitHub repo defined in the Notion row.\n\n## \ud83d\udce5 Inputs: Uses dynamic fields: Title, Description, Labels, Repository.\n\n## \ud83e\udde9 6. Set Status and Issue URL (Notion Update)\n\ud83d\udd27 **Node Type**: Notion \u2192 Update Database Page\n\n## \ud83e\udde0 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": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1260,
        -380
      ],
      "parameters": {
        "color": 3,
        "width": 960,
        "height": 1020,
        "content": "## \ud83d\udd39 SECTION 3: Notify Team on Already In-Progress Items (IF NOT \"To develop\")\nCombining: Notion Users + Filtering + Email Grouping + Gmail\n\n## \ud83d\udc65 7. Get Many Users (Notion Users)\n\ud83d\udd27 **Node Type**: Notion \u2192 Get All Users\n\n## \ud83d\udce5 What it does: Retrieves the list of team members (to be notified).\n\n## \ud83e\udde0 8. Map Notion Users\n\ud83d\udd27 **Node Type**: Set\n\n## \ud83d\udccb Role: Maps and formats data for each user (e.g., Name, Email, Role).\n\n## \ud83e\uddf9 9. Exclude Bot\n\ud83d\udd27 **Node Type**: Switch\n\n## \ud83d\udeab What it does: Excludes automation/bot users (e.g., notifications@noreply).\n\n## \ud83e\uddee 10. Group Recipients\n\ud83d\udd27 **Node Type**: Aggregate\n\n## \ud83c\udfaf Goal: Collects all user emails into a single array to send one email to all recipients.\n\n## \ud83d\udcec 11. Send a Message (Gmail)\n\ud83d\udd27 **Node Type**: Gmail \u2192 Send Email"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "7768a0ea-4dad-4586-b6b7-46b82a036dce",
  "connections": {
    "Switch": {
      "main": [
        [
          {
            "node": "Create an issue",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Get many users",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Exclude Bot": {
      "main": [
        [
          {
            "node": "Group Recipients",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get many users": {
      "main": [
        [
          {
            "node": "Map Notion Users",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create an issue": {
      "main": [
        [
          {
            "node": "Set Status and Issue URL",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Group Recipients": {
      "main": [
        [
          {
            "node": "Send a message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Map Notion Users": {
      "main": [
        [
          {
            "node": "Exclude Bot",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "Get many database pages",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Sort Issues Fields": {
      "main": [
        [
          {
            "node": "Switch",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get many database pages": {
      "main": [
        [
          {
            "node": "Sort Issues Fields",
            "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

About this workflow

This automation allows you to track feature requests in Notion, create GitHub issues automatically, and notify your team via email based on issue status. It's ideal for technical and functional teams who collaborate on project delivery using Notion and GitHub.

Source: https://n8n.io/workflows/5889/ — original creator credit. Request a take-down →

More Email & Gmail workflows → · Browse all categories →

Related workflows

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

Email & Gmail

Streamline your Net Promoter Score (NPS) survey process by automating survey delivery, response tracking, and structured data storage. This workflow integrates GoHighLevel, Gmail, and Notion to ensure

High Level, Gmail, HTTP Request +1
Email & Gmail

This n8n workflow continuously monitors your website’s availability, sends email alerts when the server goes down, and automatically updates a status page (index.html) in your GitHub repository to ref

HTTP Request, GitHub, Gmail
Email & Gmail

Send Labeled Email To A Notion Database. Uses scheduleTrigger, dateTime, gmail, notion. Scheduled trigger; 14 nodes.

Gmail, Notion, Notion Trigger +1
Email & Gmail

This workflow sends the contents of an email to a Notion database. The email must be labeled with a specific label for the workflow to trigger. The email subject will be the title of the Notion page,

Gmail, Notion, Notion Trigger +1
Email & Gmail

YOUR_ID 4. Uses gmail, googleDrive, googleSheets, httpRequest. Scheduled trigger; 53 nodes.

Gmail, Google Drive, Google Sheets +1