Saltar al contenido

Registro y Sorteo de Participantes para Meetups

Gestiona el registro de participantes para meetups mediante un formulario, guarda los datos en PostgreSQL, y ofrece una aplicación interactiva para sortear premios, protegiendo la privacidad de los asistentes.

12 nodos 8 tipos conectado
Cargando workflow...

Nodos

Form Code Set Postgres Webhook RespondToWebhook StickyNote FormTrigger

Herramientas

n8n Forms PostgreSQL JavaScript (Code) n8n Webhooks

Detalles

ID
5758
Nodos
12
Conex.
Tipos
8

Pertenece a:

¿Qué hace este workflow?

Este workflow completo te permite organizar meetups de principio a fin, gestionando el registro de participantes de forma eficiente y transparente. Los asistentes se inscriben a través de un formulario n8n personalizable, y sus datos se guardan de forma segura en una base de datos PostgreSQL, garantizando la privacidad. Una vez finalizado el registro, el sistema ofrece una aplicación interactiva en tiempo real para realizar sorteos de premios entre los participantes de manera justa y atractiva, proyectable en pantalla durante el evento. Ideal para empresas, comunidades o agencias que organizan eventos y buscan automatizar la logística de inscripción y la emoción de los sorteos. Minimiza la carga administrativa, elimina errores manuales y mejora la experiencia del participante, permitiendo que tu equipo se concentre en el contenido del meetup. Además, la gestión centralizada de datos facilita el seguimiento post-evento y la comunicación con los asistentes, ofreciendo una solución robusta y profesional para la organización de tus próximos encuentros.

¿Cómo funciona?

Este workflow usa 12 nodos conectados con 8 tipos diferentes: Form, Code, Set, Postgres, Webhook y 3 más. La estructura está totalmente conectada — listo para importar.

¿Para quién es?

Diseñado para equipos de Marketing & Email, Operaciones & Finanzas. Nivel intermedio — necesitas familiaridad con n8n. Alto valor de negocio: automatiza una tarea recurrente con impacto directo.

¿Lo quieres en tu empresa?

Lo implementamos por ti end-to-end: integración, deploy, mantenimiento y soporte. Consultoría B2B con Genai Sapiens.

Hablemos de tu proyecto

¿Quieres aprender a hacerlo?

Sprints de 30 días con companion IA + comunidad. Aprende n8n, automatización y agentes IA desde cero o nivel avanzado.

Ver formación Momentum

Workflows similares

