{"workflow":{"id":13969,"name":"Score churn risk and send retention emails with Google Sheets and Gmail","views":4,"recentViews":0,"totalViews":4,"createdAt":"2026-03-09T18:04:37.978Z","description":"## Who's it for\n\nThis template is for gyms, fitness studios, and membership-based businesses that want to automatically detect at-risk members and act before they cancel. Ideal for operations teams and retention managers who want to replace manual follow-ups with a systematic, automated process.\n\n## How it works\n\nThe workflow fetches member records from Google Sheets and passes them through a JavaScript scoring engine that assigns each member a churn risk level: Critical, High, Medium, or Low.\n\nA Switch node routes each member into the appropriate path:\n- **Critical and High risk** members receive a personalised retention email via Gmail and their action is logged in Google Sheets\n- **Medium risk** members are logged for later monitoring\n- **Low risk** members are ignored automatically\n\n## How to set up\n\n1. Copy the sample Google Sheet (link in the sticky note) and connect it to the Google Sheets nodes\n2. Connect your Gmail account to the email nodes\n3. Adjust the scoring logic in the **Calculate Churn Risk** code node to match your business rules\n4. Replace the manual trigger with a Schedule Trigger for daily automated runs\n\n## Requirements\n\n- Google Sheets account\n- Gmail account\n- Basic understanding of JavaScript to customise the scoring logic","workflow":{"id":"hVnwL7kUfbNdWNZR","meta":{"instanceId":"eda1e6a579612740cfe75d98598ff6fc99b96109c295c11f9cc090a20e6a3dd6","templateCredsSetupCompleted":true},"name":"AI Membership Retention & Churn Prevention System","tags":[{"id":"ODwcqtH2rGDMvTeh","name":"template","createdAt":"2026-02-27T09:48:11.280Z","updatedAt":"2026-02-27T09:48:11.280Z"}],"nodes":[{"id":"b5bcafdb-b1c7-4201-ab6c-2171119c2406","name":"When clicking ‘Execute workflow’","type":"n8n-nodes-base.manualTrigger","position":[0,0],"parameters":{},"typeVersion":1},{"id":"7bd64aea-da7f-4361-b43c-ac425488e199","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-768,-1248],"parameters":{"width":736,"height":912,"content":"## Who this template is for\n\nThis workflow is designed for gyms, fitness studios, and membership-based businesses that want to proactively reduce customer churn and improve retention.\n\nIt is ideal for businesses that manage recurring memberships and want to automatically detect members who may be at risk of canceling, then trigger the appropriate follow-up action based on their churn risk level.\n\nThis template is especially useful for operations teams, retention managers, and gym owners who want to replace reactive retention efforts with a more systematic and automated process.\n\n\nWhat this workflow does\n\nThis workflow automatically identifies members who may be at risk of canceling their membership and routes them through different retention paths based on their churn risk level.\n\nThe workflow:\n- Reads member data from a data source\n- Calculates a churn risk score for each member\n- Classifies each member into a retention category\n- Triggers different actions depending on the risk level\n- Sends follow-up communication when needed\n- Logs the outcome for tracking and operational visibility\n\n\nThis allows the business to prioritize outreach and intervene before a cancellation happens.\n\n\nHow it works\n\nThe workflow starts by loading member data into n8n. It then passes that data into a churn scoring engine, where each member is evaluated based on predefined business logic.\n\nThe scoring logic assigns a risk level that represents the likelihood of churn. This risk level is then used by a switch node to route each member into the correct path.\n\nMembers classified as critical or high risk are sent through a stronger intervention flow, which can include personalized email outreach and retention tracking. Members in medium risk can be logged for softer intervention or later monitoring. Members with low risk do not require immediate action and can be ignored or stored for reporting purposes.\n\nBy separating members into clearly defined churn categories, the workflow helps retention teams act faster and more consistently."},"typeVersion":1},{"id":"936ef243-c2ab-4de2-998d-28b651754001","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[-240,-208],"parameters":{"color":5,"width":400,"height":416,"content":"## A. Member data intake\n\nThis section starts the workflow and loads the member records that will be evaluated.\n\nIn the demo version, the workflow is triggered manually. In a real production setup, this step is usually replaced with a scheduled trigger that runs automatically every day."},"typeVersion":1},{"id":"043fdf69-85ee-47a4-9ff2-a613daf2b38f","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[160,-208],"parameters":{"color":5,"width":576,"height":416,"content":"## B. Churn scoring engine\n\nThis is the decision-making core of the workflow.\n\nThe code node analyzes each member using predefined retention logic and assigns a churn risk score or category. This score estimates how likely the member is to cancel their membership."},"typeVersion":1},{"id":"d5f0a028-95a8-40bc-a946-cbeb4ef2c2d9","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[736,-400],"parameters":{"color":5,"width":768,"height":864,"content":"## C. Risk-based routing\n\nThis section uses the churn classification to route each member into the appropriate path.\n\nDepending on the assigned level, such as critical, high, medium, or low, the workflow determines whether the member should receive immediate intervention, be monitored, or require no action."},"typeVersion":1},{"id":"8f911082-4cfd-4537-99e3-8e317613b7d2","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[0,-672],"parameters":{"color":4,"width":544,"height":336,"content":"## 📊 Sample Data Sheet\n\nTo use this template, make a copy of the sample Google Sheet below and connect it to the Google Sheets nodes:\n\n## 👉 [Click here to access the sample sheet](https://docs.google.com/spreadsheets/d/1HGWMasSZvefI3wt5KgXlvh4l6WssMHHjNtJABZEKbAk/edit?usp=sharing)\n\n## ⚙️ Setup steps\n- Go to **File → Make a copy**\n- Connect your Google account in the Google Sheets nodes\n- Point the nodes to your copied sheet"},"typeVersion":1},{"id":"d11b3655-b5b0-41e4-829f-1870d33c1137","name":"Fetch Member Data","type":"n8n-nodes-base.googleSheets","position":[208,0],"parameters":{"options":{},"sheetName":{"__rl":true,"mode":"list","value":"gid=0","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1HGWMasSZvefI3wt5KgXlvh4l6WssMHHjNtJABZEKbAk/edit#gid=0","cachedResultName":"Members_Database"},"documentId":{"__rl":true,"mode":"list","value":"1HGWMasSZvefI3wt5KgXlvh4l6WssMHHjNtJABZEKbAk","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1HGWMasSZvefI3wt5KgXlvh4l6WssMHHjNtJABZEKbAk/edit?usp=drivesdk","cachedResultName":"AI Membership Retention & Churn Prevention System"}},"credentials":{"googleSheetsOAuth2Api":{"id":"3xj3ykSUdL7ynfc3","name":"Google Sheets account CHR"}},"typeVersion":4.7},{"id":"12187428-7256-4186-9831-8c3527210858","name":"Calculate Churn Ris","type":"n8n-nodes-base.code","position":[416,0],"parameters":{"jsCode":"function parseDate(s) {\n  if (!s || typeof s !== 'string') return null;\n\n  // Supports \"YYYY-MM-DD\"\n  if (/^\\d{4}-\\d{2}-\\d{2}$/.test(s)) {\n    const d = new Date(s + 'T00:00:00');\n    return isNaN(d.getTime()) ? null : d;\n  }\n\n  // Supports \"dd/MM/yyyy\"\n  if (/^\\d{2}\\/\\d{2}\\/\\d{4}$/.test(s)) {\n    const [dd, mm, yyyy] = s.split('/').map(Number);\n    const d = new Date(yyyy, mm - 1, dd);\n    return isNaN(d.getTime()) ? null : d;\n  }\n\n  // Last attempt\n  const d = new Date(s);\n  return isNaN(d.getTime()) ? null : d;\n}\n\nfunction daysBetween(a, b) {\n  return Math.floor((b.getTime() - a.getTime()) / (1000 * 60 * 60 * 24));\n}\n\nfunction clamp(n, min, max) {\n  return Math.max(min, Math.min(max, n));\n}\n\nfunction round(n) {\n  return Math.round(n);\n}\n\nfunction bucketRenewal(daysToRenewal) {\n  if (daysToRenewal === null || daysToRenewal === undefined) return 'n/a';\n  if (daysToRenewal < 0) return 'expired';\n  if (daysToRenewal <= 7) return '7d';\n  if (daysToRenewal <= 15) return '15d';\n  if (daysToRenewal <= 30) return '30d';\n  return 'ok';\n}\n\n// today at midnight (avoids 0/1 day differences due to hours/timezone)\nconst today = new Date(new Date().toISOString().slice(0, 10) + 'T00:00:00');\n\nreturn items.map(item => {\n  const data = item.json;\n\n  // Normalize values\n  const checkins30 = Number(data.checkins_30d ?? 0);\n  const checkinsPrev = Number(data.checkins_prev_month ?? 0);\n  const cancels30 = Number(data.cancelled_classes_30d ?? 0);\n  const monthlyRevenue = Number(data.equivalent_monthly_price ?? 0);\n\n  const paymentStatus = String(data.payment_status ?? '').toLowerCase().trim();\n  const membershipStatus = String(data.membership_status ?? '').toLowerCase().trim();\n\n  // Dates\n  const lastCheckin = parseDate(data.last_checkin);\n  const renewalDate = parseDate(data.renewal_date);\n\n  const daysSinceLastVisit = lastCheckin ? daysBetween(lastCheckin, today) : null;\n  const daysToRenewal = renewalDate ? daysBetween(today, renewalDate) : null;\n\n  // Visit variation\n  let visitVariationPct = 0;\n  if (checkinsPrev > 0) {\n    visitVariationPct = ((checkins30 - checkinsPrev) / checkinsPrev) * 100;\n  } else if (checkinsPrev === 0 && checkins30 > 0) {\n    visitVariationPct = 100;\n  }\n\n  // If cancelled: no score\n  if (membershipStatus === 'cancelled') {\n    return {\n      json: {\n        ...data,\n        today_iso: today.toISOString().slice(0, 10),\n        days_since_last_visit: daysSinceLastVisit,\n        days_to_renewal: daysToRenewal,\n        visit_variation_pct: round(visitVariationPct),\n        churn_risk_score: 0,\n        risk_level: 'low',\n        main_trigger: 'cancelled',\n        renewal_bucket: 'n/a',\n        value_at_risk: 0,\n      }\n    };\n  }\n\n  // Renewal bucket (separate)\n  const renewBucket = bucketRenewal(daysToRenewal);\n\n  // ===============================\n  // 1) Payment risk (highest priority)\n  // ===============================\n  if (paymentStatus === 'failed') {\n    const score = 95;\n    return {\n      json: {\n        ...data,\n        today_iso: today.toISOString().slice(0, 10),\n        days_since_last_visit: daysSinceLastVisit,\n        days_to_renewal: daysToRenewal,\n        visit_variation_pct: round(visitVariationPct),\n        churn_risk_score: score,\n        risk_level: 'critical',\n        main_trigger: 'payment_failed',\n        renewal_bucket: renewBucket,\n        value_at_risk: Number(monthlyRevenue.toFixed(2)),\n      }\n    };\n  }\n\n  // ===============================\n  // 2) Engagement risk (usage/inactivity/friction)\n  // ===============================\n  let engScore = 0;\n  let trigger = 'stable';\n\n  // Inactivity (days since last visit)\n  if (daysSinceLastVisit !== null) {\n    if (daysSinceLastVisit >= 30) { engScore += 45; trigger = 'inactivity_30d'; }\n    else if (daysSinceLastVisit >= 14) { engScore += 30; if (trigger === 'stable') trigger = 'inactivity_14d'; }\n    else if (daysSinceLastVisit >= 7) { engScore += 15; if (trigger === 'stable') trigger = 'inactivity_7d'; }\n  }\n\n  // Low absolute usage\n  if (checkins30 <= 2) { engScore += 20; if (trigger === 'stable') trigger = 'low_usage'; }\n  else if (checkins30 <= 4) { engScore += 10; if (trigger === 'stable') trigger = 'low_usage'; }\n\n  // Drop vs previous month\n  if (visitVariationPct <= -50) { engScore += 30; trigger = 'usage_drop'; }\n  else if (visitVariationPct <= -30) { engScore += 20; if (trigger === 'stable') trigger = 'usage_drop'; }\n\n  // Cancellations\n  if (cancels30 >= 3) { engScore += 20; if (trigger === 'stable') trigger = 'cancellations'; }\n  else if (cancels30 === 2) { engScore += 12; if (trigger === 'stable') trigger = 'cancellations'; }\n  else if (cancels30 === 1) { engScore += 6; }\n\n  // Cap engagement\n  engScore = clamp(engScore, 0, 85);\n\n  const score = engScore;\n\n  // ===============================\n  // 3) Adjusted thresholds (fewer false criticals)\n  // ===============================\n  let riskLevel = 'low';\n  if (score >= 90) riskLevel = 'critical';\n  else if (score >= 70) riskLevel = 'high';\n  else if (score >= 45) riskLevel = 'medium';\n\n  // Value at risk: simple and defensible\n  const valueAtRisk = (riskLevel === 'high' || riskLevel === 'critical')\n    ? Number(monthlyRevenue.toFixed(2))\n    : 0;\n\n  return {\n    json: {\n      ...data,\n      today_iso: today.toISOString().slice(0, 10),\n      days_since_last_visit: daysSinceLastVisit,\n      days_to_renewal: daysToRenewal,\n      visit_variation_pct: round(visitVariationPct),\n      churn_risk_score: score,\n      risk_level: riskLevel,\n      main_trigger: trigger,\n      renewal_bucket: renewBucket,\n      value_at_risk: valueAtRisk,\n    }\n  };\n});"},"typeVersion":2},{"id":"7352d46c-2974-4946-a22a-d715333eef53","name":"Route by Risk Level","type":"n8n-nodes-base.switch","position":[624,-32],"parameters":{"rules":{"values":[{"outputKey":"CRITICAL","conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"23090f43-aa2f-40ab-9cbb-58af5a8265d9","operator":{"type":"string","operation":"equals"},"leftValue":"={{$json.risk_level}}","rightValue":"critical"}]},"renameOutput":true},{"outputKey":"HIGH","conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"4c1364b9-06ed-4aee-b256-bd6bb8e053ab","operator":{"name":"filter.operator.equals","type":"string","operation":"equals"},"leftValue":"={{$json.risk_level}}","rightValue":"high"}]},"renameOutput":true},{"outputKey":"MEDIUM","conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"3801f099-4acf-4842-82ba-7f3dae8b9f24","operator":{"name":"filter.operator.equals","type":"string","operation":"equals"},"leftValue":"={{$json.risk_level}}","rightValue":"medium"}]},"renameOutput":true},{"outputKey":"LOW","conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"53291a5f-0c31-45f7-a71a-24429141b5f1","operator":{"name":"filter.operator.equals","type":"string","operation":"equals"},"leftValue":"={{$json.risk_level}}","rightValue":"low"}]},"renameOutput":true}]},"options":{}},"typeVersion":3.3},{"id":"4f149e8d-9746-4a0b-9c3b-43765e93b97d","name":"Prepare Critical Alert","type":"n8n-nodes-base.set","position":[880,-176],"parameters":{"options":{},"assignments":{"assignments":[{"id":"0655ffb3-b85f-4d0e-89e1-4ec3a0a9a228","name":"message","type":"string","value":"=⚠️ PAYMENT FAILED & MEMBERSHIP EXPIRED\n\nA critical case has been detected that requires immediate contact.\n\nMain trigger: {{ $json.main_trigger }}\nDays since last visit: {{ $json.days_since_last_visit }}\nDays to renewal: {{ $json.days_to_renewal }}\n\nMonthly value at risk: {{ $json.value_at_risk }}€\n"}]},"includeOtherFields":true},"typeVersion":3.4},{"id":"8ced6c40-82b9-4fd6-9d2b-eae34fec264b","name":"Prepare High Risk Email","type":"n8n-nodes-base.set","position":[880,-16],"parameters":{"options":{},"assignments":{"assignments":[{"id":"0655ffb3-b85f-4d0e-89e1-4ec3a0a9a228","name":"mensaje_winback","type":"string","value":"=📉 ACTIVITY DROP DETECTED\n\nA significant decrease in gym usage has been detected.\n\nMain trigger: {{ $json.main_trigger }}\nVisit variation: {{ $json.visit_variation_pct }}%\nDays since last visit: {{ $json.days_since_last_visit }}\nRenewal in {{ $json.days_to_renewal }} days.\n\nMonthly value at risk: {{ $json.value_at_risk }}€\n\n\n"}]},"includeOtherFields":true},"typeVersion":3.4},{"id":"f70ab5c8-9d4c-4760-933c-77fbf2144fdb","name":"Format Medium Risk Log","type":"n8n-nodes-base.set","position":[880,160],"parameters":{"options":{},"assignments":{"assignments":[{"id":"0655ffb3-b85f-4d0e-89e1-4ec3a0a9a228","name":"mensaje_winback","type":"string","value":"=🟡 FOLLOW-UP (MEDIUM RISK)\n\nAn irregular usage pattern has been detected, but not critical.\n\nTrigger: {{ $json.main_trigger }}\nDays since last visit: {{ $json.days_since_last_visit }}\nVisit variation: {{ $json.visit_variation_pct }}%\n\nRecommendation:\nSend a soft message or team check-in within 48–72h."}]},"includeOtherFields":true},"typeVersion":3.4},{"id":"be7241f5-c227-4114-b0ec-d17707e83570","name":"Send Critical Notification","type":"n8n-nodes-base.gmail","position":[1072,-176],"webhookId":"b2dc4c02-4a36-4264-8aa0-9233e7835936","parameters":{"sendTo":"your email here","message":"=🚨 CRITICAL ALERT – IMMEDIATE ACTION REQUIRED\n\nMember: {{ $('Route by Risk Level').item.json.name }}\nCenter: {{ $('Route by Risk Level').item.json.main_center }}\nPlan: {{ $('Route by Risk Level').item.json.plan }}\nRisk level: {{ $('Route by Risk Level').item.json.risk_level }}\n\nPayment status: {{ $('Route by Risk Level').item.json.payment_status }}\nRenewal: {{ $('Route by Risk Level').item.json.renewal_date }} ({{ $('Route by Risk Level').item.json.days_to_renewal }} days)\n\nDetected trigger:\n{{ $json.message }}\n\nRecommended action:\nContact the member today to regularize the payment and prevent cancellation.","options":{"appendAttribution":false},"subject":"= 🚨 CRITICAL ALERT – {{ $('Route by Risk Level').item.json.name }} ({{ $('Route by Risk Level').item.json.main_center }})","emailType":"text"},"credentials":{"gmailOAuth2":{"id":"KYCOer74zH9lAJGl","name":"Gmail account CHR"}},"typeVersion":2.1},{"id":"5c1991f9-ef4a-4819-8037-80fc1ec40948","name":"Send Winback Email","type":"n8n-nodes-base.gmail","position":[1072,-16],"webhookId":"b2dc4c02-4a36-4264-8aa0-9233e7835936","parameters":{"sendTo":"=your email here","message":"=⚠️ MEMBER AT HIGH CHURN RISK\n\nMember: {{ $json.name }}\nCenter: {{ $json.main_center }}\nPlan: {{ $json.plan }}\nRisk level: {{ $json.risk_level }}\n\n\nRecent activity:\n\nCheck-ins last 30 days: {{ $json.checkins_30d }}\nUsage variation: {{ $json.visit_variation_pct }}%\nDays since last visit: {{ $json.days_since_last_visit }}\n\nDetail:\n{{ $json.winback_message }}\n\nRecommended action:\nPreventive contact (message or call) + light incentive if applicable.","options":{"appendAttribution":false},"subject":"=⚠️ HIGH Risk - {{ $json.name }} {{ $json.main_center }}","emailType":"text"},"credentials":{"gmailOAuth2":{"id":"KYCOer74zH9lAJGl","name":"Gmail account CHR"}},"typeVersion":2.1},{"id":"4948c2b2-d760-4f2b-80a1-ddbbc90c3d75","name":"Log Critical Action","type":"n8n-nodes-base.googleSheets","position":[1280,-176],"parameters":{"columns":{"value":{"date":"={{ $now.format(('dd/LL/yyyy')) }}","name":"={{ $('Calculate Churn Ris').item.json.name }}","action":"critical_alert_sent","trigger":"={{ $('Calculate Churn Ris').item.json.main_trigger }}","member_id":"={{ $('Calculate Churn Ris').item.json.member_id }}","risk_level":"={{ $('Calculate Churn Ris').item.json.risk_level }}","risk_value":"={{ $('Calculate Churn Ris').item.json.value_at_risk }}"},"schema":[{"id":"date","type":"string","display":true,"removed":false,"required":false,"displayName":"date","defaultMatch":false,"canBeUsedToMatch":true},{"id":"member_id","type":"string","display":true,"removed":false,"required":false,"displayName":"member_id","defaultMatch":false,"canBeUsedToMatch":true},{"id":"name","type":"string","display":true,"removed":false,"required":false,"displayName":"name","defaultMatch":false,"canBeUsedToMatch":true},{"id":"risk_level","type":"string","display":true,"removed":false,"required":false,"displayName":"risk_level","defaultMatch":false,"canBeUsedToMatch":true},{"id":"trigger","type":"string","display":true,"required":false,"displayName":"trigger","defaultMatch":false,"canBeUsedToMatch":true},{"id":"action","type":"string","display":true,"removed":false,"required":false,"displayName":"action","defaultMatch":false,"canBeUsedToMatch":true},{"id":"risk_value","type":"string","display":true,"removed":false,"required":false,"displayName":"risk_value","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{"useAppend":true},"operation":"append","sheetName":{"__rl":true,"mode":"list","value":1456278820,"cachedResultUrl":"https://docs.google.com/spreadsheets/d/1HGWMasSZvefI3wt5KgXlvh4l6WssMHHjNtJABZEKbAk/edit#gid=1456278820","cachedResultName":"Retention_Log"},"documentId":{"__rl":true,"mode":"list","value":"1HGWMasSZvefI3wt5KgXlvh4l6WssMHHjNtJABZEKbAk","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1HGWMasSZvefI3wt5KgXlvh4l6WssMHHjNtJABZEKbAk/edit?usp=drivesdk","cachedResultName":"AI Membership Retention & Churn Prevention System"}},"credentials":{"googleSheetsOAuth2Api":{"id":"3xj3ykSUdL7ynfc3","name":"Google Sheets account CHR"}},"typeVersion":4.7},{"id":"21f5338b-3181-4211-b08d-d5e8fb3f0106","name":"Log High Risk Action","type":"n8n-nodes-base.googleSheets","position":[1296,-16],"parameters":{"columns":{"value":{"date":"={{ $now.format(('dd/LL/yyyy')) }}","name":"={{ $('Calculate Churn Ris').item.json.name }}","action":"winback_sent","trigger":"={{ $('Calculate Churn Ris').item.json.main_trigger }}","member_id":"={{ $('Calculate Churn Ris').item.json.member_id }}","risk_level":"={{ $('Calculate Churn Ris').item.json.risk_level }}","risk_value":"={{ $('Calculate Churn Ris').item.json.value_at_risk }}"},"schema":[{"id":"date","type":"string","display":true,"removed":false,"required":false,"displayName":"date","defaultMatch":false,"canBeUsedToMatch":true},{"id":"member_id","type":"string","display":true,"removed":false,"required":false,"displayName":"member_id","defaultMatch":false,"canBeUsedToMatch":true},{"id":"name","type":"string","display":true,"removed":false,"required":false,"displayName":"name","defaultMatch":false,"canBeUsedToMatch":true},{"id":"risk_level","type":"string","display":true,"removed":false,"required":false,"displayName":"risk_level","defaultMatch":false,"canBeUsedToMatch":true},{"id":"trigger","type":"string","display":true,"required":false,"displayName":"trigger","defaultMatch":false,"canBeUsedToMatch":true},{"id":"action","type":"string","display":true,"removed":false,"required":false,"displayName":"action","defaultMatch":false,"canBeUsedToMatch":true},{"id":"risk_value","type":"string","display":true,"removed":false,"required":false,"displayName":"risk_value","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{"useAppend":true},"operation":"append","sheetName":{"__rl":true,"mode":"list","value":1456278820,"cachedResultUrl":"https://docs.google.com/spreadsheets/d/1HGWMasSZvefI3wt5KgXlvh4l6WssMHHjNtJABZEKbAk/edit#gid=1456278820","cachedResultName":"Retention_Log"},"documentId":{"__rl":true,"mode":"list","value":"1HGWMasSZvefI3wt5KgXlvh4l6WssMHHjNtJABZEKbAk","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1HGWMasSZvefI3wt5KgXlvh4l6WssMHHjNtJABZEKbAk/edit?usp=drivesdk","cachedResultName":"AI Membership Retention & Churn Prevention System"}},"credentials":{"googleSheetsOAuth2Api":{"id":"3xj3ykSUdL7ynfc3","name":"Google Sheets account CHR"}},"typeVersion":4.7},{"id":"18ed4309-7e19-4742-bd41-54a06a294b78","name":"Log Medium Risk Member","type":"n8n-nodes-base.googleSheets","position":[1104,160],"parameters":{"columns":{"value":{"date":"={{ $now.format(('dd/LL/yyyy')) }}","name":"={{ $('Calculate Churn Ris').item.json.name }}","action":"scheduled_followup","trigger":"={{ $('Calculate Churn Ris').item.json.main_trigger }}","member_id":"={{ $('Calculate Churn Ris').item.json.member_id }}","risk_level":"={{ $('Calculate Churn Ris').item.json.risk_level }}","risk_value":"={{ $('Calculate Churn Ris').item.json.value_at_risk }}"},"schema":[{"id":"date","type":"string","display":true,"removed":false,"required":false,"displayName":"date","defaultMatch":false,"canBeUsedToMatch":true},{"id":"member_id","type":"string","display":true,"removed":false,"required":false,"displayName":"member_id","defaultMatch":false,"canBeUsedToMatch":true},{"id":"name","type":"string","display":true,"removed":false,"required":false,"displayName":"name","defaultMatch":false,"canBeUsedToMatch":true},{"id":"risk_level","type":"string","display":true,"removed":false,"required":false,"displayName":"risk_level","defaultMatch":false,"canBeUsedToMatch":true},{"id":"trigger","type":"string","display":true,"required":false,"displayName":"trigger","defaultMatch":false,"canBeUsedToMatch":true},{"id":"action","type":"string","display":true,"removed":false,"required":false,"displayName":"action","defaultMatch":false,"canBeUsedToMatch":true},{"id":"risk_value","type":"string","display":true,"removed":false,"required":false,"displayName":"risk_value","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{"useAppend":true},"operation":"append","sheetName":{"__rl":true,"mode":"list","value":1456278820,"cachedResultUrl":"https://docs.google.com/spreadsheets/d/1HGWMasSZvefI3wt5KgXlvh4l6WssMHHjNtJABZEKbAk/edit#gid=1456278820","cachedResultName":"Retention_Log"},"documentId":{"__rl":true,"mode":"list","value":"1HGWMasSZvefI3wt5KgXlvh4l6WssMHHjNtJABZEKbAk","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1HGWMasSZvefI3wt5KgXlvh4l6WssMHHjNtJABZEKbAk/edit?usp=drivesdk","cachedResultName":"AI Membership Retention & Churn Prevention System"}},"credentials":{"googleSheetsOAuth2Api":{"id":"3xj3ykSUdL7ynfc3","name":"Google Sheets account CHR"}},"typeVersion":4.7},{"id":"e2e32ccf-6582-410e-b4ac-6187e5d753cd","name":"Ignore Low Risk","type":"n8n-nodes-base.noOp","position":[880,336],"parameters":{},"typeVersion":1}],"active":false,"pinData":{},"settings":{"timezone":"Europe/Madrid","callerPolicy":"workflowsFromSameOwner","availableInMCP":false,"executionOrder":"v1"},"versionId":"21cbee97-bad4-4ff3-9e0a-5260877a2b34","connections":{"Fetch Member Data":{"main":[[{"node":"Calculate Churn Ris","type":"main","index":0}]]},"Send Winback Email":{"main":[[{"node":"Log High Risk Action","type":"main","index":0}]]},"Calculate Churn Ris":{"main":[[{"node":"Route by Risk Level","type":"main","index":0}]]},"Route by Risk Level":{"main":[[{"node":"Prepare Critical Alert","type":"main","index":0}],[{"node":"Prepare High Risk Email","type":"main","index":0}],[{"node":"Format Medium Risk Log","type":"main","index":0}],[{"node":"Ignore Low Risk","type":"main","index":0}]]},"Format Medium Risk Log":{"main":[[{"node":"Log Medium Risk Member","type":"main","index":0}]]},"Prepare Critical Alert":{"main":[[{"node":"Send Critical Notification","type":"main","index":0}]]},"Prepare High Risk Email":{"main":[[{"node":"Send Winback Email","type":"main","index":0}]]},"Send Critical Notification":{"main":[[{"node":"Log Critical Action","type":"main","index":0}]]},"When clicking ‘Execute workflow’":{"main":[[{"node":"Fetch Member Data","type":"main","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":18,"nodeTypes":{"n8n-nodes-base.set":{"count":3},"n8n-nodes-base.code":{"count":1},"n8n-nodes-base.noOp":{"count":1},"n8n-nodes-base.gmail":{"count":2},"n8n-nodes-base.switch":{"count":1},"n8n-nodes-base.stickyNote":{"count":5},"n8n-nodes-base.googleSheets":{"count":4},"n8n-nodes-base.manualTrigger":{"count":1}}},"status":"published","readyToDemo":null,"user":{"name":"Stefan Joulien","username":"stefanjoulien","bio":"Hi, I'm Stefan 👋\nAI Automation Consultant & Founder of Synecta. I design production-ready n8n workflows for lead generation, CRM automation, AI agents, and internal operations. These templates are the exact systems we deploy for SMEs and professional services.","verified":true,"links":["https://www.linkedin.com/in/stefan-joulien-ditchev/"],"avatar":"https://gravatar.com/avatar/53bc3abda86e064874ccd9039858371eed129b3109ecd91fd31940d0ba239ed8?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":26,"icon":"fa:arrow-right","name":"n8n-nodes-base.noOp","codex":{"data":{"alias":["nothing"],"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/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/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/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/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.noop/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"organization\"]","defaults":{"name":"No Operation, do nothing","color":"#b0b0b0"},"iconData":{"icon":"arrow-right","type":"icon"},"displayName":"No Operation, do nothing","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":38,"icon":"fa:pen","name":"n8n-nodes-base.set","codex":{"data":{"alias":["Set","JS","JSON","Filter","Transform","Map"],"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/automatically-pulling-and-visualizing-data-with-n8n/","icon":"📈","label":"Automatically pulling and visualizing data with n8n"},{"url":"https://n8n.io/blog/database-monitoring-and-alerting-with-n8n/","icon":"📡","label":"Database Monitoring and Alerting 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/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/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/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/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/learn-to-build-powerful-api-endpoints-using-webhooks/","icon":"🧰","label":"Learn to Build Powerful API Endpoints Using Webhooks"},{"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/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/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.set/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Data Transformation"]}}},"group":"[\"input\"]","defaults":{"name":"Edit Fields"},"iconData":{"icon":"pen","type":"icon"},"displayName":"Edit Fields (Set)","typeVersion":3,"nodeCategories":[{"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":356,"icon":"file:gmail.svg","name":"n8n-nodes-base.gmail","codex":{"data":{"alias":["email","human","form","wait","hitl","approval"],"resources":{"generic":[{"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/supercharging-your-conference-registration-process-with-n8n/","icon":"🎫","label":"Supercharging your conference registration process with n8n"},{"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-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/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/using-automation-to-boost-productivity-in-the-workplace/","icon":"💪","label":"Using Automation to Boost Productivity in the Workplace"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.gmail/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/"}]},"categories":["Communication","HITL"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"HITL":["Human in the Loop"]}}},"group":"[\"transform\"]","defaults":{"name":"Gmail"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNTYiIGhlaWdodD0iMTkzIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCI+PHBhdGggZmlsbD0iIzQyODVGNCIgZD0iTTU4LjE4MiAxOTIuMDVWOTMuMTRMMjcuNTA3IDY1LjA3NyAwIDQ5LjUwNHYxMjUuMDkxYzAgOS42NTggNy44MjUgMTcuNDU1IDE3LjQ1NSAxNy40NTV6Ii8+PHBhdGggZmlsbD0iIzM0QTg1MyIgZD0iTTE5Ny44MTggMTkyLjA1aDQwLjcyN2M5LjY1OSAwIDE3LjQ1NS03LjgyNiAxNy40NTUtMTcuNDU1VjQ5LjUwNWwtMzEuMTU2IDE3LjgzNy0yNy4wMjYgMjUuNzk4eiIvPjxwYXRoIGZpbGw9IiNFQTQzMzUiIGQ9Im01OC4xODIgOTMuMTQtNC4xNzQtMzguNjQ3IDQuMTc0LTM2Ljk4OUwxMjggNjkuODY4bDY5LjgxOC01Mi4zNjQgNC42NyAzNC45OTItNC42NyA0MC42NDRMMTI4IDE0NS41MDR6Ii8+PHBhdGggZmlsbD0iI0ZCQkMwNCIgZD0iTTE5Ny44MTggMTcuNTA0VjkzLjE0TDI1NiA0OS41MDRWMjYuMjMxYzAtMjEuNTg1LTI0LjY0LTMzLjg5LTQxLjg5LTIwLjk0NXoiLz48cGF0aCBmaWxsPSIjQzUyMjFGIiBkPSJtMCA0OS41MDQgMjYuNzU5IDIwLjA3TDU4LjE4MiA5My4xNFYxNy41MDRMNDEuODkgNS4yODZDMjQuNjEtNy42NiAwIDQuNjQ2IDAgMjYuMjN6Ii8+PC9zdmc+"},"displayName":"Gmail","typeVersion":2,"nodeCategories":[{"id":6,"name":"Communication"},{"id":28,"name":"HITL"}]},{"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":838,"icon":"fa:mouse-pointer","name":"n8n-nodes-base.manualTrigger","codex":{"data":{"resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.manualworkflowtrigger/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"trigger\"]","defaults":{"name":"When clicking ‘Execute workflow’","color":"#909298"},"iconData":{"icon":"mouse-pointer","type":"icon"},"displayName":"Manual Trigger","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]}],"categories":[{"id":38,"name":"Lead Nurturing"},{"id":49,"name":"AI Summarization"}],"image":[]}}