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 till GoHighLevel utan dubblettleads

Rickard Andersson Partner, Nodenordic.se

Dina leads trillar in. Bra. Sedan skickar någon in formuläret två gånger, ditt CRM skapar två kontakter, och nu går det ut två uppföljningar som om ni inte pratar med varandra.

Det här är sånt som i det tysta saboterar din pipeline. Marknadschefer ser det i rörig attribuering. Säljare märker det när de ringer samma person igen. Och ops får leka kalkylarksdetektiv. Den här Sheets GHL dedupe-automationen håller ett felfritt kontaktkort, automatiskt.

Du får se exakt hur workflowet fångar dubbletter, uppdaterar rätt post i GoHighLevel och loggar allt tillbaka till Google Sheets så att din rapportering förblir trovärdig.

Så fungerar den här automatiseringen

Hela n8n-workflowet, från trigger till slutresultat:

n8n Workflow Template: Google Sheets till GoHighLevel utan dubblettleads

Problemet: dubblettleads förstör uppföljning och rapportering

Dubbletter skapar inte bara röra. De skapar förvirring i exakt det läge där du försöker agera snabbt. En lead skickar in ett Google Form och skickar sedan in igen eftersom de inte fick ett omedelbart svar. Eller så importerar en kollega en lista medan formuläret fortfarande rullar. Nu har GoHighLevel två kontakter med samma e-post, olika telefonnummer och två konversationer kopplade till fel person. Du tappar tid på att slå ihop. Du tappar tillit till din pipeline. Och helt ärligt börjar du ifrågasätta varje siffra för “nya leads” som du visar i ett möte.

Friktionen blir större, eftersom röran upprepas varje dag.

  • Säljuppföljningar dupliceras, vilket kan få ditt företag att se slarvigt eller spammigt ut.
  • Rapporteringen blir opålitlig eftersom samma person räknas flera gånger i GoHighLevel och i dina Sheets-exporter.
  • Manuell städning äter upp riktig tid, ofta 30 minuter här och där, och det hamnar alltid på den mest upptagna personen.
  • Uppdateringar går förlorade eftersom den “nyare” inskickningen hamnar på en annan kontaktpost än den som teamet faktiskt jobbar i.

Lösningen: synka Google Sheets-leads till GoHighLevel utan dubbletter

Det här n8n-workflowet bevakar ditt svarark i Google Sheets för formulärsvar när nya inskick kommer in. Varje gång en rad läggs till hämtar det viktiga kontaktfält (oftast namn, e-post, telefon och tidsstämpel) och kontrollerar sedan ditt huvudark för leaddatabas för att se om personen redan finns. Om det är en helt ny lead skapar workflowet en kontakt i GoHighLevel via en HTTP-förfrågan och lägger till leaden i ditt huvudark för databasen. Om det är en dubblett uppdaterar det den befintliga GoHighLevel-kontakten med de senaste uppgifterna och loggar dubbletthändelsen i ett separat ark för “dubblettlogg” för spårning och analys. Ingen manuell sortering. Inget gissande om vilken post som är den riktiga.

Workflowet startar med en Google Sheets-trigger i realtid. Sedan jämför det den inkommande inskickningen med dina befintliga poster, skickar leaden vidare på ett “ny” eller “dubblett”-spår, och synkar resultatet tillbaka till Sheets och GoHighLevel. Ditt CRM förblir felfritt, så att teamet kan jobba snabbare utan att trampa varandra på tårna.

Det här får du: automatisering vs. resultat

Exempel: så här ser det ut i praktiken

Säg att ditt formulär tar in 30 leads per dag och att runt 5 är dubbletter (upprepade inskick, stavfel eller någon som använder jobbmejl senare). Manuellt tar det kanske 6 minuter att söka i GoHighLevel, jämföra uppgifter, uppdatera rätt post och sedan logga vad som hände. Det är ungefär 30 minuter per dag, och det känns aldrig som “riktigt arbete”. Med det här workflowet triggas det direkt när raden landar i Sheets, och kontroll + synk kör i bakgrunden. Din tidsåtgång blir nära noll om du inte vill granska dubblettloggen.

Det här behöver du

  • n8n-instans (prova n8n Cloud gratis)
  • Alternativ för egen hosting om du föredrar det (Hostinger fungerar bra)
  • Google Sheets för formulärsvar, huvud-DB och dubblettlogg.
  • GoHighLevel för att skapa och uppdatera CRM-kontakter.
  • GoHighLevel API-nyckel (hämta den i GoHighLevel Settings).

Kunskapsnivå: Mellan. Du mappar några fält, sätter upp inloggningsuppgifter och bekräftar dina dubblettregler (endast e-post, eller e-post plus telefon).

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

Så fungerar det

