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: dublettleads hanteras

Rickard Andersson Partner, Nodenordic.se

Ditt lead-ark börjar korrekt formaterat. Sedan smyger dubbletterna in. Samma person, ett lite annorlunda namn, en andra formulärinskickning, en säljare som manuellt skriver in ett telefonnummer igen. Nu blir dina rapporter fel och dina uppföljningar blir obekväma.

Dubblettvarningar i Sheets träffar marknadschefer först (eftersom pipeline-rapportering ofta får skulden på ”lead-kvalitet”). Men ops-team som städar listor och byråägare som jonglerar flera källor känner av det också. Du vill ha en pålitlig post per lead, plus en tydlig historik över vad som hände.

Det här n8n-flödet bevakar nya poster, kontrollerar dubbletter via e-post och telefon, routar sedan leadet korrekt och mejlar dig utfallet. Du får se hur flödet fungerar, vad du behöver och var team oftast går på minor.

Så fungerar den här automatiseringen

Hela n8n-flödet, från trigger till slutresultat:

n8n Workflow Template: Google Sheets + Gmail: dublettleads hanteras

Problemet: dubblettleads förstör din tratt i det tysta

Dubblettposter är en sån där ”liten” grej som snabbt blir en veckovis huvudvärk. Ett enda lead räknas två gånger, routas två gånger och kontaktas två gånger, så din konverteringsgrad ser sämre ut och teamet slösar tid på att jaga spöken. Det skapar också friktion i verkligheten: två säljare svarar, kunden blir förvirrad och plötsligt känns er uppföljning slarvig. Och när du väl upptäcker det sitter du fast med manuell städning i Google Sheets, rad för rad, och försöker minnas vilken post som kom först och vad du redan skickat.

Friktionen byggs på. Här är var det fallerar i det dagliga arbetet.

  • Du lägger till slut ungefär 1–2 timmar i veckan på att skanna Sheets efter upprepningar i stället för att jobba med leads som faktiskt spelar roll.
  • Dubbletter blåser upp antalet ”nya leads”, så marknadsrapporterna stämmer inte med vad sälj ser i CRM:et.
  • Uppföljningar blir inkonsekventa eftersom två olika poster triggar två olika meddelanden.
  • Det finns ingen pålitlig revisionshistorik, så du kan inte svara på en enkel fråga som ”När såg vi det här leadet första gången?”

Lösningen: avduplicering i Google Sheets + Gmail-varningar (med logg)

Det här flödet behandlar Google Sheets som ett insystem och upprätthåller sedan ”ett lead, en post” automatiskt. När en ny rad kommer in (oftast från ett Sheets-formulär eller ett kopplat webbformulär) letar n8n direkt efter en befintlig match med de två viktigaste fälten: e-post och telefon. Om det är ett nytt lead validerar flödet datan, skapar eller uppdaterar en kontakt i ditt CRM via en HTTP-begäran och skriver tillbaka den korrekt formaterade posten till Sheets. Om det är en dubblett ignorerar den den inte bara. Den uppdaterar den befintliga kontakten, transformerar datan till ett strukturerat format och skriver sedan en dubblettpost så att du får ett tydligt, sökbart spår av vad som hänt.

Flödet startar i samma ögonblick som ett lead landar i ditt ark. Därifrån förgrenar det på ”dubblett vs. nytt”, skickar rätt uppdatering till ditt CRM och sparar resultatet tillbaka i Google Sheets så att din databas förblir konsekvent. Till sist får du en e-postnotis via Gmail så att inget smiter förbi i det tysta.

Vad du får: automatisering vs. resultat

Exempel: så här ser det ut

Säg att teamet fångar cirka 40 leads om dagen i Google Sheets från formulär och importer. Om ens 10 är dubbletter lägger någon ofta runt 5 minuter per dubblett på att kontrollera tidigare rader, bekräfta den riktiga posten och uppdatera anteckningar, vilket är nära en timme per dag. Med det här flödet lägger du cirka 2 minuter på att sätta upp triggern en gång, sedan kontrolleras nya poster automatiskt i bakgrunden och teamet får en Gmail-notis bara när något kräver uppmärksamhet. Det är ungefär 4 timmar tillbaka varje vecka, utan någon ”städdag”.

Det du behöver

  • n8n-instans (prova n8n Cloud gratis)
  • Alternativ för egen hosting om du föredrar det (Hostinger funkar bra)
  • Google Sheets för att lagra och söka lead-poster.
  • Gmail för att skicka varningar vid dubbletter och vid körning.
  • API-uppgifter till CRM (hämta dem i ditt CRM:s utvecklar-/API-inställningar).

Svårighetsnivå: Medel. Du kopplar Google och Gmail, klistrar sedan in en CRM-API-nyckel och bekräftar vilka kolumner i arket som mappar till e-post och telefon.

