Att manuellt kontrollera Google Form-svar mot en deltagarlista låter enkelt, tills du gör det varje dag och ändå missar folk. Någon svär på att de skickade in, ditt kalkylark säger att de inte gjorde det, och plötsligt fastnar du i detektivarbete i stället för uppföljning.
Den här Sheets Gmail-automationen drabbar institutions-/avdelningssamordnare hårdast, men programansvariga och små team som håller workshops känner av den också. Du får en livevy över vem som har skickat in, vem som inte har gjort det, och du kan skicka rätt mejl på minuter, inte timmar.
Du sätter upp en n8n-arbetsflödessvit som stämmer av din lista mot svaren, visar en enkel dashboard och triggar bekräftelse- eller påminnelsemejl från Gmail.
så här fungerar automatiseringen
Här är det kompletta arbetsflödet du kommer att sätta upp:
n8n Workflow Template: Google Sheets + Gmail – formulärspårning att lita på
flowchart LR
subgraph sg0["Flow 1"]
direction LR
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/webhook.dark.svg' width='40' height='40' /></div><br/>Webhook - send-acknowledgeme.."]
n7@{ icon: "mdi:database", form: "rounded", label: "Google Sheets - Student List", pos: "b", h: 48 }
n8["<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/>Code - Prepare Messages"]
n9["<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 - Confirmation"]
n10@{ icon: "mdi:message-outline", form: "rounded", label: "Send a message", pos: "b", h: 48 }
n11@{ icon: "mdi:database", form: "rounded", label: "Google Sheets FormResponses", pos: "b", h: 48 }
n12["<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/merge.svg' width='40' height='40' /></div><br/>Merge1"]
n12 --> n8
n10 --> n9
n8 --> n10
n11 --> n12
n7 --> n12
n6 --> n7
n6 --> n11
end
subgraph sg1["Flow 2"]
direction LR
n13@{ icon: "mdi:database", form: "rounded", label: "Google Sheets - FormResponses", pos: "b", h: 48 }
n14["<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/>Webhook - send-acknowledgeme.."]
n15@{ icon: "mdi:database", form: "rounded", label: "Google Sheets - Student List1", pos: "b", h: 48 }
n16["<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/>Code - Prepare Messages1"]
n17["<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 - Confirmation1"]
n18@{ icon: "mdi:message-outline", form: "rounded", label: "Send a message1", pos: "b", h: 48 }
n19["<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/merge.svg' width='40' height='40' /></div><br/>Merge2"]
n19 --> n16
n18 --> n17
n16 --> n18
n13 --> n19
n15 --> n19
n14 --> n15
n14 --> n13
end
subgraph sg2["Flow 3"]
direction LR
n0@{ icon: "mdi:database", form: "rounded", label: "Google Sheets", pos: "b", h: 48 }
n1@{ icon: "mdi:database", form: "rounded", label: "Google Sheets1", pos: "b", h: 48 }
n2["<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/>Code"]
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/merge.svg' width='40' height='40' /></div><br/>Merge"]
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/>Respond to Webhook"]
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/>Webhook1"]
n2 --> n4
n3 --> n2
n5 --> n0
n5 --> n1
n0 --> n3
n1 --> n3
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 n7,n11,n13,n15,n0,n1 database
class n6,n9,n14,n17,n4,n5 api
class n8,n16,n2 code
classDef customIcon fill:none,stroke:none
class n6,n8,n9,n12,n14,n16,n17,n19,n2,n3,n4,n5 customIcon
varför det här spelar roll: avvikelser mellan lista och formulär
Att följa upp inskickningar är frustrerande eftersom “sanningen” finns på två ställen: ditt kalkylark med deltagarlistan och kalkylarket med formulärsvaren. Du fastnar i filtrering, sortering, letande efter registreringsnummer och copy-paste av namn till mejlutkast. Det handlar inte bara om tid. Det är den mentala belastningen av att minnas vem du redan har puffat på, plus det obekväma i att påminna någon som faktiskt redan skickade in (eller att glömma någon som inte gjorde det). Efter några varv börjar kalkylarket kännas som en brottsplats.
Det eskalerar snabbt. Här är hur det brukar skapa fel i verkligheten.
- Varje manuell avstämning blir till 30–60 minuter av filtrering och “mejlade jag dem redan?”-tvekan.
- Listdata och formulärdata matchar sällan perfekt, så ett enda skrivfel i ett registreringsnummer kan dölja en inskickning.
- Bekräftelser hoppas över när det är mycket, vilket leder till fler “jag skickade in, fick du det?”-uppföljningar senare.
- Påminnelser skickas sent eller inte alls, och då jagar du svar i sista minuten.
det du bygger: en live-dashboard för uppföljning med mejl med ett klick
Den här workflow-sviten gör dina Google Sheets till en uppföljare för registrering i realtid som hålls aktuell utan handpåläggning. Den startar med en webhook-baserad dashboard i n8n: du öppnar en enkel URL och n8n hämtar din student-/deltagarlista från ett kalkylark och dina Google Form-svar från ett annat. Ett litet kodsteg jämför dem via en gemensam identifierare (som registreringsnummer) och genererar sedan en HTML-dashboard som listar totaler, inskickade och väntande. Från samma dashboard kan du trigga två kompletterande webhooks: en skickar ett tackmejl till personer som har fyllt i formuläret, och den andra mejlar en påminnelse till dem som fortfarande väntar. Resultatet är strukturerad spårning plus snabb uppföljning, med betydligt färre misstag.
Arbetsflödet startar när du laddar live-sidan för uppföljning eller trycker på en knapp i dashboarden. n8n matchar rader i listan mot rader i formulärsvaren, förbereder sedan rätt mejlinnehåll och skickar via Gmail. Till sist returnerar det en bekräftelsesida så att du ser att utskicket faktiskt genomfördes.
det du bygger
| det som automatiseras | det du uppnår |
|---|---|
|
|
förväntade resultat
Säg att du följer upp 120 studenter. Manuellt kanske du lägger cirka 45 minuter på att exportera eller öppna svar, ytterligare 45 minuter på att matcha registreringsnummer, och sedan 30 minuter på att skriva och skicka mejl – alltså ungefär 2 timmar per uppföljningsrunda. Med det här arbetsflödet öppnar du dashboard-URL:en (cirka en minut), klickar på “Skicka bekräftelser” eller “Skicka påminnelser” och väntar några minuter medan Gmail skickar. Du behåller kontrollen, men slitjobbet försvinner.
innan du börjar
- n8n-instans (prova n8n Cloud gratis)
- alternativ för egen drift om du föredrar det (Hostinger fungerar bra)
- Google Sheets för att lagra deltagarlista och svar.
- Gmail för att skicka bekräftelser och påminnelser.
- Google OAuth-uppgifter (sätts upp i Google Cloud Console för åtkomst till Sheets/Gmail).
svårighetsnivå: Nybörjare. Du kopplar Google-konton, bekräftar kolumner i kalkylarken och klistrar in webhook-URL:er.
Vill du att någon bygger detta åt dig? Prata med en automationsexpert (gratis 15-minuters konsultation).
steg för steg
En dashboard-sida öppnas. Arbetsflödet “Live tracking” startar från en n8n-webhook-endpoint (som /live-tracking), vilket innebär att du kan bokmärka den och använda den som ett internt verktyg.
Dina två Sheets hämtas in. n8n läser deltagarlistan (registreringsnummer, namn, mejl) och läser formulärsvaren (tidsstämpel, reg nr, mejladress). Dessa kommer in som två dataströmmar.
Listan stäms av mot svaren. Ett merge-steg linjerar ihop de två uppsättningarna, och ett litet kodsteg jämför nycklar (oftast registreringsnummer) för att avgöra vilka som är “inskickade” och vilka som är “väntande”. Därefter bygger det en HTML-dashboard som visar sammanfattande statistik och två åtgärdsknappar.
Mejl skickas på beställning. När du klickar på “Skicka bekräftelser” eller “Skicka påminnelser” körs en kompletterande webhook, som mergar lista + svar igen (så att den alltid är aktuell), genererar personliga mejltexter, skickar via Gmail och returnerar sedan en bekräftelsesida.
Du kan enkelt ändra matchningsfältet (registreringsnummer, mejl eller ett eget ID) så att det passar din process. Se den fullständiga implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementation
Steg 1: Konfigurera webhook-triggern
Konfigurera de tre inkommande webhooks som driver dashboard-vyn och e-poståtgärderna.
- Öppna Incoming Dashboard Hook och ställ in Path till
2235781f-4371-4f6e-8767-41c352ed171f, med Response Mode inställt påresponseNode. - Öppna Incoming Acknowledgement Hook och ställ in Path till
send-acknowledgements, med Response Mode inställt påresponseNode. - Öppna Incoming Reminder Hook och ställ in Path till
send-reminder, med Response Mode inställt påresponseNode. - Bekräfta parallell exekvering: Incoming Dashboard Hook skickar utdata till både Fetch Spreadsheet Data och Retrieve Form Responses parallellt.
- Bekräfta parallell exekvering: Incoming Acknowledgement Hook skickar utdata till både Fetch Student Roster och Fetch Response Records parallellt.
- Bekräfta parallell exekvering: Incoming Reminder Hook skickar utdata till både Retrieve Roster Records och Fetch Reminder Responses parallellt.
Steg 2: Anslut Google Sheets
Koppla Google Sheets-datakällor för studentlistor och formulärsvar i de tre flödena.
- Öppna Fetch Spreadsheet Data och välj dokumentet
1-i55cyu2DKZ_alSlR3Bd7abHn_EfvTpg73hv2y3zb4ooch arketgid=0. Inloggningsuppgifter krävs: Anslut eragoogleSheetsOAuth2Api-inloggningsuppgifter. - Öppna Retrieve Form Responses och välj dokumentet
10eIZzrzgRy8PKfyhhVc8eG8lFoAxEqE0h-IOnqHwdVEoch arket1113734691. Inloggningsuppgifter krävs: Anslut eragoogleSheetsOAuth2Api-inloggningsuppgifter. - Öppna Fetch Student Roster och välj dokumentet
1-i55cyu2DKZ_alSlR3Bd7abHn_EfvTpg73hv2y3zb4ooch arketgid=0. Inloggningsuppgifter krävs: Anslut eragoogleSheetsOAuth2Api-inloggningsuppgifter. - Öppna Fetch Response Records och välj dokumentet
10eIZzrzgRy8PKfyhhVc8eG8lFoAxEqE0h-IOnqHwdVEoch arket1113734691. Inloggningsuppgifter krävs: Anslut eragoogleSheetsOAuth2Api-inloggningsuppgifter. - Öppna Retrieve Roster Records och välj dokumentet
1-i55cyu2DKZ_alSlR3Bd7abHn_EfvTpg73hv2y3zb4ooch arketgid=0. Inloggningsuppgifter krävs: Anslut eragoogleSheetsOAuth2Api-inloggningsuppgifter. - Öppna Fetch Reminder Responses och välj dokumentet
10eIZzrzgRy8PKfyhhVc8eG8lFoAxEqE0h-IOnqHwdVEoch arket1113734691. Inloggningsuppgifter krävs: Anslut eragoogleSheetsOAuth2Api-inloggningsuppgifter.
Register No. och Reg No) för att undvika felmatchningar i merge-logiken.Steg 3: Konfigurera dashboard-bearbetning
Slå ihop roster- och svarsdata och generera sedan HTML-dashboarden som returneras till webbläsaren.
- Öppna Combine Register Streams och ställ in Mode till
combinemed Advanced aktiverat. - I Combine Register Streams, ställ in Merge By Fields för att mappa
Register No.(field1) medReg No(field2). - Öppna Build Tracking Dashboard och granska JavaScript-koden som sammanställer sammanfattningsstatistik och HTML-dashboard-utdata.
- Öppna Return Webhook Output och ställ in Respond With till
textoch Response Body till=={{ $json["html"] }}.
https://[YOUR_WEBHOOK_URL] i Build Tracking Dashboard med er faktiska webhook-bas-URL för dashboard-knapparna.Steg 4: Konfigurera flödet för bekräftelsemejl
Sammanfoga roster- och svarsdata, bygg personliga tackmejl, skicka dem via Gmail och returnera en bekräftelsesida.
- Bekräfta att Merge Email Sources tar emot indata från både Fetch Student Roster och Fetch Response Records parallellt.
- Öppna Compose Thank You Emails och verifiera att ämnet är
✅ Thank You for Your Submissionoch att brödtextmallen använder platshållarna{{name}}och{{reg}}. - Öppna Dispatch Email Notices och ställ in Send To till
={{$json["Email Address"]}}, Subject till{{ $json.subject }}och Message till={{ $json.htmlBody }}. Inloggningsuppgifter krävs: Anslut eragmailOAuth2-inloggningsuppgifter. - Öppna Return Acknowledgement Page och bekräfta att HTML-svarstexten innehåller er korrekta dashboard-länk.
Steg 5: Konfigurera flödet för påminnelsemejl
Identifiera elever som inte är klara, förbered påminnelsemeddelanden, skicka dem via Gmail och returnera sidan för påminnelsebekräftelse.
- Bekräfta att Merge Reminder Sources tar emot indata från både Retrieve Roster Records och Fetch Reminder Responses parallellt.
- Öppna Compose Reminder Emails och verifiera att ämnet är
⚠️ Reminder: Please Complete Your Formoch att mallen använder platshållarna{{name}}och{{reg}}. - Öppna Send Reminder Emails och ställ in Send To till
={{$json["Email Address"]}}, Subject till={{ $json.subject }}och Message till={{ $json.htmlBody }}. Inloggningsuppgifter krävs: Anslut eragmailOAuth2-inloggningsuppgifter. - Öppna Return Reminder Page och bekräfta att HTML-svarstexten innehåller er korrekta dashboard-länk.
Steg 6: Testa och aktivera ert workflow
Validera varje webhook-path, säkerställ e-postleverans och aktivera sedan workflowet för produktion.
- Klicka på Execute Workflow och öppna test-URL:en från Incoming Dashboard Hook för att bekräfta att HTML-dashboarden renderas.
- Använd dashboard-knapparna för att trigga Incoming Acknowledgement Hook och Incoming Reminder Hook och bekräfta att varje webhook returnerar rätt HTML-bekräftelsesida.
- Verifiera att Dispatch Email Notices och Send Reminder Emails skickar meddelanden till förväntade e-postadresser.
- När testkörningen är lyckad, slå på workflowet till Active för att aktivera användning i produktion.
felsökningstips
- Google Sheets-inloggningar kan gå ut eller kräva specifika behörigheter. Om något skapar fel, kontrollera först Google-anslutningen i n8n under Credentials.
- Om du använder webhook-knappar från dashboarden, säkerställ att dina n8n-webhook-URL:er är korrekta för din miljö (test vs. production). En kopierad “test”-URL är en vanlig orsak till att knappen fungerar en gång och sedan misslyckas senare.
- Gmail kan strypa eller neka utskick i klungor om du skickar för många mejl för snabbt. Om du mejlar en stor lista, lägg in en kort fördröjning mellan utskicken och bekräfta att ditt Gmail-konto får skicka från den adressen.
snabba svar
Cirka 30 minuter om dina kolumner i Sheets redan är strukturerade.
Nej. Du klistrar in ett workflow och kopplar konton, och de inkluderade kodnoderna är redan uppsatta för matchning och mejltext.
Ja. n8n har ett gratis alternativ för egen drift och en gratis provperiod på n8n Cloud. Cloud-planer börjar på 20 USD/månad för högre volym. Du behöver också räkna in kostnader för Google Workspace om du skickar från en hanterad domän.
Två alternativ: n8n Cloud (hanterad, enklast att komma igång) eller egen drift på en VPS. För egen drift är Hostinger VPS prisvärd och klarar n8n bra. Egen drift ger obegränsade körningar men kräver grundläggande serverhantering.
Ja, och det bör du. De flesta team byter “matchningsnyckeln” som används i merge- och kodstegen (till exempel mejl i stället för registreringsnummer) och justerar sedan texten i “Compose Thank You Emails” och “Compose Reminder Emails” så att den passar deras ton. Du kan också lägga till ett loggsteg som skriver varje utskick till ett kalkylark “Mail Logs”. Om du vill ha WhatsApp i stället för mejl, byt ut Gmail-steget mot en HTTP Request till en leverantör som Twilio.
Oftast beror det på att Google OAuth-medgivandet har gått ut eller ändrats. Återanslut Google Sheets-uppgiften i n8n och bekräfta sedan att det anslutna Google-kontot fortfarande har åtkomst till kalkylarket. Kontrollera också att kalkylarksnamn och kolumner inte har bytt namn, eftersom flödet kan välja fält som inte längre finns. Om du kör detta på en delad enhet kan behörigheter vara lite knepiga, helt ärligt.
Några hundra rader per körning är normalt, och Gmails sändningsgränser brukar vara den verkliga begränsningen.
Ofta, ja, eftersom den här lösningen behöver matchningslogik, listor för “väntande vs klart” och ett HTML-dashboard-svar, vilket blir klumpigt i enkla tvåstegsverktyg. n8n hanterar förgreningar utan att ta extra betalt för varje väg. Det ger dig också möjligheten att köra egen drift, vilket är viktigt om du kör detta dagligen och inte vill att per-uppgift-prissättning smyger upp. Zapier eller Make kan fortfarande fungera om du bara vill ha “nytt formulärsvar → skicka mejl”, men det är inte samma sak som att stämma av mot en deltagarlista. Om du är osäker, prata med en automationsexpert så hjälper vi dig att välja det enklaste alternativet.
När detta väl rullar håller dina Sheets ordning på verkligheten, och dina uppföljningar slutar falla mellan stolarna. Sätt upp det en gång och använd tiden du får tillbaka till jobbet som faktiskt kräver dig.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.