This workflow follows the Form Trigger → Gmail 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 →
{
"name": "Signup Intake \u2192 CRM triage",
"nodes": [
{
"parameters": {
"content": "## Signup Intake \u2192 CRM triage\n\nA generic **intake door** for inbound people. Two ways in, one pipeline, a human in the loop.\n\n**Teaching idea:** n8n is useful far beyond any one product. This flow shows how *any* organisation (or a single person) can capture inbound interest \u2014 **with or without a website** \u2014 and route it to a human, without writing a backend.\n\n**Two doors:**\n1. **Waitlist Webhook** \u2014 for senders that *have* a site (e.g. the promptpotter-web `/api/waitlist` function POSTs here, setting its own `source`).\n2. **Hosted Signup Form** \u2014 n8n renders a public form page for you. No website, no code. Bookmark / share / QR the form URL.\n\nBoth land in the **Signups** sheet (NOT the CRM). The CRM (**Entries**) is only *read* \u2014 unless you tap **Add to CRM** in Telegram.",
"height": 420,
"width": 460,
"color": 4
},
"id": "a1b2c3d4-0010-4010-8010-000000000010",
"name": "Overview",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-460,
120
]
},
{
"parameters": {
"content": "### Door 1 \u2014 site senders\n\n`POST /webhook/signup-intake`\n\nBody: `{ email, name, use_case, signup_source }`\n\nThe sender (e.g. promptpotter-web) sets `signup_source`. Responds immediately, then processes async.",
"height": 260,
"width": 300,
"color": 7
},
"id": "a1b2c3d4-0011-4011-8011-000000000011",
"name": "Door 1 label",
"type": "n8n-nodes-base.stickyNote",
"position": [
40,
-120
]
},
{
"parameters": {
"content": "### Door 2 \u2014 no website needed\n\nThe **Form Trigger** makes n8n host a public signup page. The form URL is your shareable / bookmarkable link \u2014 that's the whole 'no website' trick.\n\nField labels here MUST match the keys read in *Normalize (Form)*.",
"height": 260,
"width": 300,
"color": 7
},
"id": "a1b2c3d4-0012-4012-8012-000000000012",
"name": "Door 2 label",
"type": "n8n-nodes-base.stickyNote",
"position": [
40,
600
]
},
{
"parameters": {
"content": "### Human in the loop\n\nTelegram tells you about each signup and whether they're **already in the CRM** \u2014 and if so, a compact preview of their current record (status \u00b7 groups, last topic, since when).\n\nButtons:\n\u2022 **\u2705 Add to CRM** \u2192 writes them into *Entries* + marks the Signups row `promoted`.\n\u2022 **\ud83d\uddd1 Dismiss** \u2192 marks the row `dismissed`.\n\nAfter a tap, the message KEEPS the signup details, stamps your decision underneath (`\u2705 ADDED TO CRM` / `\ud83d\uddd1 DISMISSED`), and the buttons are REMOVED entirely \u2014 nothing left to re-press.\n\nThe **Telegram Trigger** below catches the button taps (callback queries).\n\n\u26a0 Set your chat ID + bind the Telegram credential on import.",
"height": 320,
"width": 320,
"color": 6
},
"id": "a1b2c3d4-0013-4013-8013-000000000013",
"name": "HITL label",
"type": "n8n-nodes-base.stickyNote",
"position": [
2000,
60
]
},
{
"parameters": {
"content": "## Bind on import\n\nThe JSON ships with placeholders. Two SEPARATE spreadsheets are used:\n\n\u2022 **CRM Lookup** + **Add to CRM (Entries)** \u2192 your CRM doc (`YOUR_ENTRIES_SPREADSHEET_ID`), `Entries` tab.\n\u2022 **Append to Signups / Lookup Signup / Mark Promoted / Mark Dismissed** \u2192 the Signups doc (`YOUR_SIGNUPS_SPREADSHEET_ID`).\n\nAfter importing:\n1. On each Google Sheets node bind the *Google Sheets OAuth* credential + re-pick the correct document (per above).\n2. In the Signups doc, the tab is `Sheet1` \u2014 give it headers: `email first_name surname use_case source signup_timestamp known_in_crm status`.\n3. **Render Email** (HTTP Request) \u2014 set its URL to your confirmation-email endpoint (`YOUR_CONFIRMATION_EMAIL_ENDPOINT`).\n4. **Gmail node** (*Send Confirmation Email*) \u2014 bind the Gmail OAuth credential.\n5. **Telegram nodes** \u2014 bind the bot credential, set `YOUR_CHAT_ID`.\n6. **Activate**, then copy the Webhook **Production URL** into the sender's `N8N_WAITLIST_WEBHOOK_URL`, and grab the **Form Trigger** URL to share/bookmark.",
"height": 420,
"width": 460,
"color": 3
},
"id": "a1b2c3d4-0014-4014-8014-000000000014",
"name": "Setup",
"type": "n8n-nodes-base.stickyNote",
"position": [
-460,
600
]
},
{
"parameters": {
"httpMethod": "POST",
"path": "signup-intake",
"responseMode": "responseNode",
"options": {}
},
"id": "a1b2c3d4-0001-4001-8001-000000000001",
"name": "Waitlist Webhook",
"type": "n8n-nodes-base.webhook",
"typeVersion": 2,
"position": [
120,
40
]
},
{
"parameters": {
"respondWith": "json",
"responseBody": "{ \"ok\": true }",
"options": {}
},
"id": "a1b2c3d4-0002-4002-8002-000000000002",
"name": "Respond OK",
"type": "n8n-nodes-base.respondToWebhook",
"typeVersion": 1.1,
"position": [
360,
-80
]
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "w-email",
"name": "email",
"value": "={{ ($json.body.email || '').toString().trim().toLowerCase() }}",
"type": "string"
},
{
"id": "w-name",
"name": "name",
"value": "={{ ($json.body.name || '').toString().trim() }}",
"type": "string"
},
{
"id": "w-usecase",
"name": "use_case",
"value": "={{ ($json.body.use_case || '').toString().trim() }}",
"type": "string"
},
{
"id": "w-source",
"name": "source",
"value": "={{ ($json.body.signup_source || 'web').toString().trim() }}",
"type": "string"
}
]
},
"options": {}
},
"id": "a1b2c3d4-0003-4003-8003-000000000003",
"name": "Normalize (Web)",
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
360,
120
]
},
{
"parameters": {
"formTitle": "Join the waitlist",
"formDescription": "Leave your details and we'll be in touch.",
"formFields": {
"values": [
{
"fieldLabel": "Email",
"fieldType": "email",
"requiredField": true
},
{
"fieldLabel": "Name",
"fieldType": "text",
"requiredField": false
},
{
"fieldLabel": "Use case",
"fieldType": "textarea",
"requiredField": false
}
]
},
"options": {}
},
"id": "a1b2c3d4-0004-4004-8004-000000000004",
"name": "Hosted Signup Form",
"type": "n8n-nodes-base.formTrigger",
"typeVersion": 2,
"position": [
120,
720
]
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "f-email",
"name": "email",
"value": "={{ ($json['Email'] || '').toString().trim().toLowerCase() }}",
"type": "string"
},
{
"id": "f-name",
"name": "name",
"value": "={{ ($json['Name'] || '').toString().trim() }}",
"type": "string"
},
{
"id": "f-usecase",
"name": "use_case",
"value": "={{ ($json['Use case'] || '').toString().trim() }}",
"type": "string"
},
{
"id": "f-source",
"name": "source",
"value": "hosted-form",
"type": "string"
}
]
},
"options": {}
},
"id": "a1b2c3d4-0005-4005-8005-000000000005",
"name": "Normalize (Form)",
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
360,
720
]
},
{
"parameters": {
"jsCode": "// Unify whichever door fired into one canonical signup shape.\nconst j = $json;\nconst name = (j.name || '').toString().trim();\nconst parts = name.split(/\\s+/).filter(Boolean);\nreturn [{\n json: {\n email: (j.email || '').toString().trim().toLowerCase(),\n first_name: parts[0] || '',\n surname: parts.slice(1).join(' '),\n use_case: j.use_case || '',\n source: j.source || 'web',\n signup_timestamp: $now.toISO()\n }\n}];"
},
"id": "a1b2c3d4-0006-4006-8006-000000000006",
"name": "Normalize",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
620,
420
]
},
{
"parameters": {
"operation": "read",
"documentId": {
"__rl": true,
"value": "YOUR_ENTRIES_SPREADSHEET_ID",
"mode": "id"
},
"sheetName": {
"__rl": true,
"value": "Entries",
"mode": "name"
},
"filtersUI": {
"values": [
{
"lookupColumn": "email",
"lookupValue": "={{ $('Normalize').item.json.email }}"
}
]
},
"options": {}
},
"id": "a1b2c3d4-0007-4007-8007-000000000007",
"name": "CRM Lookup",
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.5,
"position": [
840,
420
],
"alwaysOutputData": true,
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "t-email",
"name": "email",
"value": "={{ $('Normalize').item.json.email }}",
"type": "string"
},
{
"id": "t-first",
"name": "first_name",
"value": "={{ $('Normalize').item.json.first_name }}",
"type": "string"
},
{
"id": "t-surname",
"name": "surname",
"value": "={{ $('Normalize').item.json.surname }}",
"type": "string"
},
{
"id": "t-usecase",
"name": "use_case",
"value": "={{ $('Normalize').item.json.use_case }}",
"type": "string"
},
{
"id": "t-source",
"name": "source",
"value": "={{ $('Normalize').item.json.source }}",
"type": "string"
},
{
"id": "t-ts",
"name": "signup_timestamp",
"value": "={{ $('Normalize').item.json.signup_timestamp }}",
"type": "string"
},
{
"id": "t-known",
"name": "known_in_crm",
"value": "={{ $json.email ? 'yes' : 'no' }}",
"type": "string"
},
{
"id": "t-status",
"name": "status",
"value": "new",
"type": "string"
}
]
},
"options": {}
},
"id": "a1b2c3d4-0008-4008-8008-000000000008",
"name": "Triage",
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
1060,
420
]
},
{
"parameters": {
"operation": "appendOrUpdate",
"documentId": {
"__rl": true,
"value": "YOUR_SIGNUPS_SPREADSHEET_ID",
"mode": "id"
},
"sheetName": {
"__rl": true,
"value": "Sheet1",
"mode": "name"
},
"columns": {
"mappingMode": "autoMapInputData",
"matchingColumns": [
"email"
],
"schema": []
},
"options": {}
},
"id": "a1b2c3d4-0009-4009-8009-000000000009",
"name": "Append to Signups",
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.5,
"position": [
1280,
420
],
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"chatId": "YOUR_CHAT_ID",
"text": "=\ud83c\udd95 *New signup*\n\n*Name:* {{ $json.first_name }} {{ $json.surname }}\n*Email:* `{{ $json.email }}`\n*Source:* {{ $json.source }}\n*Use case:* {{ $json.use_case || '\u2014' }}\n\n\ud83d\udd0e Already in CRM: *{{ $json.known_in_crm === 'yes' ? 'YES' : 'no' }}*{{ $json.known_in_crm === 'yes' ? `\\n\\n\ud83d\udcc7 In CRM as *${$('CRM Lookup').first().json.status || 'contact'}*${$('CRM Lookup').first().json.groups ? ' \u00b7 ' + $('CRM Lookup').first().json.groups : ''}\\n\ud83d\uddd2 Last topic: ${$('CRM Lookup').first().json.last_topic || '\u2014'}\\n\ud83d\udcc5 Since: ${($('CRM Lookup').first().json.contact_created_at || '').toString().slice(0, 10) || '\u2014'}` : '' }}",
"additionalFields": {
"appendAttribution": false,
"parse_mode": "Markdown"
},
"replyMarkup": "inlineKeyboard",
"inlineKeyboard": {
"rows": [
{
"row": {
"buttons": [
{
"text": "\u2705 Add to CRM",
"additionalFields": {
"callback_data": "=addcrm:{{ $json.email }}"
}
},
{
"text": "\ud83d\uddd1 Dismiss",
"additionalFields": {
"callback_data": "=dismiss:{{ $json.email }}"
}
}
]
}
}
]
}
},
"id": "a1b2c3d4-000a-400a-800a-00000000000a",
"name": "Notify (Telegram)",
"type": "n8n-nodes-base.telegram",
"typeVersion": 1.2,
"position": [
1720,
420
],
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"updates": [
"callback_query"
],
"additionalFields": {}
},
"id": "a1b2c3d4-000b-400b-800b-00000000000b",
"name": "Telegram Trigger",
"type": "n8n-nodes-base.telegramTrigger",
"typeVersion": 1.1,
"position": [
120,
1100
],
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"jsCode": "// Parse the inline-button tap: callback_data is \"action:email\".\nconst cq = $json.callback_query || {};\nconst raw = (cq.data || '').toString();\nconst idx = raw.indexOf(':');\nconst action = idx === -1 ? raw : raw.slice(0, idx);\nconst email = idx === -1 ? '' : raw.slice(idx + 1);\nreturn [{\n json: {\n action,\n email: email.trim().toLowerCase(),\n message_id: cq.message && cq.message.message_id,\n chat_id: cq.message && cq.message.chat && cq.message.chat.id,\n original_text: (cq.message && cq.message.text) || ''\n }\n}];"
},
"id": "a1b2c3d4-000c-400c-800c-00000000000c",
"name": "Parse Callback",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
360,
1100
]
},
{
"parameters": {
"rules": {
"values": [
{
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "loose"
},
"conditions": [
{
"leftValue": "={{ $json.action }}",
"rightValue": "addcrm",
"operator": {
"type": "string",
"operation": "equals"
}
}
],
"combinator": "and"
},
"renameOutput": true,
"outputKey": "addcrm"
},
{
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "loose"
},
"conditions": [
{
"leftValue": "={{ $json.action }}",
"rightValue": "dismiss",
"operator": {
"type": "string",
"operation": "equals"
}
}
],
"combinator": "and"
},
"renameOutput": true,
"outputKey": "dismiss"
}
]
},
"options": {}
},
"id": "a1b2c3d4-000d-400d-800d-00000000000d",
"name": "Action?",
"type": "n8n-nodes-base.switch",
"typeVersion": 3,
"position": [
580,
1100
]
},
{
"parameters": {
"operation": "read",
"documentId": {
"__rl": true,
"value": "YOUR_SIGNUPS_SPREADSHEET_ID",
"mode": "id"
},
"sheetName": {
"__rl": true,
"value": "Sheet1",
"mode": "name"
},
"filtersUI": {
"values": [
{
"lookupColumn": "email",
"lookupValue": "={{ $('Parse Callback').item.json.email }}"
}
]
},
"options": {}
},
"id": "a1b2c3d4-000e-400e-800e-00000000000e",
"name": "Lookup Signup",
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.5,
"position": [
840,
980
],
"alwaysOutputData": true,
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"operation": "appendOrUpdate",
"documentId": {
"__rl": true,
"value": "YOUR_ENTRIES_SPREADSHEET_ID",
"mode": "id"
},
"sheetName": {
"__rl": true,
"value": "Entries",
"mode": "name"
},
"columns": {
"mappingMode": "defineBelow",
"value": {
"email": "={{ $json.email }}",
"first_name": "={{ $json.first_name }}",
"surname": "={{ $json.surname }}",
"status": "lead",
"groups": "website-waitlist",
"association": "={{ $json.source }}",
"last_topic": "Waitlist signup",
"notes": "={{ $json.use_case }}",
"contact_created_at": "={{ $now.toISO() }}",
"contact_updated_at": "={{ $now.toISO() }}"
},
"matchingColumns": [
"email"
],
"schema": []
},
"options": {}
},
"id": "a1b2c3d4-000f-400f-800f-00000000000f",
"name": "Add to CRM (Entries)",
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.5,
"position": [
1060,
980
],
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "fp-email",
"name": "email",
"value": "={{ $('Parse Callback').item.json.email }}",
"type": "string"
},
{
"id": "fp-status",
"name": "status",
"value": "promoted",
"type": "string"
}
]
},
"options": {}
},
"id": "a1b2c3d4-0024-4024-8024-000000000024",
"name": "Flag Promoted",
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
1280,
980
]
},
{
"parameters": {
"operation": "appendOrUpdate",
"documentId": {
"__rl": true,
"value": "YOUR_SIGNUPS_SPREADSHEET_ID",
"mode": "id"
},
"sheetName": {
"__rl": true,
"value": "Sheet1",
"mode": "name"
},
"columns": {
"mappingMode": "autoMapInputData",
"matchingColumns": [
"email"
],
"schema": []
},
"options": {}
},
"id": "a1b2c3d4-0020-4020-8020-000000000020",
"name": "Mark Promoted",
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.5,
"position": [
1500,
980
],
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"operation": "editMessageText",
"chatId": "={{ $('Parse Callback').item.json.chat_id }}",
"messageId": "={{ $('Parse Callback').item.json.message_id }}",
"text": "={{ $('Parse Callback').item.json.original_text }}\n\n\u2705 ADDED TO CRM",
"additionalFields": {}
},
"id": "a1b2c3d4-0021-4021-8021-000000000021",
"name": "Confirm Added",
"type": "n8n-nodes-base.telegram",
"typeVersion": 1.2,
"position": [
1720,
980
],
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"operation": "appendOrUpdate",
"documentId": {
"__rl": true,
"value": "YOUR_SIGNUPS_SPREADSHEET_ID",
"mode": "id"
},
"sheetName": {
"__rl": true,
"value": "Sheet1",
"mode": "name"
},
"columns": {
"mappingMode": "defineBelow",
"value": {
"email": "={{ $('Parse Callback').item.json.email }}",
"status": "dismissed"
},
"matchingColumns": [
"email"
],
"schema": []
},
"options": {}
},
"id": "a1b2c3d4-0022-4022-8022-000000000022",
"name": "Mark Dismissed",
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.5,
"position": [
840,
1240
],
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"operation": "editMessageText",
"chatId": "={{ $('Parse Callback').item.json.chat_id }}",
"messageId": "={{ $('Parse Callback').item.json.message_id }}",
"text": "={{ $('Parse Callback').item.json.original_text }}\n\n\ud83d\uddd1 DISMISSED",
"additionalFields": {}
},
"id": "a1b2c3d4-0023-4023-8023-000000000023",
"name": "Confirm Dismissed",
"type": "n8n-nodes-base.telegram",
"typeVersion": 1.2,
"position": [
1060,
1240
],
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"method": "POST",
"url": "YOUR_CONFIRMATION_EMAIL_ENDPOINT",
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={{ { first_name: $('Triage').item.json.first_name, use_case: $('Triage').item.json.use_case } }}",
"options": {}
},
"id": "a1b2c3d4-0040-4040-8040-000000000040",
"name": "Render Email",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
1500,
200
],
"onError": "continueErrorOutput"
},
{
"parameters": {
"operation": "send",
"sendTo": "={{ $('Triage').item.json.email }}",
"subject": "={{ $json.subject }}",
"emailType": "html",
"message": "={{ $json.html }}",
"options": {
"appendAttribution": false,
"senderName": "PromptPotter"
}
},
"id": "a1b2c3d4-0041-4041-8041-000000000041",
"name": "Send Confirmation Email",
"type": "n8n-nodes-base.gmail",
"typeVersion": 2.1,
"position": [
1720,
200
],
"onError": "continueRegularOutput",
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"content": "## Confirmation email\n\nThe branded confirmation email is **not** built in this workflow \u2014 its HTML/copy lives on the website (single source of truth, alongside the brand images) and is rendered by an endpoint: `\u2026/api/waitlist-email`.\n\n*Render Email* (HTTP Request) POSTs `first_name` + `use_case` and gets back `{ subject, html, text }`; *Send Confirmation Email* (Gmail) sends it to the signup's address. Runs on a **parallel branch** to the Telegram alert \u2014 *Render Email* uses an error output and Gmail is *continue on error*, so a render/bounce failure never blocks your operator notification.\n\n\u26a0 Set the endpoint URL on *Render Email* + bind the **Gmail OAuth** credential on import.",
"height": 300,
"width": 320,
"color": 4
},
"id": "a1b2c3d4-0042-4042-8042-000000000042",
"name": "Email label",
"type": "n8n-nodes-base.stickyNote",
"position": [
1620,
-200
]
}
],
"connections": {
"Waitlist Webhook": {
"main": [
[
{
"node": "Respond OK",
"type": "main",
"index": 0
}
]
]
},
"Respond OK": {
"main": [
[
{
"node": "Normalize (Web)",
"type": "main",
"index": 0
}
]
]
},
"Normalize (Web)": {
"main": [
[
{
"node": "Normalize",
"type": "main",
"index": 0
}
]
]
},
"Hosted Signup Form": {
"main": [
[
{
"node": "Normalize (Form)",
"type": "main",
"index": 0
}
]
]
},
"Normalize (Form)": {
"main": [
[
{
"node": "Normalize",
"type": "main",
"index": 0
}
]
]
},
"Normalize": {
"main": [
[
{
"node": "CRM Lookup",
"type": "main",
"index": 0
}
]
]
},
"CRM Lookup": {
"main": [
[
{
"node": "Triage",
"type": "main",
"index": 0
}
]
]
},
"Triage": {
"main": [
[
{
"node": "Append to Signups",
"type": "main",
"index": 0
}
]
]
},
"Append to Signups": {
"main": [
[
{
"node": "Notify (Telegram)",
"type": "main",
"index": 0
},
{
"node": "Render Email",
"type": "main",
"index": 0
}
]
]
},
"Telegram Trigger": {
"main": [
[
{
"node": "Parse Callback",
"type": "main",
"index": 0
}
]
]
},
"Parse Callback": {
"main": [
[
{
"node": "Action?",
"type": "main",
"index": 0
}
]
]
},
"Action?": {
"main": [
[
{
"node": "Lookup Signup",
"type": "main",
"index": 0
}
],
[
{
"node": "Mark Dismissed",
"type": "main",
"index": 0
}
]
]
},
"Lookup Signup": {
"main": [
[
{
"node": "Add to CRM (Entries)",
"type": "main",
"index": 0
}
]
]
},
"Add to CRM (Entries)": {
"main": [
[
{
"node": "Flag Promoted",
"type": "main",
"index": 0
}
]
]
},
"Flag Promoted": {
"main": [
[
{
"node": "Mark Promoted",
"type": "main",
"index": 0
}
]
]
},
"Mark Promoted": {
"main": [
[
{
"node": "Confirm Added",
"type": "main",
"index": 0
}
]
]
},
"Mark Dismissed": {
"main": [
[
{
"node": "Confirm Dismissed",
"type": "main",
"index": 0
}
]
]
},
"Render Email": {
"main": [
[
{
"node": "Send Confirmation Email",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1"
},
"tags": []
}
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.
gmailOAuth2googleSheetsOAuth2ApitelegramApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Signup Intake → CRM triage. Uses formTrigger, googleSheets, telegram, telegramTrigger. Webhook trigger; 28 nodes.
Source: https://github.com/runfish5/micro-services/blob/main/projects/n8n/shared/signup-intake.n8n.json — 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.
What This Flow Does
This workflow accepts a suspected scam URL via an n8n form, enriches it with RDAP, certificate transparency, DNS/IP hosting data, urlscan.io results, and HTML fingerprints, then correlates findings ag
Automate short-term trading research by generating high-quality trade ideas using MCP (Market Context Protocol) signals and AI-powered analysis. 📈🤖 This workflow evaluates market context, catalysts, m
This workflow handles Twilio recording-complete webhooks, downloads the call audio, transcribes it with OpenAI Whisper, and uses Anthropic Claude to extract structured call insights. It logs every cal
02 · AI Email Triage → Draft, Alert or Archive. Uses gmailTrigger, httpRequest, telegram, gmail. Event-driven trigger; 10 nodes.