Behöver ert företag hjälp med att implementera AI? Kontakta oss och få prisoffert här →
AI Skolan
januari 22, 2026

Google Sheets + Gmail: HR-utskick, inga dubletter

Rickard Andersson Partner, Nodenordic.se

Du bygger en genomtänkt kontaktlista, trycker på skicka … och inser sedan att du mejlade samma HR-kontakt två gånger, bifogade fel fil eller gick över en säker daglig volym. Det blir rörigt – och det går att undvika.

Rekryterare märker direkt när uppföljningar blir obekväma. HR-koordinatorer tappar timmar på att jaga vad som skickades och till vem. Och en grundare som rekryterar vid sidan av fastnar i inkorgsadministration. Den här HR outreach automation gör utskicken konsekventa, lagom taktade och loggade – utan att du behöver sitta och vakta varje mejl.

Du sätter upp ett n8n-flöde som hämtar rader från Google Sheets, tar bort dubletter, validerar mejladresser, tillämpar sändningsgränser, bifogar ett CV, skickar via Gmail och skriver sedan tillbaka resultatet till Sheets.

Så fungerar automatiseringen

Här är hela flödet du kommer att sätta upp:

n8n Workflow Template: Google Sheets + Gmail: HR-utskick, inga dubletter

Varför det här spelar roll: HR-utskick kraschar när det görs manuellt

Manuella HR-utskick ser enkla ut tills du gör det i skala. Du kopierar namn från ett ark, klistrar in mejladresser i Gmail, bifogar rätt CV, justerar formuleringar och försöker sedan minnas om du redan skickade till ”Jordan på Acme” förra veckan. Små misstag blir snabbt stora. Ett dubbelt mejl kan förstöra en relation. En dag med för hög sändningsvolym kan knuffa leveransbarheten åt fel håll, vilket gör att nästa batch tyst hamnar i skräpposten. Och värst är uppföljningen: timmar senare letar du i ”Skickat” och försöker återskapa vad som hände.

Det eskalerar snabbt. Här är var det vanligtvis brister i riktiga team.

  • Dubletter smyger sig in när listor kommer från flera källor, och du märker det inte förrän någon svarar: ”Du har redan skickat det här.”
  • Hantering av bilagor är förvånansvärt skör, särskilt om CV:n ligger i olika mappar eller delade enheter.
  • Daglig sändningsvolym är svår att hålla koll på i huvudet, så utskicken spikar och leveransbarheten blir oförutsägbar.
  • Statusspårning blir ett jobb i sig eftersom Sheets, Gmail och uppföljningsanteckningar aldrig förblir synkade.

Det du bygger: personliga utskick som skickas säkert och loggar allt

Det här flödet börjar med din HR-kontaktlista i Google Sheets, där varje rad representerar en kontakt du vill mejla. n8n hämtar raderna enligt ett schema (eller när du kör det manuellt), tar bort dubbletter och kontrollerar att mejladresserna ser giltiga ut innan något skickas. Därefter tillämpar det en daglig sändningsgräns så att utskicken blir jämna i stället för spikiga. För varje godkänd rad skapar n8n ett personligt meddelande, hämtar CV-bilagan från din filplats och skickar mejlet via Gmail. Till sist skriver det tillbaka ett tydligt lyckades/misslyckades-resultat till ett loggark, så att du alltid vet vad som hände och varför.

Flödet startar i Google Sheets och går sedan vidare genom validering och hastighetsbegränsning. Gmail hanterar själva utskicket, och loggsteget knyter ihop det hela genom att uppdatera Sheets med sändningsstatus och detaljer. Du får kontrollerade utskick med en riktig granskningslogg.

Det du bygger

Förväntade resultat

Säg att du kontaktar 30 HR-kontakter per dag från ett ark. Manuellt ser en ”säker” process oftast ut så här: öppna raden (1 minut), skriva och personanpassa (3 minuter), hitta och bifoga CV:t (2 minuter), skicka och sedan logga tillbaka i arket (1 minut). Det är cirka 7 minuter per kontakt, eller runt 3,5 timmar per dag. Med det här flödet uppdaterar du arket och kör det; skickande och loggning sker automatiskt och din tid går ned till snabb listvård plus att punktkontrollera fel.