\n\n \n\n\n"},"typeVersion":1.4},{"id":"99f96a32-d847-43f7-8740-cff828d7b314","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-1500,420],"parameters":{"width":660,"height":520,"content":"# 🎉 n8n Workflow: Meetup Participant Registration & Giveaway App\n\nThis n8n workflow is designed to handle both the participant registration process and the random selection of giveaway winners via a frontend integration.\n\n## ✅ Use Case Summary\n\n- Efficiently collects and stores attendee information\n- Securely exposes a simplified participant list to the frontend\n- Prepares giveaway-ready data with privacy protection\n- Perfect for community events or randomized prize draws\n\n"},"typeVersion":1},{"id":"cf039ad9-01ee-4484-ae3d-d0225227da32","name":"Participant Form","type":"n8n-nodes-base.formTrigger","position":[-40,600],"webhookId":"48c80b3d-22a0-4add-9d7f-384bff7791b1","parameters":{"options":{"path":"giveaway-form","customCss":":root {\n\t--font-family: 'Inter', sans-serif;\n\t--font-weight-normal: 400;\n\t--font-weight-bold: 700;\n\t--font-size-body: 14px;\n\t--font-size-label: 16px;\n\t--font-size-header: 24px;\n\t--font-size-input: 16px;\n\t--font-size-error: 12px;\n\n\t/* Purple Themed Colors */\n\t--color-background: #f5f3ff; /* soft lavender */\n\t--color-card-bg: #ffffff;\n\t--color-card-border: #e0d7f8;\n\t--color-card-shadow: rgba(103, 80, 164, 0.12);\n\t--color-header: #3c1e74;\n\t--color-label: #4c1d95;\n\t--color-input-text: #1f1b2e;\n\t--color-input-border: #c4b5fd;\n\t--color-focus-border: #7c3aed;\n\t--color-submit-btn-bg: #7c3aed;\n\t--color-submit-btn-bg-hover: #6d28d9;\n\t--color-submit-btn-text: #ffffff;\n\t--color-error: #dc2626;\n\t--color-required: #dc2626;\n\t--color-test-notice-text: #7e22ce;\n\t--color-test-notice-bg: #f3e8ff;\n\t--color-test-notice-border: #e9d5ff;\n\n\t--border-radius-card: 12px;\n\t--border-radius-input: 8px;\n\t--submit-btn-height: 52px;\n\n\t--padding-card: 32px;\n\t--padding-form-input: 14px;\n\t--box-shadow-card: 0 8px 24px rgba(103, 80, 164, 0.15);\n}\n\n/* Body Background */\nbody {\n\tbackground-color: var(--color-background);\n\tfont-family: var(--font-family);\n\tmargin: 0;\n\tpadding: 0;\n\tcolor: var(--color-input-text);\n}\n\n/* Form Container Card */\n.card {\n\tmax-width: 480px;\n\tmargin: 40px auto;\n\tbackground-color: var(--color-card-bg);\n\tborder-radius: var(--border-radius-card);\n\tbox-shadow: var(--box-shadow-card);\n\tpadding: var(--padding-card);\n\tborder: 1px solid var(--color-card-border);\n}\n\n/* Header */\n.card h1 {\n\tfont-size: var(--font-size-header);\n\tfont-weight: var(--font-weight-bold);\n\tcolor: var(--color-header);\n\tmargin-bottom: 24px;\n\ttext-align: center;\n}\n\n/* Test Notice */\n.test-notice {\n\tbackground-color: var(--color-test-notice-bg);\n\tcolor: var(--color-test-notice-text);\n\tborder: 1px solid var(--color-test-notice-border);\n\tborder-radius: 6px;\n\tpadding: 12px 16px;\n\tfont-size: 14px;\n\tmargin-bottom: 24px;\n}\n\n/* Label */\nlabel {\n\tdisplay: block;\n\tfont-size: var(--font-size-label);\n\tfont-weight: var(--font-weight-bold);\n\tcolor: var(--color-label);\n\tmargin-bottom: 8px;\n}\n\n/* Input Field */\ninput[type=\"text\"], input[type=\"email\"] {\n\twidth: 100%;\n\tpadding: var(--padding-form-input);\n\tborder: 1px solid var(--color-input-border);\n\tborder-radius: var(--border-radius-input);\n\tfont-size: var(--font-size-input);\n\tcolor: var(--color-input-text);\n\tbox-sizing: border-box;\n\ttransition: border-color 0.2s ease;\n}\n\ninput[type=\"text\"]:focus, input[type=\"email\"]:focus {\n\tborder-color: var(--color-focus-border);\n\toutline: none;\n}\n\n/* Error Message */\n.error {\n\tcolor: var(--color-error);\n\tfont-size: var(--font-size-error);\n\tmargin-top: 6px;\n}\n\n/* Submit Button */\nbutton[type=\"submit\"] {\n\twidth: 100%;\n\theight: var(--submit-btn-height);\n\tbackground-color: var(--color-submit-btn-bg);\n\tcolor: var(--color-submit-btn-text);\n\tfont-weight: var(--font-weight-bold);\n\tfont-size: 16px;\n\tborder: none;\n\tborder-radius: 10px;\n\tcursor: pointer;\n\ttransition: background-color 0.2s ease;\n}\n\nbutton[type=\"submit\"]:hover {\n\tbackground-color: var(--color-submit-btn-bg-hover);\n}\n\n/* Required Asterisk */\nlabel .required {\n\tcolor: var(--color-required);\n\tmargin-left: 4px;\n}\n","ignoreBots":true,"buttonLabel":"Submit","appendAttribution":false},"formTitle":"n8n Indonesia Community Meetup #2","formFields":{"values":[{"fieldName":"Event","fieldType":"hiddenField","fieldValue":"=Meetup #2"},{"fieldLabel":"Nama Lengkap","requiredField":true},{"fieldLabel":"Domisili (Kota)","requiredField":true},{"fieldType":"textarea","fieldLabel":"Bio (pekerjaan, specialty, dsb)","requiredField":true},{"fieldLabel":"Whatsapp","requiredField":true},{"fieldLabel":"Discord Username (yang join di discord channel)"},{"fieldLabel":"Threads Username"},{"fieldLabel":"Instagram Username"},{"fieldType":"email","fieldLabel":"Email"}]}},"typeVersion":2.2},{"id":"d1387478-3489-4d10-b2a0-910eda73469c","name":"Save Participant to Database","type":"n8n-nodes-base.postgres","position":[400,600],"parameters":{"table":{"__rl":true,"mode":"list","value":"n8n_meetup_participants","cachedResultName":"n8n_meetup_participants"},"schema":{"__rl":true,"mode":"list","value":"public"},"columns":{"value":{},"schema":[{"id":"id","type":"string","display":true,"removed":false,"required":true,"displayName":"id","defaultMatch":true,"canBeUsedToMatch":true},{"id":"nama_lengkap","type":"string","display":true,"required":true,"displayName":"nama_lengkap","defaultMatch":false,"canBeUsedToMatch":false},{"id":"discord_username","type":"string","display":true,"required":false,"displayName":"discord_username","defaultMatch":false,"canBeUsedToMatch":false},{"id":"domisili_kota","type":"string","display":true,"required":false,"displayName":"domisili_kota","defaultMatch":false,"canBeUsedToMatch":false},{"id":"bio","type":"string","display":true,"required":false,"displayName":"bio","defaultMatch":false,"canBeUsedToMatch":false},{"id":"email","type":"string","display":true,"required":false,"displayName":"email","defaultMatch":false,"canBeUsedToMatch":false},{"id":"whatsapp","type":"string","display":true,"required":false,"displayName":"whatsapp","defaultMatch":false,"canBeUsedToMatch":false},{"id":"threads_username","type":"string","display":true,"required":false,"displayName":"threads_username","defaultMatch":false,"canBeUsedToMatch":false},{"id":"instagram_username","type":"string","display":true,"required":false,"displayName":"instagram_username","defaultMatch":false,"canBeUsedToMatch":false},{"id":"created_at","type":"dateTime","display":true,"required":false,"displayName":"created_at","defaultMatch":false,"canBeUsedToMatch":false},{"id":"event","type":"string","display":true,"required":false,"displayName":"event","defaultMatch":false,"canBeUsedToMatch":false}],"mappingMode":"autoMapInputData","matchingColumns":["id"],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"upsert"},"credentials":{"postgres":{"id":"irlIPHqjhjs13ldK","name":"Neon N8N Community Indonesia"}},"typeVersion":2.6},{"id":"7222a521-913f-4326-84c3-8b84e1d07735","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[-800,420],"parameters":{"color":6,"width":1660,"height":520,"content":"\n## 📋 Participant Registration Flow\n\nThis part of the workflow handles user submissions from a registration form.\n\n### 🔄 Steps:\n1. **📝 Participant Form**\n - Triggered when a participant submits the form.\n - Collects fields like `nama_lengkap`, `email`, `whatsapp`, `discord_username`, etc.\n\n2. **🛠️ Mapping Form to Database**\n - Manual mapping node that prepares form data for the database.\n - Can include trimming, validation, and formatting.\n\n3. **💾 Save Participant to Database**\n - Uses an *upsert* operation to insert or update records in PostgreSQL.\n - Avoids duplicate entries based on `id`.\n\n4. **✅ Thank You Screen**\n - Displays a confirmation or success message to the participant after submission.\n"},"typeVersion":1},{"id":"0562529e-7a41-4a25-a949-87fed3007814","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[-800,980],"parameters":{"color":5,"width":1660,"height":480,"content":"## 🎁 Giveaway App\n\nThis section serve frontend app to display and select random winners.\n\n### 🔄 Steps:\n1. **🌐 Webhook GET (Giveaway App)**\n - Exposes a public endpoint that delivers a ready-to-use HTML app.\n - Can be opened in a browser or projected during the event.\n\n2. **📥 Fetch Participants**\n - Executes a SQL query to retrieve all participant records from the database.\n\n3. **🧮 Format Participant Data**\n - Redacts personal details (e.g., masks WhatsApp numbers).\n - Encodes the `id` using Base64 for privacy and uniqueness.\n\n4. **📤 Render Giveaway App**\n - Returns an HTML-based Single Page Application with the participant list included.\n - Allows the host to click a button to pick random winners live."},"typeVersion":1},{"id":"f166d098-c4c9-470f-9bb2-afbf7e9df119","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[-1500,980],"parameters":{"width":660,"height":480,"content":"# Preview\n![Preview](https://raw.githubusercontent.com/Ficky-Dev/images/refs/heads/main/Meetup%20Giveaway.gif)"},"typeVersion":1}],"active":true,"pinData":{},"settings":{"executionOrder":"v1"},"versionId":"48aa9f48-68b4-4434-99d4-376949171f6f","connections":{"Giveaway App":{"main":[[{"node":"Get all participants","type":"main","index":0}]]},"Participant Form":{"main":[[{"node":"Mapping form to database","type":"main","index":0}]]},"Get all participants":{"main":[[{"node":"Format participant list","type":"main","index":0}]]},"Format participant list":{"main":[[{"node":"Respond to Giveaway App","type":"main","index":0}]]},"Mapping form to database":{"main":[[{"node":"Save Participant to Database","type":"main","index":0}]]},"Save Participant to Database":{"main":[[{"node":"Thank you screen","type":"main","index":0}]]}}}