Spaces:
Sleeping
Sleeping
| { | |
| "nodes": [ | |
| { | |
| "id": "4dd52c72-9a9b-4db4-8de5-5b12b1e5c4be", | |
| "name": "Schedule Trigger", | |
| "type": "n8n-nodes-base.scheduleTrigger", | |
| "position": [ | |
| 180, | |
| 1480 | |
| ], | |
| "parameters": { | |
| "rule": { | |
| "interval": [ | |
| { | |
| "triggerAtHour": 9 | |
| } | |
| ] | |
| } | |
| }, | |
| "typeVersion": 1.2 | |
| }, | |
| { | |
| "id": "9226181c-b84c-4ea1-a5b4-eedb6c62037b", | |
| "name": "Search daily", | |
| "type": "n8n-nodes-base.airtable", | |
| "position": [ | |
| 440, | |
| 1480 | |
| ], | |
| "parameters": { | |
| "base": { | |
| "__rl": true, | |
| "mode": "list", | |
| "value": "appL3dptT6ZTSzY9v", | |
| "cachedResultUrl": "https://airtable.com/appL3dptT6ZTSzY9v", | |
| "cachedResultName": "Scheduled Emails" | |
| }, | |
| "table": { | |
| "__rl": true, | |
| "mode": "list", | |
| "value": "tblzR9vSuFUzlQNMI", | |
| "cachedResultUrl": "https://airtable.com/appL3dptT6ZTSzY9v/tblzR9vSuFUzlQNMI", | |
| "cachedResultName": "Table 1" | |
| }, | |
| "options": {}, | |
| "operation": "search", | |
| "filterByFormula": "AND({Status} = 'active', {Interval} = 'daily')" | |
| }, | |
| "credentials": { | |
| "airtableTokenApi": { | |
| "id": "Und0frCQ6SNVX3VV", | |
| "name": "Airtable Personal Access Token account" | |
| } | |
| }, | |
| "typeVersion": 2.1 | |
| }, | |
| { | |
| "id": "1a3b6224-2f66-41c6-8b3d-be286cf16370", | |
| "name": "Search weekly", | |
| "type": "n8n-nodes-base.airtable", | |
| "position": [ | |
| 440, | |
| 1660 | |
| ], | |
| "parameters": { | |
| "base": { | |
| "__rl": true, | |
| "mode": "list", | |
| "value": "appL3dptT6ZTSzY9v", | |
| "cachedResultUrl": "https://airtable.com/appL3dptT6ZTSzY9v", | |
| "cachedResultName": "Scheduled Emails" | |
| }, | |
| "table": { | |
| "__rl": true, | |
| "mode": "list", | |
| "value": "tblzR9vSuFUzlQNMI", | |
| "cachedResultUrl": "https://airtable.com/appL3dptT6ZTSzY9v/tblzR9vSuFUzlQNMI", | |
| "cachedResultName": "Table 1" | |
| }, | |
| "options": {}, | |
| "operation": "search", | |
| "filterByFormula": "=AND(\n {Status} = 'active', \n {Interval} = 'weekly', \n {Last Sent} <= DATEADD(TODAY(), -7, 'days')\n)" | |
| }, | |
| "credentials": { | |
| "airtableTokenApi": { | |
| "id": "Und0frCQ6SNVX3VV", | |
| "name": "Airtable Personal Access Token account" | |
| } | |
| }, | |
| "typeVersion": 2.1 | |
| }, | |
| { | |
| "id": "1ea47e14-0a28-4780-95c7-31e24eb724d5", | |
| "name": "confirmation email1", | |
| "type": "n8n-nodes-base.gmail", | |
| "position": [ | |
| 620, | |
| 820 | |
| ], | |
| "webhookId": "dd8bd6df-2013-4f8d-a2cc-cd9b3913e3d2", | |
| "parameters": { | |
| "sendTo": "={{ $('Subscribe Form').item.json.email }}", | |
| "message": "=This is to confirm your request to subscribe to \"Learn something every day!\" - a free service to send you facts about your favourite topics.\n\nTopic: {{ $('Subscribe Form').item.json.topic }}\nSchedule: {{ $('Subscribe Form').item.json.frequency }}", | |
| "options": { | |
| "appendAttribution": false | |
| }, | |
| "subject": "Learn something every day confirmation" | |
| }, | |
| "credentials": { | |
| "gmailOAuth2": { | |
| "id": "Sf5Gfl9NiFTNXFWb", | |
| "name": "Gmail account" | |
| } | |
| }, | |
| "typeVersion": 2.1 | |
| }, | |
| { | |
| "id": "d95262af-1b52-4f9c-8346-183b4eee8544", | |
| "name": "Execute Workflow", | |
| "type": "n8n-nodes-base.executeWorkflow", | |
| "position": [ | |
| 1140, | |
| 1480 | |
| ], | |
| "parameters": { | |
| "mode": "each", | |
| "options": { | |
| "waitForSubWorkflow": false | |
| }, | |
| "workflowId": { | |
| "__rl": true, | |
| "mode": "id", | |
| "value": "={{ $workflow.id }}" | |
| } | |
| }, | |
| "typeVersion": 1.1 | |
| }, | |
| { | |
| "id": "075292af-7a66-4275-ac2d-3c392189a10c", | |
| "name": "Create Event", | |
| "type": "n8n-nodes-base.set", | |
| "position": [ | |
| 980, | |
| 1480 | |
| ], | |
| "parameters": { | |
| "options": {}, | |
| "assignments": { | |
| "assignments": [ | |
| { | |
| "id": "b28a0142-a028-471a-8180-9883e930feea", | |
| "name": "email", | |
| "type": "string", | |
| "value": "={{ $json.Email }}" | |
| }, | |
| { | |
| "id": "970f5495-05df-42b6-a422-b2ac27f8eb95", | |
| "name": "topic", | |
| "type": "string", | |
| "value": "={{ $json.Topic }}" | |
| }, | |
| { | |
| "id": "e871c431-948f-4b80-aa17-1e4266674663", | |
| "name": "interval", | |
| "type": "string", | |
| "value": "={{ $json.Interval }}" | |
| }, | |
| { | |
| "id": "9b72597d-1446-4ef3-86e5-0a071c69155b", | |
| "name": "id", | |
| "type": "string", | |
| "value": "={{ $json.id }}" | |
| }, | |
| { | |
| "id": "b17039c2-14a2-4811-9528-88ae963e44f7", | |
| "name": "created_at", | |
| "type": "string", | |
| "value": "={{ $json.Created }}" | |
| } | |
| ] | |
| } | |
| }, | |
| "typeVersion": 3.4 | |
| }, | |
| { | |
| "id": "28776aaf-6bd9-4f9f-bcf0-3d4401a74219", | |
| "name": "Execute Workflow Trigger", | |
| "type": "n8n-nodes-base.executeWorkflowTrigger", | |
| "position": [ | |
| 1360, | |
| 1480 | |
| ], | |
| "parameters": {}, | |
| "typeVersion": 1 | |
| }, | |
| { | |
| "id": "0eb62e75-228b-452b-80ab-f9ef3ad33204", | |
| "name": "Unsubscribe Form", | |
| "type": "n8n-nodes-base.formTrigger", | |
| "position": [ | |
| 180, | |
| 1160 | |
| ], | |
| "webhookId": "e64db96d-5e61-40d5-88fb-761621a829ab", | |
| "parameters": { | |
| "options": { | |
| "path": "free-factoids-unsubscribe" | |
| }, | |
| "formTitle": "Unsubscribe from Learn Something Every Day", | |
| "formFields": { | |
| "values": [ | |
| { | |
| "fieldLabel": "ID", | |
| "requiredField": true | |
| }, | |
| { | |
| "fieldType": "dropdown", | |
| "fieldLabel": "Reason For Unsubscribe", | |
| "multiselect": true, | |
| "fieldOptions": { | |
| "values": [ | |
| { | |
| "option": "Emails not relevant" | |
| }, | |
| { | |
| "option": "Too many Emails" | |
| }, | |
| { | |
| "option": "I did not sign up to this service" | |
| } | |
| ] | |
| } | |
| } | |
| ] | |
| }, | |
| "formDescription": "We're sorry to see you go! Please take a moment to help us improve the service." | |
| }, | |
| "typeVersion": 2.2 | |
| }, | |
| { | |
| "id": "f889efe9-dc3c-428b-ad8e-4f7d17f23e75", | |
| "name": "Set Email Vars", | |
| "type": "n8n-nodes-base.set", | |
| "position": [ | |
| 2500, | |
| 1480 | |
| ], | |
| "parameters": { | |
| "options": {}, | |
| "assignments": { | |
| "assignments": [ | |
| { | |
| "id": "62a684fb-16f9-4326-8eeb-777d604b305a", | |
| "name": "to", | |
| "type": "string", | |
| "value": "={{ $('Execute Workflow Trigger').first().json.email }},jim@height.io" | |
| }, | |
| { | |
| "id": "4270849e-c805-4580-9088-e8d1c3ef2fb4", | |
| "name": "subject", | |
| "type": "string", | |
| "value": "=Your {{ $('Execute Workflow Trigger').first().json.interval }} factoid" | |
| }, | |
| { | |
| "id": "81d0e897-2496-4a3c-b16c-9319338f899f", | |
| "name": "message", | |
| "type": "string", | |
| "value": "=<p>\n<strong>You asked about \"{{ $('Execution Data').first().json.topic.replace('\"','') }}\"</strong>\n</p>\n<p>\n<i>{{ $('Content Generation Agent').first().json.output }}</i>\n</p>" | |
| }, | |
| { | |
| "id": "ee05de7b-5342-4deb-8118-edaf235d92cc", | |
| "name": "unsubscribe_link", | |
| "type": "string", | |
| "value": "=https://<MY_HOST>/form/inspiration-unsubscribe?ID={{ $('Execute Workflow Trigger').first().json.id }}" | |
| } | |
| ] | |
| }, | |
| "includeOtherFields": true | |
| }, | |
| "typeVersion": 3.4 | |
| }, | |
| { | |
| "id": "84741e6d-f5be-440d-8633-4eb30ccce170", | |
| "name": "Log Last Sent", | |
| "type": "n8n-nodes-base.airtable", | |
| "position": [ | |
| 2860, | |
| 1480 | |
| ], | |
| "parameters": { | |
| "base": { | |
| "__rl": true, | |
| "mode": "list", | |
| "value": "appL3dptT6ZTSzY9v", | |
| "cachedResultUrl": "https://airtable.com/appL3dptT6ZTSzY9v", | |
| "cachedResultName": "Scheduled Emails" | |
| }, | |
| "table": { | |
| "__rl": true, | |
| "mode": "list", | |
| "value": "tblzR9vSuFUzlQNMI", | |
| "cachedResultUrl": "https://airtable.com/appL3dptT6ZTSzY9v/tblzR9vSuFUzlQNMI", | |
| "cachedResultName": "Table 1" | |
| }, | |
| "columns": { | |
| "value": { | |
| "id": "={{ $('Execute Workflow Trigger').first().json.id }}", | |
| "Last Sent": "2024-11-29T13:34:11" | |
| }, | |
| "schema": [ | |
| { | |
| "id": "id", | |
| "type": "string", | |
| "display": true, | |
| "removed": false, | |
| "readOnly": true, | |
| "required": false, | |
| "displayName": "id", | |
| "defaultMatch": true | |
| }, | |
| { | |
| "id": "Name", | |
| "type": "string", | |
| "display": true, | |
| "removed": true, | |
| "readOnly": false, | |
| "required": false, | |
| "displayName": "Name", | |
| "defaultMatch": false, | |
| "canBeUsedToMatch": true | |
| }, | |
| { | |
| "id": "Email", | |
| "type": "string", | |
| "display": true, | |
| "removed": true, | |
| "readOnly": false, | |
| "required": false, | |
| "displayName": "Email", | |
| "defaultMatch": false, | |
| "canBeUsedToMatch": true | |
| }, | |
| { | |
| "id": "Status", | |
| "type": "options", | |
| "display": true, | |
| "options": [ | |
| { | |
| "name": "inactive", | |
| "value": "inactive" | |
| }, | |
| { | |
| "name": "active", | |
| "value": "active" | |
| } | |
| ], | |
| "removed": true, | |
| "readOnly": false, | |
| "required": false, | |
| "displayName": "Status", | |
| "defaultMatch": false, | |
| "canBeUsedToMatch": true | |
| }, | |
| { | |
| "id": "Interval", | |
| "type": "options", | |
| "display": true, | |
| "options": [ | |
| { | |
| "name": "daily", | |
| "value": "daily" | |
| }, | |
| { | |
| "name": "weekly", | |
| "value": "weekly" | |
| }, | |
| { | |
| "name": "surprise", | |
| "value": "surprise" | |
| } | |
| ], | |
| "removed": true, | |
| "readOnly": false, | |
| "required": false, | |
| "displayName": "Interval", | |
| "defaultMatch": false, | |
| "canBeUsedToMatch": true | |
| }, | |
| { | |
| "id": "Start Day", | |
| "type": "options", | |
| "display": true, | |
| "options": [ | |
| { | |
| "name": "Mon", | |
| "value": "Mon" | |
| }, | |
| { | |
| "name": "Tue", | |
| "value": "Tue" | |
| }, | |
| { | |
| "name": "Wed", | |
| "value": "Wed" | |
| }, | |
| { | |
| "name": "Thu", | |
| "value": "Thu" | |
| }, | |
| { | |
| "name": "Fri", | |
| "value": "Fri" | |
| }, | |
| { | |
| "name": "Sat", | |
| "value": "Sat" | |
| }, | |
| { | |
| "name": "Sun", | |
| "value": "Sun" | |
| } | |
| ], | |
| "removed": true, | |
| "readOnly": false, | |
| "required": false, | |
| "displayName": "Start Day", | |
| "defaultMatch": false, | |
| "canBeUsedToMatch": true | |
| }, | |
| { | |
| "id": "Topic", | |
| "type": "string", | |
| "display": true, | |
| "removed": true, | |
| "readOnly": false, | |
| "required": false, | |
| "displayName": "Topic", | |
| "defaultMatch": false, | |
| "canBeUsedToMatch": true | |
| }, | |
| { | |
| "id": "Created", | |
| "type": "string", | |
| "display": true, | |
| "removed": true, | |
| "readOnly": true, | |
| "required": false, | |
| "displayName": "Created", | |
| "defaultMatch": false, | |
| "canBeUsedToMatch": true | |
| }, | |
| { | |
| "id": "Last Modified", | |
| "type": "string", | |
| "display": true, | |
| "removed": true, | |
| "readOnly": true, | |
| "required": false, | |
| "displayName": "Last Modified", | |
| "defaultMatch": false, | |
| "canBeUsedToMatch": true | |
| }, | |
| { | |
| "id": "Last Sent", | |
| "type": "dateTime", | |
| "display": true, | |
| "removed": false, | |
| "readOnly": false, | |
| "required": false, | |
| "displayName": "Last Sent", | |
| "defaultMatch": false, | |
| "canBeUsedToMatch": true | |
| } | |
| ], | |
| "mappingMode": "defineBelow", | |
| "matchingColumns": [ | |
| "id" | |
| ] | |
| }, | |
| "options": {}, | |
| "operation": "update" | |
| }, | |
| "credentials": { | |
| "airtableTokenApi": { | |
| "id": "Und0frCQ6SNVX3VV", | |
| "name": "Airtable Personal Access Token account" | |
| } | |
| }, | |
| "typeVersion": 2.1 | |
| }, | |
| { | |
| "id": "88f864d6-13fb-4f09-b22d-030d016678e1", | |
| "name": "Search surprise", | |
| "type": "n8n-nodes-base.airtable", | |
| "position": [ | |
| 440, | |
| 1840 | |
| ], | |
| "parameters": { | |
| "base": { | |
| "__rl": true, | |
| "mode": "list", | |
| "value": "appL3dptT6ZTSzY9v", | |
| "cachedResultUrl": "https://airtable.com/appL3dptT6ZTSzY9v", | |
| "cachedResultName": "Scheduled Emails" | |
| }, | |
| "table": { | |
| "__rl": true, | |
| "mode": "list", | |
| "value": "tblzR9vSuFUzlQNMI", | |
| "cachedResultUrl": "https://airtable.com/appL3dptT6ZTSzY9v/tblzR9vSuFUzlQNMI", | |
| "cachedResultName": "Table 1" | |
| }, | |
| "options": {}, | |
| "operation": "search", | |
| "filterByFormula": "=AND(\n {Status} = 'active', \n {Interval} = 'surprise'\n)" | |
| }, | |
| "credentials": { | |
| "airtableTokenApi": { | |
| "id": "Und0frCQ6SNVX3VV", | |
| "name": "Airtable Personal Access Token account" | |
| } | |
| }, | |
| "typeVersion": 2.1 | |
| }, | |
| { | |
| "id": "28238d9a-7bc0-4a22-bb4e-a7a2827e4da3", | |
| "name": "Should Send = True", | |
| "type": "n8n-nodes-base.filter", | |
| "position": [ | |
| 800, | |
| 1840 | |
| ], | |
| "parameters": { | |
| "options": {}, | |
| "conditions": { | |
| "options": { | |
| "version": 2, | |
| "leftValue": "", | |
| "caseSensitive": true, | |
| "typeValidation": "strict" | |
| }, | |
| "combinator": "and", | |
| "conditions": [ | |
| { | |
| "id": "9aaf9ae2-8f96-443a-8294-c04270296b22", | |
| "operator": { | |
| "type": "boolean", | |
| "operation": "true", | |
| "singleValue": true | |
| }, | |
| "leftValue": "={{ $json.should_send }}", | |
| "rightValue": "" | |
| } | |
| ] | |
| } | |
| }, | |
| "typeVersion": 2.2 | |
| }, | |
| { | |
| "id": "3a46dd3d-48a6-40ca-8823-0516aa9f73a4", | |
| "name": "Should Send?", | |
| "type": "n8n-nodes-base.code", | |
| "position": [ | |
| 620, | |
| 1840 | |
| ], | |
| "parameters": { | |
| "mode": "runOnceForEachItem", | |
| "jsCode": "const luckyPick = Math.floor(Math.random() * 10) + 1;\n$input.item.json.should_send = luckyPick == 8;\nreturn $input.item;" | |
| }, | |
| "typeVersion": 2 | |
| }, | |
| { | |
| "id": "3611da19-920b-48e6-84a4-f7be0b3a78fc", | |
| "name": "Create Subscriber", | |
| "type": "n8n-nodes-base.airtable", | |
| "position": [ | |
| 440, | |
| 820 | |
| ], | |
| "parameters": { | |
| "base": { | |
| "__rl": true, | |
| "mode": "list", | |
| "value": "appL3dptT6ZTSzY9v", | |
| "cachedResultUrl": "https://airtable.com/appL3dptT6ZTSzY9v", | |
| "cachedResultName": "Scheduled Emails" | |
| }, | |
| "table": { | |
| "__rl": true, | |
| "mode": "list", | |
| "value": "tblzR9vSuFUzlQNMI", | |
| "cachedResultUrl": "https://airtable.com/appL3dptT6ZTSzY9v/tblzR9vSuFUzlQNMI", | |
| "cachedResultName": "Table 1" | |
| }, | |
| "columns": { | |
| "value": { | |
| "Email": "={{ $json.email }}", | |
| "Topic": "={{ $json.topic }}", | |
| "Status": "active", | |
| "Interval": "={{ $json.frequency }}", | |
| "Start Day": "={{ $json.submittedAt.toDateTime().format('EEE') }}" | |
| }, | |
| "schema": [ | |
| { | |
| "id": "Name", | |
| "type": "string", | |
| "display": true, | |
| "removed": true, | |
| "readOnly": false, | |
| "required": false, | |
| "displayName": "Name", | |
| "defaultMatch": false, | |
| "canBeUsedToMatch": true | |
| }, | |
| { | |
| "id": "Email", | |
| "type": "string", | |
| "display": true, | |
| "removed": false, | |
| "readOnly": false, | |
| "required": false, | |
| "displayName": "Email", | |
| "defaultMatch": false, | |
| "canBeUsedToMatch": true | |
| }, | |
| { | |
| "id": "Status", | |
| "type": "options", | |
| "display": true, | |
| "options": [ | |
| { | |
| "name": "inactive", | |
| "value": "inactive" | |
| }, | |
| { | |
| "name": "active", | |
| "value": "active" | |
| } | |
| ], | |
| "removed": false, | |
| "readOnly": false, | |
| "required": false, | |
| "displayName": "Status", | |
| "defaultMatch": false, | |
| "canBeUsedToMatch": true | |
| }, | |
| { | |
| "id": "Interval", | |
| "type": "options", | |
| "display": true, | |
| "options": [ | |
| { | |
| "name": "daily", | |
| "value": "daily" | |
| }, | |
| { | |
| "name": "weekly", | |
| "value": "weekly" | |
| }, | |
| { | |
| "name": "surprise", | |
| "value": "surprise" | |
| } | |
| ], | |
| "removed": false, | |
| "readOnly": false, | |
| "required": false, | |
| "displayName": "Interval", | |
| "defaultMatch": false, | |
| "canBeUsedToMatch": true | |
| }, | |
| { | |
| "id": "Start Day", | |
| "type": "options", | |
| "display": true, | |
| "options": [ | |
| { | |
| "name": "Mon", | |
| "value": "Mon" | |
| }, | |
| { | |
| "name": "Tue", | |
| "value": "Tue" | |
| }, | |
| { | |
| "name": "Wed", | |
| "value": "Wed" | |
| }, | |
| { | |
| "name": "Thu", | |
| "value": "Thu" | |
| }, | |
| { | |
| "name": "Fri", | |
| "value": "Fri" | |
| }, | |
| { | |
| "name": "Sat", | |
| "value": "Sat" | |
| }, | |
| { | |
| "name": "Sun", | |
| "value": "Sun" | |
| } | |
| ], | |
| "removed": false, | |
| "readOnly": false, | |
| "required": false, | |
| "displayName": "Start Day", | |
| "defaultMatch": false, | |
| "canBeUsedToMatch": true | |
| }, | |
| { | |
| "id": "Topic", | |
| "type": "string", | |
| "display": true, | |
| "removed": false, | |
| "readOnly": false, | |
| "required": false, | |
| "displayName": "Topic", | |
| "defaultMatch": false, | |
| "canBeUsedToMatch": true | |
| }, | |
| { | |
| "id": "Created", | |
| "type": "string", | |
| "display": true, | |
| "removed": true, | |
| "readOnly": true, | |
| "required": false, | |
| "displayName": "Created", | |
| "defaultMatch": false, | |
| "canBeUsedToMatch": true | |
| }, | |
| { | |
| "id": "Last Modified", | |
| "type": "string", | |
| "display": true, | |
| "removed": true, | |
| "readOnly": true, | |
| "required": false, | |
| "displayName": "Last Modified", | |
| "defaultMatch": false, | |
| "canBeUsedToMatch": true | |
| }, | |
| { | |
| "id": "Last Sent", | |
| "type": "dateTime", | |
| "display": true, | |
| "removed": true, | |
| "readOnly": false, | |
| "required": false, | |
| "displayName": "Last Sent", | |
| "defaultMatch": false, | |
| "canBeUsedToMatch": true | |
| } | |
| ], | |
| "mappingMode": "defineBelow", | |
| "matchingColumns": [ | |
| "Email" | |
| ] | |
| }, | |
| "options": {}, | |
| "operation": "upsert" | |
| }, | |
| "credentials": { | |
| "airtableTokenApi": { | |
| "id": "Und0frCQ6SNVX3VV", | |
| "name": "Airtable Personal Access Token account" | |
| } | |
| }, | |
| "typeVersion": 2.1 | |
| }, | |
| { | |
| "id": "2213a81f-53a9-4142-9586-e87b88710eec", | |
| "name": "Update Subscriber", | |
| "type": "n8n-nodes-base.airtable", | |
| "position": [ | |
| 440, | |
| 1160 | |
| ], | |
| "parameters": { | |
| "base": { | |
| "__rl": true, | |
| "mode": "list", | |
| "value": "appL3dptT6ZTSzY9v", | |
| "cachedResultUrl": "https://airtable.com/appL3dptT6ZTSzY9v", | |
| "cachedResultName": "Scheduled Emails" | |
| }, | |
| "table": { | |
| "__rl": true, | |
| "mode": "list", | |
| "value": "tblzR9vSuFUzlQNMI", | |
| "cachedResultUrl": "https://airtable.com/appL3dptT6ZTSzY9v/tblzR9vSuFUzlQNMI", | |
| "cachedResultName": "Table 1" | |
| }, | |
| "columns": { | |
| "value": { | |
| "id": "={{ $json.ID }}", | |
| "Status": "inactive" | |
| }, | |
| "schema": [ | |
| { | |
| "id": "id", | |
| "type": "string", | |
| "display": true, | |
| "removed": false, | |
| "readOnly": true, | |
| "required": false, | |
| "displayName": "id", | |
| "defaultMatch": true | |
| }, | |
| { | |
| "id": "Name", | |
| "type": "string", | |
| "display": true, | |
| "removed": true, | |
| "readOnly": false, | |
| "required": false, | |
| "displayName": "Name", | |
| "defaultMatch": false, | |
| "canBeUsedToMatch": true | |
| }, | |
| { | |
| "id": "Email", | |
| "type": "string", | |
| "display": true, | |
| "removed": true, | |
| "readOnly": false, | |
| "required": false, | |
| "displayName": "Email", | |
| "defaultMatch": false, | |
| "canBeUsedToMatch": true | |
| }, | |
| { | |
| "id": "Status", | |
| "type": "options", | |
| "display": true, | |
| "options": [ | |
| { | |
| "name": "inactive", | |
| "value": "inactive" | |
| }, | |
| { | |
| "name": "active", | |
| "value": "active" | |
| } | |
| ], | |
| "removed": false, | |
| "readOnly": false, | |
| "required": false, | |
| "displayName": "Status", | |
| "defaultMatch": false, | |
| "canBeUsedToMatch": true | |
| }, | |
| { | |
| "id": "Interval", | |
| "type": "options", | |
| "display": true, | |
| "options": [ | |
| { | |
| "name": "daily", | |
| "value": "daily" | |
| }, | |
| { | |
| "name": "weekly", | |
| "value": "weekly" | |
| } | |
| ], | |
| "removed": true, | |
| "readOnly": false, | |
| "required": false, | |
| "displayName": "Interval", | |
| "defaultMatch": false, | |
| "canBeUsedToMatch": true | |
| }, | |
| { | |
| "id": "Start Day", | |
| "type": "options", | |
| "display": true, | |
| "options": [ | |
| { | |
| "name": "Mon", | |
| "value": "Mon" | |
| }, | |
| { | |
| "name": "Tue", | |
| "value": "Tue" | |
| }, | |
| { | |
| "name": "Wed", | |
| "value": "Wed" | |
| }, | |
| { | |
| "name": "Thu", | |
| "value": "Thu" | |
| }, | |
| { | |
| "name": "Fri", | |
| "value": "Fri" | |
| }, | |
| { | |
| "name": "Sat", | |
| "value": "Sat" | |
| }, | |
| { | |
| "name": "Sun", | |
| "value": "Sun" | |
| } | |
| ], | |
| "removed": true, | |
| "readOnly": false, | |
| "required": false, | |
| "displayName": "Start Day", | |
| "defaultMatch": false, | |
| "canBeUsedToMatch": true | |
| }, | |
| { | |
| "id": "Topic", | |
| "type": "string", | |
| "display": true, | |
| "removed": true, | |
| "readOnly": false, | |
| "required": false, | |
| "displayName": "Topic", | |
| "defaultMatch": false, | |
| "canBeUsedToMatch": true | |
| }, | |
| { | |
| "id": "Created", | |
| "type": "string", | |
| "display": true, | |
| "removed": true, | |
| "readOnly": true, | |
| "required": false, | |
| "displayName": "Created", | |
| "defaultMatch": false, | |
| "canBeUsedToMatch": true | |
| }, | |
| { | |
| "id": "Last Modified", | |
| "type": "string", | |
| "display": true, | |
| "removed": true, | |
| "readOnly": true, | |
| "required": false, | |
| "displayName": "Last Modified", | |
| "defaultMatch": false, | |
| "canBeUsedToMatch": true | |
| } | |
| ], | |
| "mappingMode": "defineBelow", | |
| "matchingColumns": [ | |
| "id" | |
| ] | |
| }, | |
| "options": {}, | |
| "operation": "update" | |
| }, | |
| "credentials": { | |
| "airtableTokenApi": { | |
| "id": "Und0frCQ6SNVX3VV", | |
| "name": "Airtable Personal Access Token account" | |
| } | |
| }, | |
| "typeVersion": 2.1 | |
| }, | |
| { | |
| "id": "c94ec18b-e0cf-4859-8b89-23abdd63739c", | |
| "name": "Sticky Note", | |
| "type": "n8n-nodes-base.stickyNote", | |
| "position": [ | |
| 900, | |
| 1280 | |
| ], | |
| "parameters": { | |
| "color": 7, | |
| "width": 335, | |
| "height": 173, | |
| "content": "### 4. Using Subworkflows to run executions concurrently\nThis configuration is desired when sequential execution is slow and unnecessary. Also if one email fails, it doesn't fail the execution for everyone else." | |
| }, | |
| "typeVersion": 1 | |
| }, | |
| { | |
| "id": "c14cab28-13eb-4d91-8578-8187a95a8909", | |
| "name": "Sticky Note1", | |
| "type": "n8n-nodes-base.stickyNote", | |
| "position": [ | |
| 180, | |
| 700 | |
| ], | |
| "parameters": { | |
| "color": 7, | |
| "width": 380, | |
| "height": 80, | |
| "content": "### 1. Subscribe flow\nUse a form to allow users to subscribe to the service." | |
| }, | |
| "typeVersion": 1 | |
| }, | |
| { | |
| "id": "0e44ada0-f8a7-440e-aded-33b446190a08", | |
| "name": "Sticky Note2", | |
| "type": "n8n-nodes-base.stickyNote", | |
| "position": [ | |
| 180, | |
| 1020 | |
| ], | |
| "parameters": { | |
| "color": 7, | |
| "width": 355, | |
| "height": 115, | |
| "content": "### 2. Unsubscribe flow\n* Uses Form's pre-fill field feature to identify user\n* Doesn't use \"email\" as identifier so you can't unsubscribe others" | |
| }, | |
| "typeVersion": 1 | |
| }, | |
| { | |
| "id": "e67bdffe-ccfc-4818-990d-b2a5ab613035", | |
| "name": "Sticky Note3", | |
| "type": "n8n-nodes-base.stickyNote", | |
| "position": [ | |
| 180, | |
| 1340 | |
| ], | |
| "parameters": { | |
| "color": 7, | |
| "width": 347, | |
| "height": 114, | |
| "content": "### 3. Scheduled Trigger\n* Runs every day at 9am\n* Handles all 3 frequency types\n* Send emails concurrently" | |
| }, | |
| "typeVersion": 1 | |
| }, | |
| { | |
| "id": "ce7d5310-7170-46d3-b8d8-3f97407f9dfd", | |
| "name": "Subscribe Form", | |
| "type": "n8n-nodes-base.formTrigger", | |
| "position": [ | |
| 180, | |
| 820 | |
| ], | |
| "webhookId": "c6abe3e3-ba87-4124-a227-84e253581b58", | |
| "parameters": { | |
| "options": { | |
| "path": "free-factoids-subscribe", | |
| "appendAttribution": false, | |
| "respondWithOptions": { | |
| "values": { | |
| "formSubmittedText": "Thanks! Your factoid is on its way!" | |
| } | |
| } | |
| }, | |
| "formTitle": "Learn something every day!", | |
| "formFields": { | |
| "values": [ | |
| { | |
| "fieldType": "textarea", | |
| "fieldLabel": "topic", | |
| "placeholder": "What topic(s) would you like to learn about?", | |
| "requiredField": true | |
| }, | |
| { | |
| "fieldType": "email", | |
| "fieldLabel": "email", | |
| "placeholder": "eg. jim@example.com", | |
| "requiredField": true | |
| }, | |
| { | |
| "fieldType": "dropdown", | |
| "fieldLabel": "frequency", | |
| "fieldOptions": { | |
| "values": [ | |
| { | |
| "option": "daily" | |
| }, | |
| { | |
| "option": "weekly" | |
| }, | |
| { | |
| "option": "surprise me" | |
| } | |
| ] | |
| }, | |
| "requiredField": true | |
| } | |
| ] | |
| }, | |
| "formDescription": "Get a fact a day (or week) about any subject sent to your inbox." | |
| }, | |
| "typeVersion": 2.2 | |
| }, | |
| { | |
| "id": "a5d50886-7d6b-4bf8-b376-b23c12a60608", | |
| "name": "Execution Data", | |
| "type": "n8n-nodes-base.executionData", | |
| "position": [ | |
| 1560, | |
| 1480 | |
| ], | |
| "parameters": { | |
| "dataToSave": { | |
| "values": [ | |
| { | |
| "key": "email", | |
| "value": "={{ $json.email }}" | |
| } | |
| ] | |
| } | |
| }, | |
| "typeVersion": 1 | |
| }, | |
| { | |
| "id": "69b40d8d-7734-47f1-89fe-9ea0378424b7", | |
| "name": "Window Buffer Memory", | |
| "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow", | |
| "position": [ | |
| 1860, | |
| 1680 | |
| ], | |
| "parameters": { | |
| "sessionKey": "=scheduled_send_{{ $json.email }}", | |
| "sessionIdType": "customKey" | |
| }, | |
| "typeVersion": 1.3 | |
| }, | |
| { | |
| "id": "f83cff18-f41f-4a63-9d43-7e3947aae386", | |
| "name": "Wikipedia", | |
| "type": "@n8n/n8n-nodes-langchain.toolWikipedia", | |
| "position": [ | |
| 2020, | |
| 1680 | |
| ], | |
| "parameters": {}, | |
| "typeVersion": 1 | |
| }, | |
| { | |
| "id": "77457037-e3ab-42f1-948b-b994d42f2f6e", | |
| "name": "Content Generation Agent", | |
| "type": "@n8n/n8n-nodes-langchain.agent", | |
| "position": [ | |
| 1780, | |
| 1460 | |
| ], | |
| "parameters": { | |
| "text": "=Generate an new factoid on the following topic: \"{{ $json.topic.replace('\"','') }}\"\nEnsure it is unique and not one generated previously.", | |
| "options": {}, | |
| "promptType": "define" | |
| }, | |
| "typeVersion": 1.7 | |
| }, | |
| { | |
| "id": "cdfdd870-48b6-4c7d-a7d1-a22d70423e37", | |
| "name": "Groq Chat Model", | |
| "type": "@n8n/n8n-nodes-langchain.lmChatGroq", | |
| "position": [ | |
| 1720, | |
| 1680 | |
| ], | |
| "parameters": { | |
| "model": "llama-3.3-70b-versatile", | |
| "options": {} | |
| }, | |
| "credentials": { | |
| "groqApi": { | |
| "id": "02xZ4o87lUMUFmbT", | |
| "name": "Groq account" | |
| } | |
| }, | |
| "typeVersion": 1 | |
| }, | |
| { | |
| "id": "87df322d-a544-476f-b2ff-83feb619fe7f", | |
| "name": "Generate Image", | |
| "type": "@n8n/n8n-nodes-langchain.openAi", | |
| "position": [ | |
| 2120, | |
| 1460 | |
| ], | |
| "parameters": { | |
| "prompt": "=Generate a child-friendly illustration which compliments the following paragraph:\n{{ $json.output }}", | |
| "options": {}, | |
| "resource": "image" | |
| }, | |
| "credentials": { | |
| "openAiApi": { | |
| "id": "8gccIjcuf3gvaoEr", | |
| "name": "OpenAi account" | |
| } | |
| }, | |
| "typeVersion": 1.7 | |
| }, | |
| { | |
| "id": "5c8d9e72-4015-44da-b5d5-829864d33672", | |
| "name": "Resize Image", | |
| "type": "n8n-nodes-base.editImage", | |
| "position": [ | |
| 2280, | |
| 1460 | |
| ], | |
| "parameters": { | |
| "width": 480, | |
| "height": 360, | |
| "options": {}, | |
| "operation": "resize" | |
| }, | |
| "typeVersion": 1 | |
| }, | |
| { | |
| "id": "a9939fad-98b3-4894-aae0-c11fa40d09da", | |
| "name": "Send Message", | |
| "type": "n8n-nodes-base.gmail", | |
| "position": [ | |
| 2680, | |
| 1480 | |
| ], | |
| "webhookId": "dd8bd6df-2013-4f8d-a2cc-cd9b3913e3d2", | |
| "parameters": { | |
| "sendTo": "={{ $json.to }}", | |
| "message": "=<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n <title>{{ $json.subject }}</title>\n</head>\n<body>\n {{ $json.message }}\n<p>\n<a href=\"{{ $json.unsubscribe_link }}\">Unsubscribe</a>\n</p>\n</body>\n</html>\n", | |
| "options": { | |
| "attachmentsUi": { | |
| "attachmentsBinary": [ | |
| {} | |
| ] | |
| }, | |
| "appendAttribution": false | |
| }, | |
| "subject": "={{ $json.subject }}" | |
| }, | |
| "credentials": { | |
| "gmailOAuth2": { | |
| "id": "Sf5Gfl9NiFTNXFWb", | |
| "name": "Gmail account" | |
| } | |
| }, | |
| "typeVersion": 2.1 | |
| }, | |
| { | |
| "id": "10b6ad35-fc1c-47a2-b234-5de3557d1164", | |
| "name": "Sticky Note4", | |
| "type": "n8n-nodes-base.stickyNote", | |
| "position": [ | |
| 1320, | |
| 1660 | |
| ], | |
| "parameters": { | |
| "color": 7, | |
| "width": 335, | |
| "height": 113, | |
| "content": "### 5. Use Execution Data to Filter Logs\nIf you've registered for community+ or are on n8n cloud, best practice is to use execution node to allow filtering of execution logs." | |
| }, | |
| "typeVersion": 1 | |
| }, | |
| { | |
| "id": "e3563fae-ff35-457b-9fb1-784eda637518", | |
| "name": "Sticky Note5", | |
| "type": "n8n-nodes-base.stickyNote", | |
| "position": [ | |
| 1780, | |
| 1280 | |
| ], | |
| "parameters": { | |
| "color": 7, | |
| "width": 340, | |
| "height": 140, | |
| "content": "### 6. Use AI to Generate Factoid and Image\nUse an AI agent to automate the generation of factoids as requested by the user. This is a simple example but we recommend a adding a unique touch to stand out from the crowd!" | |
| }, | |
| "typeVersion": 1 | |
| }, | |
| { | |
| "id": "d1016c5d-c855-44c5-8ad3-a534bedaa8cf", | |
| "name": "Sticky Note6", | |
| "type": "n8n-nodes-base.stickyNote", | |
| "position": [ | |
| 2500, | |
| 1040 | |
| ], | |
| "parameters": { | |
| "color": 7, | |
| "width": 460, | |
| "height": 400, | |
| "content": "### 7. Send Email to User\nFinally, send a message to the user with both text and image.\nLog the event in the Airtable for later analysis if required.\n\n" | |
| }, | |
| "typeVersion": 1 | |
| }, | |
| { | |
| "id": "773075fa-e5a2-4d4f-8527-eb07c7038b00", | |
| "name": "Sticky Note7", | |
| "type": "n8n-nodes-base.stickyNote", | |
| "position": [ | |
| -420, | |
| 680 | |
| ], | |
| "parameters": { | |
| "width": 480, | |
| "height": 900, | |
| "content": "## Try It Out!\n\n### This n8n templates demonstrates how to build a simple subscriber service entirely in n8n using n8n forms as a frontend, n8n generally as the backend and Airtable as the storage layer.\n\nThis template in particular shows a fully automated service to send automated messages containing facts about a topic the user requested for.\n\n### How it works\n* An n8n form is setup up to allow users to subscribe with a desired topic and interval of which to recieve messages via n8n forms which is then added to the Airtable.\n* A scheduled trigger is executed every morning and searches for subscribers to send messages for based on their desired intervals.\n* Once found, Subscribers are sent to a subworkflow which performs the text content generation via an AI agent and also uses a vision model to generate an image.\n* Both are attached to an email which is sent to the subscriber. This email also includes an unsubscribe link.\n* The unsubscribe flow works similarly via n8n form interface which when submitted disables further scheduled emails to the user.\n\n## How to use\n* Make a copy of sample Airtable here: https://airtable.com/appL3dptT6ZTSzY9v/shrLukHafy5bwDRfD\n* Make sure the workflow is \"activated\" and the forms are available and reachable by your audience.\n\n\n### Need Help?\nJoin the [Discord](https://discord.com/invite/XPKeKXeB7d) or ask in the [Forum](https://community.n8n.io/)!\n\nHappy Hacking!" | |
| }, | |
| "typeVersion": 1 | |
| } | |
| ], | |
| "pinData": {}, | |
| "connections": { | |
| "Wikipedia": { | |
| "ai_tool": [ | |
| [ | |
| { | |
| "node": "Content Generation Agent", | |
| "type": "ai_tool", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "Create Event": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "Execute Workflow", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "Resize Image": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "Set Email Vars", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "Search daily": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "Create Event", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "Send Message": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "Log Last Sent", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "Should Send?": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "Should Send = True", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "Search weekly": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "Create Event", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "Execution Data": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "Content Generation Agent", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "Generate Image": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "Resize Image", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "Set Email Vars": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "Send Message", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "Subscribe Form": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "Create Subscriber", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "Groq Chat Model": { | |
| "ai_languageModel": [ | |
| [ | |
| { | |
| "node": "Content Generation Agent", | |
| "type": "ai_languageModel", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "Search surprise": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "Should Send?", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "Schedule Trigger": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "Search surprise", | |
| "type": "main", | |
| "index": 0 | |
| }, | |
| { | |
| "node": "Search daily", | |
| "type": "main", | |
| "index": 0 | |
| }, | |
| { | |
| "node": "Search weekly", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "Unsubscribe Form": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "Update Subscriber", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "Create Subscriber": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "confirmation email1", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "Should Send = True": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "Create Event", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "Window Buffer Memory": { | |
| "ai_memory": [ | |
| [ | |
| { | |
| "node": "Content Generation Agent", | |
| "type": "ai_memory", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "Content Generation Agent": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "Generate Image", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| }, | |
| "Execute Workflow Trigger": { | |
| "main": [ | |
| [ | |
| { | |
| "node": "Execution Data", | |
| "type": "main", | |
| "index": 0 | |
| } | |
| ] | |
| ] | |
| } | |
| } | |
| } |