Innan du börjar

  • n8n-instans (testa n8n Cloud gratis)
  • Alternativ för egen drift om du föredrar det (Hostinger fungerar bra)
  • Google Sheets för att lagra kontakter och loggrader.
  • Gmail för att skicka utskick från ditt konto.
  • Plats för CV-filer (Google Drive eller en nedladdnings-URL) för bilagor.

Nivå: Medel. Du kopplar Google-uppgifter och redigerar några inställningar för ”meddelande” och ”gränser” utan problem.

Vill du att någon bygger detta åt dig? Prata med en automations­expert (gratis 15-minuters konsultation).

Steg för steg

En schemalagd eller manuell trigger startar körningen. Du kan låta det köra dagligen med schematriggern, eller starta det vid begäran när du precis har uppdaterat arket.

Kontakter hämtas från Google Sheets och rensas upp. n8n läser raderna i ditt HR-ark, tar bort dubletter och kontrollerar grundläggande mejlformat så att uppenbart felaktiga indata inte slösar utskick eller förstör din loggning.

Sändningsgränser tillämpas innan mejlinnehållet skapas. Ett steg för hastighetsbegränsning tillämpar din dagliga plan (inklusive att trappa upp över tid om du vill), och därefter skriver flödet ett personligt meddelande för varje godkänd kontakt.

Bilagor hämtas och mejlen skickas via Gmail. n8n laddar ned CV-filen, bifogar den, skickar meddelandet och utvärderar sedan om Gmail returnerade ett lyckat svar.

Allt loggas tillbaka till Sheets. Både lyckade och misslyckade skickningar mappas till en korrekt formaterad loggrad, vilket gör att du kan filtrera på status och bara försöka igen på det som misslyckades.

Du kan enkelt justera reglerna för dagliga gränser så att de matchar din policy för utskick baserat på roll, region eller kampanj. Se hela implementationsguiden nedan för anpassningsalternativ.

Steg-för-steg-guide för implementering

Steg 1: Konfigurera Schedule Trigger

Ställ in de tidsbaserade och manuella triggers som startar arbetsflödet och leder in i samma väg för datainhämtning.

  1. Välj Scheduled Start och bekräfta att schemaregeln använder triggerAtHour: 9 så att den körs dagligen kl. 09:00.
  2. Låt Manual Run Trigger vara ansluten till Fetch HR Sheet Rows så att ni kan testa flödet vid behov.
  3. Verifiera att både Scheduled Start och Manual Run Trigger matar in i Fetch HR Sheet Rows enligt körflödet.

Steg 2: Anslut Google Sheets

Konfigurera HR-datakällan och loggningsdestinationen i Google Sheets.

  1. Öppna Fetch HR Sheet Rows och ställ in Document ID till YOUR_RESOURCE_ID_HERE och Sheet Name till YOUR_RESOURCE_ID_HERE.
  2. Inloggning krävs: Anslut era Google Sheets-inloggningsuppgifter i Fetch HR Sheet Rows.
  3. Öppna Append Log to Sheets och ställ in Operation till append med Document ID YOUR_RESOURCE_ID_HERE och Sheet Name YOUR_RESOURCE_ID_HERE.
  4. Bekräfta att kolumnmappningarna i Append Log to Sheets använder uttryck som {{ $json.Email }}, {{ $json.emailStatus }} och {{ $now.format('MM-DD HH:mm:ss') }}.
  5. Inloggning krävs: Anslut era Google Sheets-inloggningsuppgifter i Append Log to Sheets.

⚠️ Vanlig fallgrop: Om sheet-ID:n lämnas som YOUR_RESOURCE_ID_HERE kommer Fetch HR Sheet Rows och Append Log to Sheets att misslyckas med att läsa eller skriva data.

Steg 3: Ställ in validering och sändningsgränser

