{ "meta": { "instanceId": "a2434c94d549548a685cca39cc4614698e94f527bcea84eefa363f1037ae14cd" }, "nodes": [ { "id": "0bacf032-53d6-4ba6-ab71-e01625c49cc4", "name": "On schedule", "type": "n8n-nodes-base.scheduleTrigger", "position": [ -1960, 160 ], "parameters": { "rule": { "interval": [ { "field": "minutes", "minutesInterval": 1 } ] } }, "typeVersion": 1.1 }, { "id": "2e0d9aef-0a60-4506-9c11-c6c2cccb16ea", "name": "Derive last request time", "type": "n8n-nodes-base.dateTime", "position": [ -1740, 160 ], "parameters": { "duration": 1, "timeUnit": "minutes", "magnitude": "={{ $json.timestamp }}", "operation": "subtractFromDate", "outputFieldName": "last_request_time" }, "typeVersion": 2 }, { "id": "f726c448-b4c4-4159-8ca5-c94c092127b7", "name": "Get emails from label and last request time", "type": "n8n-nodes-base.gmail", "position": [ -1520, 160 ], "parameters": { "filters": { "labelIds": [ "Label_9178764513576607415" ] }, "operation": "getAll", "returnAll": true }, "credentials": { "gmailOAuth2": { "id": "31", "name": "REPLACE ME" } }, "typeVersion": 2 }, { "id": "9b86331f-d33b-4266-ba34-bc0491a0da24", "name": "Create database page", "type": "n8n-nodes-base.notion", "position": [ -620, 60 ], "parameters": { "title": "={{ $('If database page not found').item.json.Subject }}", "blockUi": { "blockValues": [ { "type": "heading_3", "textContent": "Snippet" }, { "textContent": "={{ $('If database page not found').item.json.snippet }}" }, { "text": { "text": [ { "text": "See more", "isLink": true, "textLink": "=https://mail.google.com/mail/u/{{ $json.emailAddress }}/#all/{{ $('If database page not found').item.json.id }}", "annotationUi": {} } ] }, "richText": true } ] }, "options": { "icon": "https://avatars.githubusercontent.com/u/45487711?s=280&v=4", "iconType": "file" }, "resource": "databasePage", "databaseId": { "__rl": true, "mode": "list", "value": "e606a7c1-e93d-47fd-8b8d-8000cd6e7522", "cachedResultUrl": "https://www.notion.so/e606a7c1e93d47fd8b8d8000cd6e7522", "cachedResultName": "Gmail" }, "propertiesUi": { "propertyValues": [ { "key": "Thread ID|rich_text", "textContent": "={{ $('If database page not found').item.json.id }}" }, { "key": "Email thread|url", "urlValue": "=https://mail.google.com/mail/u/{{ $json.emailAddress }}/#all/{{ $('If database page not found').item.json.id }}" } ] } }, "credentials": { "notionApi": { "id": "18", "name": "[UPDATE ME]" } }, "typeVersion": 2 }, { "id": "d7198578-4c83-4f57-8eba-5b5a9b89195c", "name": "Try get database page", "type": "n8n-nodes-base.notion", "position": [ -1360, 220 ], "parameters": { "filters": { "conditions": [ { "key": "Thread ID|rich_text", "condition": "equals", "richTextValue": "={{ $json.id }}" } ] }, "options": {}, "resource": "databasePage", "operation": "getAll", "returnAll": true, "databaseId": { "__rl": true, "mode": "list", "value": "e606a7c1-e93d-47fd-8b8d-8000cd6e7522", "cachedResultUrl": "https://www.notion.so/e606a7c1e93d47fd8b8d8000cd6e7522", "cachedResultName": "My Gmail Tasks" }, "filterType": "manual" }, "credentials": { "notionApi": { "id": "18", "name": "[UPDATE ME]" } }, "typeVersion": 2, "alwaysOutputData": true }, { "id": "f8188ab9-9a80-4aa9-b773-73cd90b8dbd3", "name": "If checked off", "type": "n8n-nodes-base.if", "position": [ -1740, 460 ], "parameters": { "conditions": { "boolean": [ { "value1": "={{ $json.Complete }}", "value2": true } ] } }, "typeVersion": 1 }, { "id": "bfcfeeb1-ad8b-47fb-8a09-b58e7b649a25", "name": "On updated database page", "type": "n8n-nodes-base.notionTrigger", "position": [ -1960, 460 ], "parameters": { "event": "pagedUpdatedInDatabase", "pollTimes": { "item": [ { "mode": "everyMinute" } ] }, "databaseId": { "__rl": true, "mode": "list", "value": "e606a7c1-e93d-47fd-8b8d-8000cd6e7522", "cachedResultUrl": "https://www.notion.so/e606a7c1e93d47fd8b8d8000cd6e7522", "cachedResultName": "My Gmail Tasks" } }, "credentials": { "notionApi": { "id": "18", "name": "[UPDATE ME]" } }, "typeVersion": 1 }, { "id": "dc2c59b8-6e0d-46b3-946a-e48b0461c48f", "name": "Remove label from target email", "type": "n8n-nodes-base.gmail", "position": [ -1520, 460 ], "parameters": { "labelIds": [ "Label_9178764513576607415" ], "messageId": "={{ $json['Thread ID'] }}", "operation": "removeLabels" }, "credentials": { "gmailOAuth2": { "id": "31", "name": "REPLACE ME" } }, "typeVersion": 2 }, { "id": "0f693c2f-ce89-4a2f-a85f-9230b7bcb94d", "name": "Not yet checked off, do nothing", "type": "n8n-nodes-base.noOp", "position": [ -1520, 660 ], "parameters": {}, "typeVersion": 1 }, { "id": "bf792470-fc0a-45a2-b655-df5c977faa97", "name": "Merge", "type": "n8n-nodes-base.merge", "position": [ -1220, 100 ], "parameters": { "mode": "combine", "options": {}, "joinMode": "enrichInput1", "mergeByFields": { "values": [ { "field1": "id", "field2": "property_thread_id" } ] } }, "typeVersion": 2.1 }, { "id": "f910c34c-4c3d-481f-8223-a8aae710dbbd", "name": "If found, do nothing", "type": "n8n-nodes-base.noOp", "position": [ -840, 260 ], "parameters": {}, "typeVersion": 1 }, { "id": "7086cd15-9f2e-40e4-be3b-47d117dde670", "name": "If database page not found", "type": "n8n-nodes-base.if", "position": [ -1060, 160 ], "parameters": { "conditions": { "string": [ { "value1": "={{ $json.property_thread_id }}", "operation": "isEmpty" } ] } }, "typeVersion": 1 }, { "id": "86ce380c-0810-4edb-94e4-fb67b0ca422c", "name": "Find my email address", "type": "n8n-nodes-base.httpRequest", "position": [ -840, 60 ], "parameters": { "url": "https://gmail.googleapis.com/gmail/v1/users/me/profile", "options": {}, "authentication": "predefinedCredentialType", "nodeCredentialType": "gmailOAuth2" }, "credentials": { "gmailOAuth2": { "id": "31", "name": "REPLACE ME" } }, "typeVersion": 4.1 }, { "id": "f576f785-49e4-4ed2-b83e-400b001b6c3a", "name": "Sticky Note", "type": "n8n-nodes-base.stickyNote", "position": [ -2540, 100 ], "parameters": { "width": 501.0810810810809, "height": 545.405405405404, "content": "## Send labeled email to a Notion database\nThis 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, and a snippet of the email body will be the content of the Notion page. The email link will be added to the Notion page as a property.\n\n### How it works\nOn scheduled intervals, find all emails with a specific label. For each email, check if the email already exists in the Notion database. If it does not exist, create a new page in the Notion database, otherwise do nothing. When the task in the Notion database is checked off, the label will be removed from the email.\n\n### Setup\nThis workflow requires that you set up a Notion database or use an existing one with at least the following fields:\n- Title (title)\n- Thread ID (text)\n- Email thread (URL)\n\n\nAdditionally, create a label that will be used to trigger the workflow in Gmail. In this workflow, the label is called \"Notion\"." }, "typeVersion": 1 } ], "connections": { "Merge": { "main": [ [ { "node": "If database page not found", "type": "main", "index": 0 } ] ] }, "On schedule": { "main": [ [ { "node": "Derive last request time", "type": "main", "index": 0 } ] ] }, "If checked off": { "main": [ [ { "node": "Remove label from target email", "type": "main", "index": 0 } ], [ { "node": "Not yet checked off, do nothing", "type": "main", "index": 0 } ] ] }, "Find my email address": { "main": [ [ { "node": "Create database page", "type": "main", "index": 0 } ] ] }, "Try get database page": { "main": [ [ { "node": "Merge", "type": "main", "index": 1 } ] ] }, "Derive last request time": { "main": [ [ { "node": "Get emails from label and last request time", "type": "main", "index": 0 } ] ] }, "On updated database page": { "main": [ [ { "node": "If checked off", "type": "main", "index": 0 } ] ] }, "If database page not found": { "main": [ [ { "node": "Find my email address", "type": "main", "index": 0 } ], [ { "node": "If found, do nothing", "type": "main", "index": 0 } ] ] }, "Get emails from label and last request time": { "main": [ [ { "node": "Try get database page", "type": "main", "index": 0 }, { "node": "Merge", "type": "main", "index": 0 } ] ] } } }