Eventanmälningar ser enkla ut tills du står fem minuter från att gå upp på сцен och inser att listan är full av dubbletter, stavfel och paniken “vilket kalkylark är det som gäller?”.
Det här drabbar eventarrangörer hårdast, men marknadsförare som kör lead capture och community managers som hanterar registreringar känner av det också. Med den här Postgres-giveaway-automationen hamnar varje anmälan i en pålitlig databas, och din vinnarsida är redo att visas på projektorn.
Du får se hur flödet samlar in registreringar, avduplicerar dem med en upsert och sedan serverar en korrekt formaterad, webbläsarbaserad giveawaysida som maskerar personuppgifter för en rättvis dragning.
Så fungerar automationen
Hela n8n-flödet, från trigger till slutresultat:
n8n Workflow Template: PostgreSQL-anmälningar, live-vinnarsida i webbläsaren
flowchart LR
subgraph sg0["Participant Form Flow"]
direction LR
n0["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/form.svg' width='40' height='40' /></div><br/>Thank you screen"]
n2@{ icon: "mdi:swap-vertical", form: "rounded", label: "Mapping form to database", pos: "b", h: 48 }
n6["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/form.svg' width='40' height='40' /></div><br/>Participant Form"]
n7["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/postgres.svg' width='40' height='40' /></div><br/>Save Participant to Database"]
n6 --> n2
n2 --> n7
n7 --> n0
end
subgraph sg1["Flow 2"]
direction LR
n1["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Format participant list"]
n3["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/postgres.svg' width='40' height='40' /></div><br/>Get all participants"]
n4["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>Giveaway App"]
n5["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>Respond to Giveaway App"]
n4 --> n3
n3 --> n1
n1 --> n5
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n6 trigger
class n7,n3 database
class n4,n5 api
class n1 code
classDef customIcon fill:none,stroke:none
class n0,n6,n7,n1,n3,n4,n5 customIcon
Problemet: anmälningar till liveevent blir röriga snabbt
Registreringar är ofta utspridda över flera verktyg. Ett formulär här, ett kalkylark där, kanske ett DM i sista minuten med “lägg till min kompis också”. Sedan ska du köra en giveaway och det blir ett manuellt städjobb. Namn dubbleras för att någon registrerat sig två gånger. WhatsApp-nummer blir inkonsekventa eftersom folk formaterar dem olika. Och när det är dags att välja en vinnare så visar du antingen personuppgifter på projektorn, eller så stressar du med att maska dem för hand. Det är exakt där “enkel insamling av anmälningar” slutar vara enkel.
Friktionen växer snabbt. Här är var det faller isär.
- Du lägger lätt runt en timme på att exportera, sortera och avduplicera precis innan eventet drar igång.
- Dubbletter smyger sig in i dragningen, vilket kan skapa obekväma invändningar om att “det här är inte rättvist”.
- Att projicera en rå deltagarlista riskerar att exponera e-post, WhatsApp-nummer eller andra personuppgifter.
- När listan ligger i kalkylark gör folk “snabba fixar” som du inte kan granska i efterhand.
Lösningen: en avduplicerad databas + en live giveawaysida
Det här flödet ger dig två saker som alltid borde hänga ihop: en pålitlig registreringspipeline och en giveawaysupplevelse som är redo för scenen. Det startar när någon skickar in ditt anmälningsformulär i n8n (fält som fullständigt namn, e-post, WhatsApp, Discord-användarnamn och vad du nu samlar in). n8n mappar dessa råa inputvärden till en korrekt formaterad, konsekvent struktur och sparar dem sedan i PostgreSQL med en upsert så att dubbletter inte byggs upp. Separat serverar en publik “giveaway”-endpoint en färdig HTML-sida som du öppnar i webbläsaren. När du laddar den hämtar flödet de senaste deltagarposterna från PostgreSQL, maskerar känsliga uppgifter (som WhatsApp-nummer), kodar ID:n för integritet och renderar en enkel single-page-app som du kan projicera under eventet.
Flödet börjar med antingen en inskickad registrering eller en begäran om giveawaysidan. PostgreSQL blir källan till sanningen i mitten, eftersom den lagrar en enda avduplicerad post per person. Till sist svarar n8n med antingen en bekräftelseskärm (för deltagare) eller hela giveawaysidan (för arrangörer).
Det du får: automation vs. resultat
| Vad flödet automatiserar | Resultatet du får |
|---|---|
|
|
Exempel: så här ser det ut i praktiken
Säg att du driver en månatlig meetup med cirka 200 anmälningar. Tidigare är det vanligt att lägga 30 sekunder per rad på snabba kontroller (dubbletter, formatering, ta bort personfält för projektorn). Det blir ungefär 100 minuter pilligt arbete, och det händer oftast precis när du har som mest att göra. Med det här flödet är registreringen automatisk, avdupliceringen sker i samband med upserten och giveawaysidan är bara att öppna i webbläsaren. Din “förberedelse” blir att öppna en URL och klicka på en knapp.
Det här behöver du
- n8n-instans (prova n8n Cloud gratis)
- Alternativ för egen drift om du föredrar det (Hostinger fungerar bra)
- PostgreSQL för att lagra och avduplicera registreringar
- Ett publikt eventformulär för att samla in deltagaruppgifter
- Databasuppgifter (hämtas från din Postgres-host)
Kunskapsnivå: medel. Du kopplar Postgres-uppgifter och kan behöva justera en SQL-fråga eller fältmappning.
Vill du inte sätta upp detta själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
Ett inskick av registreringen triggar flödet. När någon fyller i ditt deltagarformulär tar n8n emot inskicket direkt och plockar nyckelfälten (namn, e-post, WhatsApp, Discord-användarnamn och eventuella extra fält).
De råa fälten struktureras och standardiseras. Flödet mappar input till en konsekvent struktur så att databasen inte får tio varianter av samma telefonnummer, eller oavsiktliga mellanslag som skapar “falska dubbletter”.
PostgreSQL blir källan till sanningen. En upsert skriver deltagarposten till Postgres och uppdaterar en befintlig post om den unika identifieraren redan finns (vanligen e-post eller WhatsApp). Det är avdupliceringsmekanismen, och den jobbar tyst i bakgrunden.
En separat webhook serverar giveawaysidan vid begäran. När du öppnar giveaway-URL:en frågar n8n Postgres efter senaste deltagarlistan, maskerar känsliga uppgifter, kodar ID:n för integritet och svarar med en HTML-sida som du kan projicera och använda live.
Du kan enkelt ändra vilket unikt ID som används för avduplicering så att det matchar din process. Se hela implementationsguiden nedan för alternativ för anpassning.
Steg-för-steg-guide för implementering
Steg 1: Konfigurera webhook-triggern
Sätt upp endpointen för giveaways landningssida som serverar HTML-väljargränssnittet.
- Lägg till och öppna Giveaway Webhook Trigger.
- Ställ in Path på
giveaway-app. - Ställ in Response Mode på
responseNodeså att en nedströms svarsnod kan rendera HTML:en. - Koppla Giveaway Webhook Trigger till Retrieve Participant Records.
Tips: Kopiera webhook-URL:en för produktion från Giveaway Webhook Trigger efter aktivering för att dela giveawaysidan med värdar.
Steg 2: Koppla formulär-triggern
Konfigurera anmälningsformuläret för deltagare som matar databasen.
- Lägg till och öppna Registration Form Trigger.
- Ställ in Form Title på
n8n Indonesia Community Meetup #2. - I Options, bekräfta att Path är
giveaway-form, Button Label ärSubmitoch att Ignore Bots är aktiverat. - Säkerställ att det dolda fältet Event använder
=Meetup #2och att obligatoriska fält är aktiverade för Nama Lengkap, Domisili (Kota), Bio (pekerjaan, specialty, dsb) och Whatsapp. - Koppla Registration Form Trigger till Map Form Fields.
⚠️ Vanlig fallgrop: Om det dolda fältet Event saknas eller ändras kan giveaway-listan bli tom, eftersom filtreringen bygger på Meetup #2.
Steg 3: Sätt upp fältmappning och upsert till databasen
Normalisera formulärfält och skriv eller uppdatera deltagarposter i Postgres.
- Öppna Map Form Fields och bekräfta tilldelningar som nama_lengkap →
{{ $json['Nama Lengkap'] }}och id →{{ $json.Event }}--{{ $json.Whatsapp }}. - Verifiera ytterligare mappningar som email →
{{ $json.Email }}och created_at →{{ $json.submittedAt }}. - Öppna Upsert Participant Record och ställ in Operation på
upsert. - Ställ in Schema på
publicoch Table pån8n_meetup_participants. - Bekräfta att Matching Columns inkluderar
idoch att mappningsläget ärautoMapInputData. - Inloggningsuppgifter krävs: Koppla era postgres-inloggningsuppgifter i Upsert Participant Record.
Tips: Det sammansatta id:t (Event--Whatsapp) förhindrar att dubbla registreringar skriver över orelaterade event.
Steg 4: Bygg svaret för giveawaysidan
Hämta deltagare, bygg en sanerad namnlista och rendera HTML-gränssnittet för giveaway.
- Öppna Retrieve Participant Records och ställ in Operation på
selectoch Return All påtrue. - Ställ in Schema på
public, Table pån8n_meetup_participantsoch lägg till ett Where-filter där event är lika medMeetup #2. - Inloggningsuppgifter krävs: Koppla era postgres-inloggningsuppgifter i Retrieve Participant Records.
- Öppna Assemble Attendee List och behåll JavaScript-koden som filtrerar på
nama_lengkapoch maskerarwhatsappinnan den returnerar{names: newList}. - Öppna Render Giveaway Page och ställ in Respond With på
text. - Ställ in Response Body till den angivna HTML:en och säkerställ att det inbäddade uttrycket förblir
{{ JSON.stringify($json?.names || []) }}så att deltagarnamn förifylls i gränssnittet. - Koppla Retrieve Participant Records → Assemble Attendee List → Render Giveaway Page.
⚠️ Vanlig fallgrop: Om ni tar bort uttrycket {{ JSON.stringify($json?.names || []) }} kommer giveaway-listan att laddas tom även om data finns.
Steg 5: Konfigurera bekräftelseskärmen
Visa ett bekräftelsemeddelande efter lyckad registrering.
- Öppna Confirmation Screen och ställ in Operation på
completion. - Ställ in Completion Title på
Glad You're Here!. - Ställ in Completion Message på
Thank you for being part of our meetup. Don’t miss the giveaway at the end of the session!. - Koppla Upsert Participant Record till Confirmation Screen.
Tips: Sticky note-lappen Flowpast Branding är informativ och kan behållas eller tas bort utan att påverka körningen.
Steg 6: Testa och aktivera ert workflow
Validera både registrerings- och giveaway-flödena innan ni aktiverar produktion.
- Klicka på Test Workflow och skicka in ett testexempel via Registration Form Trigger.
- Bekräfta att Upsert Participant Record skriver eller uppdaterar en rad i
n8n_meetup_participantsmed de mappade fälten. - Öppna test-URL:en för Giveaway Webhook Trigger och verifiera att Render Giveaway Page visar HTML:en med förifyllda deltagarnamn.
- När allt fungerar, växla workflowet till Active och använd webhook-URL:erna för produktion för formuläret och giveawaysidan.
Vanliga fallgropar
- PostgreSQL-inloggningar kan löpa ut eller kräva specifika behörigheter. Om det skapar fel, kontrollera först dina credential-inställningar i n8n och databas-användarens privilegier.
- Om du hostar giveawaysidans endpoint publikt kan cache och proxyer visa en gammal version. Vid osäkerhet: gör en hård omladdning i webbläsaren och bekräfta att webhooken returnerar de senaste frågeresultaten.
- Standardreglerna för maskning och formatering kanske inte passar din målgrupp. Justera Code-steget som bygger deltagarlistan tidigt, annars kommer du fortsätta “bara fixa det för just det här eventet”.
Vanliga frågor
Cirka 45 minuter om din Postgres-databas är redo.
Nej. Du kopplar mest konton och justerar några fält. Om du vill ha egna maskningsregler hjälper en liten justering i ett Code-steg, men det är valfritt.
Ja. n8n har ett gratis alternativ för egen drift och en gratis testperiod på n8n Cloud. Cloud-planer börjar på $20/månad för högre volymer. Du behöver också räkna med kostnader för hosting av PostgreSQL (ofta $5–$20/månad om du inte redan har en databas).
Två alternativ: n8n Cloud (hanterat, enklast setup) eller egen drift på en VPS. För egen drift är Hostinger VPS prisvärd och hanterar n8n bra. Egen drift ger obegränsade körningar men kräver grundläggande serverhantering.
Ja, men planera databasfälten först. Du kan lägga till ett event_id i steget “Map Form Fields” så att varje anmälan kopplas till rätt event, och sedan filtrera SQL-frågan i “Retrieve Participant Records” så att den bara hämtar deltagarna för det eventet. För flera vinnare justerar du logiken på giveawaysidan i Code-steget “Assemble Attendee List” (till exempel genom att välja flera unika ID:n). Många team anpassar också maskningsreglerna där för att dölja e-post helt och bara visa delar av namn på scen.
Oftast handlar det om databasanvändarens behörigheter eller fel host/port. Bekräfta uppgifterna i n8n och verifiera sedan att din Postgres-användare kan köra upserten och select-frågan som används för att hämta deltagare. Om du kör egen drift, kontrollera också brandväggsregler och att Postgres tillåter anslutningar från din n8n-server.
För de flesta event: “betydligt fler än du behöver”. Några hundra eller några tusen registreringar fungerar fint på en enkel VPS, eftersom Postgres hanterar den volymen utan problem. I n8n Cloud är din gräns främst din månatliga körningskvot, eftersom varje registrering är en körning och varje sidladdning av giveawaysidan är en till. Om du kör egen drift finns ingen körningsgräns, så den praktiska gränsen är din serverstorlek och hur tung giveawaysidan blir när du bäddar in en väldigt stor lista.
Ofta, ja, eftersom det här flödet inte bara är “flytta formulärdata till en tabell”. Du gör en upsert (avduplicering) och serverar sedan en livewebbsida från en webhook, och där är n8n mer flexibelt. Du kan köra det med egen drift, vilket är viktigt när du har många anmälningar och inte vill att varje körning ska kännas som en avgift. Zapier och Make kan fortfarande funka för registreringsdelen, men giveawaysidans upplevelse är oftast där team stöter på begränsningar eller börjar sy ihop extra verktyg. Prata med en automationsexpert om du vill ha hjälp att välja en stack som passar din eventstorlek.
När det här väl rullar håller sig din anmälningslista felfri och din giveaway blir rättvis. Du sätter upp det, och sedan kan du fokusera på eventet.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.