Filtrera giltiga e-postadresser, ta bort dubbletter och tillämpa dagliga sändningsgränser innan ni skapar utkast till meddelanden.

  1. I Eliminate Duplicate Records behåller ni standardinställningarna för att avdubbla inkommande HR-rader.
  2. I Validate Email Format bekräftar ni att regex-kontrollerna använder {{ $json["Email"] }} och mönstren ^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$ och ^(?:info|support|sales|admin|no[-.]?reply|noreply|contact|help|service|marketing|team|hello|hi)@.
  3. I Apply Sending Limits uppdaterar ni ramp-inställningarna vid behov: RAMP_START = new Date('2025-09-21') och LIMIT_BY_WEEK = [150].
  4. Säkerställ att flödet fortsätter från Validate Email FormatApply Sending LimitsCompose Email Draft.

Steg 4: Konfigurera utkast, batchning och fördröjningar

Skapa e-postinnehållet, bearbeta mottagare i batchar och upprätthåll fördröjningen mellan utskick.

  1. I Compose Email Draft ersätter ni platshållaren YOUR_URL_HERE med er faktiska utkastlogik eller ert API-anrop.
  2. Använd Batch Iterator för att dela upp listan; behåll alternativen som de är om ni inte vill ange en batchstorlek.
  3. I Delay Interval ställer ni in Amount till 60 för att pausa 60 sekunder mellan batchar.
  4. Bekräfta sekvensen Compose Email DraftBatch IteratorDelay IntervalRetrieve Resume File.

Tips: Om ni behöver snabbare eller långsammare utskick justerar ni Delay Interval Amount från 60 till önskad fördröjning.

Steg 5: Konfigurera e-postutskick och loggning

Bifoga CV-filen, skicka e-post via Gmail, utvärdera resultatet och logga tillbaka till Sheets.

  1. I Retrieve Resume File ställer ni in URL till YOUR_GOOGLE_DRIVE_URL_HERE och låter Response Format vara inställt på file.
  2. Öppna Dispatch Gmail Message och ställ in Send To till {{ $json.Email }}, Subject till {{ $json.emailSubject }} och Message till {{ $json.emailBody }}.
  3. Inloggning krävs: Anslut era Gmail-inloggningsuppgifter i Dispatch Gmail Message.
  4. Använd Send Result Check för att routa lyckade utskick till Increment Send Counter och misslyckanden till Process Failure Case.
  5. I Map Log Fields bekräftar ni mappningar som {{ $('Retrieve Resume File').item.json.Email }} och {{ $json.emailStatus }} för loggning.
  6. Säkerställ att Map Log Fields skickar output till Append Log to Sheets så att varje sändningsförsök registreras.

⚠️ Vanlig fallgrop: Om Dispatch Gmail Message saknar inloggningsuppgifter kommer arbetsflödet ändå att fortsätta eftersom Continue On Fail är aktiverat, men alla utskick kommer att loggas som misslyckade.

Steg 6: Testa och aktivera ert arbetsflöde

Kör ett manuellt test för att validera flödet och aktivera sedan den schemalagda körningen för produktionsbruk.

  1. Klicka på Manual Run Trigger för att köra arbetsflödet och bearbeta ett litet urval av HR-rader.
  2. Verifiera att Dispatch Gmail Message returnerar ett icke-tomt id och att Send Result Check routar till Increment Send Counter vid lyckade utskick.
  3. Bekräfta att Append Log to Sheets lägger till en rad med fält som {{ $json.Email }} och {{ $json.emailSubject }}.
  4. När testet lyckas växlar ni arbetsflödet till Active så att Scheduled Start körs dagligen kl. 09:00.
🔒

Lås upp fullständig steg-för-steg-guide

Få den kompletta implementeringsguiden + nedladdningsbar mall