Vill du inte sätta upp detta själv? Prata med en automationsexpert (gratis 15-minuters konsultation).

Så fungerar det

En ny rad triggar flödet. När ett inskick landar i Google Sheets via Sheet Form Trigger hämtar n8n den raddata du bryr dig om (särskilt e-post och telefon).

Flödet söker efter en befintlig match. ”Find Existing Lead” kontrollerar arket efter en post med samma e-post eller telefon, och sedan delar ett If-beslut upp flödet i dubblett vs. nytt lead.

CRM-uppdateringar sker automatiskt. Nya poster valideras och sedan anropar n8n ditt CRM via HTTP-begäranden för att skapa kontakten. Dubblettposter går en annan HTTP-väg för att uppdatera den befintliga kontakten, så att CRM:et hålls uppdaterat utan att skapa en andra person.

Allt skrivs tillbaka till Sheets. Nya leads registreras som korrekt formaterade poster, medan dubbletter transformeras till strukturerade fält och sparas som en separat dubblettrad så att du får en löpande logg.

Du kan enkelt justera matchningsreglerna för att även inkludera företagsnamn eller ett normaliserat telefonformat utifrån dina behov. Se den fullständiga implementeringsguiden nedan för anpassningsalternativ.

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

Steg 1: Konfigurera Google Sheets-triggern

Konfigurera arbetsflödet så att det startar varje gång en ny Google Form-inskickning hamnar i ert kalkylark.

  1. Lägg till noden Sheet Form Trigger och ställ in Poll TimeseveryMinute.
  2. Ställ in Documenthttps://docs.google.com/spreadsheets/d/[YOUR_ID]/edit och Sheet Name till samma URL i Sheet Form Trigger.
  3. Autentiseringsuppgifter krävs: Anslut era googleSheetsTriggerOAuth2Api-uppgifter i Sheet Form Trigger.

⚠️ Vanlig fallgrop: Ersätt [YOUR_ID] i kalkylarkets URL med ert faktiska Google Sheets-ID, annars kommer triggern aldrig att triggas.

Steg 2: Anslut Google Sheets

Konfigurera uppslag mot leaddatabasen samt de ark som används för lagring av både nya och duplicerade poster.

  1. I Find Existing Lead ställer ni in Document[YOUR_ID] och Sheet NameSheet1.
  2. Autentiseringsuppgifter krävs: Anslut era googleSheetsOAuth2Api-uppgifter i Find Existing Lead.
  3. I Record Fresh Lead ställer ni in Operationappend och väljer samma Document och Sheet Name som er leaddatabas.
  4. Autentiseringsuppgifter krävs: Anslut era googleSheetsOAuth2Api-uppgifter i Record Fresh Lead.
  5. I Record Duplicate Entry ställer ni in Operationupdate och Data ModeautoMapInputData, och väljer sedan ert ark för duplicatspårning.
  6. Autentiseringsuppgifter krävs: Anslut era googleSheetsOAuth2Api-uppgifter i Record Duplicate Entry.

Använd separata ark för er huvuddatabas och för duplicatspårning för att hålla rapporteringen ren.

Steg 3: Sätt upp validering och logik för avduplicering

Routa arbetsflödet baserat på om den inkommande leaden redan finns, och validera nya leads innan ni skapar CRM-poster.

  1. I Duplicate Decision Check ställer ni in villkoret så att det jämför Left Value ={{ $('Sheet Form Trigger').item.json['Email address'] }} och Right Value ={{ $json["Email address"] }} med Operation inställd på notEquals.
  2. Säkerställ att Duplicate Decision Check routar till Validate New Lead för nya leads och till Refresh CRM Contact för duplicat.
  3. I Validate New Lead ställer ni in villkoret så att det jämför Left Value ={{ $json["Email address"] }} och Right Value ={{ $('Find Existing Lead').item.json["Email address"] }} med Operation inställd på notEquals.

Dessa e-postjämförelser styr er logik för avduplicering – se till att fältnamnen för ”Email address” matchar exakt i både arket och formuläret.

Steg 4: Konfigurera CRM-åtgärder och uppdateringar av duplicat

Skapa nya kontakter i GoHighLevel för nya leads och uppdatera befintliga poster när duplicat upptäcks.

  1. I Generate CRM Contact ställer ni in URLhttps://rest.gohighlevel.com/v1/contacts/ och JSON Body till den angivna payloaden, inklusive fält som {{ $('Sheet Form Trigger').item.json['First Name'] }} och {{ $now }}.
  2. Autentiseringsuppgifter krävs: Anslut era goHighLevelApi-uppgifter i Generate CRM Contact.
  3. I Refresh CRM Contact ställer ni in URL=https://rest.gohighlevel.com/v1/contacts?email={{ $json["Email address"] }} och ställer in AuthenticationgenericCredentialType med Generic Auth Type httpHeaderAuth.
  4. Autentiseringsuppgifter krävs: Anslut era goHighLevelApi- och httpHeaderAuth-uppgifter i Refresh CRM Contact.
  5. I Transform Contact Data granskar ni JavaScript-koden och ersätter [YOUR_EMAIL] om ni testar manuellt; behåll det dynamiskt för produktion.

