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 →
{
"id": "YCQFaJdmJc6Rx4o7",
"name": "Sync Jira issues with subsequent comments to Notion database",
"tags": [
{
"id": "24",
"name": "n8n team",
"createdAt": "2023-02-28T11:17:04.513Z",
"updatedAt": "2023-02-28T11:17:04.513Z"
}
],
"nodes": [
{
"id": "3f36dc12-5011-4786-aa21-f20ba72944df",
"name": "Create database page",
"type": "n8n-nodes-base.notion",
"position": [
460,
460
],
"parameters": {
"title": "={{$node[\"On issues created/updated/deleted\"].json[\"issue\"][\"fields\"][\"summary\"]}}",
"options": {},
"resource": "databasePage",
"databaseId": "e3503d88-accb-4ddb-aa45-f962cb03e729",
"propertiesUi": {
"propertyValues": [
{
"key": "Issue Key|rich_text",
"textContent": "={{$node[\"On issues created/updated/deleted\"].json[\"issue\"][\"key\"]}}"
},
{
"key": "Issue ID|number",
"numberValue": "={{parseInt($node[\"On issues created/updated/deleted\"].json[\"issue\"][\"id\"])}}"
},
{
"key": "Link|url",
"urlValue": "=https://n8n-io.atlassian.net/browse/{{$node[\"On issues created/updated/deleted\"].json[\"issue\"][\"key\"]}}",
"ignoreIfEmpty": true
},
{
"key": "Status|select",
"selectValue": "={{$node[\"Lookup table\"].json[\"Status ID\"]}}"
}
]
}
},
"credentials": {
"notionApi": {
"name": "<your credential>"
}
},
"typeVersion": 2
},
{
"id": "2d13b713-dd3d-48aa-a550-fe8db1e7aafd",
"name": "Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
660,
460
],
"parameters": {
"width": 232.65822784810126,
"height": 137.9746835443038,
"content": "### `IF` & `Switch` nodes\nThese conditional nodes (`IF` and `Switch`) determine which Notion [**CRUD**](https://www.sumologic.com/glossary/crud/) operations will be performed."
},
"typeVersion": 1
},
{
"id": "374761f7-9299-41a3-8bb3-25434f4f9eaf",
"name": "Find database page",
"type": "n8n-nodes-base.notion",
"position": [
660,
660
],
"parameters": {
"options": {},
"resource": "databasePage",
"operation": "getAll",
"returnAll": true,
"databaseId": "e3503d88-accb-4ddb-aa45-f962cb03e729",
"filterJson": "={{$node[\"Create custom Notion filters\"].json[\"notionfilter\"]}}",
"filterType": "json"
},
"credentials": {
"notionApi": {
"name": "<your credential>"
}
},
"typeVersion": 2
},
{
"id": "159db4ca-c8da-439a-aa44-63527c7b9dcd",
"name": "Switch",
"type": "n8n-nodes-base.switch",
"position": [
860,
660
],
"parameters": {
"rules": {
"rules": [
{
"value2": "jira:issue_updated"
},
{
"output": 1,
"value2": "jira:issue_deleted"
}
]
},
"value1": "={{$node[\"On issues created/updated/deleted\"].json[\"webhookEvent\"]}}",
"dataType": "string"
},
"typeVersion": 1
},
{
"id": "080fb157-e160-4bf0-9348-05eabee60f9f",
"name": "IF",
"type": "n8n-nodes-base.if",
"position": [
240,
560
],
"parameters": {
"conditions": {
"string": [
{
"value1": "={{$node[\"On issues created/updated/deleted\"].json[\"webhookEvent\"]}}",
"value2": "jira:issue_created"
}
]
}
},
"typeVersion": 1
},
{
"id": "3ec2a130-251d-4d28-8dc3-ca31f528f90e",
"name": "Delete issue",
"type": "n8n-nodes-base.notion",
"position": [
1080,
760
],
"parameters": {
"pageId": "={{ $node[\"Find database page\"].json[\"id\"] }}",
"operation": "archive"
},
"credentials": {
"notionApi": {
"name": "<your credential>"
}
},
"typeVersion": 2
},
{
"id": "5a23919a-ee95-4935-b619-5eb0b486eef7",
"name": "On issues created/updated/deleted",
"type": "n8n-nodes-base.jiraTrigger",
"position": [
-160,
560
],
"parameters": {
"events": [
"jira:issue_created",
"jira:issue_deleted",
"jira:issue_updated"
],
"additionalFields": {}
},
"credentials": {
"jiraSoftwareCloudApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "6d3bbfce-cbfc-4590-827b-4ec1eb5c11b6",
"name": "Lookup table",
"type": "n8n-nodes-base.code",
"position": [
40,
560
],
"parameters": {
"jsCode": "/* Lookup table for the statuses in Jira. You can find the status IDs by\n following the instructions provided at this link:\n https://community.atlassian.com/t5/Jira-Service-Management/How-do-I-get-a-list-of-statuses-that-show-the-associated-status/qaq-p/1803682\n*/\nvar lookup = {\n \"To Do\": \"To do\",\n \"In Progress\": \"In progress\",\n \"Done\": \"Done\"\n};\n\n\n\nnew_items = [];\n\nfor (item of $items(\"On issues created/updated/deleted\")) {\n console.log(item.json[\"Status\"]);\n // instantiate a new variable for status\n var issue_status = item.json[\"issue\"][\"fields\"][\"status\"][\"name\"];\n // check if the status is in the lookup table\n if (issue_status in lookup) {\n // if it is, then add the status ID to the new_items array\n new_items.push({\n \"Status ID\": lookup[issue_status]\n });\n }\n}\n\nreturn new_items;"
},
"typeVersion": 2
},
{
"id": "bdc966ce-16bf-47de-aba3-fcd0f912f95f",
"name": "Create custom Notion filters",
"type": "n8n-nodes-base.code",
"position": [
460,
660
],
"parameters": {
"jsCode": "const new_items = [];\nfor (item of $items(\"On issues created/updated/deleted\")) {\n\n // do not process this item if action is created\n if (item.json[\"webhookEvent\"] == \"jira:issue_created\") {\n continue;\n }\n\n // build the output template\n var new_item = {\n \"json\": {\n \"notionfilter\": \"\"\n }\n };\n new_item = JSON.stringify(new_item);\n new_item = JSON.parse(new_item);\n new_items.push(new_item);\n\n // create Notion filter to find specific database page by issue ID\n notionfilter = {\n or: [],\n }\n\n const filter = {\n property: 'Issue ID',\n number: {\n equals: parseInt(item.json[\"issue\"][\"id\"])\n }\n }\n notionfilter[\"or\"].push(filter);\n\n new_item.json.notionfilter = JSON.stringify(notionfilter); \n}\n\nreturn new_items;"
},
"typeVersion": 2
},
{
"id": "f92157a9-1a63-4907-87c8-0b54c3b0ac8e",
"name": "Update issue",
"type": "n8n-nodes-base.notion",
"position": [
1080,
560
],
"parameters": {
"pageId": "={{ $node[\"Find database page\"].json[\"id\"] }}",
"options": {},
"resource": "databasePage",
"operation": "update",
"propertiesUi": {
"propertyValues": [
{
"key": "Title|title",
"title": "={{$node[\"On issues created/updated/deleted\"].json[\"issue\"][\"fields\"][\"summary\"]}}"
},
{
"key": "Status|select",
"selectValue": "={{$node[\"Lookup table\"].json[\"Status ID\"]}}"
}
]
}
},
"credentials": {
"notionApi": {
"name": "<your credential>"
}
},
"typeVersion": 2
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "490138aa-d92d-439a-b7bb-d6d00a9fab86",
"connections": {
"IF": {
"main": [
[
{
"node": "Create database page",
"type": "main",
"index": 0
}
],
[
{
"node": "Create custom Notion filters",
"type": "main",
"index": 0
}
]
]
},
"Switch": {
"main": [
[
{
"node": "Update issue",
"type": "main",
"index": 0
}
],
[
{
"node": "Delete issue",
"type": "main",
"index": 0
}
]
]
},
"Lookup table": {
"main": [
[
{
"node": "IF",
"type": "main",
"index": 0
}
]
]
},
"Find database page": {
"main": [
[
{
"node": "Switch",
"type": "main",
"index": 0
}
]
]
},
"Create custom Notion filters": {
"main": [
[
{
"node": "Find database page",
"type": "main",
"index": 0
}
]
]
},
"On issues created/updated/deleted": {
"main": [
[
{
"node": "Lookup table",
"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.
jiraSoftwareCloudApinotionApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
How this works
Effortlessly maintain a unified view of your project tasks by automatically syncing Jira issues, along with their subsequent comments, into a Notion database, saving hours of manual data entry and ensuring your team stays aligned across tools. This workflow suits project managers and developers who rely on Jira for issue tracking but prefer Notion's flexible databases for collaboration and reporting. The key step involves the Jira trigger capturing issue creations, updates, or deletions, followed by targeted Notion actions to create, update, or remove pages while appending comments seamlessly.
Use this workflow when you need real-time mirroring of Jira activity into Notion for cross-team visibility, especially in agile environments with frequent issue changes. Avoid it for static archives or if your Jira setup involves complex custom fields that require custom mapping, as the default handles standard fields only. Common variations include adding filters in the switch node to sync specific issue types or integrating email notifications for high-priority updates.
About this workflow
Sync Jira issues with subsequent comments to Notion database. Uses notion, stickyNote, jiraTrigger. Event-driven trigger; 10 nodes.
Source: https://github.com/Zie619/n8n-workflows — 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.
Sync Jira Issues With Subsequent Comments To Notion Database. Uses notion, stickyNote, jiraTrigger. Event-driven trigger; 10 nodes.
This workflow creates/updates/deletes a Notion database page when an issue is created/updated/deleted in Jira. Subsequent updates to the issue's title or status in Jira are updated in the Notion datab
Sync your Google Contacts with your Notion database.
This enables webhooks for nearly realtime updates (every 5 seconds) from Notion Databases.
Overview Seamlessly transfer your Notion contacts to Google Contacts with organized group labels, simplifying your CRM management.