En ny rad landar i ditt svarark. Google Sheets-triggern (“Sheets Intake Trigger”) bevakar nya inskick så att du slipper exportera något eller köra en daglig import.

Workflowet hämtar befintliga leads för jämförelse. Det hämtar poster från ditt huvudark för leaddatabasen (“Retrieve Lead Lookup”) och förbereder sedan fälten från den inkommande inskickningen så att jämförelserna blir konsekventa (e-postformatering, normalisering av telefonnummer och så vidare).

Dubbletter hanteras med routing, inte genom att ignoreras. En If-kontroll (“Database Duplicate Check”) avgör om den här inskickningen matchar någon du redan har. Om den är ny går den igenom ett valideringsfilter och skapar kontakten i GoHighLevel (“Generate CRM Contact”), och lägger sedan till raden i huvudarket (“Append Lead Record”). Om den är en dubblett uppdaterar den den befintliga GoHighLevel-kontakten (“Refresh CRM Contact”) och skriver sedan en korrekt formaterad, strukturerad rad i ditt ark för dubblettlogg (“Update Duplicate Log”).

Ditt team får bättre data överallt. GoHighLevel förblir deduplicerat, ditt huvudark förblir sanningskällan, och dubblettloggen blir ett enkelt sätt att se trender som upprepade inskick, annonsbedrägerier eller formulär som förvirrar människor.

Du kan enkelt ändra reglerna för dubblettmatchning så att de passar din verklighet. Vissa team matchar bara på e-post, andra kräver e-post plus telefon, och vissa föredrar “företag + telefon” för B2B. Se hela implementationsguiden nedan för anpassningsalternativ.

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

Steg 1: Konfigurera Google Sheets-triggern

Konfigurera triggern som bevakar nya lead-inskickningar i Google Sheets.

  1. Lägg till noden Sheets Intake Trigger i ert arbetsflöde.
  2. Ställ in Documenthttps://docs.google.com/spreadsheets/d/[YOUR_ID]/edit.
  3. Ställ in Sheethttps://docs.google.com/spreadsheets/d/[YOUR_ID]/edit.
  4. Bekräfta att polling-schemat är inställt på Every Minute under Poll Times.
  5. Credential Required: Anslut era googleSheetsTriggerOAuth2Api-uppgifter.

Steg 2: Anslut Google Sheets

Konfigurera Sheets-noderna som läser befintliga leads och uppdaterar er databas.

  1. Öppna Retrieve Lead Lookup och ställ in Document[YOUR_ID] och Sheetgid=0.
  2. Credential Required: Anslut era googleSheetsOAuth2Api-uppgifter i Retrieve Lead Lookup.
  3. Öppna Append Lead Record, ställ in Operationappend och välj samma Document [YOUR_ID] och Sheet gid=0.
  4. Credential Required: Anslut era googleSheetsOAuth2Api-uppgifter i Append Lead Record.
  5. Öppna Update Duplicate Log, ställ in Operationupdate och Data ModeautoMapInputData, och välj sedan Document [YOUR_ID] och Sheet gid=0.
  6. Credential Required: Anslut era googleSheetsOAuth2Api-uppgifter i Update Duplicate Log.

Steg 3: Konfigurera dubblettdetektering och förgrening

Routa leads baserat på om de redan finns i er databas.

  1. I Database Duplicate Check ställer ni in villkoret för att jämföra leadets e-post: Left Value ={{ $('Sheets Intake Trigger').item.json['Email address'] }} och Right Value ={{ $json["Email address"] }} med Operation inställd på notEquals.
  2. I Validate New Lead ställer ni in villkoret till Left Value ={{ $json["Email address"] }} och Right Value ={{ $('Retrieve Lead Lookup').item.json["Email address"] }} med Operation inställd på notEquals.
  3. Bekräfta exekveringsflödet: Database Duplicate Check skickar utdata till både Validate New Lead och Refresh CRM Contact parallellt.

Steg 4: Konfigurera CRM-anrop och databehandling

Skapa nya CRM-kontakter för giltiga leads och uppdatera befintliga kontakter för dubbletter.

  1. I Generate CRM Contact ställer ni in URLhttps://rest.gohighlevel.com/v1/contacts/ och Send Body till On med Body Type inställd på json.
  2. Klistra in JSON-body exakt som konfigurerad, inklusive uttryck som {{ $('Sheets Intake Trigger').item.json['First Name'] }} och {{ $now }} i fältet JSON Body.
  3. Credential Required: Anslut era goHighLevelApi-uppgifter i Generate CRM Contact.
  4. 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.
  5. Credential Required: Anslut era goHighLevelApi- och httpHeaderAuth-uppgifter i Refresh CRM Contact.
  6. I Extract Contact Fields granskar ni koden och ersätter "[YOUR_EMAIL]" om ni vill ha en fast e-post för testning, eller säkerställer att $json.email skickas vidare från föregående nod.