Felsökningstips

  • Google Sheets-inloggningar kan löpa ut eller kräva specifika behörigheter. Om det slutar fungera, kontrollera menyn Credentials i n8n och bekräfta först att det anslutna Google-kontot fortfarande har åtkomst till både källarket och loggarket.
  • Om du använder Wait-noder eller extern rendering varierar behandlingstiderna. Öka väntetiden om efterföljande noder fallerar på tomma svar.
  • Gmail OAuth-behörigheter spelar större roll än många tror. Om ”Dispatch Gmail Message” misslyckas, kontrollera din Gmail-credential scope i n8n igen och bekräfta att avsändarkontot inte har nått dagliga sändningsgränser.

Snabba svar

Hur lång tid tar det att sätta upp den här HR-utskicksautomatiseringen?

Cirka 30 minuter om din åtkomst till Sheets och Gmail redan är klar.

Krävs kodning för den här HR-utskicksautomatiseringen?

Nej. Du kopplar främst konton och redigerar mejlmallen och gränserna. Flödet innehåller redan logiken för avduplicering, hastighetsbegränsning och loggning.

Är n8n gratis att använda för det här flödet för HR-utskicksautomatisering?

Ja. n8n har ett gratis alternativ för egen drift och en gratis provperiod på n8n Cloud. Cloud-planer startar på 20 USD/månad för högre volym. Du behöver också räkna med vanliga kostnader för att hosta dina CV-filer (ofta 0 kr om du använder Google Drive).

Var kan jag hosta n8n för att köra den här automatiseringen?

Två alternativ: n8n Cloud (hanterat, 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.

Kan jag anpassa det här flödet för HR-utskicksautomatisering för andra användningsfall?

Ja, och det bör du sannolikt. De flesta team anpassar steget ”Compose Email Draft” för ton, rolltyp och uppföljningsspråk och justerar sedan ”Apply Sending Limits” så att det matchar deras uppvärmningsplan. Du kan också byta källa för bilagan genom att ändra ”Retrieve Resume File” så att den hämtar från Google Drive i stället för en publik URL. Om du vill ha kampanjspecifik spårning kan du lägga till fler kolumner i ”Map Log Fields” så att loggen fångar sådant som rollnamn, region eller ansvarig rekryterare.

Varför misslyckas min Gmail-anslutning i det här flödet?

Oftast är det ett OAuth-behörighetsproblem eller en utgången Google-inloggning. Återanslut din Gmail-credential i n8n och bekräfta sedan att avsändarkontot kan skicka mejl som vanligt och inte har nått en daglig sändningstak. Om det bara misslyckas på vissa rader, kontrollera mejladresserna som gick igenom valideringen och se till att du inte skickar till tomma eller felaktigt formaterade värden som hämtats från Sheets.

Vilken volym kan det här flödet för HR-utskicksautomatisering hantera?

Det beror på din plan och de gränser du sätter. På n8n Cloud Starter arbetar du inom din månatliga exekveringskvot, medan egen drift inte har någon exekveringstak (din server blir begränsningen). I praktiken är det här flödet byggt för taktad sändning, så det är vanligt att köra 20–200 mejl per dag med väntetider mellan batcher för att hålla Gmail nöjt.

Är den här HR-utskicksautomatiseringen bättre än att använda Zapier eller Make?

Ofta, ja. Det här flödet bygger på förgreningslogik (hantering av lyckat vs. misslyckat), avduplicering och en konfigurerbar hastighetsbegränsare, vilket går att göra i Zapier/Make men tenderar att bli klumpigt eller dyrt när flödet växer. n8n ger dig också möjligheten till egen drift, vilket är en stor fördel när du kör utskick varje dag. Samtidigt: om du bara behöver ”läs en rad, skicka ett mejl” kan Zapier gå snabbare att komma igång med. Prata med en automations­expert om du vill ha hjälp att välja.

När detta väl är på plats blir outreach ett kontrollerat system i stället för daglig brandsläckning. Ditt ark förblir korrekt, din sändningstakt håller sig rimlig och du får tid tillbaka till arbetet som faktiskt driver rekryteringen framåt.

Kontakta oss

Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.

×

Använd mall

Få direkt tillgång till denna n8n-arbetsflödes JSON-fil

Launch login modal Launch register modal