{"workflow":{"id":13842,"name":"Enrich event registrations with HubSpot, Clearbit, LinkedIn and Gemini AI","views":36,"recentViews":0,"totalViews":36,"createdAt":"2026-03-03T18:17:58.569Z","description":"# **Event Registration + Auto-Enrichment Intelligence**\n\n**Who is this for?**  \nEvent organizers, conference planners, and marketing teams fighting registration drop-off who want **4-field forms** with LinkedIn-level attendee intelligence.\n\n***\n\n**What problem is this workflow solving?**  \nMulti-page forms kill conversions:  \n- 80-90% drop-off on page 2  \n- No attendee insights post-reg  \n- Manual enrichment wastes hours  \n- Abandoned carts = lost revenue  \n\nThis captures **4 fields** but enriches **15+ data points** automatically.\n\n***\n\n**What this workflow does**  \n\n**3 Webhook Intelligence Suite**:  \n- **POST /event-registration**: 4-field form → enrichment → HubSpot  \n- **POST /reg-beacon**: Abandoned cart tracking pixel  \n- **POST /validate-promo**: AJAX promo code validation  \n\n**Requires 2 sub-workflows**:  \n1) [**Abandoned Cart Recovery**](https://www.linkedin.com/in/milobravo/) \n2) [**Participant Re-engager**](https://tally.so/r/EkKGgB)  \n\n\n\n**Enrichment Waterfall**:  \nClearbit → LinkedIn (Proxycurl) → Google+AI → Full profile  \n\n**Outputs**:  \n- HubSpot contacts with company/role/title  \n- Data Tables: enriched_profiles / reg_analytics  \n- Slack alerts + email confirmations  \n\n***\n\n**Setup (12 minutes)**  \n\n- **Data Tables**: enriched_profiles, reg_analytics, promo_codes  \n- **HubSpot**: API key + custom properties  \n- **APIs**: Clearbit, Proxycurl, SerpAPI, Gemini  \n- **Host**: reg-page/index.html (update webhook URLs)  \n- **SMTP/Slack**: Notifications  \n\nFully configurable, no code changes needed.\n\n***\n\n**How to customize to your needs**  \n\n- **Forms**: Swap HTML for Typeform/Webflow  \n- **Enrichment**: Add Apollo/Hunter for emails  \n- **CRM**: HubSpot → Salesforce → Airtable  \n- **Promos**: Tiered discounts / early-bird  \n- **Companion**: Abandoned Cart + Re-engager templates  \n\n***\n\n**ROI**:  \n\n- **3x registration completion** (4 fields vs 12+)  \n- **65% enriched profiles** (company/role/title)  \n- **20% revenue recovery** (abandoned carts)  \n\n***\n\n**Need help customizing?**:  \nContact me for consulting and support: [LinkedIn](https://www.linkedin.com/in/milobravo/) / [Message](https://tally.so/r/EkKGgB)  \n\n***\n\n**Keywords**: event registration, attendee enrichment, abandoned cart recovery, conference automation, HubSpot","workflow":{"id":"oL04nPnY7m5D3txg","meta":{"instanceId":"1cfae1c5e40abdb9d6aa4140af4a502d39ba6c004725411e2213384175f7e3f4"},"name":"Event Registration with Auto-Enrichment Intelligence TEMPLATE","tags":[],"nodes":[{"id":"7ca87806-e687-4892-ab6a-bcf07f130b05","name":"Receive Registration Beacon","type":"n8n-nodes-base.webhook","disabled":true,"position":[-704,640],"webhookId":"bb1a736e-ad4d-4f59-a4a7-79322781e4c8","parameters":{"path":"reg-beacon","options":{},"httpMethod":"POST","responseMode":"responseNode"},"typeVersion":2},{"id":"d72d293b-6ab6-42f6-85c4-2785e8a7251a","name":"Log Beacon to Data Table","type":"n8n-nodes-base.dataTable","position":[-480,640],"parameters":{"columns":{"value":{"status":"started","event_id":"={{ $json.body.event_id }}","created_at":"={{ $json.body.timestamp }}","session_id":"={{ $json.body.session_id }}","user_agent":"={{ $json.body.user_agent || '' }}","referred_by":"={{ $json.body.referred_by || '' }}"},"mappingMode":"defineBelow"},"options":{},"dataTableId":{"__rl":true,"mode":"id","value":"PLACEHOLDER_REGISTRATIONS_TABLE_ID"}},"typeVersion":1,"continueOnFail":true},{"id":"1be269bc-ff7d-4e79-acdb-47091a3a2acf","name":"Respond OK to Beacon","type":"n8n-nodes-base.respondToWebhook","position":[-272,640],"parameters":{"options":{"responseCode":200},"respondWith":"json","responseBody":"={{ JSON.stringify({ ok: true }) }}"},"typeVersion":1.1},{"id":"e2492242-5a52-4574-b729-d877c9e92be3","name":"Receive Registration","type":"n8n-nodes-base.webhook","position":[0,608],"webhookId":"37f217db-f79d-453a-8263-a480da9f20f1","parameters":{"path":"event-registration","options":{"responseHeaders":{"entries":[{"name":"Access-Control-Allow-Origin","value":"*"},{"name":"Access-Control-Allow-Methods","value":"POST, OPTIONS"},{"name":"Access-Control-Allow-Headers","value":"Content-Type"}]}},"httpMethod":"POST","responseMode":"responseNode"},"typeVersion":2},{"id":"6ec9c2ae-4317-423b-bda1-255784a26e55","name":"Validate Registration Data","type":"n8n-nodes-base.code","position":[208,608],"parameters":{"jsCode":"// Validate registration form data\nconst body = $input.first().json.body || $input.first().json;\n\nconst errors = [];\n\n// Required fields\nconst firstName = (body.first_name || '').trim();\nconst lastName = (body.last_name || '').trim();\nconst email = (body.email || '').trim().toLowerCase();\nconst company = (body.company || '').trim();\nconst eventId = (body.event_id || '').trim();\nconst sessionId = (body.session_id || '').trim();\nconst promoCode = (body.promo_code || '').trim();\n\nif (!firstName) errors.push('first_name is required');\nif (!lastName) errors.push('last_name is required');\nif (!email) errors.push('email is required');\nif (!company) errors.push('company is required');\nif (!eventId) errors.push('event_id is required');\n\n// Email format validation\nconst emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\nif (email && !emailRegex.test(email)) {\n  errors.push('Invalid email format');\n}\n\n// Promo code is passed in from the form (e.g., SPEAKER20, EARLYBIRD, VIP50)\n\nif (errors.length > 0) {\n  return [{\n    json: {\n      valid: false,\n      errors,\n      statusCode: 400\n    }\n  }];\n}\n\nreturn [{\n  json: {\n    valid: true,\n    first_name: firstName,\n    last_name: lastName,\n    email: email,\n    company: company,\n    event_id: eventId,\n    session_id: sessionId,\n    promo_code: promoCode,\n    registered_at: new Date().toISOString()\n  }\n}];"},"typeVersion":2},{"id":"a94234c5-a958-4dbd-a655-2acfb2cbbc6b","name":"Check Validation Result","type":"n8n-nodes-base.if","position":[448,608],"parameters":{"options":{},"conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"operator":{"type":"boolean","operation":"equals"},"leftValue":"={{ $json.valid }}","rightValue":true}]}},"typeVersion":2.2},{"id":"474dcd5b-e9ab-4f88-87c4-bffebab4bf87","name":"Respond Validation Error","type":"n8n-nodes-base.respondToWebhook","position":[448,800],"parameters":{"options":{"responseCode":400},"respondWith":"json","responseBody":"={{ JSON.stringify({ success: false, errors: $json.errors }) }}"},"typeVersion":1.1},{"id":"a45cab37-daf3-4cc5-9e14-a3a13f71b8dd","name":"Create or Update HubSpot Contact","type":"n8n-nodes-base.hubspot","position":[656,592],"parameters":{"email":"={{ $json.email }}","options":{},"additionalFields":{"lastName":"={{ $json.last_name }}","firstName":"={{ $json.first_name }}","leadStatus":"NEW"}},"credentials":{"hubspotApi":{"id":"PLACEHOLDER_HUBSPOT_CREDENTIAL_ID","name":"HubSpot account"}},"typeVersion":2,"continueOnFail":true},{"id":"a72969b6-6c4c-4940-ad6c-9c65040047ea","name":"Respond Registration Success","type":"n8n-nodes-base.respondToWebhook","position":[848,544],"parameters":{"options":{"responseCode":200,"responseHeaders":{"entries":[{"name":"Access-Control-Allow-Origin","value":"*"}]}},"respondWith":"json","responseBody":"={{ JSON.stringify({ success: true, message: 'Registration confirmed!' }) }}"},"typeVersion":1.1},{"id":"8e4e5e97-580a-473d-8e33-f85104eff2ff","name":"Merge Registration and Enrichment","type":"n8n-nodes-base.code","position":[4512,608],"parameters":{"jsCode":"// Merge original registration data with enrichment results\nconst validated = $('Validate Registration Data').first().json;\nconst hubspot = $('Create or Update HubSpot Contact').first().json;\nconst enrichment = $input.first().json || {};\n\nreturn [{\n  json: {\n    first_name: validated.first_name,\n    last_name: validated.last_name,\n    email: validated.email,\n    company: validated.company,\n    event_id: validated.event_id,\n    promo_code: validated.promo_code || '',\n    registered_at: validated.registered_at,\n    hubspot_contact_id: hubspot.id || hubspot.vid || '',\n    enrichment: {\n      company_size: enrichment.company_size || '',\n      industry: enrichment.industry || '',\n      role: enrichment.role || '',\n      seniority: enrichment.seniority || '',\n      linkedin_url: enrichment.linkedin_url || '',\n      location: enrichment.location || '',\n      company_domain: enrichment.company_domain || '',\n      enrichment_score: enrichment.enrichment_score || 0,\n      enrichment_sources: enrichment.enrichment_sources || []\n    }\n  }\n}];"},"typeVersion":2},{"id":"72a44d6c-bb97-44ce-87ab-3a5bee91964e","name":"Send Confirmation Email","type":"n8n-nodes-base.emailSend","position":[4784,480],"webhookId":"10605537-7c3c-493a-9553-133b93a2359f","parameters":{"options":{},"subject":"=You're registered for {{ $json.event_id }}!"},"typeVersion":2.1,"continueOnFail":true},{"id":"46320f5d-dbe4-4323-95a9-e8698c48257f","name":"Post to Slack Registrations","type":"n8n-nodes-base.slack","position":[4784,640],"webhookId":"d5f395dd-9ed8-4405-ba69-813f4565278d","parameters":{"text":"=📋 *New Registration* — {{ $json.event_id }}\n\n*{{ $json.first_name }} {{ $json.last_name }}* — {{ $json.enrichment.role || 'Role TBD' }}\n🏢 {{ $json.company }}{{ $json.enrichment.company_size ? ' (' + $json.enrichment.company_size + ')' : '' }}\n🏭 {{ $json.enrichment.industry || 'Industry TBD' }}\n📍 {{ $json.enrichment.location || 'Location TBD' }}\n🔗 {{ $json.enrichment.linkedin_url || 'No LinkedIn' }}\n📊 Enrichment Score: {{ $json.enrichment.enrichment_score }}/100\n{{ $json.promo_code ? '🏷️ Promo code: ' + $json.promo_code : '' }}","select":"channel","channelId":{"__rl":true,"mode":"id","value":"PLACEHOLDER_REGISTRATIONS_CHANNEL"},"otherOptions":{"unfurl_links":false,"unfurl_media":false},"authentication":"oAuth2"},"credentials":{"slackOAuth2Api":{"id":"yehGuGNkJFnbJUnx","name":"Slack account"}},"typeVersion":2.3,"continueOnFail":true},{"id":"d84bfc2b-7b30-40a4-b552-f6e823dc9cb2","name":"Has Promo Code?","type":"n8n-nodes-base.if","position":[4784,800],"parameters":{"options":{},"conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"notEquals"},"leftValue":"={{ $json.promo_code }}","rightValue":""}]}},"typeVersion":2.2},{"id":"778f5128-1574-4595-a25c-30a75a9501e4","name":"Log Promo Code Usage","type":"n8n-nodes-base.code","position":[5024,800],"parameters":{"jsCode":"// Log promo code usage for analytics\nconst promoCode = $json.promo_code;\n\nreturn [{\n  json: {\n    promo_code: promoCode,\n    used_by: $json.email,\n    event_id: $json.event_id,\n    used_at: new Date().toISOString()\n  }\n}];"},"typeVersion":2,"continueOnFail":true},{"id":"e02eb807-bab6-494b-8652-a3624e53528f","name":"Prepare Analytics Row","type":"n8n-nodes-base.code","position":[4784,960],"parameters":{"jsCode":"// Prepare analytics row for the registration event\nconst reg = $json;\nconst enrichment = reg.enrichment || {};\n\nreturn [{\n  json: {\n    event_id: reg.event_id,\n    email: reg.email,\n    company: reg.company,\n    industry: enrichment.industry || '',\n    company_size: enrichment.company_size || '',\n    enrichment_score: enrichment.enrichment_score || 0,\n    enrichment_sources: (enrichment.enrichment_sources || []).join(', '),\n    promo_code: reg.promo_code || '',\n    registered_at: reg.registered_at,\n    source: 'direct_registration'\n  }\n}];"},"typeVersion":2,"continueOnFail":true},{"id":"708dcdaf-6d22-4af4-84ed-5b5ea52b4145","name":"Log Registration Analytics","type":"n8n-nodes-base.dataTable","position":[5024,960],"parameters":{"columns":{"mappingMode":"autoMapInputData"},"options":{},"dataTableId":{"__rl":true,"mode":"id","value":"PLACEHOLDER_REG_ANALYTICS_TABLE_ID"}},"typeVersion":1,"continueOnFail":true},{"id":"sticky-intro-reg","name":"Intro — Registration Processor","type":"n8n-nodes-base.stickyNote","position":[-1456,384],"parameters":{"width":660,"height":1100,"content":"## Event Registration + Auto-Enrichment \n\n### **What it does:**\nComplete event registration intelligence in a single workflow:\n1. **One-page registration** — 4 fields, instant confirmation\n2. **Auto-enrichment waterfall** — Clearbit → LinkedIn → Google+AI\n3. **Promo code validation** — AJAX endpoint for discount codes\n4. **HubSpot CRM** — contacts auto-created with enriched data\n5. **Abandoned cart beacon** — tracks form opens for recovery\n\n### **Why it matters:**\n65% of event planners see flat/declining registrations. Multi-page forms cause 80-90% drop-off. This captures just 4 fields while enriching 15+ data points post-registration.\n\n### **Three webhook paths:**\n- `POST /event-registration` — main registration\n- `POST /reg-beacon` — abandoned cart tracking\n- `POST /validate-promo` — promo code validation\n\n### **Setup steps:**\n1. Create Data Tables: `enriched_profiles`, `reg_analytics`, `promo_codes`\n2. Create HubSpot credential + custom properties\n3. Add API credentials: Clearbit, Proxycurl, SerpAPI\n4. Connect Google Gemini, Slack OAuth2, Email (SMTP)\n5. Update all `PLACEHOLDER_*` values\n6. Host `reg-page/index.html` and update webhook URLs\n\n### **Companion templates:**\n- **Abandoned Cart Recovery** — follow-up emails\n- **Alumni Re-engager** — AI-personalized outreach\n"},"typeVersion":1},{"id":"sticky-beacon","name":"Section 1 — Beacon","type":"n8n-nodes-base.stickyNote","position":[-768,384],"parameters":{"color":6,"width":676,"height":492,"content":"## 1. Abandoned Cart Beacon\n\nThe HTML page fires a `form_started` beacon on page load. This creates a `started` record. If the user submits, it updates to `confirmed`. If they don't submit within 1h → abandoned cart sequence triggers (separate template)."},"typeVersion":1},{"id":"sticky-validate","name":"Section 2 — Validate & Create HubSpot Contact","type":"n8n-nodes-base.stickyNote","position":[-64,384],"parameters":{"color":4,"width":1080,"height":560,"content":"## 2. Validate & Create HubSpot Contact\n\nServer-side validation (required fields, email format) → **HubSpot upsert** (create if new, update if email exists).\n\nSets `lifecycle_stage=lead`, `lead_status=NEW`. Maps: `email`, `firstname`, `lastname`, `company`, `promo_code`, `event_registration`.\n\nResponds immediately with success — **no user-facing latency**. Enrichment runs async after the response."},"typeVersion":1},{"id":"sticky-enrichment","name":"Section 3 — Enrichment Waterfall","type":"n8n-nodes-base.stickyNote","position":[1056,384],"parameters":{"color":2,"width":3356,"height":820,"content":"## 3. Enrichment Waterfall (Async)\n\nRuns AFTER the webhook has responded. Waterfall stops early when enough data is found — saves API costs.\n\n**Step 1:** Cache check (skip if recently enriched with score ≥50) → **Step 2:** Clearbit/Apollo (person + company from email) → **Step 3:** Proxycurl LinkedIn (profile resolution) → **Step 4:** Google Search + Gemini AI (last resort)\n\n**Score → Cache → Merge** back into registration data. Expected cost: ~$0.08/registrant with cache hits."},"typeVersion":1},{"id":"sticky-notify","name":"Section 4 — Notify & Log","type":"n8n-nodes-base.stickyNote","position":[4448,384],"parameters":{"color":5,"width":808,"height":828,"content":"## 4. Notify & Log\n\nAfter enrichment merges back:\n- **Confirmation email** with event details\n- **Slack notification** with enriched data\n- **Promo code credit** (if applicable)\n- **Analytics log** for reporting"},"typeVersion":1},{"id":"sticky-errors","name":"Section — Error Handling","type":"n8n-nodes-base.stickyNote","position":[4448,1248],"parameters":{"color":3,"width":680,"height":240,"content":"## ⚠️ Error Handling\n\nAll non-critical nodes in this workflow use `continueOnFail`:\n- **HubSpot** unreachable → registration still responds to user\n- **Enrichment APIs** fail → registration confirmed, enrichment skipped\n- **Email/Slack** fail → other notifications still send\n- **Analytics** fail → user experience unaffected\n\nThe webhook responds BEFORE enrichment starts — users never wait."},"typeVersion":1},{"id":"sticky-contact-reg","name":"Contact — Braia Labs","type":"n8n-nodes-base.stickyNote","position":[6432,384],"parameters":{"width":560,"height":1160,"content":"## Was this helpful? Get in touch!\n\n[![clic](https://vptkuqoipqbebipqjnqw.supabase.co/storage/v1/object/public/Milo%20Bravo/seeAxWUupcOOXY5tntexZ_video.gif)](https://tally.so/r/EkKGgB)\n\nI really hope this automation helped you. Your feedback is incredibly valuable and helps me create better resources for business and the n8n community.\n\n### **Have Feedback, a Question, or a Project Idea?**\n\nI've streamlined the way we connect. It all starts with one simple form that takes less than 10 seconds. After that, you'll chat with my AI assistant who will gather the key details and pass them directly on to me.\n\n####  **[Start the conversation here](https://tally.so/r/EkKGgB)**\n\n*   **Give Feedback:** Share your thoughts on this template—whether you found a typo, encountered an unexpected error, have a suggestion, or just want to say thanks!\n\n*   **n8n Consulting:** Have a complex business challenge or need a custom workflow built from scratch? Let's partner on a powerful automation solution tailored to your specific needs.\n\n*   **Join your team:** We can work together to get you launched with confidence.\n\n---\n\nHappy Automating!\n[Milo Bravo](https://linkedin.com/in/MiloBravo/) | BRaiA Labs | Automation & BI Systems + AI Integration"},"typeVersion":1},{"id":"d449cc49-45b2-418f-8a62-0c1a51c79dab","name":"Initialize Enrichment State","type":"n8n-nodes-base.code","position":[1184,688],"parameters":{"jsCode":"// Initialize enrichment state from registration data\nconst hubspot = $('Create or Update HubSpot Contact').first().json;\nconst validated = $('Validate Registration Data').first().json;\n\nreturn [{\n  json: {\n    // Input fields — prefer validated data, HubSpot as fallback\n    email: validated.email || hubspot.properties?.email || '',\n    first_name: validated.first_name || hubspot.properties?.firstname || '',\n    last_name: validated.last_name || hubspot.properties?.lastname || '',\n    company: validated.company || hubspot.properties?.company || '',\n    event_id: validated.event_id || '',\n\n    // Enrichment fields (to be filled by waterfall)\n    company_size: '',\n    industry: '',\n    role: '',\n    seniority: '',\n    linkedin_url: '',\n    location: '',\n    company_domain: '',\n    company_description: '',\n    person_bio: '',\n\n    // Meta\n    enrichment_sources: [],\n    enrichment_score: 0,\n    started_at: new Date().toISOString()\n  }\n}];"},"typeVersion":2},{"id":"cc455412-e21a-461f-9af6-58f407b7dcb2","name":"Check Enrichment Cache","type":"n8n-nodes-base.httpRequest","position":[1360,688],"parameters":{"url":"https://milobravo1.app.n8n.cloud/api/v1/data-tables/PLACEHOLDER_ENRICHED_PROFILES_TABLE_ID/rows","options":{"timeout":10000},"sendQuery":true,"authentication":"genericCredentialType","genericAuthType":"httpHeaderAuth","queryParameters":{"parameters":[{"name":"limit","value":"1"},{"name":"filter","value":"={{ 'email=' + $json.email }}"}]}},"typeVersion":4.2,"continueOnFail":true},{"id":"2ecd0874-edaf-4cf1-9c07-1c3c82b177ae","name":"Cache Hit with Good Score?","type":"n8n-nodes-base.if","position":[1648,688],"parameters":{"options":{},"conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"notEquals"},"leftValue":"={{ $json.email }}","rightValue":""},{"operator":{"type":"number","operation":"gte"},"leftValue":"={{ $json.enrichment_score }}","rightValue":"50"}]}},"typeVersion":2.2},{"id":"d75efb87-f909-49e7-a174-b0b917cfa335","name":"Return Cached Profile","type":"n8n-nodes-base.code","position":[4016,528],"parameters":{"jsCode":"// Return the cached enriched profile\nconst cached = $input.first().json;\nreturn [{\n  json: {\n    ...cached,\n    enrichment_sources: ['cache'],\n    from_cache: true\n  }\n}];"},"typeVersion":2},{"id":"6bd3163d-9f0c-4641-90b8-63a80c6bc613","name":"Enrich via Clearbit","type":"n8n-nodes-base.httpRequest","position":[1888,704],"parameters":{"url":"=https://person-stream.clearbit.com/v2/combined/find?email={{ $('Initialize Enrichment State').item.json.email }}","options":{"timeout":10000},"authentication":"genericCredentialType","genericAuthType":"httpHeaderAuth"},"typeVersion":4.2,"continueOnFail":true},{"id":"05f39e8d-75b9-4158-8927-63b4a7718aad","name":"Parse Clearbit Results","type":"n8n-nodes-base.code","position":[2096,704],"parameters":{"jsCode":"// Parse Clearbit combined API response\nconst state = $('Initialize Enrichment State').first().json;\nconst result = $input.first().json;\n\n// Check if Clearbit returned useful data\nconst person = result.person || {};\nconst company = result.company || {};\n\nlet enriched = { ...state };\nlet sources = [...(state.enrichment_sources || [])];\n\nif (person.employment?.title) {\n  enriched.role = person.employment.title;\n  enriched.seniority = person.employment.seniority || '';\n  sources.push('clearbit_person');\n}\n\nif (person.linkedin?.handle) {\n  enriched.linkedin_url = 'https://linkedin.com/in/' + person.linkedin.handle;\n}\n\nif (person.location) {\n  enriched.location = person.location;\n}\n\nif (person.bio) {\n  enriched.person_bio = person.bio;\n}\n\nif (company.name) {\n  enriched.company_domain = company.domain || '';\n  enriched.company_description = company.description || '';\n  sources.push('clearbit_company');\n}\n\nif (company.metrics?.employees) {\n  const emp = company.metrics.employees;\n  if (emp < 50) enriched.company_size = 'startup';\n  else if (emp < 200) enriched.company_size = 'SMB';\n  else if (emp < 1000) enriched.company_size = 'mid-market';\n  else enriched.company_size = 'enterprise';\n}\n\nif (company.category?.industry) {\n  enriched.industry = company.category.industry;\n}\n\nenriched.enrichment_sources = sources;\n\nreturn [{ json: enriched }];"},"typeVersion":2},{"id":"2d76e5d5-72fd-4b95-a445-a1d248e4de00","name":"Enough Data After Clearbit?","type":"n8n-nodes-base.if","position":[2304,704],"parameters":{"options":{},"conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"notEquals"},"leftValue":"={{ $json.role }}","rightValue":""},{"operator":{"type":"string","operation":"notEquals"},"leftValue":"={{ $json.company_size }}","rightValue":""},{"operator":{"type":"string","operation":"notEquals"},"leftValue":"={{ $json.industry }}","rightValue":""},{"operator":{"type":"string","operation":"notEquals"},"leftValue":"={{ $json.linkedin_url }}","rightValue":""}]}},"typeVersion":2.2},{"id":"6be306be-2068-45a7-aeba-ae93c10a85ef","name":"Enrich via Proxycurl LinkedIn","type":"n8n-nodes-base.httpRequest","position":[2592,784],"parameters":{"url":"=https://nubela.co/proxycurl/api/linkedin/profile/resolve/email?work_email={{ $('Initialize Enrichment State').item.json.email }}&lookup_depth=deep","options":{"timeout":15000},"authentication":"genericCredentialType","genericAuthType":"httpHeaderAuth"},"typeVersion":4.2,"continueOnFail":true},{"id":"a8575fed-1043-4d21-bb02-de2027489eac","name":"Parse Proxycurl Results","type":"n8n-nodes-base.code","position":[2832,784],"parameters":{"jsCode":"// Parse Proxycurl LinkedIn resolution response\nconst state = $('Parse Clearbit Results').first().json;\nconst result = $input.first().json;\n\nlet enriched = { ...state };\nlet sources = [...(enriched.enrichment_sources || [])];\n\nif (result.url || result.linkedin_profile_url) {\n  enriched.linkedin_url = enriched.linkedin_url || result.url || result.linkedin_profile_url || '';\n  sources.push('proxycurl');\n}\n\nif (result.headline) {\n  enriched.role = enriched.role || result.headline;\n}\n\nif (result.industry) {\n  enriched.industry = enriched.industry || result.industry;\n}\n\nif (result.city || result.country_full_name) {\n  enriched.location = enriched.location || [result.city, result.country_full_name].filter(Boolean).join(', ');\n}\n\nif (result.summary) {\n  enriched.person_bio = enriched.person_bio || result.summary;\n}\n\nenriched.enrichment_sources = sources;\n\nreturn [{ json: enriched }];"},"typeVersion":2},{"id":"fc98c6cb-785a-4215-bbb4-268423caeed9","name":"Enough Data After LinkedIn?","type":"n8n-nodes-base.if","position":[3056,784],"parameters":{"options":{},"conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"notEquals"},"leftValue":"={{ $json.role }}","rightValue":""},{"operator":{"type":"string","operation":"notEquals"},"leftValue":"={{ $json.industry }}","rightValue":""}]}},"typeVersion":2.2},{"id":"7f2bf671-afb8-4983-8905-e26b1d039b8c","name":"Search Google for Person","type":"n8n-nodes-base.httpRequest","position":[3280,880],"parameters":{"url":"https://serpapi.com/search.json","options":{"timeout":10000},"sendQuery":true,"queryParameters":{"parameters":[{"name":"q","value":"={{ $('Initialize Enrichment State').item.json.first_name }} {{ $('Initialize Enrichment State').item.json.last_name }} {{ $('Initialize Enrichment State').item.json.company }}"},{"name":"api_key","value":"PLACEHOLDER_SERPAPI_KEY"},{"name":"num","value":"5"}]}},"typeVersion":4.2,"continueOnFail":true},{"id":"7c6a3fa2-a4f4-43c6-b80a-f576f72fa118","name":"Extract Intelligence with Gemini","type":"@n8n/n8n-nodes-langchain.informationExtractor","position":[3504,880],"parameters":{"options":{},"schemaType":"fromJson","jsonSchemaExample":"{\"role\": \"VP of Marketing\", \"industry\": \"Technology\", \"location\": \"Paris, France\", \"linkedin_url\": \"https://linkedin.com/in/example\", \"company_size\": \"enterprise\", \"seniority\": \"VP\"}"},"typeVersion":1},{"id":"6ad08f42-2937-45ae-bab6-d1d50bf69dfa","name":"Google Gemini for Extraction","type":"@n8n/n8n-nodes-langchain.lmChatGoogleGemini","position":[3504,1056],"parameters":{"options":{"temperature":0.1},"modelName":"models/gemini-2.5-flash-lite"},"typeVersion":1},{"id":"c49f9ad8-311e-41dd-a3b6-ce48b3b93382","name":"Merge AI Extraction Results","type":"n8n-nodes-base.code","position":[3824,880],"parameters":{"jsCode":"// Merge AI extraction results with existing enrichment state\nconst state = $('Parse Proxycurl Results').first()?.json\n  || $('Parse Clearbit Results').first()?.json\n  || $('Initialize Enrichment State').first().json;\n\nconst aiResult = $input.first().json.output || $input.first().json || {};\n\nlet enriched = { ...state };\nlet sources = [...(enriched.enrichment_sources || [])];\n\n// Only fill in missing fields from AI extraction\nif (!enriched.role && aiResult.role) enriched.role = aiResult.role;\nif (!enriched.industry && aiResult.industry) enriched.industry = aiResult.industry;\nif (!enriched.location && aiResult.location) enriched.location = aiResult.location;\nif (!enriched.linkedin_url && aiResult.linkedin_url) enriched.linkedin_url = aiResult.linkedin_url;\nif (!enriched.company_size && aiResult.company_size) enriched.company_size = aiResult.company_size;\nif (!enriched.seniority && aiResult.seniority) enriched.seniority = aiResult.seniority;\n\nif (aiResult.role || aiResult.industry || aiResult.location) {\n  sources.push('google_ai');\n}\n\nenriched.enrichment_sources = sources;\n\nreturn [{ json: enriched }];"},"typeVersion":2},{"id":"d383b947-ff2e-47ff-a4b8-d22950f29650","name":"Score Data Completeness","type":"n8n-nodes-base.code","position":[4016,704],"parameters":{"jsCode":"// Score enrichment completeness (0-100)\nconst d = $input.first().json;\n\nlet score = 0;\nconst weights = {\n  role: 20,\n  industry: 15,\n  company_size: 15,\n  linkedin_url: 15,\n  location: 10,\n  seniority: 10,\n  company_domain: 5,\n  person_bio: 5,\n  company_description: 5\n};\n\nfor (const [field, weight] of Object.entries(weights)) {\n  if (d[field] && d[field].trim() !== '') {\n    score += weight;\n  }\n}\n\nreturn [{\n  json: {\n    ...d,\n    enrichment_score: score,\n    completed_at: new Date().toISOString()\n  }\n}];"},"typeVersion":2},{"id":"19cda09e-248c-4f94-ba3d-2236385d668b","name":"Cache Enriched Profile","type":"n8n-nodes-base.dataTable","position":[4192,832],"parameters":{"columns":{"value":{"role":"={{ $json.role }}","email":"={{ $json.email }}","industry":"={{ $json.industry }}","location":"={{ $json.location }}","cached_at":"={{ $json.completed_at }}","seniority":"={{ $json.seniority }}","company_size":"={{ $json.company_size }}","linkedin_url":"={{ $json.linkedin_url }}","company_domain":"={{ $json.company_domain }}","enrichment_score":"={{ $json.enrichment_score }}","enrichment_sources":"={{ $json.enrichment_sources.join(', ') }}"},"mappingMode":"defineBelow"},"options":{},"dataTableId":{"__rl":true,"mode":"id","value":"PLACEHOLDER_ENRICHED_PROFILES_TABLE_ID"}},"typeVersion":1,"continueOnFail":true},{"id":"sticky-cost","name":"Section — Cost Note","type":"n8n-nodes-base.stickyNote","position":[2800,1264],"parameters":{"color":3,"width":560,"height":204,"content":"## ⚠️ API Cost Management\n\nWaterfall stops early when \"good enough\":\n- **Clearbit**: ~$0.05-0.10/lookup (highest ROI)\n- **Proxycurl**: ~$0.01/credit (only if Clearbit has gaps)\n- **SerpAPI + Gemini**: ~$0.005 combined (last resort)\n\nCache prevents re-enriching. Average: **~$0.08/registrant**."},"typeVersion":1},{"id":"dd444c0a-26ce-4f98-b9e1-ef1522dbe6be","name":"Receive Promo Code Validation","type":"n8n-nodes-base.webhook","position":[5392,592],"webhookId":"a0097b86-9523-472b-b11d-8b447494949b","parameters":{"path":"validate-promo","options":{},"httpMethod":"POST","responseMode":"responseNode"},"typeVersion":2},{"id":"b343e4d1-486c-4f21-a9a6-67d0dd49ef15","name":"Parse Promo Code","type":"n8n-nodes-base.code","position":[5712,592],"parameters":{"jsCode":"// Parse and validate promo/discount code\nconst body = $input.first().json.body || $input.first().json;\nconst promoCode = (body.promo_code || body.code || '').trim().toUpperCase();\n\nif (!promoCode) {\n  return [{\n    json: {\n      valid: false,\n      message: 'No promo code provided',\n      discount_percent: 0\n    }\n  }];\n}\n\nreturn [{\n  json: {\n    valid: true,\n    promo_code: promoCode,\n    checked_at: new Date().toISOString()\n  }\n}];"},"typeVersion":2},{"id":"6d977e9f-cc2a-4ec0-9bf9-122ae60f704e","name":"Lookup Promo Code","type":"n8n-nodes-base.httpRequest","position":[5984,592],"parameters":{"url":"https://milobravo1.app.n8n.cloud/api/v1/data-tables/PLACEHOLDER_REFERRALS_TABLE_ID/rows","options":{"timeout":10000},"sendQuery":true,"authentication":"genericCredentialType","genericAuthType":"httpHeaderAuth","queryParameters":{"parameters":[{"name":"limit","value":"1"},{"name":"filter","value":"={{ 'code=' + $json.promo_code }}"}]}},"typeVersion":4.2,"continueOnFail":true},{"id":"0da85a5b-4f08-4aa4-92eb-4ad5dd77f9db","name":"Validate Promo Code","type":"n8n-nodes-base.code","position":[6208,592],"parameters":{"jsCode":"// Validate promo code against lookup results\nconst result = $input.first().json;\nconst rows = result.data || result.rows || [result];\nconst promoCode = $('Parse Promo Code').first().json.promo_code;\n\n// Check if promo code exists and is still valid\nconst match = rows.find(r =>\n  (r.code || '').toUpperCase() === promoCode\n);\n\nif (!match) {\n  return [{\n    json: {\n      valid: false,\n      promo_code: promoCode,\n      message: 'Invalid promo code',\n      discount_percent: 0\n    }\n  }];\n}\n\n// Check expiry\nconst expiresAt = match.expires_at ? new Date(match.expires_at) : null;\nif (expiresAt && expiresAt < new Date()) {\n  return [{\n    json: {\n      valid: false,\n      promo_code: promoCode,\n      message: 'This promo code has expired',\n      discount_percent: 0\n    }\n  }];\n}\n\n// Check usage limit\nconst maxUses = parseInt(match.max_uses || '0', 10);\nconst currentUses = parseInt(match.current_uses || '0', 10);\nif (maxUses > 0 && currentUses >= maxUses) {\n  return [{\n    json: {\n      valid: false,\n      promo_code: promoCode,\n      message: 'This promo code has reached its usage limit',\n      discount_percent: 0\n    }\n  }];\n}\n\nreturn [{\n  json: {\n    valid: true,\n    promo_code: promoCode,\n    discount_percent: parseInt(match.discount_percent || '0', 10),\n    discount_label: match.label || promoCode,\n    message: match.label || ('Discount: ' + match.discount_percent + '% off'),\n    current_uses: currentUses + 1\n  }\n}];"},"typeVersion":2},{"id":"23b55f05-fe50-4632-b3b7-a152ed44cad5","name":"Log Promo Code to Data Table","type":"n8n-nodes-base.dataTable","position":[5728,832],"parameters":{"columns":{"value":{"valid":"={{ $json.valid }}","used_at":"={{ $now.toISO() }}","promo_code":"={{ $json.promo_code }}"},"mappingMode":"defineBelow"},"options":{},"dataTableId":{"__rl":true,"mode":"id","value":"PLACEHOLDER_PROMO_CODES_TABLE_ID"}},"typeVersion":1,"continueOnFail":true},{"id":"b67418e4-ef15-414e-b424-6a30849d5165","name":"Respond with Promo Validation","type":"n8n-nodes-base.respondToWebhook","position":[5392,816],"parameters":{"options":{"responseCode":200,"responseHeaders":{"entries":[{"name":"Access-Control-Allow-Origin","value":"*"}]}},"respondWith":"json","responseBody":"={{ JSON.stringify({ valid: $json.valid, promo_code: $json.promo_code, discount_percent: $json.discount_percent || 0, message: $json.message || '' }) }}"},"typeVersion":1.1},{"id":"sticky-intro-ref","name":"Section 5 — Promo Code Validation","type":"n8n-nodes-base.stickyNote","position":[5296,384],"parameters":{"color":7,"width":1096,"height":832,"content":"## 5. Promo Code Validation (Separate Webhook)\n\nAJAX endpoint (`POST /validate-promo`) called by the HTML registration page. Validates codes against a Data Table: checks expiry date, usage limits, active status. Returns JSON with discount percentage and validity."},"typeVersion":1}],"active":false,"pinData":{},"settings":{"callerPolicy":"workflowsFromSameOwner","availableInMCP":false,"executionOrder":"v1"},"versionId":"afa906f6-fd2d-4a19-81a7-7d9e22bf0f36","connections":{"Has Promo Code?":{"main":[[{"node":"Log Promo Code Usage","type":"main","index":0}],[]]},"Parse Promo Code":{"main":[[{"node":"Lookup Promo Code","type":"main","index":0}]]},"Lookup Promo Code":{"main":[[{"node":"Validate Promo Code","type":"main","index":0}]]},"Enrich via Clearbit":{"main":[[{"node":"Parse Clearbit Results","type":"main","index":0}]]},"Validate Promo Code":{"main":[[{"node":"Log Promo Code to Data Table","type":"main","index":0}]]},"Log Promo Code Usage":{"main":[[{"node":"Respond with Promo Validation","type":"main","index":0}]]},"Receive Registration":{"main":[[{"node":"Validate Registration Data","type":"main","index":0}]]},"Prepare Analytics Row":{"main":[[{"node":"Log Registration Analytics","type":"main","index":0}]]},"Return Cached Profile":{"main":[[{"node":"Merge Registration and Enrichment","type":"main","index":0}]]},"Check Enrichment Cache":{"main":[[{"node":"Cache Hit with Good Score?","type":"main","index":0}]]},"Parse Clearbit Results":{"main":[[{"node":"Enough Data After Clearbit?","type":"main","index":0}]]},"Check Validation Result":{"main":[[{"node":"Create or Update HubSpot Contact","type":"main","index":0}],[{"node":"Respond Validation Error","type":"main","index":0}]]},"Parse Proxycurl Results":{"main":[[{"node":"Enough Data After LinkedIn?","type":"main","index":0}]]},"Score Data Completeness":{"main":[[{"node":"Cache Enriched Profile","type":"main","index":0},{"node":"Merge Registration and Enrichment","type":"main","index":0}]]},"Log Beacon to Data Table":{"main":[[{"node":"Respond OK to Beacon","type":"main","index":0}]]},"Search Google for Person":{"main":[[{"node":"Extract Intelligence with Gemini","type":"main","index":0}]]},"Cache Hit with Good Score?":{"main":[[{"node":"Return Cached Profile","type":"main","index":0}],[{"node":"Enrich via Clearbit","type":"main","index":0}]]},"Validate Registration Data":{"main":[[{"node":"Check Validation Result","type":"main","index":0}]]},"Enough Data After Clearbit?":{"main":[[{"node":"Score Data Completeness","type":"main","index":0}],[{"node":"Enrich via Proxycurl LinkedIn","type":"main","index":0}]]},"Enough Data After LinkedIn?":{"main":[[{"node":"Score Data Completeness","type":"main","index":0}],[{"node":"Search Google for Person","type":"main","index":0}]]},"Initialize Enrichment State":{"main":[[{"node":"Check Enrichment Cache","type":"main","index":0}]]},"Merge AI Extraction Results":{"main":[[{"node":"Score Data Completeness","type":"main","index":0}]]},"Receive Registration Beacon":{"main":[[{"node":"Log Beacon to Data Table","type":"main","index":0}]]},"Google Gemini for Extraction":{"ai_languageModel":[[{"node":"Extract Intelligence with Gemini","type":"ai_languageModel","index":0}]]},"Log Promo Code to Data Table":{"main":[[{"node":"Respond with Promo Validation","type":"main","index":0}]]},"Enrich via Proxycurl LinkedIn":{"main":[[{"node":"Parse Proxycurl Results","type":"main","index":0}]]},"Receive Promo Code Validation":{"main":[[{"node":"Parse Promo Code","type":"main","index":0}]]},"Create or Update HubSpot Contact":{"main":[[{"node":"Respond Registration Success","type":"main","index":0},{"node":"Initialize Enrichment State","type":"main","index":0}]]},"Extract Intelligence with Gemini":{"main":[[{"node":"Merge AI Extraction Results","type":"main","index":0}]]},"Merge Registration and Enrichment":{"main":[[{"node":"Send Confirmation Email","type":"main","index":0},{"node":"Post to Slack Registrations","type":"main","index":0},{"node":"Has Promo Code?","type":"main","index":0},{"node":"Prepare Analytics Row","type":"main","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":47,"nodeTypes":{"n8n-nodes-base.if":{"count":5},"n8n-nodes-base.code":{"count":12},"n8n-nodes-base.slack":{"count":1},"n8n-nodes-base.hubspot":{"count":1},"n8n-nodes-base.webhook":{"count":3},"n8n-nodes-base.dataTable":{"count":4},"n8n-nodes-base.emailSend":{"count":1},"n8n-nodes-base.stickyNote":{"count":9},"n8n-nodes-base.httpRequest":{"count":5},"n8n-nodes-base.respondToWebhook":{"count":4},"@n8n/n8n-nodes-langchain.lmChatGoogleGemini":{"count":1},"@n8n/n8n-nodes-langchain.informationExtractor":{"count":1}}},"status":"published","readyToDemo":null,"user":{"name":"Milo Bravo","username":"milobravo1","bio":"Helping B2B teams automate with n8n & AI Integration | Automation & BI Systems | Seasoned n8n leader with Fortune 500 experience. ","verified":true,"links":["https://milobravo.youcanbook.me/"],"avatar":"https://gravatar.com/avatar/4f2f424fe60cbc12857331bd5b6d7b135580970becb5bb1c7ada1b4bdeb153db?r=pg&d=retro&size=200"},"nodes":[{"id":11,"icon":"fa:envelope","name":"n8n-nodes-base.emailSend","codex":{"data":{"alias":["SMTP","email","human","form","wait","hitl","approval"],"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/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"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.sendemail/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/sendemail/"}]},"categories":["Communication","HITL","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"HITL":["Human in the Loop"]}}},"group":"[\"output\"]","defaults":{"name":"Send Email","color":"#00bb88"},"iconData":{"icon":"envelope","type":"icon"},"displayName":"Send Email","typeVersion":2,"nodeCategories":[{"id":6,"name":"Communication"},{"id":9,"name":"Core Nodes"},{"id":28,"name":"HITL"}]},{"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":20,"icon":"fa:map-signs","name":"n8n-nodes-base.if","codex":{"data":{"alias":["Router","Filter","Condition","Logic","Boolean","Branch"],"details":"The IF node can be used to implement binary conditional logic in your workflow. You can set up one-to-many conditions to evaluate each item of data being inputted into the node. That data will either evaluate to TRUE or FALSE and route out of the node accordingly.\n\nThis node has multiple types of conditions: Bool, String, Number, and Date & Time.","resources":{"generic":[{"url":"https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/","icon":"🏭","label":"Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"},{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/create-a-toxic-language-detector-for-telegram/","icon":"🤬","label":"Create a toxic language detector for Telegram in 4 step"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/","icon":"🔗","label":"How to build a low-code, self-hosted URL shortener in 3 steps"},{"url":"https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/","icon":"⚙️","label":"Automate your data processing pipeline in 9 steps"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/automation-for-maintainers-of-open-source-projects/","icon":"🏷️","label":"How to automatically manage contributions to open-source projects"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/","icon":"🧠","label":"Why this Product Manager loves workflow automation with n8n"},{"url":"https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/","icon":"🙌","label":"Sending Automated Congratulations with Google Sheets, Twilio, and n8n "},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.if/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow"]}}},"group":"[\"transform\"]","defaults":{"name":"If","color":"#408000"},"iconData":{"icon":"map-signs","type":"icon"},"displayName":"If","typeVersion":2,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":40,"icon":"file:slack.svg","name":"n8n-nodes-base.slack","codex":{"data":{"alias":["human","form","wait","hitl","approval"],"resources":{"generic":[{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/","icon":"⚙️","label":"Automate your data processing pipeline in 9 steps"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/build-your-own-virtual-assistant-with-n8n-a-step-by-step-guide/","icon":"👦","label":"Build your own virtual assistant with n8n: A step by step guide"},{"url":"https://n8n.io/blog/how-to-automatically-give-kudos-to-contributors-with-github-slack-and-n8n/","icon":"👏","label":"How to automatically give kudos to contributors with GitHub, Slack, and n8n"},{"url":"https://n8n.io/blog/automations-for-activists/","icon":"✨","label":"How Common Knowledge use workflow automation for activism"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.slack/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/slack/"}]},"categories":["Communication","HITL"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"HITL":["Human in the Loop"]}}},"group":"[\"output\"]","defaults":{"name":"Slack"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB2aWV3Qm94PSIwIDAgMTUwLjg1MiAxNTAuODUyIj48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIuOTI2IiB5PSIuOTI2Ii8+PHN5bWJvbCBpZD0iYSIgb3ZlcmZsb3c9InZpc2libGUiPjxnIHN0cm9rZS13aWR0aD0iMS44NTIiPjxwYXRoIGZpbGw9IiNlMDFlNWEiIHN0cm9rZT0iI2UwMWU1YSIgZD0iTTQwLjc0MSA5My41NWMwLTguNzM1IDYuNjA3LTE1Ljc3MiAxNC44MTUtMTUuNzcyczE0LjgxNSA3LjAzNyAxNC44MTUgMTUuNzcydjM4LjgyNGMwIDguNzM3LTYuNjA3IDE1Ljc3NC0xNC44MTUgMTUuNzc0cy0xNC44MTUtNy4wMzctMTQuODE1LTE1Ljc3MnoiLz48cGF0aCBmaWxsPSIjZWNiMjJkIiBzdHJva2U9IiNlY2IyMmQiIGQ9Ik05My41NSAxMDcuNDA4Yy04LjczNSAwLTE1Ljc3Mi02LjYwNy0xNS43NzItMTQuODE1czcuMDM3LTE0LjgxNSAxNS43NzItMTQuODE1aDM4LjgyNmM4LjczNSAwIDE1Ljc3MiA2LjYwNyAxNS43NzIgMTQuODE1cy03LjAzNyAxNC44MTUtMTUuNzcyIDE0LjgxNXoiLz48cGF0aCBmaWxsPSIjMmZiNjdjIiBzdHJva2U9IiMyZmI2N2MiIGQ9Ik03Ny43NzggMTUuNzcyQzc3Ljc3OCA3LjAzNyA4NC4zODUgMCA5Mi41OTMgMHMxNC44MTUgNy4wMzcgMTQuODE1IDE1Ljc3MnYzOC44MjZjMCA4LjczNS02LjYwNyAxNS43NzItMTQuODE1IDE1Ljc3MnMtMTQuODE1LTcuMDM3LTE0LjgxNS0xNS43NzJ6Ii8+PHBhdGggZmlsbD0iIzM2YzVmMSIgc3Ryb2tlPSIjMzZjNWYxIiBkPSJNMTUuNzcyIDcwLjM3MUM3LjAzNyA3MC4zNzEgMCA2My43NjMgMCA1NS41NTZzNy4wMzctMTQuODE1IDE1Ljc3Mi0xNC44MTVoMzguODI2YzguNzM1IDAgMTUuNzcyIDYuNjA3IDE1Ljc3MiAxNC44MTVzLTcuMDM3IDE0LjgxNS0xNS43NzIgMTQuODE1eiIvPjxnIHN0cm9rZS1saW5lam9pbj0ibWl0ZXIiPjxwYXRoIGZpbGw9IiNlY2IyMmQiIHN0cm9rZT0iI2VjYjIyZCIgZD0iTTc3Ljc3OCAxMzMuMzMzYzAgOC4yMDggNi42MDcgMTQuODE1IDE0LjgxNSAxNC44MTVzMTQuODE1LTYuNjA3IDE0LjgxNS0xNC44MTUtNi42MDctMTQuODE1LTE0LjgxNS0xNC44MTVINzcuNzc4eiIvPjxwYXRoIGZpbGw9IiMyZmI2N2MiIHN0cm9rZT0iIzJmYjY3YyIgZD0iTTEzMy4zMzQgNzAuMzcxaC0xNC44MTVWNTUuNTU2YzAtOC4yMDcgNi42MDctMTQuODE1IDE0LjgxNS0xNC44MTVzMTQuODE1IDYuNjA3IDE0LjgxNSAxNC44MTUtNi42MDcgMTQuODE1LTE0LjgxNSAxNC44MTV6Ii8+PHBhdGggZmlsbD0iI2UwMWU1YSIgc3Ryb2tlPSIjZTAxZTVhIiBkPSJNMTQuODE1IDc3Ljc3OEgyOS42M3YxNC44MTVjMCA4LjIwNy02LjYwNyAxNC44MTUtMTQuODE1IDE0LjgxNVMwIDEwMC44IDAgOTIuNTkzczYuNjA3LTE0LjgxNSAxNC44MTUtMTQuODE1eiIvPjxwYXRoIGZpbGw9IiMzNmM1ZjEiIHN0cm9rZT0iIzM2YzVmMSIgZD0iTTcwLjM3MSAxNC44MTVWMjkuNjNINTUuNTU2Yy04LjIwNyAwLTE0LjgxNS02LjYwNy0xNC44MTUtMTQuODE1UzQ3LjM0OCAwIDU1LjU1NiAwczE0LjgxNSA2LjYwNyAxNC44MTUgMTQuODE1eiIvPjwvZz48L2c+PC9zeW1ib2w+PC9zdmc+"},"displayName":"Slack","typeVersion":2,"nodeCategories":[{"id":6,"name":"Communication"},{"id":28,"name":"HITL"}]},{"id":47,"icon":"file:webhook.svg","name":"n8n-nodes-base.webhook","codex":{"data":{"alias":["HTTP","API","Build","WH"],"resources":{"generic":[{"url":"https://n8n.io/blog/learn-how-to-automatically-cross-post-your-content-with-n8n/","icon":"✍️","label":"Learn how to automatically cross-post your content with n8n"},{"url":"https://n8n.io/blog/running-n8n-on-ships-an-interview-with-maranics/","icon":"🛳","label":"Running n8n on ships: An interview with Maranics"},{"url":"https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/","icon":"🔗","label":"How to build a low-code, self-hosted URL shortener in 3 steps"},{"url":"https://n8n.io/blog/what-are-apis-how-to-use-them-with-no-code/","icon":" 🪢","label":"What are APIs and how to use them with no code"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/how-a-digital-strategist-uses-n8n-for-online-marketing/","icon":"💻","label":"How a digital strategist uses n8n for online marketing"},{"url":"https://n8n.io/blog/the-ultimate-guide-to-automate-your-video-collaboration-with-whereby-mattermost-and-n8n/","icon":"📹","label":"The ultimate guide to automate your video collaboration with Whereby, Mattermost, and n8n"},{"url":"https://n8n.io/blog/how-to-automatically-give-kudos-to-contributors-with-github-slack-and-n8n/","icon":"👏","label":"How to automatically give kudos to contributors with GitHub, Slack, and n8n"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/","icon":"🧠","label":"Why this Product Manager loves workflow automation with n8n"},{"url":"https://n8n.io/blog/creating-custom-incident-response-workflows-with-n8n/","label":"How to automate every step of an incident response workflow"},{"url":"https://n8n.io/blog/learn-to-build-powerful-api-endpoints-using-webhooks/","icon":"🧰","label":"Learn to Build Powerful API Endpoints Using Webhooks"},{"url":"https://n8n.io/blog/learn-how-to-use-webhooks-with-mattermost-slash-commands/","icon":"🦄","label":"Learn how to use webhooks with Mattermost slash commands"},{"url":"https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/","icon":"🛵","label":"How Goomer automated their operations with over 200 n8n workflows"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"trigger\"]","defaults":{"name":"Webhook"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCI+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTM1IDM3Yy0yLjIgMC00LTEuOC00LTRzMS44LTQgNC00IDQgMS44IDQgNC0xLjggNC00IDQiLz48cGF0aCBmaWxsPSIjMzc0NzRmIiBkPSJNMzUgNDNjLTMgMC01LjktMS40LTcuOC0zLjdsMy4xLTIuNWMxLjEgMS40IDIuOSAyLjMgNC43IDIuMyAzLjMgMCA2LTIuNyA2LTZzLTIuNy02LTYtNmMtMSAwLTIgLjMtMi45LjdsLTEuNyAxTDIzLjMgMTZsMy41LTEuOSA1LjMgOS40YzEtLjMgMi0uNSAzLS41IDUuNSAwIDEwIDQuNSAxMCAxMFM0MC41IDQzIDM1IDQzIi8+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTE0IDQzQzguNSA0MyA0IDM4LjUgNCAzM2MwLTQuNiAzLjEtOC41IDcuNS05LjdsMSAzLjlDOS45IDI3LjkgOCAzMC4zIDggMzNjMCAzLjMgMi43IDYgNiA2czYtMi43IDYtNnYtMmgxNXY0SDIzLjhjLS45IDQuNi01IDgtOS44IDgiLz48cGF0aCBmaWxsPSIjZTkxZTYzIiBkPSJNMTQgMzdjLTIuMiAwLTQtMS44LTQtNHMxLjgtNCA0LTQgNCAxLjggNCA0LTEuOCA0LTQgNCIvPjxwYXRoIGZpbGw9IiMzNzQ3NGYiIGQ9Ik0yNSAxOWMtMi4yIDAtNC0xLjgtNC00czEuOC00IDQtNCA0IDEuOCA0IDQtMS44IDQtNCA0Ii8+PHBhdGggZmlsbD0iI2U5MWU2MyIgZD0ibTE1LjcgMzQtMy40LTIgNS45LTkuN2MtMi0xLjktMy4yLTQuNS0zLjItNy4zIDAtNS41IDQuNS0xMCAxMC0xMHMxMCA0LjUgMTAgMTBjMCAuOS0uMSAxLjctLjMgMi41bC0zLjktMWMuMS0uNS4yLTEgLjItMS41IDAtMy4zLTIuNy02LTYtNnMtNiAyLjctNiA2YzAgMi4xIDEuMSA0IDIuOSA1LjFsMS43IDF6Ii8+PC9zdmc+"},"displayName":"Webhook","typeVersion":2,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"id":76,"icon":"file:hubspot.svg","name":"n8n-nodes-base.hubspot","codex":{"data":{"resources":{"generic":[{"url":"https://n8n.io/blog/how-to-sync-data-between-two-systems/","icon":"🏬","label":"How to synchronize data between two systems (one-way vs. two-way sync"},{"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/your-business-doesnt-need-you-to-operate/","icon":" 🖥️","label":"Hey founders! Your business doesn't need you to operate"},{"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"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.hubspot/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/hubspot/"}]},"categories":["Sales"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"output\"]","defaults":{"name":"HubSpot"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB2aWV3Qm94PSIwIDAgNjIuODgzIDY5Ljg4MyI+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMi40NDIiIHk9IjIuNDQyIi8+PHN5bWJvbCBpZD0iYSIgb3ZlcmZsb3c9InZpc2libGUiPjxwYXRoIGZpbGw9IiNmODc2MWYiIGZpbGwtcnVsZT0ibm9uemVybyIgc3Ryb2tlPSJub25lIiBkPSJNNTUuNTA0IDMwLjQwMWExNi4yNiAxNi4yNiAwIDAgMC01LjkwNC01Ljg2NGMtMS44NjUtMS4wODQtMy43OTQtMS43NzMtNS45NzItMi4wN3YtNy43OThhNS43MSA1LjcxIDAgMCAwIDMuNTI1LTUuMzU3IDUuODYgNS44NiAwIDAgMC01Ljg1OS01Ljg4OSA1LjkxIDUuOTEgMCAwIDAtNS45MDggNS44ODljMCAyLjM5MyAxLjI3IDQuNDM0IDMuNDUyIDUuMzU3djcuNzU0YTE3IDE3IDAgMCAwLTUuMTk1IDEuNjMxTDEyLjc2OSA4LjI0N2MuMTQ2LS41NTIuMjczLTEuMTIzLjI3My0xLjcyNEE2LjUyIDYuNTIgMCAwIDAgNi41MTkgMCA2LjUyIDYuNTIgMCAwIDAgMCA2LjUyNGE2LjUyMyA2LjUyMyAwIDAgMCA2LjUyNCA2LjUyNCA2LjQ3IDYuNDcgMCAwIDAgMy4zNS0uOTUybDEuMzY3IDEuMDM1IDE4LjcyNiAxMy41MDFjLS45OTEuOTA4LTEuOTE0IDEuOTQzLTIuNjUxIDMuMTA1LTEuNDk0IDIuMzY4LTIuNDA3IDQuOTcxLTIuNDA3IDcuODEzdi41ODZhMTYuNCAxNi40IDAgMCAwIDEuMDI1IDUuNjQ1QzI2LjUgNDUuMzI0IDI3LjMzIDQ2LjczIDI4LjM2MSA0OGwtNi4yMjEgNi4yMzVhNS4wMSA1LjAxIDAgMCAwLTUuMjk4IDEuMTYyYy0uOTQ3Ljk0Mi0xLjQ4IDIuMjI3LTEuNDc1IDMuNTY1cy41MjcgMi42MTIgMS40NzkgMy41NjQgMi4yMjcgMS40OCAzLjU2NSAxLjQ4YTUgNSAwIDAgMCAzLjU2NS0xLjQ4IDUuMDUgNS4wNSAwIDAgMCAxLjQ3NS0zLjU2NCA1IDUgMCAwIDAtLjIzNC0xLjUxNGw2LjQyNi02LjQyNmExNiAxNiAwIDAgMCAyLjg1NiAxLjU2MyAxNi43IDE2LjcgMCAwIDAgNi42ODUgMS40MDZoLjQzOWExNS43NiAxNS43NiAwIDAgMCA3LjYyNy0xLjkyOSAxNS43NyAxNS43NyAwIDAgMCA1Ljk3Ny01LjYzYzEuNDk5LTIuMzkzIDIuMzE5LTUuMDQ0IDIuMzE5LTcuOTU5di0uMTQ2YzAtMi44NjYtLjY2NC01LjUwOC0yLjA1MS03Ljkzem0tNy44NDcgMTMuNDg3Yy0xLjc0MyAxLjkzOC0zLjc1IDMuMTM1LTYuMDE2IDMuMTM1aC0uNDNjLTEuMjk0IDAtMi41NjQtLjM1Ni0zLjc5OS0xLjAxMWE4LjggOC44IDAgMCAxLTMuMzMtMy4wMzJjLS44OTgtMS4yNy0xLjM4Ny0yLjY1Ni0xLjM4Ny00LjEyNnYtLjQzOWMwLTEuNDQ1LjI3OC0yLjgxNy45NzctNC4xMTEuNzQ3LTEuNDY1IDEuNzU4LTIuNTE1IDMuMTAxLTMuMzg5YTcuNiA3LjYgMCAwIDEgNC4yOTctMS4yOTRoLjE0N2MxLjQxNiAwIDIuNzY5LjI3OCA0LjAzOC45MjhhOC41NiA4LjU2IDAgMCAxIDMuMTc0IDIuODg2IDkuMiA5LjIgMCAwIDEgMS40MjEgNC4wNTNsLjAzNC45MTNjMCAxLjk4Ny0uNzYyIDMuODI4LTIuMjggNS40OTh6Ii8+PC9zeW1ib2w+PC9zdmc+"},"displayName":"HubSpot","typeVersion":2,"nodeCategories":[{"id":2,"name":"Sales"}]},{"id":535,"icon":"file:webhook.svg","name":"n8n-nodes-base.respondToWebhook","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.respondtowebhook/"}]},"categories":["Core Nodes","Utility"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"transform\"]","defaults":{"name":"Respond to Webhook"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCI+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTM1IDM3Yy0yLjIgMC00LTEuOC00LTRzMS44LTQgNC00IDQgMS44IDQgNC0xLjggNC00IDQiLz48cGF0aCBmaWxsPSIjMzc0NzRmIiBkPSJNMzUgNDNjLTMgMC01LjktMS40LTcuOC0zLjdsMy4xLTIuNWMxLjEgMS40IDIuOSAyLjMgNC43IDIuMyAzLjMgMCA2LTIuNyA2LTZzLTIuNy02LTYtNmMtMSAwLTIgLjMtMi45LjdsLTEuNyAxTDIzLjMgMTZsMy41LTEuOSA1LjMgOS40YzEtLjMgMi0uNSAzLS41IDUuNSAwIDEwIDQuNSAxMCAxMFM0MC41IDQzIDM1IDQzIi8+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTE0IDQzQzguNSA0MyA0IDM4LjUgNCAzM2MwLTQuNiAzLjEtOC41IDcuNS05LjdsMSAzLjlDOS45IDI3LjkgOCAzMC4zIDggMzNjMCAzLjMgMi43IDYgNiA2czYtMi43IDYtNnYtMmgxNXY0SDIzLjhjLS45IDQuNi01IDgtOS44IDgiLz48cGF0aCBmaWxsPSIjZTkxZTYzIiBkPSJNMTQgMzdjLTIuMiAwLTQtMS44LTQtNHMxLjgtNCA0LTQgNCAxLjggNCA0LTEuOCA0LTQgNCIvPjxwYXRoIGZpbGw9IiMzNzQ3NGYiIGQ9Ik0yNSAxOWMtMi4yIDAtNC0xLjgtNC00czEuOC00IDQtNCA0IDEuOCA0IDQtMS44IDQtNCA0Ii8+PHBhdGggZmlsbD0iI2U5MWU2MyIgZD0ibTE1LjcgMzQtMy40LTIgNS45LTkuN2MtMi0xLjktMy4yLTQuNS0zLjItNy4zIDAtNS41IDQuNS0xMCAxMC0xMHMxMCA0LjUgMTAgMTBjMCAuOS0uMSAxLjctLjMgMi41bC0zLjktMWMuMS0uNS4yLTEgLjItMS41IDAtMy4zLTIuNy02LTYtNnMtNiAyLjctNiA2YzAgMi4xIDEuMSA0IDIuOSA1LjFsMS43IDF6Ii8+PC9zdmc+"},"displayName":"Respond to Webhook","typeVersion":2,"nodeCategories":[{"id":7,"name":"Utility"},{"id":9,"name":"Core Nodes"}]},{"id":565,"icon":"fa:sticky-note","name":"n8n-nodes-base.stickyNote","codex":{"data":{"alias":["Comments","Notes","Sticky"],"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"input\"]","defaults":{"name":"Sticky Note","color":"#FFD233"},"iconData":{"icon":"sticky-note","type":"icon"},"displayName":"Sticky Note","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":834,"icon":"file:code.svg","name":"n8n-nodes-base.code","codex":{"data":{"alias":["cpde","Javascript","JS","Python","Script","Custom Code","Function"],"details":"The Code node allows you to execute JavaScript in your workflow.","resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers","Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Code"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xMTcxXzQ0MSkiPgo8cGF0aCBkPSJNMTcwLjI4MyA0OEgxOTYuNUMyMDMuMTI3IDQ4IDIwOC41IDQyLjYyNzQgMjA4LjUgMzZWMTJDMjA4LjUgNS4zNzI1OCAyMDMuMTI3IDAgMTk2LjUgMEgxNzAuMjgzQzEyNi4xIDAgOTAuMjgzIDM1LjgxNzIgOTAuMjgzIDgwVjE3NkM5MC4yODMgMjA2LjkyOCA2NS4yMTA5IDIzMiAzNC4yODMgMjMySDIzQzE2LjM3MjYgMjMyIDExIDIzNy4zNzIgMTEgMjQ0VjI2OEMxMSAyNzQuNjI3IDE2LjM3MjQgMjgwIDIyLjk5OTYgMjgwTDM0LjI4MyAyODBDNjUuMjEwOSAyODAgOTAuMjgzIDMwNS4wNzIgOTAuMjgzIDMzNlY0NDBDOTAuMjgzIDQ3OS43NjQgMTIyLjUxOCA1MTIgMTYyLjI4MyA1MTJIMTk2LjVDMjAzLjEyNyA1MTIgMjA4LjUgNTA2LjYyNyAyMDguNSA1MDBWNDc2QzIwOC41IDQ2OS4zNzMgMjAzLjEyNyA0NjQgMTk2LjUgNDY0SDE2Mi4yODNDMTQ5LjAyOCA0NjQgMTM4LjI4MyA0NTMuMjU1IDEzOC4yODMgNDQwVjMzNkMxMzguMjgzIDMwOS4wMjIgMTI4LjAxMSAyODQuNDQzIDExMS4xNjQgMjY1Ljk2MUMxMDYuMTA5IDI2MC40MTYgMTA2LjEwOSAyNTEuNTg0IDExMS4xNjQgMjQ2LjAzOUMxMjguMDExIDIyNy41NTcgMTM4LjI4MyAyMDIuOTc4IDEzOC4yODMgMTc2VjgwQzEzOC4yODMgNjIuMzI2OSAxNTIuNjEgNDggMTcwLjI4MyA0OFoiIGZpbGw9IiNGRjk5MjIiLz4KPHBhdGggZD0iTTMwNSAzNkMzMDUgNDIuNjI3NCAzMTAuMzczIDQ4IDMxNyA0OEgzNDIuOTc5QzM2MC42NTIgNDggMzc0Ljk3OCA2Mi4zMjY5IDM3NC45NzggODBWMTc2QzM3NC45NzggMjAyLjk3OCAzODUuMjUxIDIyNy41NTcgNDAyLjA5OCAyNDYuMDM5QzQwNy4xNTMgMjUxLjU4NCA0MDcuMTUzIDI2MC40MTYgNDAyLjA5OCAyNjUuOTYxQzM4NS4yNTEgMjg0LjQ0MyAzNzQuOTc4IDMwOS4wMjIgMzc0Ljk3OCAzMzZWNDMyQzM3NC45NzggNDQ5LjY3MyAzNjAuNjUyIDQ2NCAzNDIuOTc5IDQ2NEgzMTdDMzEwLjM3MyA0NjQgMzA1IDQ2OS4zNzMgMzA1IDQ3NlY1MDBDMzA1IDUwNi42MjcgMzEwLjM3MyA1MTIgMzE3IDUxMkgzNDIuOTc5QzM4Ny4xNjEgNTEyIDQyMi45NzggNDc2LjE4MyA0MjIuOTc4IDQzMlYzMzZDNDIyLjk3OCAzMDUuMDcyIDQ0OC4wNTEgMjgwIDQ3OC45NzkgMjgwSDQ5MEM0OTYuNjI3IDI4MCA1MDIgMjc0LjYyOCA1MDIgMjY4VjI0NEM1MDIgMjM3LjM3MyA0OTYuNjI4IDIzMiA0OTAgMjMyTDQ3OC45NzkgMjMyQzQ0OC4wNTEgMjMyIDQyMi45NzggMjA2LjkyOCA0MjIuOTc4IDE3NlY4MEM0MjIuOTc4IDM1LjgxNzIgMzg3LjE2MSAwIDM0Mi45NzkgMEgzMTdDMzEwLjM3MyAwIDMwNSA1LjM3MjU4IDMwNSAxMlYzNloiIGZpbGw9IiNGRjk5MjIiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMTcxXzQ0MSI+CjxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo="},"displayName":"Code","typeVersion":2,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"id":1262,"icon":"file:google.svg","name":"@n8n/n8n-nodes-langchain.lmChatGoogleGemini","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatgooglegemini/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Language Models","Root Nodes"],"Language Models":["Chat Models (Recommended)"]}}},"group":"[\"transform\"]","defaults":{"name":"Google Gemini Chat Model"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgNDggNDgiPjxkZWZzPjxwYXRoIGlkPSJhIiBkPSJNNDQuNSAyMEgyNHY4LjVoMTEuOEMzNC43IDMzLjkgMzAuMSAzNyAyNCAzN2MtNy4yIDAtMTMtNS44LTEzLTEzczUuOC0xMyAxMy0xM2MzLjEgMCA1LjkgMS4xIDguMSAyLjlsNi40LTYuNEMzNC42IDQuMSAyOS42IDIgMjQgMiAxMS44IDIgMiAxMS44IDIgMjRzOS44IDIyIDIyIDIyYzExIDAgMjEtOCAyMS0yMiAwLTEuMy0uMi0yLjctLjUtNCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9ImIiPjx1c2UgeGxpbms6aHJlZj0iI2EiIG92ZXJmbG93PSJ2aXNpYmxlIi8+PC9jbGlwUGF0aD48cGF0aCBmaWxsPSIjRkJCQzA1IiBkPSJNMCAzN1YxMWwxNyAxM3oiIGNsaXAtcGF0aD0idXJsKCNiKSIvPjxwYXRoIGZpbGw9IiNFQTQzMzUiIGQ9Im0wIDExIDE3IDEzIDctNi4xTDQ4IDE0VjBIMHoiIGNsaXAtcGF0aD0idXJsKCNiKSIvPjxwYXRoIGZpbGw9IiMzNEE4NTMiIGQ9Im0wIDM3IDMwLTIzIDcuOSAxTDQ4IDB2NDhIMHoiIGNsaXAtcGF0aD0idXJsKCNiKSIvPjxwYXRoIGZpbGw9IiM0Mjg1RjQiIGQ9Ik00OCA0OCAxNyAyNGwtNC0zIDM1LTEweiIgY2xpcC1wYXRoPSJ1cmwoI2IpIi8+PC9zdmc+"},"displayName":"Google Gemini Chat Model","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1273,"icon":"fa:project-diagram","name":"@n8n/n8n-nodes-langchain.informationExtractor","codex":{"data":{"alias":["NER","parse","parsing","JSON","data extraction","structured"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.information-extractor/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Chains","Root Nodes"]}}},"group":"[\"transform\"]","defaults":{"name":"Information Extractor"},"iconData":{"icon":"project-diagram","type":"icon"},"displayName":"Information Extractor","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1315,"icon":"fa:table","name":"n8n-nodes-base.dataTable","codex":{"data":{"alias":["data","table","knowledge","data table","table","sheet","database","data base","mysql","postgres","postgresql","airtable","supabase","noco","notion"],"details":"Data table","resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datatable/"}]},"categories":["Core Nodes","Development"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"input\",\"transform\"]","defaults":{"name":"Data table"},"iconData":{"icon":"table","type":"icon"},"displayName":"Data table","typeVersion":1,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]}],"categories":[{"id":37,"name":"Lead Generation"},{"id":49,"name":"AI Summarization"}],"image":[]}}