This workflow corresponds to n8n.io template #7149 — we link there as the canonical source.
This workflow follows the Agent → Chat Trigger 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 →
{
"id": "BNhNtHSWOsHCg2jc",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "Generate personalized email to stakeholder",
"tags": [
{
"id": "2pQ1OehmIpWfWEvH",
"name": "Outreach",
"createdAt": "2025-08-04T14:35:26.193Z",
"updatedAt": "2025-08-04T14:35:26.193Z"
},
{
"id": "Iv0SXatU8OaCaiVG",
"name": "MadKudu",
"createdAt": "2025-08-04T14:35:26.127Z",
"updatedAt": "2025-08-04T14:35:26.127Z"
},
{
"id": "cmrfhqtgzQg6vAxg",
"name": "Sales Automation",
"createdAt": "2025-08-04T14:35:26.150Z",
"updatedAt": "2025-08-04T14:35:26.150Z"
}
],
"nodes": [
{
"id": "84da9889-f705-433e-b28a-118a3264e8b9",
"name": "Contact Exists?",
"type": "n8n-nodes-base.if",
"position": [
-1072,
128
],
"parameters": {
"options": {
"looseTypeValidation": false
},
"conditions": {
"options": {
"version": 1,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "698f94db-5a42-40f1-95a8-62e0313d4ac3",
"operator": {
"type": "number",
"operation": "gt"
},
"leftValue": "={{ $('Outreach: Check Existing Contact').item.json.data.length }}",
"rightValue": 0
}
]
}
},
"typeVersion": 2
},
{
"id": "0fdfad14-da79-4edc-a9a9-fe3539c8ff13",
"name": "Update Existing Prospect",
"type": "n8n-nodes-base.httpRequest",
"position": [
-864,
16
],
"parameters": {
"url": "=https://api.outreach.io/api/v2/prospects/\n{{ $('Outreach: Check Existing Contact').item.json.data[0].id }}",
"body": "={ \"data\": { \n \"type\": \"prospect\", \n \"id\": {{ $('Outreach: Check Existing Contact').item.json.data[0].id }}, \n \"attributes\": { \n \"custom49\": \"{{ $('Generate outreach email').item.json.output.email_draft[0].email }}\" \n } \n } \n}\n",
"method": "PATCH",
"options": {},
"sendBody": true,
"contentType": "raw",
"authentication": "genericCredentialType",
"rawContentType": "JSON",
"genericAuthType": "oAuth2Api"
},
"credentials": {
"oAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.1
},
{
"id": "31b4c4f3-9957-4507-9099-e993bee42cc7",
"name": "MadKudu MCP",
"type": "@n8n/n8n-nodes-langchain.mcpClientTool",
"position": [
-1888,
320
],
"parameters": {
"sseEndpoint": "=https://mcp.madkudu.com/{{$vars.madkudu_api_key}}/sse"
},
"typeVersion": 1
},
{
"id": "3dbe7740-8d9a-4818-80af-b8dfbd21c08c",
"name": "When chat message received",
"type": "@n8n/n8n-nodes-langchain.chatTrigger",
"position": [
-2992,
128
],
"parameters": {
"options": {}
},
"typeVersion": 1.1
},
{
"id": "a8c4a7e7-192b-4966-98e0-5bf3a11420e6",
"name": "Outreach: Create New Prospect",
"type": "n8n-nodes-base.httpRequest",
"position": [
-880,
224
],
"parameters": {
"url": "https://api.outreach.io/api/v2/prospects",
"body": "={ \"data\": { \n \"type\": \"prospect\", \n \"attributes\": { \n \"custom49\": \"{{ $('Generate outreach email').item.json.output.email_draft[0].email }}\", \n \"emails\": [\"{{ $('When chat message received').item.json.chatInput }}\"] \n } \n } \n\n}",
"method": "POST",
"options": {
"response": {
"response": {}
}
},
"sendBody": true,
"contentType": "raw",
"authentication": "genericCredentialType",
"rawContentType": "JSON",
"genericAuthType": "oAuth2Api"
},
"credentials": {
"oAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.1
},
{
"id": "42e166fe-7b97-4ccd-bbac-18cb48a26f4f",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1520,
-224
],
"parameters": {
"color": 7,
"width": 752,
"height": 688,
"content": "## 4. Sync personalized Email to Outreach.io \n- If prospect already exists, update custom field on prospect with email\n- If prospect does not exists, create prospect with custom field \n\n### Configuration Required\nEdit the custom field ID (custom49) in the JSON Body!"
},
"typeVersion": 1
},
{
"id": "9a03611d-d1aa-425b-be6f-0433f9235fd0",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-736,
-224
],
"parameters": {
"color": 7,
"width": 1552,
"height": 656,
"content": "## 5. Add prospect to Outreach.io Sequence\nAutomatically enrolls the prospect in your email sequence.\n\n### Configuration Required\n- Update Outreach Mailbox ID\n- Update Sequence ID\n\nThe workflow waits 30 seconds then verifies successful enrollment."
},
"typeVersion": 1
},
{
"id": "b35c6cfb-6ca5-47c2-9fe7-6a5d61871172",
"name": "Generate outreach email",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
-1872,
128
],
"parameters": {
"text": "=## Context\nYou are a sales development rep at {{ $vars.my_company_domain }} reaching out to {{ $('Information Extractor').item.json.output.email }}\nYou have likely not interacted with this person before.\n\nThe goal is to generate a personlized email based on all the information you have about them and the value prop of your company.\n\n## Research\nStart by completing ALL the required research steps below to find the 5 most interesting angle to use to reach out to them:\n1. **Account Details**: Includes company insights (e.g., hiring, partnerships, technology stack, sales motion, risk). Use madkudu-account-details to understand company use, top users, tech stack, and signals.\n2. **Research Account**: Get {{ $json.output }}\n3. **Top Users in the Account**: Use madkudu-top-persons to find the most active contacts from this person's account. It can be helpful to name drop top users especially if they are in the same part of the org.\n4. **Contact Details**: Includes contact role, persona, email, and Salesforce ID. Use madkudu-contact-details to understand the person's role, persona, and engagement.\n5. **Contact Web Search**: Search the web for any relevant activity by this contact to understand what this person is interested in, what they care about... This can be very helpful to build some rapport. You can do this by searching \"FirstName LastName Company\".\n6. **Contact Picture Web Search**: look for the person's linkedin profile picture, background picture, or other public pictures which might give a hint to their interests and provide us with a personal angle.\n\nMake sure to do all of these steps in the research.\n\n## Instructions:\n1. Perform the thorough research as described above.\n2. Find 5 different angles to justify reaching out based on how relevant they are to MadKudu + their company, their role, your shared personal interests, their personal interests... Stack rank them accordingly\n3. Extract contextual personalization from the research for each of the 5 angles.\n4. Select the best email to send (only 1)\n4. Output a JSON with \n- the email draft \n- the angle chosen to draft it\n- the reasoning behind this angle\n\n## Additional Information:\nuse madkudu-value-prop to get the value prop for my company {{ $vars.my_company_domain }} \n\n## Guidelines:\n- Avoid referencing specific activity counts (e.g., don't say \"you clicked 87 times\").\n- Sound human and not creepy \u2014 your purpose is to be helpful.\nTone professional, helpful, and neutral tone. Avoid using excessive praise, flattery, or overly enthusiastic language.\n- Refer to engagement behaviors (e.g., \"you've been actively leveraging alerts\") and connect them to their role's likely goals (e.g., efficiency, alignment, GTM execution).\n- If lacking behavioral insight, use company-level context (e.g., hiring, funding, GTM motion) to form a relevant angle.\n- Always acknowledge existing context from past email exchanges to maintain continuity in the conversation.\n- Avoid sycophancy to sound human, avoid sounding like a chatbot (e.g., NEVER say things like \"I was impressed by your journey\")\nAngles:\n- Below is a stack rank of the most interesting angles to use when they are found. This is primarily for illustration purposes and is not an exhaustive:\n- Shared personal interest (e.g., fly fishing, sailing...)\n- Major company news (e.g., IPO, fundraise, new exec team...)\n- Product usage within their team (e.g., telling a VP of commercials sales that 10 of their commercial AEs are seeing success with the tool...)",
"options": {},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 2.1
},
{
"id": "82f46bf8-1230-4acd-994c-08b812e836cd",
"name": "OpenAI Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
-2256,
336
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "437c21c4-2b08-4ad1-8d67-f8cb6165faa4",
"name": "Structured Output Parser",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
-1680,
304
],
"parameters": {
"jsonSchemaExample": "{\n \"email_draft\": [\n {\n \"angle\": \"Aligning with Sales Efficiency as Director of Sales\",\n \"email\": \"Hi Christopher,\\n\\nI understand that as Director of Sales at Kit.com, you are deeply involved in driving sales efficiency and conversion. Given Kit.com's focus on scaling creator audience growth and sales, MadKudu's AI-powered lead scoring could significantly help your team identify warm, ready-to-engage prospects, improving your conversion rates and overall sales effectiveness. I'd love to share some insights on how we can support your goals with tailored lead scoring and sales optimization.\\n\\nBest regards,\\n[Your Name]\"\n },\n {\n \"angle\": \"Supporting Marketing Operations Optimization\",\n \"email\": \"Hi Christopher,\\n\\nWith Kit.com actively evolving and hiring in marketing, I wanted to highlight how our marketing operations platform can help optimize your campaigns through advanced lead scoring, attribute mapping, and account enrichment. This could enhance lead quality and marketing efficiency as Kit.com expands its creator economy offerings and email-driven marketing solutions. Let me know if you're open to a conversation.\\n\\nBest,\\n[Your Name]\"\n },\n {\n \"angle\": \"Enhancing Data-Driven Decision-Making for Revenue Operations\",\n \"email\": \"Hello Christopher,\\n\\nAs Kit.com continues its strategic expansion with a focus on data and audience growth, MadKudu's CRM integration, attribute mapping, and account enrichment tools offer robust support for reliable lead-to-account linking and data-driven decision-making. This can help streamline operational efficiency during your current growth phase. I\u2019d be happy to explore how this aligns with your revenue operations needs.\\n\\nRegards,\\n[Your Name]\"\n },\n {\n \"angle\": \"Seamless Integration for Technical Teams\",\n \"email\": \"Hi Christopher,\\n\\nConsidering Kit.com's emphasis on marketing automation and the adoption of scalable tools, MadKudu provides APIs and SDKs that enable seamless integration of lead scoring and enrichment into your existing workflows. This could empower your technical teams to enhance automation and data integration efforts efficiently. If you'd like, I can share more details.\\n\\nBest wishes,\\n[Your Name]\"\n },\n {\n \"angle\": \"Leverage Sales Intelligence Insights\",\n \"email\": \"Hi Christopher,\\n\\nI noticed Kit.com\u2019s sales team is actively engaging with sales intelligence tools recently, reflecting a strong interest in leveraging data for sales performance. MadKudu\u2019s AI-driven lead scoring and enrichment could complement these efforts by providing actionable insights to boost your sales pipeline quality and conversion. Let me know if you\u2019re interested in discussing this further.\\n\\nThanks,\\n[Your Name]\"\n }\n ],\n \"reason_for_selection\": \"The email angles were selected based on Christopher Amrod's role as Director of Sales at Kit.com and the current company context of rapid growth, marketing evolution, and sales intelligence engagement. They target key operational and strategic priorities relevant to his position and Kit.com's business model\u2014such as driving sales efficiency, marketing optimization, data-driven decision-making, and technical integration. Each email is personalized around MadKudu's value propositions that align with Kit.com's needs and recent activity, aiming to present a helpful, relevant conversation starter that respects the context without overreaching.\"\n}"
},
"typeVersion": 1.3
},
{
"id": "2306c950-86df-4f0e-9678-7a26e7a23333",
"name": "MadKudu: Generate Account Brief",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
-2304,
128
],
"parameters": {
"text": "=Use madkudu-account-brief-instructions with the domain of {{ $json.output.email }} to generate an account brief for this company.",
"options": {},
"promptType": "define"
},
"typeVersion": 2.1
},
{
"id": "1d4d60e4-ab2d-4c3c-babb-33b1faa03dae",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2416,
-224
],
"parameters": {
"color": 7,
"width": 464,
"height": 688,
"content": "## 2.Generate Account Brief with [MadKudu MCP](developers.madkudu.com)\nThis step uses MadKudu MCP + OpenAI to auto-research the prospect's company.\nThrough MadKudu MCP, the agent researches recent company news, CRM data, engaged contacts, job openings and converts it into an account brief with: Intro, Why, Why now, Why us, Risks. \nThis brief is used to understand the angle for the email and personalize it "
},
"typeVersion": 1
},
{
"id": "f26d464a-689d-4ef4-af83-efe3039a6a7e",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1936,
-224
],
"parameters": {
"color": 7,
"width": 384,
"height": 688,
"content": "## 3. Generate Personalized email \nThe agent gets more information about the company and person with MadKudu MCP, then creates 5 different email approaches and selects the best one.\nAngles include: shared interests, company news, product usage, industry trends, and mutual connections"
},
"typeVersion": 1
},
{
"id": "ddd4e3bc-ad23-4aca-9f7a-8710d66e75f0",
"name": "Outreach: Check Existing Contact",
"type": "n8n-nodes-base.httpRequest",
"position": [
-1472,
128
],
"parameters": {
"url": "=https://api.outreach.io/api/v2/prospects?filter[emails]={{ $('When chat message received').item.json.chatInput }}",
"options": {
"response": {
"response": {
"responseFormat": "json"
}
}
},
"authentication": "genericCredentialType",
"genericAuthType": "oAuth2Api"
},
"credentials": {
"oAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.1
},
{
"id": "becc6aee-193e-4bfe-babc-313d9fe7371a",
"name": "Set Outreach Mailbox and Sequence",
"type": "n8n-nodes-base.set",
"position": [
-1280,
128
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "ab1291d4-d468-4050-bb73-cfb7180e571d",
"name": "Outreach Mailbox ID to use",
"type": "number",
"value": 51
},
{
"id": "3c31ba23-b3ec-41ea-b8b7-f8be3ec5402f",
"name": "Outreach Sequence ID to use",
"type": "number",
"value": 781
}
]
}
},
"typeVersion": 3.4
},
{
"id": "3d668188-c094-41dd-a62d-62f448cb7105",
"name": "Outreach: Get confirmation",
"type": "n8n-nodes-base.httpRequest",
"position": [
160,
128
],
"parameters": {
"url": "=https://api.outreach.io/api/v2/batches/{{ $json.data.parseJson().data.id }}",
"options": {
"response": {
"response": {
"responseFormat": "json"
}
}
},
"authentication": "genericCredentialType",
"genericAuthType": "oAuth2Api"
},
"credentials": {
"oAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.2
},
{
"id": "e550e162-ed98-481b-ad1e-fca252cedced",
"name": "If",
"type": "n8n-nodes-base.if",
"position": [
592,
128
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "17b67959-895c-4745-9d68-2a3dfee23c45",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.data.attributes.state }}",
"rightValue": "finished"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "768762cb-66f1-48c8-8d2e-915c7a10fa0c",
"name": "Outreach Submit batch Add to Sequence",
"type": "n8n-nodes-base.httpRequest",
"position": [
-256,
128
],
"parameters": {
"url": "=https://api.outreach.io/api/v2/batches/actions/prospectsAddToSequence",
"body": "={ \n \"data\": { \n \"type\": \"sequence\",\n \"attributes\": { \n \"ids\": [{{ $json['Outreach Prospect ID'] }}], \n \"mailboxId\": {{ $('Set Outreach Mailbox and Sequence').item.json['Outreach Mailbox ID to use'] }}, \n \"sequenceId\": {{ $('Set Outreach Mailbox and Sequence').item.json['Outreach Sequence ID to use'] }}\n } \n }\n}",
"method": "POST",
"options": {
"response": {
"response": {}
}
},
"sendBody": true,
"contentType": "raw",
"authentication": "genericCredentialType",
"rawContentType": "JSON",
"genericAuthType": "oAuth2Api"
},
"credentials": {
"oAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.1
},
{
"id": "3c5278b5-8a52-43f9-a7a0-3ea391c54fa7",
"name": "Wait",
"type": "n8n-nodes-base.wait",
"position": [
-48,
128
],
"parameters": {
"amount": 30
},
"typeVersion": 1.1
},
{
"id": "eed28ca0-ad6a-4642-94c5-d896daf1d573",
"name": "No Operation, do nothing",
"type": "n8n-nodes-base.noOp",
"position": [
848,
112
],
"parameters": {},
"typeVersion": 1
},
{
"id": "ad585460-31cd-4c42-8124-2a2548f7eaad",
"name": "Information Extractor",
"type": "@n8n/n8n-nodes-langchain.informationExtractor",
"position": [
-2752,
128
],
"parameters": {
"text": "= {{ $json.chatInput }}",
"options": {},
"attributes": {
"attributes": [
{
"name": "email",
"required": true,
"description": "person's email"
}
]
}
},
"typeVersion": 1.2
},
{
"id": "fefca51d-10d2-4ead-bb51-4829552af17b",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
-2752,
272
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "e4a3f69c-02ce-43ef-90a1-d86d67b56ab0",
"name": "Set Contact ID",
"type": "n8n-nodes-base.set",
"position": [
-672,
16
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "e13d30da-2bfd-4397-9941-c81d7c2881a7",
"name": "Outreach Prospect ID",
"type": "string",
"value": "={{ $json.data.parseJson().data.id }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "693486a8-99b4-4628-bdfa-a0d6be8d1fb2",
"name": "Set Contact ID1",
"type": "n8n-nodes-base.set",
"position": [
-672,
224
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "1d59bf74-26bc-4439-b6e1-c151f3a15424",
"name": "Outreach Prospect ID",
"type": "string",
"value": "={{ $json.data.parseJson().data.id }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "eccf09e5-27d5-41e7-8ed1-85080a952d20",
"name": "Merge Outreach Prospect ID",
"type": "n8n-nodes-base.merge",
"position": [
-480,
128
],
"parameters": {},
"typeVersion": 3.2
},
{
"id": "68f1892d-0fd5-4a54-b7dd-c8e79dbf12e2",
"name": "Outreach: Get confirmation1",
"type": "n8n-nodes-base.httpRequest",
"position": [
368,
128
],
"parameters": {
"url": "=https://api.outreach.io/api/v2/prospects/{{ $('Merge Outreach Prospect ID').item.json['Outreach Prospect ID'] }}",
"options": {
"response": {
"response": {
"responseFormat": "json"
}
}
},
"authentication": "genericCredentialType",
"genericAuthType": "oAuth2Api"
},
"credentials": {
"oAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.2
},
{
"id": "746bf7d5-5f84-4e5d-8575-16b8039e6b8e",
"name": "Workflow Start Guide",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2960,
-224
],
"parameters": {
"color": 7,
"width": 512,
"height": 688,
"content": "## 1. Input Person's Email Address\nEnter a prospect's email address via chat trigger.\nExample: john@company.com\n\nThe workflow extracts and validates the email format before proceeding."
},
"typeVersion": 1
},
{
"id": "7e5aa0e2-1e81-4a9b-8adb-440a14532d6a",
"name": "Complete Setup Guide",
"type": "n8n-nodes-base.stickyNote",
"position": [
-3520,
400
],
"parameters": {
"width": 432,
"height": 464,
"content": "## \ud83d\udd11 Required Setup\n\n## Credentials\n- OpenAI API key for AI generation\n- Outreach OAuth2 for CRM integration\n- MadKudu API key (set as environment variable: madkudu_api_key)\n\n## Configuration\n- Update Outreach Mailbox ID\n- Update Sequence ID\n- Set custom field name (default: custom49)\n- Set company domain variable\n\n## Test\nSend a test email via chat trigger to verify setup."
},
"typeVersion": 1
},
{
"id": "1361dc32-92e3-4589-983d-96123219a207",
"name": "Template Overview",
"type": "n8n-nodes-base.stickyNote",
"position": [
-3680,
-224
],
"parameters": {
"width": 544,
"height": 528,
"content": "# Try it Out!\n\nThis workflow generates personalized outreach emails using AI research and automatically syncs them to Outreach CRM.\n\nIt researches prospects with MadKudu, generates 5 email angles, selects the best one, and enrolls prospects in email sequences.\n\nPerfect for SDRs, BDRs, and sales teams needing scalable personalized outreach.\n\n## How It Works\n1. Input prospect email via chat\n2. AI researches company and contact\n3. Generate 5 personalized email approaches\n4. Sync best email to Outreach\n5. Enroll in email sequence\n\n\n## Need help? \nReach out to [MadKudu](product@madkudu.com)\n"
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "7e1d7286-f931-4e47-a451-7b7c93e4e946",
"connections": {
"If": {
"main": [
[
{
"node": "No Operation, do nothing",
"type": "main",
"index": 0
}
],
[
{
"node": "Wait",
"type": "main",
"index": 0
}
]
]
},
"Wait": {
"main": [
[
{
"node": "Outreach: Get confirmation",
"type": "main",
"index": 0
}
]
]
},
"MadKudu MCP": {
"ai_tool": [
[
{
"node": "MadKudu: Generate Account Brief",
"type": "ai_tool",
"index": 0
},
{
"node": "Generate outreach email",
"type": "ai_tool",
"index": 0
}
]
]
},
"OpenAI Model": {
"ai_languageModel": [
[
{
"node": "MadKudu: Generate Account Brief",
"type": "ai_languageModel",
"index": 0
},
{
"node": "Generate outreach email",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Set Contact ID": {
"main": [
[
{
"node": "Merge Outreach Prospect ID",
"type": "main",
"index": 0
}
]
]
},
"Contact Exists?": {
"main": [
[
{
"node": "Update Existing Prospect",
"type": "main",
"index": 0
}
],
[
{
"node": "Outreach: Create New Prospect",
"type": "main",
"index": 0
}
]
]
},
"Set Contact ID1": {
"main": [
[
{
"node": "Merge Outreach Prospect ID",
"type": "main",
"index": 1
}
]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "Information Extractor",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Information Extractor": {
"main": [
[
{
"node": "MadKudu: Generate Account Brief",
"type": "main",
"index": 0
}
]
]
},
"Generate outreach email": {
"main": [
[
{
"node": "Outreach: Check Existing Contact",
"type": "main",
"index": 0
}
]
]
},
"Structured Output Parser": {
"ai_outputParser": [
[
{
"node": "Generate outreach email",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Update Existing Prospect": {
"main": [
[
{
"node": "Set Contact ID",
"type": "main",
"index": 0
}
]
]
},
"Merge Outreach Prospect ID": {
"main": [
[
{
"node": "Outreach Submit batch Add to Sequence",
"type": "main",
"index": 0
}
]
]
},
"Outreach: Get confirmation": {
"main": [
[
{
"node": "Outreach: Get confirmation1",
"type": "main",
"index": 0
}
]
]
},
"When chat message received": {
"main": [
[
{
"node": "Information Extractor",
"type": "main",
"index": 0
}
]
]
},
"Outreach: Get confirmation1": {
"main": [
[
{
"node": "If",
"type": "main",
"index": 0
}
]
]
},
"Outreach: Create New Prospect": {
"main": [
[
{
"node": "Set Contact ID1",
"type": "main",
"index": 0
}
]
]
},
"MadKudu: Generate Account Brief": {
"main": [
[
{
"node": "Generate outreach email",
"type": "main",
"index": 0
}
]
]
},
"Outreach: Check Existing Contact": {
"main": [
[
{
"node": "Set Outreach Mailbox and Sequence",
"type": "main",
"index": 0
}
]
]
},
"Set Outreach Mailbox and Sequence": {
"main": [
[
{
"node": "Contact Exists?",
"type": "main",
"index": 0
}
]
]
},
"Outreach Submit batch Add to Sequence": {
"main": [
[
{
"node": "Wait",
"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.
oAuth2ApiopenAiApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow researches prospects using MadKudu MCP, generates personalized emails with OpenAI, and syncs them to Outreach with automatic sequence enrollment. Its for SDRs and sales teams who want to scale personalized outreach by automating research and email generation while…
Source: https://n8n.io/workflows/7149/ — 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.
This Chatbot automates the process of discovering job openings and generating tailored job application emails.
This workflow implements an advanced AI-powered system for generating, and executing Claude Skills stored on GitHub.
💰 Beginner Investor – Learn the market faster with AI-powered insights guiding your decisions. 📈 Retail Trader – Optimize your trading strategy with in-depth analysis typically reserved for profession
by Varritech Technologies
Who’s it for Creators who want to create faceless videos automatically, while keeping human oversight and quality control.