{"workflow":{"id":13693,"name":"Handle WhatsApp course enrollment and payments with Wati and Razorpay","views":123,"recentViews":1,"totalViews":123,"createdAt":"2026-02-25T08:20:01.943Z","description":"Transform your educational business with a fully automated mobile storefront. This workflow manages the entire student journey—from browsing course catalogues to secure payment processing and enrollment tracking—all within WhatsApp by combining WATI, Razorpay, and Google Sheets.\n\n---\n\n## 🎯 What This Workflow Does\n\nTurns WhatsApp into a 24/7 automated enrollment desk:\n\n- 📝 **Captures Student Intent**  \n  Receives text commands like `courses`, `enroll`, or `pay` via the WATI Trigger from the student's phone.\n\n- 🚦 **Smart Message Routing**  \n  A Switch node identifies the keyword to trigger the correct path:\n  - **courses:** Displays the full course catalogue.\n  - **enroll <code>:** Shows specific course details and a payment CTA.\n  - **pay <code>:** Generates a unique Razorpay payment link.\n  - **mystatus:** Fetches the student's personal enrollment history.\n\n- 👁️ **Dynamic Catalogue Generation**  \n  Fetches live data from Google Sheets to build a formatted WhatsApp message with course codes, prices, and durations.\n\n- 💳 **Instant Payment Processing**  \n  Integrates with the Razorpay API to create secure, short-URL payment links tailored to the specific course and student.\n\n- 📊 **Automated CRM Logging**  \n  Logs every enrollment attempt as \"Pending\" in Google Sheets, capturing timestamps, phone numbers, and unique payment IDs.\n\n---\n\n## ✨ Key Features\n\n- **White-Label Automation:** Sell courses under your own brand without needing a complex website or LMS.\n- **Real-Time Status Tracking:** Students can instantly view their active and pending enrollments with the `mystatus` command.\n- **Native Razorpay Integration:** Uses a clean REST API approach (HTTP Request) to generate payment links without requiring external SDKs.\n- **Formatted Course Cards:** Automatically generates detailed summaries for each course, including instructor info and start dates.\n- **Multi-Category Support:** Organizes your catalogue by subject (e.g., Programming, Marketing) for a professional user experience.\n\n---\n\n## 💼 Perfect For\n\n- **Independent Tutors:** Selling recorded workshops or live sessions without manual billing.\n- **Coaching Institutes:** Automating the registration process for high-volume course launches.\n- **Skill-Based Bootcamps:** Providing a low-friction \"chat-to-pay\" experience for mobile users.\n- **Corporate Trainers:** Tracking employee registrations for internal certification programs.\n\n---\n\n## 🔧 What You'll Need\n\n### Required Integrations\n\n- **WATI** – To handle WhatsApp message triggers and delivery.\n- **Razorpay** – To generate unique payment links via REST API.\n- **Google Sheets** – To manage your course database and enrollment logs.\n\n### Optional Customizations\n\n- **Payment Confirmation:** Set up a Razorpay Webhook to automatically update enrollment status from \"Pending\" to \"Enrolled\" upon payment.\n- **Automated Welcome:** Add a node to send a \"Course Access Guide\" PDF once the payment is verified.\n\n---\n\n## 🚀 Quick Start\n\n1. **Import Template** – Copy the JSON and import it into your n8n instance.\n2. **Set Credentials** – Connect your WATI, Razorpay (Basic Auth), and Google Sheets accounts.\n3. **Configure Sheets** – Ensure your Google Sheet has headers for:\n\n   **Courses Tab:**  \n   `name`, `code`, `category`, `price`, `duration`, `shortDesc`, `description`, `instructor`, `startDate`\n\n   **Enrollments Tab:**  \n   `timestamp`, `phone`, `courseCode`, `courseName`, `amount`, `status`, `paymentlinkId`, `paymentlinkUrl`\n\n4. **Test Browsing** – Send the word `courses` to your WATI number.\n5. **Simulate Payment** – Send `pay &lt;course_code&gt;` to receive your first automated payment link.\n\n---\n\n## 🎨 Customization Options\n\n- **Currency Setup:** Change the currency from INR to USD or EUR in the Razorpay Payload node.\n- **Personalized Feedback:** Edit the Build Enrollment Status code to change how the student’s history is displayed.\n- **Custom CTA:** Modify the \"Enroll Detail Card\" to include links to your YouTube demo or LinkedIn profile.\n\n---\n\n## 📈 Expected Results\n\n- 95% reduction in manual coordination for course registrations and link sharing.\n- Faster conversions by allowing students to pay the moment they show interest.\n- Organized data with every student interaction logged in a single spreadsheet.\n- Professional image using automated, well-formatted WhatsApp cards and official payment links.\n\n---\n\n## 🏆 Use Cases\n\n### Upskilling Bootcamps\nA programming school sends the `courses` list to a leads group; students enroll and pay for \"Python 101\" entirely through the chat.\n\n### Skill Progress Tracking\nA student types `mystatus` to see which courses they have paid for and which enrollments are still pending.\n\n### Flash Sales\nPromote a course code on Instagram; when users message that code to your WhatsApp, the bot handles the sale 24/7.\n\n---\n\n## 💡 Pro Tips\n\n- **Shorthand Commands:** The bot is built to handle case-insensitive commands, so `PAY PY101` and `pay py101` work equally well.\n- **Razorpay Test Mode:** Always test your payment links using Razorpay's \"Test Mode\" keys before going live to ensure the links generate correctly.\n- **Clean Database:** The Build Enrollment Status node uses phone number filtering to ensure students only see their own private history.\n\n---\n\nReady to start enrolling students? Import this template and connect your Razorpay account to automate your sales today!","workflow":{"meta":{"instanceId":"277842713620d9f5554de3b1518b865a152c8c4db680008bd8aec536fc18b4a8","templateCredsSetupCompleted":true},"nodes":[{"id":"94414a4d-4c70-41f0-9e3c-0f6b572c4545","name":"📋 Flow Overview","type":"n8n-nodes-base.stickyNote","position":[48,-528],"parameters":{"width":620,"height":392,"content":"## 📚 WhatsApp Course Enrollment & Payment Automation\n\n**How it works:**\n1. Student sends *courses* on WhatsApp → gets a list of available courses\n2. Student sends *enroll <course code>* → gets course details + payment link (Razorpay/Stripe)\n3. Student sends *pay <course code>* → payment link is generated and sent\n5. Student sends *mystatus* → sees their enrollment history\n\n**Credentials needed:** WATI, OpenAI API Key (Header Auth), Google Sheets OAuth2, Razorpay (HTTP Request — easy REST API, no SDK needed)"},"typeVersion":1},{"id":"4e437211-1ecc-4e32-8190-df06305684c3","name":"Sticky – Trigger & Route","type":"n8n-nodes-base.stickyNote","position":[672,80],"parameters":{"color":7,"width":412,"height":530,"content":"### 1️⃣ Trigger & Route\n**WATI Trigger** listens for all incoming WhatsApp messages.\n**Route Message Switch** checks the keyword:\n- `courses` → show course catalogue\n- `enroll <code>` → show course details + payment CTA\n- `pay <code>` → generate Razorpay payment link\n- `mystatus` → show enrollment history\n- anything else → help message"},"typeVersion":1},{"id":"3050e692-5b05-4692-95b9-587007819210","name":"Sticky – Catalogue & Enroll","type":"n8n-nodes-base.stickyNote","position":[1184,-208],"parameters":{"color":7,"width":880,"height":498,"content":"### 2️⃣ Course Catalogue & Enroll Intent\n**Google Sheets – Read Courses** fetches the master course list.\n**Build Catalogue Code** formats all courses into a WhatsApp-friendly list with codes, prices and duration.\n**Enroll Intent Code** parses the course code from the message, fetches course details and sends a summary with a payment CTA button."},"typeVersion":1},{"id":"76a3dbf3-a38a-473c-9888-979374e5e678","name":"Sticky – Payment","type":"n8n-nodes-base.stickyNote","position":[1184,320],"parameters":{"color":7,"width":1120,"height":354,"content":"### 3️⃣ Payment Link Generation\n**Parse Pay Code** extracts course code + student phone from the message.\n**Sheets – Read Course** fetches price and course name for the code.\n**Razorpay – Create Payment Link** calls Razorpay REST API to generate a unique short payment URL.\n**Sheets – Log Pending** saves a pending enrollment row.\n**WATI – Send Payment Link** sends the unique URL to the student."},"typeVersion":1},{"id":"02da57a8-6c42-4bc8-be49-def53ed7050a","name":"Sticky – Status","type":"n8n-nodes-base.stickyNote","position":[1184,704],"parameters":{"color":7,"width":628,"height":308,"content":"### 5️⃣ Enrollment Status\n**Sheets – Read Enrollments** fetches all rows for this student's phone.\n**Build Status Code** formats a clean history: course name, status, date and expiry.\n**WATI – Send Status** replies with the formatted enrollment card."},"typeVersion":1},{"id":"48e98355-d800-491c-857e-e1ddf8417c5d","name":"Route Message","type":"n8n-nodes-base.switch","position":[928,320],"parameters":{"rules":{"values":[{"outputKey":"Browse Courses","conditions":{"options":{"caseSensitive":false,"typeValidation":"strict"},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.text.toLowerCase().trim() }}","rightValue":"courses"}]},"renameOutput":true},{"outputKey":"Enroll Intent","conditions":{"options":{"caseSensitive":false,"typeValidation":"strict"},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"startsWith"},"leftValue":"={{ $json.text }}","rightValue":"enroll "}]},"renameOutput":true},{"outputKey":"Pay","conditions":{"options":{"caseSensitive":false,"typeValidation":"strict"},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"startsWith"},"leftValue":"={{ $json.text }}","rightValue":"pay "}]},"renameOutput":true},{"outputKey":"My Status","conditions":{"options":{"caseSensitive":false,"typeValidation":"strict"},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.text.toLowerCase().trim() }}","rightValue":"mystatus"}]},"renameOutput":true}]},"options":{"fallbackOutput":"extra"}},"typeVersion":3},{"id":"73dc20f1-add7-4078-a090-1c50bb96f2ae","name":"Google Sheets – Read Courses","type":"n8n-nodes-base.googleSheets","position":[1232,-48],"parameters":{"options":{},"sheetName":{"__rl":true,"mode":"list","value":"gid=0","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1exDoOoCBRKLcz_O1kS5hJRVDsAIhhJo6hRsFRJuDpKk/edit#gid=0","cachedResultName":"Courses"},"documentId":{"__rl":true,"mode":"list","value":"1exDoOoCBRKLcz_O1kS5hJRVDsAIhhJo6hRsFRJuDpKk","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1exDoOoCBRKLcz_O1kS5hJRVDsAIhhJo6hRsFRJuDpKk/edit?usp=drivesdk","cachedResultName":"Wati - course"}},"credentials":{"googleSheetsOAuth2Api":{"id":"Kz2DdSp11rxqwlFt","name":"Google Sheets account - Deepanshi"}},"typeVersion":4.5},{"id":"f506aaa9-d18e-40dc-8edd-d5d66c1bae1f","name":"Build Course Catalogue","type":"n8n-nodes-base.code","position":[1440,-48],"parameters":{"jsCode":"// Build Course Catalogue Message\n// Reads all courses from Sheets and formats into WhatsApp message\n\nconst rows = $input.all();\nconst phone = $('Wati Trigger').first().json.waId|| $('WATI Trigger').item.json.from;\nconst senderName =  $('Wati Trigger').first().json.senderName|| 'there';\n\nif (!rows || rows.length === 0) {\n  return [{ json: {\n    phone,\n    catalogueMessage: '📚 No courses available right now. Please check back later!'\n  }}];\n}\n\n// Group courses by category\nconst categories = {};\nfor (const row of rows) {\n  const cat = row.json.category || 'General';\n  if (!categories[cat]) categories[cat] = [];\n  categories[cat].push(row.json);\n}\n\nconst lines = [\n  `👋 Hi *${senderName}!*`,\n  `📚 *Available Courses*`,\n  ''\n];\n\nfor (const [cat, courses] of Object.entries(categories)) {\n  lines.push(`━━ *${cat.toUpperCase()}* ━━`);\n  for (const c of courses) {\n    const price = c.price ? `₹${parseFloat(c.price).toLocaleString('en-IN')}` : 'Free';\n    const duration = c.duration || 'N/A';\n    lines.push(`📌 *${c.name}*`);\n    lines.push(`   Code: \\`${c.code}\\` | ${price} | ${duration}`);\n    lines.push(`   ${c.shortDesc || ''}`);\n    lines.push('');\n  }\n}\n\nlines.push('━━━━━━━━━━━━━━━━━━');\nlines.push('To enroll in a course, send:');\nlines.push('*enroll <code>*');\nlines.push('Example: *enroll PY101*');\n\nreturn [{ json: { phone, catalogueMessage: lines.join('\\n') } }];"},"typeVersion":2},{"id":"dedf0307-9c54-4437-be7f-06ba1700a5a0","name":"Parse Enroll Intent","type":"n8n-nodes-base.code","position":[1232,128],"parameters":{"jsCode":"// Parse Enroll Intent\n// Input: 'enroll PY101'\n// Fetches course details and builds a detail card with payment CTA\n\nconst text = ($json.text || '').trim();\nconst phone = $json.waId || $json.from || 'unknown';\nconst senderName = $json.senderName || 'Student';\n\nconst courseCode = text.replace(/^enroll\\s+/i, '').trim().toUpperCase();\n\nif (!courseCode) {\n  return { json: {\n    phone,\n    enrollMessage: '⚠️ Please provide a course code.\\nExample: *enroll PY101*'\n  }};\n}\n\nreturn { json: { phone, senderName, courseCode } };"},"typeVersion":2},{"id":"4c0b1737-658d-42e4-9209-9d1069aff2ec","name":"Google Sheets – Read Course Detail","type":"n8n-nodes-base.googleSheets","position":[1440,128],"parameters":{"options":{},"sheetName":{"__rl":true,"mode":"list","value":"gid=0","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1exDoOoCBRKLcz_O1kS5hJRVDsAIhhJo6hRsFRJuDpKk/edit#gid=0","cachedResultName":"Courses"},"documentId":{"__rl":true,"mode":"list","value":"1exDoOoCBRKLcz_O1kS5hJRVDsAIhhJo6hRsFRJuDpKk","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1exDoOoCBRKLcz_O1kS5hJRVDsAIhhJo6hRsFRJuDpKk/edit?usp=drivesdk","cachedResultName":"Wati - course"}},"credentials":{"googleSheetsOAuth2Api":{"id":"Kz2DdSp11rxqwlFt","name":"Google Sheets account - Deepanshi"}},"typeVersion":4.5},{"id":"ee05fc85-e4bc-4e61-aa52-4a2e0277622a","name":"Build Enroll Detail Card","type":"n8n-nodes-base.code","position":[1664,128],"parameters":{"jsCode":"// Build Enrollment Detail Card\n// Shows full course info and payment CTA\n\nconst phone = $('Parse Enroll Intent').item.json.phone;\nconst senderName = $('Parse Enroll Intent').item.json.senderName;\nconst courseCode = $('Parse Enroll Intent').item.json.courseCode;\n\nconst allRows = $input.all();\nconst course = allRows.find(r => (r.json.code || '').toUpperCase() === courseCode);\n\nif (!course) {\n  return [{ json: {\n    phone,\n    enrollMessage: `❌ *Course not found: ${courseCode}*\\n\\nSend *courses* to see all available courses.`\n  }}];\n}\n\nconst c = course.json;\nconst price = c.price ? `₹${parseFloat(c.price).toLocaleString('en-IN')}` : 'Free';\n\nconst lines = [\n  `📘 *${c.name}*`,\n  `🏷️ Code: ${c.code}`,\n  '',\n  `📝 *Description:*`,\n  c.description || c.shortDesc || 'No description available.',\n  '',\n  `⏱️ *Duration:* ${c.duration || 'N/A'}`,\n  `👨‍🏫 *Instructor:* ${c.instructor || 'TBA'}`,\n  `📅 *Starts:* ${c.startDate || 'Rolling Admission'}`,\n  `💰 *Price:* ${price}`,\n  '',\n  '━━━━━━━━━━━━━━━━━━',\n  `✅ To proceed with payment, send:`,\n  `*pay ${c.code}*`\n];\n\nreturn [{ json: { phone, enrollMessage: lines.join('\\n'), courseCode } }];"},"typeVersion":2},{"id":"371b0662-841a-4e8b-b69d-1936d037156a","name":"Parse Pay Command","type":"n8n-nodes-base.code","position":[1216,480],"parameters":{"jsCode":"// Parse Pay Command\n// Input: 'pay PY101'\nconst text = ($json.text || '').trim();\nconst phone = $json.waId || $json.from || 'unknown';\nconst senderName = $json.senderName || 'Student';\nconst courseCode = text.replace(/^pay\\s+/i, '').trim().toUpperCase();\n\nif (!courseCode) {\n  return { json: { phone, error: 'No course code. Send: pay <code>' } };\n}\n\nreturn { json: { phone, senderName, courseCode } };"},"typeVersion":2},{"id":"ba5690e8-9a85-4dee-87c0-41192cab98da","name":"Google Sheets – Read Course for Payment","type":"n8n-nodes-base.googleSheets","position":[1392,480],"parameters":{"options":{},"sheetName":{"__rl":true,"mode":"list","value":"gid=0","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1exDoOoCBRKLcz_O1kS5hJRVDsAIhhJo6hRsFRJuDpKk/edit#gid=0","cachedResultName":"Courses"},"documentId":{"__rl":true,"mode":"list","value":"1exDoOoCBRKLcz_O1kS5hJRVDsAIhhJo6hRsFRJuDpKk","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1exDoOoCBRKLcz_O1kS5hJRVDsAIhhJo6hRsFRJuDpKk/edit?usp=drivesdk","cachedResultName":"Wati - course"}},"credentials":{"googleSheetsOAuth2Api":{"id":"Kz2DdSp11rxqwlFt","name":"Google Sheets account - Deepanshi"}},"typeVersion":4.5},{"id":"04b50ab2-7254-48ca-9807-aae59f265519","name":"Prepare Razorpay Payload","type":"n8n-nodes-base.code","position":[1568,480],"parameters":{"jsCode":"// Prepare Razorpay Payment Link Request\n// Finds the course and builds the payload for Razorpay API\n\nconst phone = $('Parse Pay Command').item.json.phone;\nconst senderName = $('Parse Pay Command').item.json.senderName;\nconst courseCode = $('Parse Pay Command').item.json.courseCode;\n\nconst allRows = $input.all();\nconst course = allRows.find(r => (r.json.code || '').toUpperCase() === courseCode);\n\nif (!course) {\n  return [{ json: {\n    phone, courseCode,\n    paymentError: `❌ Course *${courseCode}* not found. Send *courses* to see the list.`\n  }}];\n}\n\nconst c = course.json;\nconst amountPaise = Math.round(parseFloat(c.price || 0) * 100); // Razorpay uses paise\n\n// Razorpay Payment Link API payload\nconst razorpayPayload = {\n  amount: amountPaise,\n  currency: 'INR',\n  accept_partial: false,\n  description: `Enrollment: ${c.name} (${courseCode})`,\n  customer: {\n    name: senderName,\n    contact: `+${phone}`\n  },\n  notify: { sms: false, email: false },\n  reminder_enable: false,\n  notes: {\n    courseCode: courseCode,\n    phone: phone,\n    courseName: c.name\n  },\n  callback_url: 'https://YOUR_N8N_INSTANCE/webhook/razorpay-payment-confirm',\n  callback_method: 'get'\n};\n\nreturn [{ json: {\n  phone, senderName, courseCode,\n  courseName: c.name,\n  price: c.price,\n  razorpayPayload\n}}];"},"typeVersion":2},{"id":"2978187b-5374-429e-be9b-144cd5aab500","name":"Razorpay – Create Payment Link","type":"n8n-nodes-base.httpRequest","position":[1744,480],"parameters":{"url":"https://api.razorpay.com/v1/payment_links","method":"POST","options":{},"jsonBody":"={{ JSON.stringify($('Prepare Razorpay Payload').item.json.razorpayPayload) }}","sendBody":true,"specifyBody":"json","authentication":"genericCredentialType","genericAuthType":"httpBasicAuth"},"credentials":{"httpBasicAuth":{"id":"RzL6Ny62V8TMjWqL","name":"Deepanshi Razorpay"}},"typeVersion":4.2},{"id":"2703d441-b8c1-4c2c-b961-89759aa7662b","name":"Google Sheets – Log Pending Enrollment","type":"n8n-nodes-base.googleSheets","position":[1920,480],"parameters":{"columns":{"value":{"phone":"={{ $('Prepare Razorpay Payload').item.json.phone }}","amount":"={{ $('Prepare Razorpay Payload').item.json.price }}","status":"Pending","timestamp":"={{ new Date().toISOString() }}","courseCode":"={{ $('Prepare Razorpay Payload').item.json.courseCode }}","courseName":"={{ $('Prepare Razorpay Payload').item.json.courseName }}"},"schema":[{"id":"timestamp","type":"string","display":true,"required":false,"displayName":"timestamp","defaultMatch":false,"canBeUsedToMatch":true},{"id":"phone","type":"string","display":true,"required":false,"displayName":"phone","defaultMatch":false,"canBeUsedToMatch":true},{"id":"sendername","type":"string","display":true,"removed":false,"required":false,"displayName":"sendername","defaultMatch":false,"canBeUsedToMatch":true},{"id":"courseCode","type":"string","display":true,"required":false,"displayName":"courseCode","defaultMatch":false,"canBeUsedToMatch":true},{"id":"courseName","type":"string","display":true,"required":false,"displayName":"courseName","defaultMatch":false,"canBeUsedToMatch":true},{"id":"amount","type":"string","display":true,"required":false,"displayName":"amount","defaultMatch":false,"canBeUsedToMatch":true},{"id":"status","type":"string","display":true,"required":false,"displayName":"status","defaultMatch":false,"canBeUsedToMatch":true},{"id":"paymentlinkId","type":"string","display":true,"removed":false,"required":false,"displayName":"paymentlinkId","defaultMatch":false,"canBeUsedToMatch":true},{"id":"paymentlinkUrl","type":"string","display":true,"removed":false,"required":false,"displayName":"paymentlinkUrl","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"append","sheetName":{"__rl":true,"mode":"list","value":1298930809,"cachedResultUrl":"https://docs.google.com/spreadsheets/d/1exDoOoCBRKLcz_O1kS5hJRVDsAIhhJo6hRsFRJuDpKk/edit#gid=1298930809","cachedResultName":"Enrollments"},"documentId":{"__rl":true,"mode":"list","value":"1exDoOoCBRKLcz_O1kS5hJRVDsAIhhJo6hRsFRJuDpKk","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1exDoOoCBRKLcz_O1kS5hJRVDsAIhhJo6hRsFRJuDpKk/edit?usp=drivesdk","cachedResultName":"Wati - course"}},"credentials":{"googleSheetsOAuth2Api":{"id":"Kz2DdSp11rxqwlFt","name":"Google Sheets account - Deepanshi"}},"typeVersion":4.5},{"id":"05c70fca-fc54-4f64-843d-2963af2ce12e","name":"Google Sheets – Read Enrollments","type":"n8n-nodes-base.googleSheets","position":[1216,816],"parameters":{"options":{},"sheetName":{"__rl":true,"mode":"list","value":1298930809,"cachedResultUrl":"https://docs.google.com/spreadsheets/d/1exDoOoCBRKLcz_O1kS5hJRVDsAIhhJo6hRsFRJuDpKk/edit#gid=1298930809","cachedResultName":"Enrollments"},"documentId":{"__rl":true,"mode":"list","value":"1exDoOoCBRKLcz_O1kS5hJRVDsAIhhJo6hRsFRJuDpKk","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1exDoOoCBRKLcz_O1kS5hJRVDsAIhhJo6hRsFRJuDpKk/edit?usp=drivesdk","cachedResultName":"Wati - course"}},"credentials":{"googleSheetsOAuth2Api":{"id":"Kz2DdSp11rxqwlFt","name":"Google Sheets account - Deepanshi"}},"typeVersion":4.5},{"id":"cefc9436-56a5-42e1-8a42-94cbb2d08610","name":"Build Enrollment Status","type":"n8n-nodes-base.code","position":[1408,816],"parameters":{"jsCode":"// Build Enrollment Status Message\n// Shows all enrolled and pending courses for this student\n\nconst phone = $('Wati Trigger').first().json.waId|| $('WATI Trigger').item.json.from;\nconst senderName = $('Wati Trigger').first().json.senderName || 'Student';\nconst allRows = $input.all();\n\nconst myRows = allRows.filter(r => r.json.phone === phone);\n\nif (myRows.length === 0) {\n  return [{ json: {\n    phone,\n    statusMessage: `📋 *No enrollments found, ${senderName}!*\\n\\nSend *courses* to browse available courses.\\nSend *enroll <code>* to get started!`\n  }}];\n}\n\nconst enrolled = myRows.filter(r => r.json.status === 'Enrolled');\nconst pending  = myRows.filter(r => r.json.status === 'Pending');\n\nconst lines = [\n  `📋 *My Enrollments*`,\n  `👤 *${senderName}*`,\n  ''\n];\n\nif (enrolled.length > 0) {\n  lines.push(`✅ *Active Enrollments (${enrolled.length})*`);\n  for (const r of enrolled) {\n    const date = r.json.timestamp ? new Date(r.json.timestamp).toLocaleDateString('en-IN') : 'N/A';\n    lines.push(`  📘 *${r.json.courseName || r.json.courseCode}*`);\n    lines.push(`     Code: ${r.json.courseCode} | Enrolled: ${date}`);\n    lines.push(`     Payment ID: ${r.json.paymentId || 'N/A'}`);\n    lines.push('');\n  }\n}\n\nif (pending.length > 0) {\n  lines.push(`⏳ *Pending Payments (${pending.length})*`);\n  for (const r of pending) {\n    lines.push(`  📙 *${r.json.courseName || r.json.courseCode}*`);\n    lines.push(`     Code: ${r.json.courseCode} | Amount: ₹${r.json.amount}`);\n    lines.push(`     Send *pay ${r.json.courseCode}* to complete payment`);\n    lines.push('');\n  }\n}\n\nlines.push('━━━━━━━━━━━━━━━━━━');\nlines.push('Send *courses* to explore more courses! 📚');\n\nreturn [{ json: { phone, statusMessage: lines.join('\\n') } }];"},"typeVersion":2},{"id":"2207fe23-d8f7-4be6-a8a0-a0e2af757db1","name":"Send a text message","type":"n8n-nodes-wati.wati","position":[1680,-48],"parameters":{"target":"={{ $('Wati Trigger').item.json.waId }}","messageText":"={{ $json.catalogueMessage }}"},"credentials":{"watiApi":{"id":"LeAm3lDk4hC1D2Qy","name":"wati - templates"}},"typeVersion":1},{"id":"5d28bb5a-cd67-4bfd-bc44-e40d8d28b049","name":"Send a text message1","type":"n8n-nodes-wati.wati","position":[1872,128],"parameters":{"target":"={{ $('Wati Trigger').item.json.waId }}","messageText":"={{ $json.enrollMessage }}"},"credentials":{"watiApi":{"id":"LeAm3lDk4hC1D2Qy","name":"wati - templates"}},"typeVersion":1},{"id":"1923700f-aded-41ac-9577-316b060661ca","name":"Send a text message2","type":"n8n-nodes-wati.wati","position":[2112,480],"parameters":{"target":"={{ $('Wati Trigger').item.json.waId }}","messageText":"={{ $('Razorpay – Create Payment Link').item.json.short_url }} Kindly pay to this url"},"credentials":{"watiApi":{"id":"LeAm3lDk4hC1D2Qy","name":"wati - templates"}},"typeVersion":1},{"id":"9f93ad64-fa9c-4fa3-a2c1-85982a058bd1","name":"Send a text message3","type":"n8n-nodes-wati.wati","position":[1616,816],"parameters":{"target":"={{ $('Wati Trigger').item.json.waId }}","messageText":"={{ $json.statusMessage }}"},"credentials":{"watiApi":{"id":"LeAm3lDk4hC1D2Qy","name":"wati - templates"}},"typeVersion":1},{"id":"597bb20e-c39e-4c2e-a8e8-ada8b96bf3b8","name":"Wati Trigger","type":"n8n-nodes-wati.watiTrigger","position":[720,368],"webhookId":"ceb8d7d4-0ea8-4491-9bec-89f94a3feb35","parameters":{"event":"messageReceived"},"credentials":{"watiApi":{"id":"LeAm3lDk4hC1D2Qy","name":"wati - templates"}},"typeVersion":1,"alwaysOutputData":true}],"pinData":{"Wati Trigger":[{"id":"699eae84e2775345dd8fc96d","data":null,"text":"mystatus","type":"text","waId":"917024935915","owner":false,"created":"2026-02-25T08:10:44.0410986Z","sourceId":null,"ticketId":"699d5bece335b461449f4b91","avatarUrl":null,"eventType":"message","forwarded":false,"listReply":null,"sourceUrl":null,"timestamp":"1772007042","assignedId":null,"senderName":"Deepanshi Singhal","sourceType":7,"buttonReply":null,"operatorName":null,"statusString":"SENT","operatorEmail":null,"conversationId":"699d5becb12153808a3300f0","messageContact":null,"replyContextId":"","whatsappMessageId":"wamid.HBgMOTE3MDI0OTM1OTE1FQIAEhggQUNDOUEyMUVCNDJBNDM1MTlEMzg1ODlFREUzMDkzRDAA","frequentlyForwarded":false,"interactiveButtonReply":null}]},"connections":{"Wati Trigger":{"main":[[{"node":"Route Message","type":"main","index":0}]]},"Route Message":{"main":[[{"node":"Google Sheets – Read Courses","type":"main","index":0}],[{"node":"Parse Enroll Intent","type":"main","index":0}],[{"node":"Parse Pay Command","type":"main","index":0}],[{"node":"Google Sheets – Read Enrollments","type":"main","index":0}]]},"Parse Pay Command":{"main":[[{"node":"Google Sheets – Read Course for Payment","type":"main","index":0}]]},"Parse Enroll Intent":{"main":[[{"node":"Google Sheets – Read Course Detail","type":"main","index":0}]]},"Build Course Catalogue":{"main":[[{"node":"Send a text message","type":"main","index":0}]]},"Build Enrollment Status":{"main":[[{"node":"Send a text message3","type":"main","index":0}]]},"Build Enroll Detail Card":{"main":[[{"node":"Send a text message1","type":"main","index":0}]]},"Prepare Razorpay Payload":{"main":[[{"node":"Razorpay – Create Payment Link","type":"main","index":0}]]},"Google Sheets – Read Courses":{"main":[[{"node":"Build Course Catalogue","type":"main","index":0}]]},"Razorpay – Create Payment Link":{"main":[[{"node":"Google Sheets – Log Pending Enrollment","type":"main","index":0}]]},"Google Sheets – Read Enrollments":{"main":[[{"node":"Build Enrollment Status","type":"main","index":0}]]},"Google Sheets – Read Course Detail":{"main":[[{"node":"Build Enroll Detail Card","type":"main","index":0}]]},"Google Sheets – Log Pending Enrollment":{"main":[[{"node":"Send a text message2","type":"main","index":0}]]},"Google Sheets – Read Course for Payment":{"main":[[{"node":"Prepare Razorpay Payload","type":"main","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":23,"nodeTypes":{"n8n-nodes-base.code":{"count":6},"n8n-nodes-wati.wati":{"count":4},"n8n-nodes-base.switch":{"count":1},"n8n-nodes-base.stickyNote":{"count":5},"n8n-nodes-base.httpRequest":{"count":1},"n8n-nodes-wati.watiTrigger":{"count":1},"n8n-nodes-base.googleSheets":{"count":5}}},"status":"published","readyToDemo":null,"user":{"name":"Jitesh Dugar","username":"jiteshdugar","bio":"AI Automation Specialist - OpenAI, CRM & Automation Expert with a solid understanding of various tools that include Zapier, Make, Zoho CRM, Hubspot, Google Sheets, Airtable, Pipedrive, Google Analytics, and more.","verified":true,"links":["https://www.linkedin.com/in/jiteshdugar"],"avatar":"https://gravatar.com/avatar/edaa3abb99806b0586dced559d0a5417f24a507e7c4464a63960f0638a4b1b90?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":19,"icon":"file:httprequest.svg","name":"n8n-nodes-base.httpRequest","codex":{"data":{"alias":["API","Request","URL","Build","cURL"],"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/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-pulling-and-visualizing-data-with-n8n/","icon":"📈","label":"Automatically pulling and visualizing data with n8n"},{"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/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/running-n8n-on-ships-an-interview-with-maranics/","icon":"🛳","label":"Running n8n on ships: An interview with Maranics"},{"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/world-poetry-day-workflow/","icon":"📜","label":"Celebrating World Poetry Day with a daily poem in Telegram"},{"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/automate-designs-with-bannerbear-and-n8n/","icon":"🎨","label":"Automate Designs with Bannerbear and n8n"},{"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/building-an-expense-tracking-app-in-10-minutes/","icon":"📱","label":"Building an expense tracking app in 10 minutes"},{"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/how-to-use-the-http-request-node-the-swiss-army-knife-for-workflow-automation/","icon":"🧰","label":"How to use the HTTP Request Node - The Swiss Army Knife for Workflow Automation"},{"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-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/a-low-code-bitcoin-ticker-built-with-questdb-and-n8n-io/","icon":"📈","label":"A low-code bitcoin ticker built with QuestDB and n8n.io"},{"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/automations-for-activists/","icon":"✨","label":"How Common Knowledge use workflow automation for activism"},{"url":"https://n8n.io/blog/creating-scheduled-text-affirmations-with-n8n/","icon":"🤟","label":"Creating scheduled text affirmations with n8n"},{"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"},{"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.httprequest/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"output\"]","defaults":{"name":"HTTP Request","color":"#0004F5"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00MCAyMEM0MCA4Ljk1MzE0IDMxLjA0NjkgMCAyMCAwQzguOTUzMTQgMCAwIDguOTUzMTQgMCAyMEMwIDMxLjA0NjkgOC45NTMxNCA0MCAyMCA0MEMzMS4wNDY5IDQwIDQwIDMxLjA0NjkgNDAgMjBaTTIwIDM2Ljk0NThDMTguODg1MiAzNi45NDU4IDE3LjEzNzggMzUuOTY3IDE1LjQ5OTggMzIuNjk4NUMxNC43OTY0IDMxLjI5MTggMTQuMTk2MSAyOS41NDMxIDEzLjc1MjYgMjcuNjg0N0gyNi4xODk4QzI1LjgwNDUgMjkuNTQwMyAyNS4yMDQ0IDMxLjI5MDEgMjQuNTAwMiAzMi42OTg1QzIyLjg2MjIgMzUuOTY3IDIxLjExNDggMzYuOTQ1OCAyMCAzNi45NDU4Wk0xMi45MDY0IDIwQzEyLjkwNjQgMjEuNjA5NyAxMy4wMDg3IDIzLjE2NCAxMy4yMDAzIDI0LjYzMDVIMjYuNzk5N0MyNi45OTEzIDIzLjE2NCAyNy4wOTM2IDIxLjYwOTcgMjcuMDkzNiAyMEMyNy4wOTM2IDE4LjM5MDMgMjYuOTkxMyAxNi44MzYgMjYuNzk5NyAxNS4zNjk1SDEzLjIwMDNDMTMuMDA4NyAxNi44MzYgMTIuOTA2NCAxOC4zOTAzIDEyLjkwNjQgMjBaTTIwIDMuMDU0MTlDMjEuMTE0OSAzLjA1NDE5IDIyLjg2MjIgNC4wMzA3OCAyNC41MDAxIDcuMzAwMzlDMjUuMjA2NiA4LjcxNDA4IDI1LjgwNzIgMTAuNDA2NyAyNi4xOTIgMTIuMzE1M0gxMy43NTAxQzE0LjE5MzMgMTAuNDA0NyAxNC43OTQyIDguNzEyNTQgMTUuNDk5OCA3LjMwMDY0QzE3LjEzNzcgNC4wMzA4MyAxOC44ODUxIDMuMDU0MTkgMjAgMy4wNTQxOVpNMzAuMTQ3OCAyMEMzMC4xNDc4IDE4LjQwOTkgMzAuMDU0MyAxNi44NjE3IDI5LjgyMjcgMTUuMzY5NUgzNi4zMDQyQzM2LjcyNTIgMTYuODQyIDM2Ljk0NTggMTguMzk2NCAzNi45NDU4IDIwQzM2Ljk0NTggMjEuNjAzNiAzNi43MjUyIDIzLjE1OCAzNi4zMDQyIDI0LjYzMDVIMjkuODIyN0MzMC4wNTQzIDIzLjEzODMgMzAuMTQ3OCAyMS41OTAxIDMwLjE0NzggMjBaTTI2LjI3NjcgNC4yNTUxMkMyNy42MzY1IDYuMzYwMTkgMjguNzExIDkuMTMyIDI5LjM3NzQgMTIuMzE1M0gzNS4xMDQ2QzMzLjI1MTEgOC42NjggMzAuMTA3IDUuNzgzNDYgMjYuMjc2NyA0LjI1NTEyWk0xMC42MjI2IDEyLjMxNTNINC44OTI5M0M2Ljc1MTQ3IDguNjY3ODQgOS44OTM1MSA1Ljc4MzQxIDEzLjcyMzIgNC4yNTUxM0MxMi4zNjM1IDYuMzYwMjEgMTEuMjg5IDkuMTMyMDEgMTAuNjIyNiAxMi4zMTUzWk0zLjA1NDE5IDIwQzMuMDU0MTkgMjEuNjAzIDMuMjc3NDMgMjMuMTU3NSAzLjY5NDg0IDI0LjYzMDVIMTAuMTIxN0M5Ljk0NjE5IDIzLjE0MiA5Ljg1MjIyIDIxLjU5NDMgOS44NTIyMiAyMEM5Ljg1MjIyIDE4LjQwNTcgOS45NDYxOSAxNi44NTggMTAuMTIxNyAxNS4zNjk1SDMuNjk0ODRDMy4yNzc0MyAxNi44NDI1IDMuMDU0MTkgMTguMzk3IDMuMDU0MTkgMjBaTTI2LjI3NjYgMzUuNzQyN0MyNy42MzY1IDMzLjYzOTMgMjguNzExIDMwLjg2OCAyOS4zNzc0IDI3LjY4NDdIMzUuMTA0NkMzMy4yNTEgMzEuMzMyMiAzMC4xMDY4IDM0LjIxNzkgMjYuMjc2NiAzNS43NDI3Wk0xMy43MjM0IDM1Ljc0MjdDOS44OTM2OSAzNC4yMTc5IDYuNzUxNTUgMzEuMzMyNCA0Ljg5MjkzIDI3LjY4NDdIMTAuNjIyNkMxMS4yODkgMzAuODY4IDEyLjM2MzUgMzMuNjM5MyAxMy43MjM0IDM1Ljc0MjdaIiBmaWxsPSIjM0E0MkU5Ii8+Cjwvc3ZnPgo="},"displayName":"HTTP Request","typeVersion":4,"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"}]}],"categories":[{"id":39,"name":"CRM"},{"id":47,"name":"AI Chatbot"}],"image":[]}}