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
flowchart LR
subgraph sg0["Google Sheets Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "Google Sheets Trigger1", pos: "b", h: 48 }
n1@{ icon: "mdi:database", form: "rounded", label: "Lookup Lead1", 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/httprequest.dark.svg' width='40' height='40' /></div><br/>Update Contact (GHL)1"]
n3@{ icon: "mdi:database", form: "rounded", label: "Log New Lead1", pos: "b", h: 48 }
n4@{ icon: "mdi:database", form: "rounded", label: "Log Duplicate Lead1", pos: "b", h: 48 }
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/httprequest.dark.svg' width='40' height='40' /></div><br/>Create Contact (GHL)1"]
n6@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Check the duplication", pos: "b", h: 48 }
n7@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Check from the data base?1", 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"]
n8 --> n4
n1 --> n7
n6 --> n5
n5 --> n3
n2 --> n8
n0 --> n1
n7 --> n6
n7 --> n2
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 n6,n7 decision
class n1,n3,n4 database
class n2,n5 api
class n8 code
classDef customIcon fill:none,stroke:none
class n2,n5,n8 customIcon
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
| Vad det här flödet automatiserar | Resultat du får |
|---|---|
|
|
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.
- Lägg till noden Sheet Form Trigger och ställ in Poll Times på
everyMinute. - Ställ in Document på
https://docs.google.com/spreadsheets/d/[YOUR_ID]/editoch Sheet Name till samma URL i Sheet Form Trigger. - Autentiseringsuppgifter krävs: Anslut era
googleSheetsTriggerOAuth2Api-uppgifter i Sheet Form Trigger.
[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.
- I Find Existing Lead ställer ni in Document på
[YOUR_ID]och Sheet Name påSheet1. - Autentiseringsuppgifter krävs: Anslut era
googleSheetsOAuth2Api-uppgifter i Find Existing Lead. - I Record Fresh Lead ställer ni in Operation på
appendoch väljer samma Document och Sheet Name som er leaddatabas. - Autentiseringsuppgifter krävs: Anslut era
googleSheetsOAuth2Api-uppgifter i Record Fresh Lead. - I Record Duplicate Entry ställer ni in Operation på
updateoch Data Mode påautoMapInputData, och väljer sedan ert ark för duplicatspårning. - Autentiseringsuppgifter krävs: Anslut era
googleSheetsOAuth2Api-uppgifter i Record Duplicate Entry.
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.
- 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. - Säkerställ att Duplicate Decision Check routar till Validate New Lead för nya leads och till Refresh CRM Contact för duplicat.
- 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.
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.
- I Generate CRM Contact ställer ni in URL på
https://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 }}. - Autentiseringsuppgifter krävs: Anslut era
goHighLevelApi-uppgifter i Generate CRM Contact. - I Refresh CRM Contact ställer ni in URL på
=https://rest.gohighlevel.com/v1/contacts?email={{ $json["Email address"] }}och ställer in Authentication pågenericCredentialTypemed Generic Auth TypehttpHeaderAuth. - Autentiseringsuppgifter krävs: Anslut era
goHighLevelApi- ochhttpHeaderAuth-uppgifter i Refresh CRM Contact. - I Transform Contact Data granskar ni JavaScript-koden och ersätter
[YOUR_EMAIL]om ni testar manuellt; behåll det dynamiskt för produktion.
[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.
- Använd Sheet Form Trigger och klicka på Test workflow för att simulera en ny inskickning.
- Bekräfta att nya leads går från Validate New Lead → Generate CRM Contact → Record Fresh Lead.
- Skicka in en duplicerad lead och verifiera att Duplicate Decision Check routar till Refresh CRM Contact → Transform Contact Data → Record Duplicate Entry.
- När resultatet ser korrekt ut, växla arbetsflödet till Active för att köra i produktion.
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
Cirka 30–60 minuter när ditt ark och dina konton är redo.
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.
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.
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.
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.
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.
För de flesta små team går det bra med hundratals leads per dag.
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.