{"workflow":{"id":14860,"name":"Track medicine adherence and monitor patients with Google Sheets, OpenAI and Slack","views":0,"recentViews":0,"totalViews":0,"createdAt":"2026-04-07T12:22:56.506Z","description":"# 🩺 AI-Powered Medicine Reminder & Patient Monitoring Workflow \n*(n8n + Google Sheets + OpenAI + Slack)*\n\n---\n\nThis workflow automates medicine reminders, tracks patient responses and alerts doctors in critical situations using n8n, Google Sheets, OpenAI and Slack.\n\n### Quick Implementation Steps\n\n- Connect your Google Sheets with patient data\n- Set up Slack (or replace with Gmail/SMS nodes)\n- Configure Webhook to receive patient replies\n- Add your OpenAI API key\n- Define reminder times in HH\\:mm format\n- Activate the workflow scheduler\n\n💡 You can replace Slack with Email (Gmail) or SMS APIs like Twilio.\n\n\n## What It Does\n\nThis workflow automates the entire lifecycle of patient medicine adherence tracking. It periodically checks patient records and sends reminders when it's time to take medicine.\n\nWhen a patient responds, the system captures the reply via webhook and uses AI to classify the response into categories such as taken, not taken, delayed or unclear. It then updates patient records and tracks missed doses.\n\nIf a patient repeatedly misses medication or shows signs of distress, the system flags it as critical and alerts the doctor immediately through a separate channel.\n\n\n## Who’s It For\n\n- Healthcare providers and clinics\n- Telemedicine platforms\n- Caregivers managing patients\n- Health-tech startups\n- Remote monitoring systems\n\n\n## Requirements\n\n- n8n (cloud or self-hosted)\n- Google Sheets account\n- Slack account (or Email/SMS alternative)\n- OpenAI API key\n- Google Sheet with following columns\n\t- Name\n\t- Phone\n\t- Medicine\n\t- Reminder Time\n\t- Last Response\n\t- Last Patient Message\n\t- Status\n\t- Missed\\_Count\n\n⚠️ **Reminder Time** must be in 24-hour format (HH\\:mm) Example: 08:30, 14:45, 21:00\n\n\n## Webhook Input Format\n\nYour system must send patient replies in this format:\n\n```\n{\n  \"phone\": \"string\",\n  \"message\": \"string\"\n}\n```\n\n\n## How It Works\n\n### 1. Scheduler Trigger\n\n- Runs every minute\n- Checks all patient records\n\n### 2. Fetch Patient Records\n\n- Reads all rows from Google Sheets\n\n### 3. Match Reminder Time\n\n- Compares current time with patient’s reminder time\n\n### 4. Send Reminder\n\n- Sends message via Slack (or Email/SMS alternative)\n\n### 5. Receive Patient Response\n\n- Webhook captures incoming responses\n\n### 6. AI Classification\n\nClassifies response into:\n\n- **TAKEN**\n- **NOT\\_TAKEN**\n- **LATER**\n- **CONFUSED**\n\nAlso detects critical conditions\n\n### 7. Parse Output\n\n- Ensures valid JSON format\n\n### 8. Match Patient\n\n- Matches phone number with Google Sheet\n\n### 9. Update Missed Count\n\n- **NOT\\_TAKEN** → +1\n- **LATER** → +1\n- **TAKEN** → reset to 0\n\n### 10. Check Critical Condition\n\nTriggered when:\n\n- is\\_critical = true\n- OR\n- Missed\\_Count &gt;= 3 (configurable)\n\n### 11. Critical Flow\n\n- Update status to **CRITICAL**\n- Alert doctor via separate channel\n\n### 12. Normal Flow\n\n- Update patient record\n- Send response:\n  - **NOT\\_TAKEN** → Reminder\n  - **LATER** → Gentle follow-up\n  - **TAKEN** → Appreciation\n\n\n## Customization\n\n### Replace Slack\n\nYou can replace Slack nodes with:\n\n- Gmail (Email)\n- Twilio (SMS)\n- WhatsApp API\n\n### Modify AI Logic\n\n- Edit OpenAI prompt\n- Add new classifications\n- Customize responses\n\n### Change Reminder Logic\n\n- Adjust scheduler frequency\n- Add timezone handling\n\n### Adjust Critical Threshold\n\n- Change Missed_Count &gt;= 3 to any value based on your needs\n\n\n## Add-ons\n\n- WhatsApp integration\n- Dashboard for tracking\n- Push notifications\n- Database logging\n- AI health insights\n- Doctor reports\n\n\n## Use Cases\n\n- Chronic disease monitoring\n- Elderly care\n- Post-surgery tracking\n- Clinical trials\n- Remote patient monitoring\n\n\n## Troubleshooting\n\n| Issue                   | Possible Cause     | Solution                |\n|--------------------------|--------------------|--------------------------|\n| Reminder not sent        | Time mismatch      | Use HH:mm format         |\n| Patient not matched      | Phone mismatch     | Ensure same format       |\n| AI parsing error         | Invalid JSON       | Check parsing node       |\n| Missed count issue       | Wrong classification| Verify AI output         |\n| Webhook not working      | Wrong endpoint     | Check URL                |\n| Slack not sending        | Credentials issue  | Reconnect Slack          |\n| Critical not triggered   | Condition issue    | Adjust threshold         |\n\n\n## Need Help?\n\nIf you need help with:\n\n- Setup or deployment\n- Email / SMS / WhatsApp integration\n- Dashboard or analytics\n- Custom AI enhancements\n\n👉 Feel free to [Contact WeblineIndia](https://www.weblineindia.com/contact-us.html) for [custom workflow development](https://www.weblineindia.com/process-automation-solutions.html) and automation solutions.","workflow":{"id":"uIcJuMR8Og1FjwMr","meta":{"instanceId":"14e4c77104722ab186539dfea5182e419aecc83d85963fe13f6de862c875ebfa","templateCredsSetupCompleted":true},"name":"Patient Reminder System","tags":[],"nodes":[{"id":"55e0b6ad-5c28-4c86-a72c-510dd412904a","name":"Trigger: Check Reminder Schedule","type":"n8n-nodes-base.scheduleTrigger","position":[-368,32],"parameters":{"rule":{"interval":[{"field":"minutes"}]}},"typeVersion":1},{"id":"b7eca472-960e-4d64-b3fe-a91bf89cc0d3","name":"Fetch Patient Records","type":"n8n-nodes-base.googleSheets","position":[-144,32],"parameters":{"options":{},"sheetName":{"__rl":true,"mode":"list","value":1672401817,"cachedResultUrl":"https://docs.google.com/spreadsheets/d/1b4XQG0yh1s3ZrnYTsKBlnSMNdlYzQt42zJ8DUneVTS8/edit#gid=1672401817","cachedResultName":"Patients"},"documentId":{"__rl":true,"mode":"list","value":"1b4XQG0yh1s3ZrnYTsKBlnSMNdlYzQt42zJ8DUneVTS8","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1b4XQG0yh1s3ZrnYTsKBlnSMNdlYzQt42zJ8DUneVTS8/edit?usp=drivesdk","cachedResultName":"LinkedIn Profile Monitor"}},"credentials":{"googleSheetsOAuth2Api":{"id":"I1RrcnhaJ8CK8L6g","name":"Google Sheets account 42"}},"typeVersion":4},{"id":"4f90a586-e61f-4f50-80e3-694f9ac78f45","name":"Match Reminder Time","type":"n8n-nodes-base.if","position":[208,32],"parameters":{"options":{},"conditions":{"options":{"version":1,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"81a69983-d594-4699-94f8-6d02c1fd42c0","operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json['Reminder Time'] }}","rightValue":"={{ $now.format('HH:mm') }}"}]}},"typeVersion":2},{"id":"508b38fb-8446-46e4-ac51-c751322794be","name":"Send Medicine Reminder","type":"n8n-nodes-base.slack","position":[448,16],"parameters":{"text":"=Reminder for {{$json.Name}}\n\nTake: {{$json.Medicine}}\n\nReply:\n1. Taken\n2. Not Taken\n3. Feeling Unwell","channel":"YOUR_CHANNEL","attachments":[],"otherOptions":{}},"credentials":{"slackApi":{"id":"dRQEMAne82jxjlmX","name":"Slack account 36"}},"typeVersion":1},{"id":"6c4b5f20-2cc9-449d-9440-e600f5ef35bc","name":"Receive Patient Response","type":"n8n-nodes-base.webhook","position":[-400,496],"webhookId":"d80bfbc5-ae14-4d29-a318-1b099e2466ab","parameters":{"path":"patient-reply","options":{},"httpMethod":"POST"},"typeVersion":1},{"id":"44f9545d-6d32-4b20-838a-08e0f01be2c9","name":"AI Response Classification","type":"n8n-nodes-base.openAi","position":[-224,496],"parameters":{"model":"gpt-4-turbo","prompt":{"messages":[{"role":"system","content":"Classify patient response into JSON"},{"content":"=You are an AI healthcare assistant.\n\nYour task is to analyze a patient's response to a medicine reminder and classify it.\n\nClassify the response into ONE of the following categories:\n1. TAKEN → Patient confirmed they took the medicine\n2. NOT_TAKEN → Patient clearly did not take it\n3. LATER → Patient will take it later / delayed\n4. CONFUSED → Message is unclear, unrelated or cannot determine intent\n\nPatient Message:\n\"{{ $json.body.message }}\"\n\nAlso consider:\n- If the patient sounds confused, distressed or mentions symptoms (pain, dizziness, emergency, etc.), treat it as CONFUSED.\n- If the patient repeatedly avoids taking medicine or gives risky responses, it may indicate a CRITICAL situation.\n\nReturn output in STRICT JSON format:\n\n{\n  \"classification\": \"TAKEN | NOT_TAKEN | LATER | CONFUSED\",\n  \"is_critical\": true | false,\n  \"reason\": \"short explanation\",\n  \"recommended_action\": \"what system should do next\",\n  \"doctor_alert\": \"message to doctor if critical, otherwise empty string\",\n  \"patient_reply\": \"professional and empathetic reply to patient\"\n}\n\nRules:\n- Return ONLY valid JSON (no extra text)\n- Keep responses short and clear\n- If is_critical = true → MUST generate doctor_alert\n- patient_reply must always be polite, supportive and professional"}]},"options":{},"resource":"chat","requestOptions":{}},"credentials":{"openAiApi":{"id":"ERYFwGU6ssapOmLu","name":"OpenAi account 36"}},"typeVersion":1},{"id":"e9eb142e-9f76-44db-99a3-b1558370f64b","name":"Parse & Normalize AI Output","type":"n8n-nodes-base.code","position":[-48,496],"parameters":{"jsCode":"const raw = $json.message.content;\n\nlet parsed;\n\ntry {\n  parsed = JSON.parse(raw);\n} catch (e) {\n  parsed = {\n    classification: \"CONFUSED\",\n    is_critical: false,\n    reason: \"Parsing failed\",\n    recommended_action: \"Fallback\",\n    doctor_alert: \"\",\n    patient_reply: \"Sorry, I couldn't understand. Please try again.\"\n  };\n}\n\n// Remove reserved fields like index\nconst { index, ...rest } = $json;\n\n// Return in correct n8n format\nreturn [\n  {\n    json: {\n      ...parsed,\n      ...rest\n    }\n  }\n];"},"typeVersion":2},{"id":"ddcf6329-21d1-49c4-9048-99124d166fcd","name":"Load Patient Data","type":"n8n-nodes-base.googleSheets","position":[240,496],"parameters":{"options":{},"sheetName":{"__rl":true,"mode":"list","value":1672401817,"cachedResultUrl":"https://docs.google.com/spreadsheets/d/1b4XQG0yh1s3ZrnYTsKBlnSMNdlYzQt42zJ8DUneVTS8/edit#gid=1672401817","cachedResultName":"Patients"},"documentId":{"__rl":true,"mode":"list","value":"1b4XQG0yh1s3ZrnYTsKBlnSMNdlYzQt42zJ8DUneVTS8","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1b4XQG0yh1s3ZrnYTsKBlnSMNdlYzQt42zJ8DUneVTS8/edit?usp=drivesdk","cachedResultName":"LinkedIn Profile Monitor"}},"credentials":{"googleSheetsOAuth2Api":{"id":"I1RrcnhaJ8CK8L6g","name":"Google Sheets account 42"}},"typeVersion":4.7},{"id":"021a86c1-f4f8-4a16-b082-e694603fa9ff","name":"Match Patient by Phone","type":"n8n-nodes-base.if","position":[432,496],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"c4bf4917-afff-492c-b60c-37d2a53576b8","operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.Phone.toString() }}","rightValue":"={{ $('Receive Patient Response').item.json.body.phone }}"}]}},"typeVersion":2.2},{"id":"2d746208-d12b-463e-8457-8b4324862426","name":"Update Missed Count","type":"n8n-nodes-base.code","position":[848,480],"parameters":{"jsCode":"let missed = parseInt( $input.first().json.Missed_Count|| 0);\n\n// Increase count only for NOT_TAKEN or LATER\nif ($('Parse & Normalize AI Output').first().json.classification === \"NOT_TAKEN\") {\n  missed += 1;\n}\n\nif ($('Parse & Normalize AI Output').first().json.classification === \"LATER\") {\n  missed += 1;\n}\n\n// Reset if TAKEN\nif ($('Parse & Normalize AI Output').first().json.classification === \"TAKEN\") {\n  missed = 0;\n}\n\n// Attach new value\nreturn [\n  {\n    json: {\n      ...$input.first().json,\n      Missed_Count: missed\n    }\n  }\n];"},"typeVersion":2},{"id":"d6dc2b8a-7364-40aa-8e55-f58220c4bf73","name":"Check Critical Condition","type":"n8n-nodes-base.if","position":[1248,480],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"or","conditions":[{"id":"2533fe93-8b66-4959-b933-9d31bc943f26","operator":{"type":"boolean","operation":"true","singleValue":true},"leftValue":"={{ $('Parse & Normalize AI Output').item.json.is_critical }}","rightValue":""},{"id":"0057c6d1-0970-423b-a061-74340fb1d4c9","operator":{"type":"number","operation":"gte"},"leftValue":"={{ $json.Missed_Count }}","rightValue":3}]}},"typeVersion":2.2},{"id":"0295ffec-379c-4b00-9a39-f121682fcc97","name":"Update Critical Status","type":"n8n-nodes-base.googleSheets","position":[1664,192],"parameters":{"columns":{"value":{"Phone":"={{ $('Receive Patient Response').item.json.body.phone }}","Status":"=CRITICAL","Missed_Count":"={{ $json.Missed_Count }}","Last Response":"={{ $('Parse & Normalize AI Output').item.json.classification }}","Last Patient Message":"={{ $('Receive Patient Response').item.json.body.message }}"},"schema":[{"id":"Name","type":"string","display":true,"required":false,"displayName":"Name","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Phone","type":"string","display":true,"removed":false,"required":false,"displayName":"Phone","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Medicine","type":"string","display":true,"required":false,"displayName":"Medicine","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Reminder Time","type":"string","display":true,"required":false,"displayName":"Reminder Time","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Last Response","type":"string","display":true,"required":false,"displayName":"Last Response","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Last Patient Message","type":"string","display":true,"removed":false,"required":false,"displayName":"Last Patient Message","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Status","type":"string","display":true,"required":false,"displayName":"Status","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Missed_Count","type":"string","display":true,"removed":false,"required":false,"displayName":"Missed_Count","defaultMatch":false,"canBeUsedToMatch":true},{"id":"row_number","type":"number","display":true,"removed":true,"readOnly":true,"required":false,"displayName":"row_number","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":["Phone"],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"update","sheetName":{"__rl":true,"mode":"list","value":1672401817,"cachedResultUrl":"https://docs.google.com/spreadsheets/d/1b4XQG0yh1s3ZrnYTsKBlnSMNdlYzQt42zJ8DUneVTS8/edit#gid=1672401817","cachedResultName":"Patients"},"documentId":{"__rl":true,"mode":"list","value":"1b4XQG0yh1s3ZrnYTsKBlnSMNdlYzQt42zJ8DUneVTS8","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1b4XQG0yh1s3ZrnYTsKBlnSMNdlYzQt42zJ8DUneVTS8/edit?usp=drivesdk","cachedResultName":"LinkedIn Profile Monitor"}},"credentials":{"googleSheetsOAuth2Api":{"id":"I1RrcnhaJ8CK8L6g","name":"Google Sheets account 42"}},"typeVersion":4.7},{"id":"cd847c40-19d4-432d-8723-03b376982153","name":"Update Patient Record","type":"n8n-nodes-base.googleSheets","position":[1680,720],"parameters":{"columns":{"value":{"Phone":"={{ $('Receive Patient Response').item.json.body.phone }}","Status":"={{ $('Parse & Normalize AI Output').item.json.classification }}","Missed_Count":"={{ $('Update Missed Count').item.json.Missed_Count }}","Last Response":"={{ $('Parse & Normalize AI Output').item.json.classification }}","Last Patient Message":"={{ $('Receive Patient Response').item.json.body.message }}"},"schema":[{"id":"Name","type":"string","display":true,"required":false,"displayName":"Name","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Phone","type":"string","display":true,"removed":false,"required":false,"displayName":"Phone","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Medicine","type":"string","display":true,"required":false,"displayName":"Medicine","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Reminder Time","type":"string","display":true,"required":false,"displayName":"Reminder Time","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Last Response","type":"string","display":true,"required":false,"displayName":"Last Response","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Last Patient Message","type":"string","display":true,"removed":false,"required":false,"displayName":"Last Patient Message","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Status","type":"string","display":true,"required":false,"displayName":"Status","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Missed_Count","type":"string","display":true,"removed":false,"required":false,"displayName":"Missed_Count","defaultMatch":false,"canBeUsedToMatch":true},{"id":"row_number","type":"number","display":true,"removed":true,"readOnly":true,"required":false,"displayName":"row_number","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":["Phone"],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"update","sheetName":{"__rl":true,"mode":"list","value":1672401817,"cachedResultUrl":"https://docs.google.com/spreadsheets/d/1b4XQG0yh1s3ZrnYTsKBlnSMNdlYzQt42zJ8DUneVTS8/edit#gid=1672401817","cachedResultName":"Patients"},"documentId":{"__rl":true,"mode":"list","value":"1b4XQG0yh1s3ZrnYTsKBlnSMNdlYzQt42zJ8DUneVTS8","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1b4XQG0yh1s3ZrnYTsKBlnSMNdlYzQt42zJ8DUneVTS8/edit?usp=drivesdk","cachedResultName":"LinkedIn Profile Monitor"}},"credentials":{"googleSheetsOAuth2Api":{"id":"I1RrcnhaJ8CK8L6g","name":"Google Sheets account 42"}},"typeVersion":4.7},{"id":"433e06c6-2839-4ebe-91b3-e581ba473955","name":"Route Based on Response","type":"n8n-nodes-base.switch","position":[1888,704],"parameters":{"rules":{"values":[{"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"269864d9-4640-429f-a729-f99c7e35d01b","operator":{"type":"string","operation":"equals"},"leftValue":"={{ $('Parse & Normalize AI Output').item.json.classification }}","rightValue":"NOT_TAKEN"}]}},{"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"3bbe8ea4-452b-4b9a-a9a7-15b9086006dc","operator":{"name":"filter.operator.equals","type":"string","operation":"equals"},"leftValue":"={{ $('Parse & Normalize AI Output').item.json.classification }}","rightValue":"LATER"}]}},{"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"1f8b3965-ad4d-46e7-a376-5828399bdd56","operator":{"name":"filter.operator.equals","type":"string","operation":"equals"},"leftValue":"={{ $('Parse & Normalize AI Output').item.json.classification }}","rightValue":"TAKEN"}]}}]},"options":{}},"typeVersion":3.3},{"id":"97548710-3242-4a3d-a04f-204f32bf29ed","name":"Notify Missed Dose","type":"n8n-nodes-base.slack","position":[2144,544],"webhookId":"d8b02f83-3a84-4e96-90e9-ec717a9d8eab","parameters":{"text":"You missed your medicine. Please take it as soon as possible.","select":"channel","channelId":{"__rl":true,"mode":"list","value":"C0ALCNTB03G","cachedResultName":"complain"},"otherOptions":{}},"credentials":{"slackApi":{"id":"dRQEMAne82jxjlmX","name":"Slack account 36"}},"typeVersion":2.3},{"id":"f919177d-826a-4284-be9a-58d3b215b268","name":"Reminder for Later","type":"n8n-nodes-base.slack","position":[2160,720],"webhookId":"d8b02f83-3a84-4e96-90e9-ec717a9d8eab","parameters":{"text":"No problem, Please don’t forget to take it soon.","select":"channel","channelId":{"__rl":true,"mode":"list","value":"C0ALCNTB03G","cachedResultName":"complain"},"otherOptions":{}},"credentials":{"slackApi":{"id":"dRQEMAne82jxjlmX","name":"Slack account 36"}},"typeVersion":2.3},{"id":"48a3050e-6f27-4a27-a8ba-ca50a7f526cb","name":"Acknowledge Compliance","type":"n8n-nodes-base.slack","position":[2160,912],"webhookId":"d8b02f83-3a84-4e96-90e9-ec717a9d8eab","parameters":{"text":"Great! Keep taking your medicine regularly.","select":"channel","channelId":{"__rl":true,"mode":"list","value":"C0ALCNTB03G","cachedResultName":"complain"},"otherOptions":{}},"credentials":{"slackApi":{"id":"dRQEMAne82jxjlmX","name":"Slack account 36"}},"typeVersion":2.3},{"id":"a0e7ecab-5d47-4e5c-891b-34b573493c8f","name":"Alert Doctor (Critical Case)","type":"n8n-nodes-base.slack","position":[1904,192],"webhookId":"7ffc2e52-cabf-4483-960a-ba5068d93152","parameters":{"text":"=CRITICAL PATIENT ALERT\n\nName: {{ $('Match Patient by Phone').item.json.Name }}\nPhone: {{$json.Phone}}\nMedicine: {{ $('Match Patient by Phone').item.json.Medicine }}\n\nReason:\n{{ $('Parse & Normalize AI Output').item.json.reason }}\n\nAI Alert:\n{{ $('Parse & Normalize AI Output').item.json.doctor_alert }}","select":"channel","channelId":{"__rl":true,"mode":"list","value":"C0ALTQD6L0H","cachedResultName":"feature-addition"},"otherOptions":{}},"credentials":{"slackApi":{"id":"dRQEMAne82jxjlmX","name":"Slack account 36"}},"typeVersion":2.3},{"id":"42dd5c65-3db3-4edf-90dd-ea9d60169f20","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-448,-176],"parameters":{"color":7,"width":512,"height":416,"content":"## Reminder Scheduler & Patient Fetch\nThis section initiates the workflow at regular intervals and retrieves all patient records from the database. It ensures the system continuously checks for upcoming medicine reminders and processes patient data dynamically without manual intervention."},"typeVersion":1},{"id":"cd009249-4b25-49a9-a112-4c8b50ed5b75","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[112,-176],"parameters":{"color":7,"width":544,"height":416,"content":"## Reminder Time Validation\nThis section verifies whether the current time matches the patient’s scheduled reminder time. If matched, it sends a personalized medicine reminder via Slack, prompting the patient to confirm their action or provide a response."},"typeVersion":1},{"id":"0aa13a73-4a5f-4164-a542-00ec1b8c1264","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[-448,320],"parameters":{"color":7,"width":592,"height":400,"content":"## Patient Response Intake & AI Processing\nThis section captures patient replies via webhook and uses AI to classify their response. The output is parsed into structured JSON, ensuring consistent data handling for further decision-making and automation."},"typeVersion":1},{"id":"eae02ea5-36ba-4f8c-b2b2-f7886afb90f7","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[192,320],"parameters":{"color":7,"width":496,"height":400,"content":"## Patient Identification & Tracking\nThis section identifies the correct patient by matching the incoming response phone number with stored records. It ensures that all actions, updates and alerts are applied to the correct individual."},"typeVersion":1},{"id":"258a6952-c2fa-4af2-967d-94bd0e9bab08","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[736,320],"parameters":{"color":7,"width":336,"height":400,"content":"## Missed Dose Calculation\nThis section updates the patient’s missed medicine count based on their response. It increments the count for missed or delayed doses and resets it when medicine is taken, helping track adherence over time."},"typeVersion":1},{"id":"538523ee-76a1-4157-9f52-78aaef6731e7","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[1120,320],"parameters":{"color":7,"width":368,"height":400,"content":"## Critical Condition Detection \nThis section evaluates whether the situation is critical based on AI output or missed dose thresholds. It ensures that high-risk cases are immediately flagged for urgent attention and escalation."},"typeVersion":1},{"id":"18c0f105-cbf4-41ac-9c8c-6e19e3fa00b5","name":"Sticky Note6","type":"n8n-nodes-base.stickyNote","position":[1568,16],"parameters":{"color":7,"width":576,"height":352,"content":"## Data Update & Doctor Alert\nThis section updates the patient’s record with critical status and sends an alert to the doctor via Slack. It ensures immediate visibility of high-risk patients and enables timely medical intervention."},"typeVersion":1},{"id":"ec83b811-3640-4d47-9985-e6f84a155388","name":"Sticky Note7","type":"n8n-nodes-base.stickyNote","position":[1568,416],"parameters":{"color":7,"width":800,"height":688,"content":"## Standard Update & Patient Feedback \nThis section updates patient records for non-critical cases and routes responses based on classification. It sends appropriate feedback messages to patients, ensuring engagement and encouraging medication adherence."},"typeVersion":1},{"id":"1dd765da-244f-479f-9d7f-41d330174d9f","name":"Sticky Note8","type":"n8n-nodes-base.stickyNote","position":[-448,-688],"parameters":{"width":832,"height":464,"content":"## How Workflow Works + Setup (Detailed)\nThis workflow automates medicine adherence tracking by combining scheduled reminders, AI-based response analysis and real-time notifications. It starts with a scheduler that periodically checks patient records stored in Google Sheets. When the current time matches a patient’s reminder time, a Slack message is sent prompting them to confirm whether they took their medicine.\n\nWhen a patient responds, the webhook captures the message and sends it to an AI model for classification. The AI determines whether the medicine was taken, missed, delayed or unclear and also identifies potential critical conditions. The response is then parsed and matched to the correct patient using their phone number.\n\nBased on the classification, the system updates the patient’s record, adjusts missed dose counts and evaluates whether escalation is required. If a critical condition is detected or missed doses exceed a threshold, an alert is sent to the doctor. Otherwise, the patient receives a contextual follow-up message.\n\nSetup Steps:\nConnect Google Sheets with patient data\nConfigure Slack API for messaging\nSet up webhook endpoint for responses\nAdd OpenAI API key for classification\nDefine reminder times in sheet\nActivate workflow with schedule trigger"},"typeVersion":1}],"active":false,"pinData":{},"settings":{"executionOrder":"v1"},"versionId":"841adf09-5677-49d2-af3b-8223fb262472","connections":{"Load Patient Data":{"main":[[{"node":"Match Patient by Phone","type":"main","index":0}]]},"Match Reminder Time":{"main":[[{"node":"Send Medicine Reminder","type":"main","index":0}]]},"Update Missed Count":{"main":[[{"node":"Check Critical Condition","type":"main","index":0}]]},"Fetch Patient Records":{"main":[[{"node":"Match Reminder Time","type":"main","index":0}]]},"Update Patient Record":{"main":[[{"node":"Route Based on Response","type":"main","index":0}]]},"Match Patient by Phone":{"main":[[{"node":"Update Missed Count","type":"main","index":0}]]},"Update Critical Status":{"main":[[{"node":"Alert Doctor (Critical Case)","type":"main","index":0}]]},"Route Based on Response":{"main":[[{"node":"Notify Missed Dose","type":"main","index":0}],[{"node":"Reminder for Later","type":"main","index":0}],[{"node":"Acknowledge Compliance","type":"main","index":0}]]},"Check Critical Condition":{"main":[[{"node":"Update Critical Status","type":"main","index":0}],[{"node":"Update Patient Record","type":"main","index":0}]]},"Receive Patient Response":{"main":[[{"node":"AI Response Classification","type":"main","index":0}]]},"AI Response Classification":{"main":[[{"node":"Parse & Normalize AI Output","type":"main","index":0}]]},"Parse & Normalize AI Output":{"main":[[{"node":"Load Patient Data","type":"main","index":0}]]},"Alert Doctor (Critical Case)":{"main":[[]]},"Trigger: Check Reminder Schedule":{"main":[[{"node":"Fetch Patient Records","type":"main","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":27,"nodeTypes":{"n8n-nodes-base.if":{"count":3},"n8n-nodes-base.code":{"count":2},"n8n-nodes-base.slack":{"count":5},"n8n-nodes-base.openAi":{"count":1},"n8n-nodes-base.switch":{"count":1},"n8n-nodes-base.webhook":{"count":1},"n8n-nodes-base.stickyNote":{"count":9},"n8n-nodes-base.googleSheets":{"count":4},"n8n-nodes-base.scheduleTrigger":{"count":1}}},"status":"published","readyToDemo":null,"user":{"name":"WeblineIndia","username":"weblineindia","bio":"A Leading Software Engineering, Consulting & Outsourcing Services Company in USA & India serving Clients Globally since 1999.","verified":true,"links":["https://www.weblineindia.com/hire-n8n-developers/"],"avatar":"https://gravatar.com/avatar/a229d43aefca4588581583c58bb37b4773aebbdf4c1fef86a08bb1d38eae91fa?r=pg&d=retro&size=200"},"nodes":[{"id":18,"icon":"file:googleSheets.svg","name":"n8n-nodes-base.googleSheets","codex":{"data":{"alias":["CSV","Sheet","Spreadsheet","GS"],"resources":{"generic":[{"url":"https://n8n.io/blog/love-at-first-sight-ricardos-n8n-journey/","icon":"❤️","label":"Love at first sight: Ricardo’s n8n journey"},{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/","icon":"🧾","label":"Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"},{"url":"https://n8n.io/blog/supercharging-your-conference-registration-process-with-n8n/","icon":"🎫","label":"Supercharging your conference registration process with n8n"},{"url":"https://n8n.io/blog/creating-triggers-for-n8n-workflows-using-polling/","icon":"⏲","label":"Creating triggers for n8n workflows using polling"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/migrating-community-metrics-to-orbit-using-n8n/","icon":"📈","label":"Migrating Community Metrics to Orbit using n8n"},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/your-business-doesnt-need-you-to-operate/","icon":" 🖥️","label":"Hey founders! Your business doesn't need you to operate"},{"url":"https://n8n.io/blog/how-honest-burgers-use-automation-to-save-100k-per-year/","icon":"🍔","label":"How Honest Burgers Use Automation to Save $100k per year"},{"url":"https://n8n.io/blog/how-a-digital-strategist-uses-n8n-for-online-marketing/","icon":"💻","label":"How a digital strategist uses n8n for online marketing"},{"url":"https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/","icon":"🧠","label":"Why this Product Manager loves workflow automation with n8n"},{"url":"https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/","icon":"🙌","label":"Sending Automated Congratulations with Google Sheets, Twilio, and n8n "},{"url":"https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/","icon":"📈","label":"How a Membership Development Manager automates his work and investments"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googlesheets/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/"}]},"categories":["Data & Storage","Productivity"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"input\",\"output\"]","defaults":{"name":"Google Sheets"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2MCIgaGVpZ2h0PSI2MCI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxwYXRoIGZpbGw9IiMyOEI0NDYiIGQ9Ik0zNS42OSAxIDUyIDE3LjIyNXYzOS4wODdhMy42NyAzLjY3IDAgMCAxLTEuMDg0IDIuNjFBMy43IDMuNyAwIDAgMSA0OC4yOTMgNjBIMTIuNzA3YTMuNyAzLjcgMCAwIDEtMi42MjMtMS4wNzhBMy42NyAzLjY3IDAgMCAxIDkgNTYuMzEyVjQuNjg4YTMuNjcgMy42NyAwIDAgMSAxLjA4NC0yLjYxQTMuNyAzLjcgMCAwIDEgMTIuNzA3IDF6Ii8+PHBhdGggZmlsbD0iIzZBQ0U3QyIgZD0iTTM1LjY5IDEgNTIgMTcuMjI1SDM5LjM5N2MtMi4wNTQgMC0zLjcwNy0xLjgyOS0zLjcwNy0zLjg3MnoiLz48cGF0aCBmaWxsPSIjMjE5QjM4IiBkPSJNMzkuMjExIDE3LjIyNSA1MiAyMi40OHYtNS4yNTV6Ii8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTIwLjEyIDMxLjk3NWMwLS44MTcuNjYyLTEuNDc1IDEuNDgzLTEuNDc1aDE3Ljc5NGMuODIxIDAgMS40ODIuNjU4IDEuNDgyIDEuNDc1djE1LjQ4N2MwIC44MTgtLjY2MSAxLjQ3NS0xLjQ4MiAxLjQ3NUgyMS42MDNhMS40NzYgMS40NzYgMCAwIDEtMS40ODItMS40NzRWMzEuOTc0em0yLjIyNSAxLjQ3NWg2LjY3MnYyLjIxMmgtNi42NzJ6bTAgNS4xNjJoNi42NzJ2Mi4yMTNoLTYuNjcyem0wIDUuMTYzaDYuNjcydjIuMjEyaC02LjY3MnptOS42MzgtMTAuMzI1aDYuNjcydjIuMjEyaC02LjY3MnptMCA1LjE2Mmg2LjY3MnYyLjIxM2gtNi42NzJ6bTAgNS4xNjNoNi42NzJ2Mi4yMTJoLTYuNjcyeiIvPjxwYXRoIGZpbGw9IiMyOEI0NDYiIGQ9Ik0zNC42OSAwIDUxIDE2LjIyNXYzOS4wODdhMy42NyAzLjY3IDAgMCAxLTEuMDg0IDIuNjFBMy43IDMuNyAwIDAgMSA0Ny4yOTMgNTlIMTEuNzA3YTMuNyAzLjcgMCAwIDEtMi42MjMtMS4wNzhBMy42NyAzLjY3IDAgMCAxIDggNTUuMzEyVjMuNjg4YTMuNjcgMy42NyAwIDAgMSAxLjA4NC0yLjYxQTMuNyAzLjcgMCAwIDEgMTEuNzA3IDB6Ii8+PHBhdGggZmlsbD0iIzZBQ0U3QyIgZD0iTTM0LjY5IDAgNTEgMTYuMjI1SDM4LjM5N2MtMi4wNTQgMC0zLjcwNy0xLjgyOS0zLjcwNy0zLjg3MnoiLz48cGF0aCBmaWxsPSIjMjE5QjM4IiBkPSJNMzguMjExIDE2LjIyNSA1MSAyMS40OHYtNS4yNTV6Ii8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTE5LjEyIDMwLjk3NWMwLS44MTcuNjYyLTEuNDc1IDEuNDgzLTEuNDc1aDE3Ljc5NGMuODIxIDAgMS40ODIuNjU4IDEuNDgyIDEuNDc1djE1LjQ4N2MwIC44MTgtLjY2MSAxLjQ3NS0xLjQ4MiAxLjQ3NUgyMC42MDNhMS40NzYgMS40NzYgMCAwIDEtMS40ODItMS40NzRWMzAuOTc0em0yLjIyNSAxLjQ3NWg2LjY3MnYyLjIxMmgtNi42NzJ6bTAgNS4xNjJoNi42NzJ2Mi4yMTNoLTYuNjcyem0wIDUuMTYzaDYuNjcydjIuMjEyaC02LjY3MnptOS42MzgtMTAuMzI1aDYuNjcydjIuMjEyaC02LjY3MnptMCA1LjE2Mmg2LjY3MnYyLjIxM2gtNi42NzJ6bTAgNS4xNjNoNi42NzJ2Mi4yMTJoLTYuNjcyeiIvPjwvZz48L3N2Zz4="},"displayName":"Google Sheets","typeVersion":5,"nodeCategories":[{"id":3,"name":"Data & Storage"},{"id":4,"name":"Productivity"}]},{"id":20,"icon":"fa:map-signs","name":"n8n-nodes-base.if","codex":{"data":{"alias":["Router","Filter","Condition","Logic","Boolean","Branch"],"details":"The IF node can be used to implement binary conditional logic in your workflow. You can set up one-to-many conditions to evaluate each item of data being inputted into the node. That data will either evaluate to TRUE or FALSE and route out of the node accordingly.\n\nThis node has multiple types of conditions: Bool, String, Number, and Date & Time.","resources":{"generic":[{"url":"https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/","icon":"🏭","label":"Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"},{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/create-a-toxic-language-detector-for-telegram/","icon":"🤬","label":"Create a toxic language detector for Telegram in 4 step"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/","icon":"🔗","label":"How to build a low-code, self-hosted URL shortener in 3 steps"},{"url":"https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/","icon":"⚙️","label":"Automate your data processing pipeline in 9 steps"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/automation-for-maintainers-of-open-source-projects/","icon":"🏷️","label":"How to automatically manage contributions to open-source projects"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/","icon":"🧠","label":"Why this Product Manager loves workflow automation with n8n"},{"url":"https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/","icon":"🙌","label":"Sending Automated Congratulations with Google Sheets, Twilio, and n8n "},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.if/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow"]}}},"group":"[\"transform\"]","defaults":{"name":"If","color":"#408000"},"iconData":{"icon":"map-signs","type":"icon"},"displayName":"If","typeVersion":2,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":40,"icon":"file:slack.svg","name":"n8n-nodes-base.slack","codex":{"data":{"alias":["human","form","wait","hitl","approval"],"resources":{"generic":[{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/","icon":"⚙️","label":"Automate your data processing pipeline in 9 steps"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/build-your-own-virtual-assistant-with-n8n-a-step-by-step-guide/","icon":"👦","label":"Build your own virtual assistant with n8n: A step by step guide"},{"url":"https://n8n.io/blog/how-to-automatically-give-kudos-to-contributors-with-github-slack-and-n8n/","icon":"👏","label":"How to automatically give kudos to contributors with GitHub, Slack, and n8n"},{"url":"https://n8n.io/blog/automations-for-activists/","icon":"✨","label":"How Common Knowledge use workflow automation for activism"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.slack/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/slack/"}]},"categories":["Communication","HITL"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"HITL":["Human in the Loop"]}}},"group":"[\"output\"]","defaults":{"name":"Slack"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB2aWV3Qm94PSIwIDAgMTUwLjg1MiAxNTAuODUyIj48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIuOTI2IiB5PSIuOTI2Ii8+PHN5bWJvbCBpZD0iYSIgb3ZlcmZsb3c9InZpc2libGUiPjxnIHN0cm9rZS13aWR0aD0iMS44NTIiPjxwYXRoIGZpbGw9IiNlMDFlNWEiIHN0cm9rZT0iI2UwMWU1YSIgZD0iTTQwLjc0MSA5My41NWMwLTguNzM1IDYuNjA3LTE1Ljc3MiAxNC44MTUtMTUuNzcyczE0LjgxNSA3LjAzNyAxNC44MTUgMTUuNzcydjM4LjgyNGMwIDguNzM3LTYuNjA3IDE1Ljc3NC0xNC44MTUgMTUuNzc0cy0xNC44MTUtNy4wMzctMTQuODE1LTE1Ljc3MnoiLz48cGF0aCBmaWxsPSIjZWNiMjJkIiBzdHJva2U9IiNlY2IyMmQiIGQ9Ik05My41NSAxMDcuNDA4Yy04LjczNSAwLTE1Ljc3Mi02LjYwNy0xNS43NzItMTQuODE1czcuMDM3LTE0LjgxNSAxNS43NzItMTQuODE1aDM4LjgyNmM4LjczNSAwIDE1Ljc3MiA2LjYwNyAxNS43NzIgMTQuODE1cy03LjAzNyAxNC44MTUtMTUuNzcyIDE0LjgxNXoiLz48cGF0aCBmaWxsPSIjMmZiNjdjIiBzdHJva2U9IiMyZmI2N2MiIGQ9Ik03Ny43NzggMTUuNzcyQzc3Ljc3OCA3LjAzNyA4NC4zODUgMCA5Mi41OTMgMHMxNC44MTUgNy4wMzcgMTQuODE1IDE1Ljc3MnYzOC44MjZjMCA4LjczNS02LjYwNyAxNS43NzItMTQuODE1IDE1Ljc3MnMtMTQuODE1LTcuMDM3LTE0LjgxNS0xNS43NzJ6Ii8+PHBhdGggZmlsbD0iIzM2YzVmMSIgc3Ryb2tlPSIjMzZjNWYxIiBkPSJNMTUuNzcyIDcwLjM3MUM3LjAzNyA3MC4zNzEgMCA2My43NjMgMCA1NS41NTZzNy4wMzctMTQuODE1IDE1Ljc3Mi0xNC44MTVoMzguODI2YzguNzM1IDAgMTUuNzcyIDYuNjA3IDE1Ljc3MiAxNC44MTVzLTcuMDM3IDE0LjgxNS0xNS43NzIgMTQuODE1eiIvPjxnIHN0cm9rZS1saW5lam9pbj0ibWl0ZXIiPjxwYXRoIGZpbGw9IiNlY2IyMmQiIHN0cm9rZT0iI2VjYjIyZCIgZD0iTTc3Ljc3OCAxMzMuMzMzYzAgOC4yMDggNi42MDcgMTQuODE1IDE0LjgxNSAxNC44MTVzMTQuODE1LTYuNjA3IDE0LjgxNS0xNC44MTUtNi42MDctMTQuODE1LTE0LjgxNS0xNC44MTVINzcuNzc4eiIvPjxwYXRoIGZpbGw9IiMyZmI2N2MiIHN0cm9rZT0iIzJmYjY3YyIgZD0iTTEzMy4zMzQgNzAuMzcxaC0xNC44MTVWNTUuNTU2YzAtOC4yMDcgNi42MDctMTQuODE1IDE0LjgxNS0xNC44MTVzMTQuODE1IDYuNjA3IDE0LjgxNSAxNC44MTUtNi42MDcgMTQuODE1LTE0LjgxNSAxNC44MTV6Ii8+PHBhdGggZmlsbD0iI2UwMWU1YSIgc3Ryb2tlPSIjZTAxZTVhIiBkPSJNMTQuODE1IDc3Ljc3OEgyOS42M3YxNC44MTVjMCA4LjIwNy02LjYwNyAxNC44MTUtMTQuODE1IDE0LjgxNVMwIDEwMC44IDAgOTIuNTkzczYuNjA3LTE0LjgxNSAxNC44MTUtMTQuODE1eiIvPjxwYXRoIGZpbGw9IiMzNmM1ZjEiIHN0cm9rZT0iIzM2YzVmMSIgZD0iTTcwLjM3MSAxNC44MTVWMjkuNjNINTUuNTU2Yy04LjIwNyAwLTE0LjgxNS02LjYwNy0xNC44MTUtMTQuODE1UzQ3LjM0OCAwIDU1LjU1NiAwczE0LjgxNSA2LjYwNyAxNC44MTUgMTQuODE1eiIvPjwvZz48L2c+PC9zeW1ib2w+PC9zdmc+"},"displayName":"Slack","typeVersion":2,"nodeCategories":[{"id":6,"name":"Communication"},{"id":28,"name":"HITL"}]},{"id":47,"icon":"file:webhook.svg","name":"n8n-nodes-base.webhook","codex":{"data":{"alias":["HTTP","API","Build","WH"],"resources":{"generic":[{"url":"https://n8n.io/blog/learn-how-to-automatically-cross-post-your-content-with-n8n/","icon":"✍️","label":"Learn how to automatically cross-post your content with n8n"},{"url":"https://n8n.io/blog/running-n8n-on-ships-an-interview-with-maranics/","icon":"🛳","label":"Running n8n on ships: An interview with Maranics"},{"url":"https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/","icon":"🔗","label":"How to build a low-code, self-hosted URL shortener in 3 steps"},{"url":"https://n8n.io/blog/what-are-apis-how-to-use-them-with-no-code/","icon":" 🪢","label":"What are APIs and how to use them with no code"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/how-a-digital-strategist-uses-n8n-for-online-marketing/","icon":"💻","label":"How a digital strategist uses n8n for online marketing"},{"url":"https://n8n.io/blog/the-ultimate-guide-to-automate-your-video-collaboration-with-whereby-mattermost-and-n8n/","icon":"📹","label":"The ultimate guide to automate your video collaboration with Whereby, Mattermost, and n8n"},{"url":"https://n8n.io/blog/how-to-automatically-give-kudos-to-contributors-with-github-slack-and-n8n/","icon":"👏","label":"How to automatically give kudos to contributors with GitHub, Slack, and n8n"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/","icon":"🧠","label":"Why this Product Manager loves workflow automation with n8n"},{"url":"https://n8n.io/blog/creating-custom-incident-response-workflows-with-n8n/","label":"How to automate every step of an incident response workflow"},{"url":"https://n8n.io/blog/learn-to-build-powerful-api-endpoints-using-webhooks/","icon":"🧰","label":"Learn to Build Powerful API Endpoints Using Webhooks"},{"url":"https://n8n.io/blog/learn-how-to-use-webhooks-with-mattermost-slash-commands/","icon":"🦄","label":"Learn how to use webhooks with Mattermost slash commands"},{"url":"https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/","icon":"🛵","label":"How Goomer automated their operations with over 200 n8n workflows"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"trigger\"]","defaults":{"name":"Webhook"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCI+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTM1IDM3Yy0yLjIgMC00LTEuOC00LTRzMS44LTQgNC00IDQgMS44IDQgNC0xLjggNC00IDQiLz48cGF0aCBmaWxsPSIjMzc0NzRmIiBkPSJNMzUgNDNjLTMgMC01LjktMS40LTcuOC0zLjdsMy4xLTIuNWMxLjEgMS40IDIuOSAyLjMgNC43IDIuMyAzLjMgMCA2LTIuNyA2LTZzLTIuNy02LTYtNmMtMSAwLTIgLjMtMi45LjdsLTEuNyAxTDIzLjMgMTZsMy41LTEuOSA1LjMgOS40YzEtLjMgMi0uNSAzLS41IDUuNSAwIDEwIDQuNSAxMCAxMFM0MC41IDQzIDM1IDQzIi8+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTE0IDQzQzguNSA0MyA0IDM4LjUgNCAzM2MwLTQuNiAzLjEtOC41IDcuNS05LjdsMSAzLjlDOS45IDI3LjkgOCAzMC4zIDggMzNjMCAzLjMgMi43IDYgNiA2czYtMi43IDYtNnYtMmgxNXY0SDIzLjhjLS45IDQuNi01IDgtOS44IDgiLz48cGF0aCBmaWxsPSIjZTkxZTYzIiBkPSJNMTQgMzdjLTIuMiAwLTQtMS44LTQtNHMxLjgtNCA0LTQgNCAxLjggNCA0LTEuOCA0LTQgNCIvPjxwYXRoIGZpbGw9IiMzNzQ3NGYiIGQ9Ik0yNSAxOWMtMi4yIDAtNC0xLjgtNC00czEuOC00IDQtNCA0IDEuOCA0IDQtMS44IDQtNCA0Ii8+PHBhdGggZmlsbD0iI2U5MWU2MyIgZD0ibTE1LjcgMzQtMy40LTIgNS45LTkuN2MtMi0xLjktMy4yLTQuNS0zLjItNy4zIDAtNS41IDQuNS0xMCAxMC0xMHMxMCA0LjUgMTAgMTBjMCAuOS0uMSAxLjctLjMgMi41bC0zLjktMWMuMS0uNS4yLTEgLjItMS41IDAtMy4zLTIuNy02LTYtNnMtNiAyLjctNiA2YzAgMi4xIDEuMSA0IDIuOSA1LjFsMS43IDF6Ii8+PC9zdmc+"},"displayName":"Webhook","typeVersion":2,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"id":112,"icon":"fa:map-signs","name":"n8n-nodes-base.switch","codex":{"data":{"alias":["Router","If","Path","Filter","Condition","Logic","Branch","Case"],"resources":{"generic":[{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/build-your-own-virtual-assistant-with-n8n-a-step-by-step-guide/","icon":"👦","label":"Build your own virtual assistant with n8n: A step by step guide"},{"url":"https://n8n.io/blog/automation-for-maintainers-of-open-source-projects/","icon":"🏷️","label":"How to automatically manage contributions to open-source projects"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.switch/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow"]}}},"group":"[\"transform\"]","defaults":{"name":"Switch","color":"#506000"},"iconData":{"icon":"map-signs","type":"icon"},"displayName":"Switch","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":565,"icon":"fa:sticky-note","name":"n8n-nodes-base.stickyNote","codex":{"data":{"alias":["Comments","Notes","Sticky"],"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"input\"]","defaults":{"name":"Sticky Note","color":"#FFD233"},"iconData":{"icon":"sticky-note","type":"icon"},"displayName":"Sticky Note","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":834,"icon":"file:code.svg","name":"n8n-nodes-base.code","codex":{"data":{"alias":["cpde","Javascript","JS","Python","Script","Custom Code","Function"],"details":"The Code node allows you to execute JavaScript in your workflow.","resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers","Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Code"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xMTcxXzQ0MSkiPgo8cGF0aCBkPSJNMTcwLjI4MyA0OEgxOTYuNUMyMDMuMTI3IDQ4IDIwOC41IDQyLjYyNzQgMjA4LjUgMzZWMTJDMjA4LjUgNS4zNzI1OCAyMDMuMTI3IDAgMTk2LjUgMEgxNzAuMjgzQzEyNi4xIDAgOTAuMjgzIDM1LjgxNzIgOTAuMjgzIDgwVjE3NkM5MC4yODMgMjA2LjkyOCA2NS4yMTA5IDIzMiAzNC4yODMgMjMySDIzQzE2LjM3MjYgMjMyIDExIDIzNy4zNzIgMTEgMjQ0VjI2OEMxMSAyNzQuNjI3IDE2LjM3MjQgMjgwIDIyLjk5OTYgMjgwTDM0LjI4MyAyODBDNjUuMjEwOSAyODAgOTAuMjgzIDMwNS4wNzIgOTAuMjgzIDMzNlY0NDBDOTAuMjgzIDQ3OS43NjQgMTIyLjUxOCA1MTIgMTYyLjI4MyA1MTJIMTk2LjVDMjAzLjEyNyA1MTIgMjA4LjUgNTA2LjYyNyAyMDguNSA1MDBWNDc2QzIwOC41IDQ2OS4zNzMgMjAzLjEyNyA0NjQgMTk2LjUgNDY0SDE2Mi4yODNDMTQ5LjAyOCA0NjQgMTM4LjI4MyA0NTMuMjU1IDEzOC4yODMgNDQwVjMzNkMxMzguMjgzIDMwOS4wMjIgMTI4LjAxMSAyODQuNDQzIDExMS4xNjQgMjY1Ljk2MUMxMDYuMTA5IDI2MC40MTYgMTA2LjEwOSAyNTEuNTg0IDExMS4xNjQgMjQ2LjAzOUMxMjguMDExIDIyNy41NTcgMTM4LjI4MyAyMDIuOTc4IDEzOC4yODMgMTc2VjgwQzEzOC4yODMgNjIuMzI2OSAxNTIuNjEgNDggMTcwLjI4MyA0OFoiIGZpbGw9IiNGRjk5MjIiLz4KPHBhdGggZD0iTTMwNSAzNkMzMDUgNDIuNjI3NCAzMTAuMzczIDQ4IDMxNyA0OEgzNDIuOTc5QzM2MC42NTIgNDggMzc0Ljk3OCA2Mi4zMjY5IDM3NC45NzggODBWMTc2QzM3NC45NzggMjAyLjk3OCAzODUuMjUxIDIyNy41NTcgNDAyLjA5OCAyNDYuMDM5QzQwNy4xNTMgMjUxLjU4NCA0MDcuMTUzIDI2MC40MTYgNDAyLjA5OCAyNjUuOTYxQzM4NS4yNTEgMjg0LjQ0MyAzNzQuOTc4IDMwOS4wMjIgMzc0Ljk3OCAzMzZWNDMyQzM3NC45NzggNDQ5LjY3MyAzNjAuNjUyIDQ2NCAzNDIuOTc5IDQ2NEgzMTdDMzEwLjM3MyA0NjQgMzA1IDQ2OS4zNzMgMzA1IDQ3NlY1MDBDMzA1IDUwNi42MjcgMzEwLjM3MyA1MTIgMzE3IDUxMkgzNDIuOTc5QzM4Ny4xNjEgNTEyIDQyMi45NzggNDc2LjE4MyA0MjIuOTc4IDQzMlYzMzZDNDIyLjk3OCAzMDUuMDcyIDQ0OC4wNTEgMjgwIDQ3OC45NzkgMjgwSDQ5MEM0OTYuNjI3IDI4MCA1MDIgMjc0LjYyOCA1MDIgMjY4VjI0NEM1MDIgMjM3LjM3MyA0OTYuNjI4IDIzMiA0OTAgMjMyTDQ3OC45NzkgMjMyQzQ0OC4wNTEgMjMyIDQyMi45NzggMjA2LjkyOCA0MjIuOTc4IDE3NlY4MEM0MjIuOTc4IDM1LjgxNzIgMzg3LjE2MSAwIDM0Mi45NzkgMEgzMTdDMzEwLjM3MyAwIDMwNSA1LjM3MjU4IDMwNSAxMlYzNloiIGZpbGw9IiNGRjk5MjIiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMTcxXzQ0MSI+CjxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo="},"displayName":"Code","typeVersion":2,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"id":839,"icon":"fa:clock","name":"n8n-nodes-base.scheduleTrigger","codex":{"data":{"alias":["Time","Scheduler","Polling","Cron","Interval"],"resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.scheduletrigger/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"trigger\",\"schedule\"]","defaults":{"name":"Schedule Trigger","color":"#31C49F"},"iconData":{"icon":"clock","type":"icon"},"displayName":"Schedule Trigger","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":840,"icon":"file:openAi.svg","name":"n8n-nodes-base.openAi","codex":{"data":{"alias":["ChatGPT","DallE"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-langchain.openai/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/openai/"}]},"categories":["Utility"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"transform\"]","defaults":{"name":"OpenAI"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNTYiIGhlaWdodD0iMjYwIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCI+PHBhdGggZD0iTTIzOS4xODQgMTA2LjIwM2E2NC43MiA2NC43MiAwIDAgMC01LjU3Ni01My4xMDNDMjE5LjQ1MiAyOC40NTkgMTkxIDE1Ljc4NCAxNjMuMjEzIDIxLjc0QTY1LjU4NiA2NS41ODYgMCAwIDAgNTIuMDk2IDQ1LjIyYTY0LjcyIDY0LjcyIDAgMCAwLTQzLjIzIDMxLjM2Yy0xNC4zMSAyNC42MDItMTEuMDYxIDU1LjYzNCA4LjAzMyA3Ni43NGE2NC42NyA2NC42NyAwIDAgMCA1LjUyNSA1My4xMDJjMTQuMTc0IDI0LjY1IDQyLjY0NCAzNy4zMjQgNzAuNDQ2IDMxLjM2YTY0LjcyIDY0LjcyIDAgMCAwIDQ4Ljc1NCAyMS43NDRjMjguNDgxLjAyNSA1My43MTQtMTguMzYxIDYyLjQxNC00NS40ODFhNjQuNzcgNjQuNzcgMCAwIDAgNDMuMjI5LTMxLjM2YzE0LjEzNy0yNC41NTggMTAuODc1LTU1LjQyMy04LjA4My03Ni40ODNtLTk3LjU2IDEzNi4zMzhhNDguNCA0OC40IDAgMCAxLTMxLjEwNS0xMS4yNTVsMS41MzUtLjg3IDUxLjY3LTI5LjgyNWE4LjYgOC42IDAgMCAwIDQuMjQ3LTcuMzY3di03Mi44NWwyMS44NDUgMTIuNjM2Yy4yMTguMTExLjM3LjMyLjQwOS41NjN2NjAuMzY3Yy0uMDU2IDI2LjgxOC0yMS43ODMgNDguNTQ1LTQ4LjYwMSA0OC42MDFNMzcuMTU4IDE5Ny45M2E0OC4zNSA0OC4zNSAwIDAgMS01Ljc4MS0zMi41ODlsMS41MzQuOTIxIDUxLjcyMiAyOS44MjZhOC4zNCA4LjM0IDAgMCAwIDguNDQxIDBsNjMuMTgxLTM2LjQyNXYyNS4yMjFhLjg3Ljg3IDAgMCAxLS4zNTguNjY1bC01Mi4zMzUgMzAuMTg0Yy0yMy4yNTcgMTMuMzk4LTUyLjk3IDUuNDMxLTY2LjQwNC0xNy44MDNNMjMuNTQ5IDg1LjM4YTQ4LjUgNDguNSAwIDAgMSAyNS41OC0yMS4zMzN2NjEuMzlhOC4yOSA4LjI5IDAgMCAwIDQuMTk1IDcuMzE2bDYyLjg3NCAzNi4yNzItMjEuODQ1IDEyLjYzNmEuODIuODIgMCAwIDEtLjc2NyAwTDQxLjM1MyAxNTEuNTNjLTIzLjIxMS0xMy40NTQtMzEuMTcxLTQzLjE0NC0xNy44MDQtNjYuNDA1em0xNzkuNDY2IDQxLjY5NS02My4wOC0zNi42M0wxNjEuNzMgNzcuODZhLjgyLjgyIDAgMCAxIC43NjggMGw1Mi4yMzMgMzAuMTg0YTQ4LjYgNDguNiAwIDAgMS03LjMxNiA4Ny42MzV2LTYxLjM5MWE4LjU0IDguNTQgMCAwIDAtNC40LTcuMjEzbTIxLjc0Mi0zMi42OS0xLjUzNS0uOTIyLTUxLjYxOS0zMC4wODFhOC4zOSA4LjM5IDAgMCAwLTguNDkyIDBMOTkuOTggOTkuODA4Vjc0LjU4N2EuNzIuNzIgMCAwIDEgLjMwNy0uNjY1bDUyLjIzMy0zMC4xMzNhNDguNjUyIDQ4LjY1MiAwIDAgMSA3Mi4yMzYgNTAuMzkxek04OC4wNjEgMTM5LjA5N2wtMjEuODQ1LTEyLjU4NWEuODcuODcgMCAwIDEtLjQxLS42MTRWNjUuNjg1YTQ4LjY1MiA0OC42NTIgMCAwIDEgNzkuNzU3LTM3LjM0NmwtMS41MzUuODctNTEuNjcgMjkuODI1YTguNiA4LjYgMCAwIDAtNC4yNDYgNy4zNjd6bTExLjg2OC0yNS41OEwxMjguMDY3IDk3LjNsMjguMTg4IDE2LjIxOHYzMi40MzRsLTI4LjA4NiAxNi4yMTgtMjguMTg4LTE2LjIxOHoiLz48L3N2Zz4="},"displayName":"OpenAI","typeVersion":1,"nodeCategories":[{"id":7,"name":"Utility"}]}],"categories":[{"id":41,"name":"Ticket Management"},{"id":47,"name":"AI Chatbot"}],"image":[]}}