⚠️ Vanlig fallgrop: Om ni lämnar [YOUR_EMAIL] i Transform Contact Data kommer korrekt matchning att utebli vid körningar i skarpt läge.

Steg 5: Testa och aktivera ert arbetsflöde

Validera arbetsflödet med en exempelinskickning från formuläret och slå sedan på det för kontinuerlig automatisering.

  1. Använd Sheet Form Trigger och klicka på Test workflow för att simulera en ny inskickning.
  2. Bekräfta att nya leads går från Validate New LeadGenerate CRM ContactRecord Fresh Lead.
  3. Skicka in en duplicerad lead och verifiera att Duplicate Decision Check routar till Refresh CRM ContactTransform Contact DataRecord Duplicate Entry.
  4. När resultatet ser korrekt ut, växla arbetsflödet till Active för att köra i produktion.
🔒

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

Få den kompletta implementeringsguiden + nedladdningsbar mall

Vanliga fallgropar

  • Inloggning för Google Sheets kan löpa ut eller kräva specifika behörigheter. Om något skapar fel, kolla sidan Credentials i n8n och bekräfta att det anslutna Google-kontot kan redigera målarket.
  • Om du använder Wait-noder eller extern rendering varierar processeringstiderna. Öka väntetiden om noder längre ned misslyckas på tomma svar.
  • HTTP Request-anrop till ditt CRM kan misslyckas utan tydlig signal om API-nyckeln saknar skrivbehörighet. Kontrollera CRM:ets API-loggar och bekräfta att fältnamnen i din payload matchar vad CRM:et förväntar sig.

Vanliga frågor

Hur lång tid tar det att sätta upp den här automatiseringen för dubblettvarningar i Sheets?

Cirka 30–60 minuter när ditt ark och dina konton är redo.

Behöver jag kunna koda för att automatisera hantering av dubblettleads?

Nej. Du kopplar främst konton och mappar fält. Steget med HTTP-begäran är i praktiken copy-paste med några värden som byts ut.

Är n8n gratis att använda för det här flödet med dubblettvarningar i Sheets?

Ja. n8n har ett gratis alternativ för egen hosting och en gratis provperiod på n8n Cloud. Cloud-planer börjar på 20 USD/månad för högre volymer. Du behöver också räkna in kostnader för CRM-API om din leverantör tar betalt för API-användning.

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 hosting på en VPS. För egen hosting är Hostinger VPS prisvärd och hanterar n8n bra. Egen hosting ger dig obegränsat antal körningar men kräver grundläggande serverhantering.

Kan jag anpassa det här flödet med dubblettvarningar i Sheets så att det matchar även på företagsnamn?

Ja, men var konservativ. Du kan uppdatera Google Sheets-sökningen i ”Find Existing Lead” så att den inkluderar företag och sedan skärpa ”Duplicate Decision Check” så att den bara flaggar en dubblett när företag plus e-post (eller telefon) matchar. Vanliga anpassningar är att normalisera telefonnummer i ”Transform Contact Data”, lägga till ett fält för ”lead source” i loggen och skicka olika Gmail-meddelanden beroende på vilket fält som matchade.

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

Oftast beror det på att Googles auktorisering i n8n har löpt ut, eller att det anslutna kontot tappat åtkomst till kalkylarket. Anslut Google Sheets-credential igen och bekräfta sedan att filen är delad med samma Google-användare. Om det bara misslyckas på vissa rader, kontrollera skyddade intervall eller ogiltiga tecken i arket.

Hur många leads kan den här automatiseringen för dubblettvarningar i Sheets hantera?

För de flesta små team går det bra med hundratals leads per dag.

Är den här automatiseringen för dubblettvarningar i Sheets bättre än att använda Zapier eller Make?

Ofta, ja, om du bryr dig om förgreningslogik och en revisionshistorik. Det här flödet tar flera beslut (dubblett vs. nytt, validera vs. avvisa) och skriver sedan till olika ställen, vilket är där Zapier-scenarier kan bli dyra eller röriga. n8n ger dig också möjligheten att hosta själv, så du betalar inte mer bara för att du körde fler kontroller den här månaden. Å andra sidan, om du bara vill ha en enkel regel som ”om dubblett, mejla mig”, kan Zapier eller Make gå snabbare att klicka ihop. Prata med en automationsexpert om du vill ha en snabb rekommendation baserat på din volym och din verktygsstack.

När detta väl rullar slutar städning av dubblettleads vara ett återkommande måste och blir en tyst bakgrundsprocess. Ditt ark förblir pålitligt och dina uppföljningar förblir vassa.

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