Rekrytering blir snabbt rörig när ansökningar hamnar i e-posttrådar. En kandidat svarar två gånger, använder en annan ämnesrad, och plötsligt har du två ”aktiva” konversationer för samma person.
Gmail Sheets dedupe är en räddare i nöden för rekryterare som jobbar i Gmail, men drift/ops och rekryterande chefer känner också av smärtan. Resultatet är enkelt: en felfri kandidatlista, färre dubbla svar och snabbare överlämningar i Slack.
Det här n8n-flödet bevakar en märkt Gmail-inkorg, loggar varje sökande i Google Sheets och pingar Slack när det upptäcker en dubblett. Du får se vad det automatiserar, vad du behöver och var team brukar gå fel.
så här fungerar den här automatiseringen
Hela n8n-flödet, från trigger till slutlig output:
n8n Workflow Template: Gmail + Google Sheets: hitta dubbletter, larma Slack
flowchart LR
subgraph sg0["Scheduled Cycle Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "Scheduled Cycle Trigger", pos: "b", h: 48 }
n1@{ icon: "mdi:message-outline", form: "rounded", label: "Retrieve Gmail Messages", 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/>Parse Candidate Email"]
n3@{ icon: "mdi:database", form: "rounded", label: "Read Sheet Records", pos: "b", h: 48 }
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/code.svg' width='40' height='40' /></div><br/>Flag Duplicate Check"]
n5@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Duplicate Branch Logic", 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/slack.svg' width='40' height='40' /></div><br/>Send Slack Alert"]
n7@{ icon: "mdi:database", form: "rounded", label: "Upsert Sheet Entry", pos: "b", h: 48 }
n5 --> n6
n5 --> n7
n2 --> n3
n4 --> n5
n1 --> n2
n3 --> n4
n0 --> n1
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 n0 trigger
class n5 decision
class n3,n7 database
class n2,n4 code
classDef customIcon fill:none,stroke:none
class n2,n4,n6 customIcon
problemet: dubbletter bland sökande skapar tyst kaos
Om ni rekryterar från en delad inkorg är dubbletter oundvikliga. Folk söker från två e-postadresser, skickar sitt cv igen eller dyker upp via en referens efter att de redan sökt på karriärsidan. Nu skummar teamet Gmail-trådar, söker i Sheets och frågar ”har vi redan pratat med den här personen?” Det är inte bara bortkastad tid. Det är tappad kontext, inkonsekvent urval och den där obekväma stunden när två kollegor svarar med olika nästa steg. Ärligt talat får det processen att se slarvig ut.
Det summeras snabbt. Här är var det börjar skapa fel när volymerna ökar.
- Manuell copy-paste från Gmail till Sheets tar cirka 5 minuter per sökande, och tiden sticker iväg när cv:n är konstigt formaterade.
- Dubbletter ser inte ut som dubbletter i e-post, så du upptäcker dem sent, ofta efter att någon redan skickat en uppföljning.
- Er ”källa till sanning” blir opålitlig, vilket gör att rapportering och pipeline-genomgångar blir diskussioner i stället för beslut.
- Slack-uppdateringar sker oregelbundet eftersom folk glömmer att notifiera kanalen, särskilt under intensiva veckor.
lösningen: auto-logga sökande och flagga dubbletter i Slack
Det här flödet kör i en enkel loop. Varje par minuter kollar n8n Gmail efter nya mejl med den etikett du valt (de flesta team använder ”applicant”). När det hittar ett, tolkar det mejlets innehåll för att plocka ut kandidatens uppgifter som namn, e-post, telefon, roll de söker och annat ni konsekvent inkluderar. Sedan läser det er befintliga Google Sheet med kandidater och jämför den inkommande e-postadressen med det som redan finns. Om adressen redan finns postar flödet en varning i Slack så någon kan slå ihop trådar eller stänga loopen. Om det är nytt lägger det till (eller upsertar) kandidaten i Google Sheets så att listan förblir felfri och uppdaterad.
Flödet startar med en schemalagd kontroll av märkta Gmail-meddelanden. Därefter extraherar det kandidatdata, kontrollerar dubbletter i Google Sheets och skickar resultatet via en If-gren. Till sist får du antingen ett Slack-meddelande om ”dubblett hittad” eller en ny rad i arket.
vad du får: automatisering vs. resultat
| vad det här flödet automatiserar | resultat du får |
|---|---|
|
|
exempel: så här ser det ut
Säg att teamet får cirka 10 märkta ”applicant”-mejl per dag. Manuellt kanske du lägger 5 minuter på att logga varje mejl i Google Sheets, plus ytterligare 2 minuter på att söka i arket för att säkerställa att de inte redan finns där, vilket är ungefär en timme per dag. Med det här flödet lägger du kanske 5 minuter i början på att sätta Gmail-etiketten och kolumnerna i arket, och sedan blir det dagliga arbetet nära noll. Dubbletter händer fortfarande, men de dyker upp som en Slack-ping i stället för en överraskning.
det här behöver du
- n8n-instans (testa n8n Cloud gratis)
- alternativ för self-hosting om du föredrar det (Hostinger fungerar bra)
- Gmail för att läsa märkta ansökningsmejl
- Google Sheets för att lagra kandidatlistan
- Slack för att varna teamet vid dubbletter
svårighetsgrad: nybörjare. Du kopplar konton, klistrar in ID:n (etikett, ark) och justerar vid behov en regex om dina mejl är inkonsekventa.
Vill du inte sätta upp det här själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
så fungerar det
Schemalagd inkorgskontroll. En schematrigger kör varannan minut (eller enligt ditt intervall) och letar efter Gmail-meddelanden med din ansökningsetikett. Ingen etikett, ingen bearbetning.
Kandidatdetaljer hämtas från mejlet. Ett tolkningssteg läser mejlets innehåll och extraherar fält som kandidatnamn, e-post, telefon, sökt roll, rekryterare och källmejl. Om inkommande format varierar mycket är det här den enda delen du kan behöva finjustera.
Dubblettlogik körs mot Google Sheets. Flödet läser befintliga rader från ditt kandidatark, jämför inkommande e-post med det som redan lagrats och skickar sedan resultatet genom en If-kontroll.
Slack-varning eller upsert i arket. Dubbletter triggar ett Slack-meddelande så att du kan slå ihop trådar eller stoppa outreach. Nya kandidater skrivs till Google Sheets så att listan hålls uppdaterad utan att någon behöver röra den.
Du kan enkelt ändra dubblettkontrollen från bara e-post till e-post + telefon utifrån dina behov. Se hela implementeringsguiden nedan för anpassningsalternativ.
Steg-för-steg-implementeringsguide
Steg 1: konfigurera Schedule Trigger
Det här arbetsflödet körs enligt ett återkommande schema för att skanna nya kandidatmejl.
- Lägg till noden Scheduled Cycle Trigger som arbetsflödets trigger.
- Ställ in Interval på minuter och behåll standardfrekvensen för att köra kontinuerligt.
- Bekräfta att Scheduled Cycle Trigger kopplas till Retrieve Gmail Messages som visas i körflödet.
Steg 2: anslut Gmail och Google Sheets
Dessa noder hämtar kandidatmejl och läser/skriv till ert uppföljningskalkylark.
- Öppna Retrieve Gmail Messages och ställ in Operation till
getAll. - Ställ in Label IDs till
[YOUR_ID]och Received After till{{ $json.timestamp.toDateTime().minus(10,'min') }}. - Inloggningsuppgifter krävs: Anslut era gmailOAuth2-inloggningsuppgifter i Retrieve Gmail Messages.
- Öppna Read Sheet Records och välj Document ID
[YOUR_ID]samt Sheet NameSheet1. - Inloggningsuppgifter krävs: Anslut era googleSheetsOAuth2Api-inloggningsuppgifter i Read Sheet Records och Upsert Sheet Entry.
[YOUR_ID]. Ersätt dem med era riktiga ID:n.Steg 3: konfigurera kandidatparsing och duplikatlogik
Dessa kodnoder extraherar kandidatdetaljer och kontrollerar duplikat mot arket.
- Öppna Parse Candidate Email och behåll den angivna JavaScript Code för att tolka fält som
candidate_name,candidate_emailochrole_applied. - Öppna Flag Duplicate Check och verifiera att den refererar till Parse Candidate Email och Read Sheet Records med
$( "Parse Candidate Email" ).all()[0].jsonoch$('Read Sheet Records').all(). - Säkerställ att Flag Duplicate Check skickar ut booleanen
isDuplicatesom används av Duplicate Branch Logic.
Steg 4: konfigurera utdata och förgreningsåtgärder
Arbetsflödet skickar aviseringar för duplikat och upsert:ar nya kandidater i arket.
- Öppna Duplicate Branch Logic och behåll villkoret som använder
{{ $json.isDuplicate }}med operatorn för boolean true. - Öppna Send Slack Alert och ställ in Text till
User {{ $json.candidate_name }} has already applied for {{ $json.role_applied }}. - Inloggningsuppgifter krävs: Anslut era Slack-inloggningsuppgifter i Send Slack Alert (noden har för närvarande inga inloggningsuppgifter konfigurerade).
- Öppna Upsert Sheet Entry och bekräfta att Operation är inställd på
appendOrUpdatemed Matching Columns inställd påcandidate_email. - Verifiera att kolumnmappningarna i Upsert Sheet Entry använder uttryck som
{{ $json.candidate_email }},{{ $json.role_applied }}och{{ $json.resume_url }}.
Steg 5: testa och aktivera ert arbetsflöde
Validera varje väg innan ni slår på den schemalagda automatiseringen.
- Klicka på Execute Workflow och bekräfta att Retrieve Gmail Messages hämtar senaste mejlen baserat på filtret
receivedAfter. - Kontrollera utdata från Parse Candidate Email för att säkerställa att fält som
candidate_emailochrole_appliedär ifyllda. - Verifiera att Duplicate Branch Logic routar duplikat till Send Slack Alert och icke-duplikat till Upsert Sheet Entry.
- Bekräfta att nya kandidater läggs till eller uppdateras i ert Google Sheet och att dubbletter triggar en Slack-avisering.
- Växla arbetsflödet till Active för att aktivera kontinuerlig schemalagd bearbetning.
vanliga fallgropar
- Slack-autentisering kan löpa ut eller kräva specifika behörigheter. Om något slutar fungera, kontrollera först Slack-appens scopes (särskilt chat:write) och att rätt kanal/användare är vald i n8n.
- Om du använder Wait-noder eller extern rendering varierar processtider. Öka väntetiden om nedströmsnoder fallerar på tomma svar.
- Standardprompter i AI-noder är generiska. Lägg in er tonalitet tidigt, annars kommer du redigera output för alltid.
vanliga frågor
Cirka 30 minuter om din Gmail-etikett och ditt Google Sheet är redo.
Nej. Du kopplar främst konton och klistrar in etikett- och ark-ID:n. Du kan behöva justera ett regex-mönster om era ansökningsmejl har ett ovanligt format.
Ja. n8n har ett gratis self-hosted-alternativ och en gratis provperiod på n8n Cloud. Cloud-planer startar på 20 USD/månad för högre volymer. Du behöver också räkna in kostnader för Slack och Google Workspace (oftast redan täckta för de flesta team).
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller self-hosting på en VPS. För self-hosting är Hostinger VPS prisvärd och hanterar n8n bra. Self-hosting ger dig obegränsade körningar men kräver grundläggande serveradministration.
Ja, och det är en smart uppgradering om kandidater ofta söker från olika e-postadresser. Du utökar dubblettlogiken så att den jämför både candidate_email och candidate_phone innan den avgör vilken gren som ska tas. De flesta team lägger också in ett litet normaliseringssteg (ta bort mellanslag, bindestreck, landskoder) så att ”(555) 123-4567” matchar ”5551234567”. Om du vill kan du även lägga till ett Slack-meddelande för ”möjlig dubblett” när namnet är likt men e-posten är annorlunda.
Oftast beror det på utgångna autentiseringsuppgifter eller att Slack-appen saknar behörigheten chat:write. Återanslut Slack i n8n och dubbelkolla sedan att flödet postar till rätt kanal (privata kanaler behöver ofta extra åtkomst). Om det fortfarande fallerar kan Slacks rate limiting dyka upp när du behandlar en stor backlogg på en gång, så minska batchstorleken eller dra ned schemat temporärt.
För de flesta små team fungerar hundratals per vecka bra, men väldigt stora ark kan bli långsamma eftersom flödet läser alla rader för att jämföra dubbletter.
Det beror på hur strikt du vill att dedupliceringen ska vara. Zapier och Make kan absolut logga mejl i Sheets, men dubblettkontroll blir snabbt klumpigt när du behöver flexibel matchning, förgrening och undantag. n8n är bättre när du vill ha kontroll över logiken, och med self-hosting betalar du inte mer bara för att volymen sticker iväg under en rekryteringspush. Nackdelen är lite mer ansvar för uppsättningen. Om du vill ha hjälp att välja, prata med en automationsexpert.
Felfri data gör rekrytering lugnare. Sätt upp detta en gång, så slutar inkorgen vara databasen.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.