⚠️ Vanlig fallgrop: Noden Extract Contact Fields använder "[YOUR_EMAIL]" som fallback. Om ni inte ersätter den eller skickar $json.email kan dubblettsökningen alltid misslyckas.

Steg 5: Testa och aktivera ert arbetsflöde

Verifiera att nya leads skapar CRM-kontakter och att dubbletter uppdaterar loggen korrekt.

  1. Klicka på Execute Workflow och skicka in ett testlead i ert Google Formulär eller lägg till en rad i arket.
  2. Bekräfta att Generate CRM Contact körs för nya leads och att Append Lead Record lägger till en rad i databasarket.
  3. Skicka in ett dubblettlead och verifiera att Refresh CRM ContactExtract Contact FieldsUpdate Duplicate Log uppdaterar dubblettarket.
  4. När testet är klart utan fel växlar ni arbetsflödet till Active för att aktivera livebearbetning.
🔒

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

Få den kompletta implementeringsguiden + nedladdningsbar mall

Vanliga fallgropar

  • Åtkomst till Google Sheets kan fallera om det anslutna Google-kontot tappar behörighet till kalkylarket. Om det plötsligt slutar fungera, kontrollera statusen för n8n-credential och bekräfta att filen fortfarande är delad med det kontot.
  • Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om noder längre fram misslyckas på grund av tomma svar.
  • GoHighLevel API-nycklar roteras, och HTTP Request-noderna börjar snabbt fallera när det händer. Skapa en ny nyckel i GoHighLevel Settings och uppdatera credential som används av “Generate CRM Contact” och “Refresh CRM Contact.”

Vanliga frågor

Hur lång tid tar det att sätta upp den här Sheets GHL dedupe-automationen?

Cirka en timme om dina Sheets och din GoHighLevel API-nyckel är redo.

Behöver jag kunna koda för att automatisera deduplicering av leads i Google Sheets?

Nej. Du kopplar främst ihop konton och mappar fält mellan Google Sheets och GoHighLevel.

Är n8n gratis att använda för det här Sheets GHL dedupe-workflowet?

Ja. n8n har ett gratis alternativ för egen hosting 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 GoHighLevel-kostnader (din befintliga plan) eftersom det här workflowet använder deras API.

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änsade exekveringar men kräver grundläggande serverhantering.

Kan jag anpassa det här Sheets GHL dedupe-workflowet så att det matchar på e-post + telefon i stället för bara e-post?

Ja, och det bör du om e-postkvaliteten är ojämn. Uppdatera logiken i dubblettkontrollen (If-noden “Database Duplicate Check”) så att den kontrollerar båda fälten, och se till att “Retrieve Lead Lookup” returnerar de kolumner du vill jämföra. Vanliga anpassningar är att normalisera telefonformat, ignorera tomma telefonnummer och behandla “+1”-varianter som samma nummer.

Varför misslyckas min GoHighLevel-anslutning i det här workflowet?

Oftast beror det på en utgången eller utbytt API-nyckel som används av HTTP Request-noderna. Uppdatera credential i n8n och kör sedan en enda testinskickning från ditt svarark. Om det fortfarande misslyckas, kontrollera att API-nyckeln har åtkomst till kontakter och att du skickar de obligatoriska fälten (e-post eller telefon) i request body.

Hur många leads klarar den här Sheets GHL dedupe-automationen?

Mer än tillräckligt för de flesta små team. På n8n Cloud är begränsningen främst din plans månatliga exekveringar; egen hosting tar bort det taket och flyttar begränsningen till din server och Google Sheets API-kvoter. I praktiken: om du lägger till hundratals rader per dag, överväg att batcha lookups och hålla ditt huvudark prydligt så att sökningar fortsätter vara snabba.

Är den här Sheets GHL dedupe-automationen bättre än att använda Zapier eller Make?

Ofta, ja. Det här workflowet behöver förgreningslogik (ny lead vs dubblett), en tillförlitlig lookup mot en befintlig databas och två olika API-åtgärder i GoHighLevel (skapa vs uppdatera), plus loggning. n8n hanterar den typen av “riktiga workflows” utan att göra varje väg till ytterligare ett betalt steg. Zapier eller Make kan fortfarande fungera om din volym är låg och din logik är enkel, men kostnaderna sticker snabbt när du lägger till lookups, filter och extra actions. Om du vill ha en second opinion om vad som är bäst för din setup, prata med en automationsspecialist.

Felfri data låter tråkigt tills du ser hur mycket det förändrar det dagliga genomförandet. Sätt upp det här en gång, håll dina GoHighLevel-kontakter på en rimlig nivå och gå vidare till arbete som faktiskt bygger pipeline.

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