Att kopiera rader från ett kalkylark in i Salesforce känns enkelt tills du ser skadorna. Dubbletter av konton. Kontakter kopplade till fel företag. Och ett CRM som långsamt blir omöjligt att lita på.
Den här automatiseringen för Sheets Salesforce import slår mot intäktsteamen först. Marketing ops som städar leadlistor och byråägare som underhåller kunders CRM hamnar i samma röra, bara med olika insatser. Resultatet är enkelt: en felfri importväg som skapar konton bara när det behövs och håller kontakter korrekt kopplade.
Nedan ser du hur arbetsflödet stoppar dubbletter, vad det förändrar i vardagen och vad du behöver för att köra det i n8n.
Så fungerar automatiseringen
Hela n8n-arbetsflödet, från trigger till slutligt resultat:
n8n Workflow Template: Från Google Sheets till Salesforce – import utan dubbletter
flowchart LR
subgraph sg0["Manual Launch Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "Manual Launch Trigger", pos: "b", h: 48 }
n1@{ icon: "mdi:database", form: "rounded", label: "Retrieve Sheet Rows", 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/salesforce.svg' width='40' height='40' /></div><br/>Query Salesforce Accounts"]
n3["<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/merge.svg' width='40' height='40' /></div><br/>Combine Existing Accounts"]
n4@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Existing Account Check", pos: "b", h: 48 }
n5@{ icon: "mdi:cog", form: "rounded", label: "Map Existing Account ID", 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/salesforce.svg' width='40' height='40' /></div><br/>Upsert Salesforce Contact"]
n7["<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/merge.svg' width='40' height='40' /></div><br/>Retain New Companies"]
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/itemLists.svg' width='40' height='40' /></div><br/>Deduplicate Company List"]
n9["<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/salesforce.svg' width='40' height='40' /></div><br/>Generate Salesforce Account"]
n10@{ icon: "mdi:swap-vertical", form: "rounded", label: "Map New Account Name", pos: "b", h: 48 }
n11["<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/merge.svg' width='40' height='40' /></div><br/>Join New Company Contacts"]
n4 --> n5
n7 --> n8
n1 --> n2
n1 --> n3
n1 --> n4
n1 --> n7
n1 --> n8
n1 --> n11
n1 --> n6
n10 --> n11
n0 --> n1
n9 --> n10
n8 --> n9
n2 --> n3
n2 --> n7
n3 --> n4
n11 --> n6
n5 --> n6
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 n4 decision
class n1 database
classDef customIcon fill:none,stroke:none
class n2,n3,n6,n7,n8,n9,n11 customIcon
Problemet: import från kalkylark skapar dubbletter av konton
De flesta ”snabba” Salesforce-importer börjar i ett Google Sheet och blir sedan ett återkommande städprojekt. Någon klistrar in en ny lista, företagsnamnet är lite annorlunda (”Acme Inc” vs ”ACME”), och plötsligt har du två konton. Sedan skapas kontakter under det konto som råkade hittas först, vilket saboterar rapportering, routing och överlämningar. Ärligt talat är det inte importen som gör mest ont. Det är det tysta operativa släpet efteråt: säljare som ifrågasätter data, ops som gör sammanslagningar och ledare som tittar på dashboards som inte stämmer med verkligheten.
Friktionen byggs på. Här är var det fallerar i praktiken.
- Varje manuell import introducerar inkonsekvent namngivning, vilket leder till dubbletter av konton som tar timmar att slå ihop senare.
- Kontakter hamnar ofta kopplade till fel företag, så segmentering och territorieregler beter sig oförutsägbart.
- Team slutar lita på Salesforce-fält eftersom de vet att ”arket var stökigt”, och användningen sjunker.
- Att rätta det i efterhand innebär oftast export, avdubblettering och återimport, vilket skapar ännu fler möjligheter till fel.
Lösningen: importera rader från Sheets och förhindra dubbletter av konton
Det här arbetsflödet hämtar företagsrader från Google Sheets, kontrollerar Salesforce efter ett befintligt konto och skapar bara ett nytt konto när det verkligen inte finns. När ett konto redan finns mappar det det befintliga konto-ID:t och använder det för att koppla kontakten korrekt. När det är ett nytt företag avdubbletterar det först listan över ”nya företag” (så att upprepade rader i arket inte skapar flera konton), skapar sedan kontot en gång och kopplar alla relaterade kontakter till det. Slutresultatet är en strukturerad CRM-uppdatering som beter sig som du förväntar dig: ett konto per företag, kontakter kopplade till rätt konto och färre stökiga överraskningar senare.
Arbetsflödet startar med en manuell körning i n8n och läser sedan dina rader i arket. Därifrån förgrenas det: en väg hanterar befintliga konton och mappar deras ID:n, medan den andra vägen avdubbletterar och skapar nya konton. Till sist gör det en upsert av kontakter så att de skapas (eller uppdateras) och länkas till rätt företag.
Det du får: automatisering vs. resultat
| Det här arbetsflödet automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut
Säg att du importerar 50 företag från ett Google Sheet varje vecka, och att varje företag har en primär kontakt. Manuellt lägger du kanske 5 minuter per företag på att skapa eller söka efter konton, plus ytterligare 5 minuter för kontakten, vilket är ungefär 8 timmar fokuserat arbete (och det är innan städning). Med det här arbetsflödet startar du körningen och låter det bearbeta i bakgrunden, ungefär 15–45 sekunder per företag. Du gör fortfarande en snabb kontroll av de första posterna, men det repetitiva arbetet försvinner och dubbletter smyger inte in i det tysta.
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)
- Google Sheets som källa för företag- och kontaktrader.
- Salesforce för att skapa konton och göra upsert av kontakter.
- Google OAuth-uppgifter (hämta dem i Google Cloud Console under APIs & Services).
Kunskapsnivå: Nybörjare. Du kopplar konton, bekräftar fältmappningar och kör en liten testimport.
Vill du inte sätta upp det här själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
Manuell körning drar i gång. Du startar arbetsflödet när du är redo att importera (praktiskt när du vill ha kontroll och enkel testning).
Rader hämtas från Google Sheets. Arbetsflödet läser ditt ark med förväntade rubriker (till exempel: Company Name, Email, Phone, Industry) och förbereder sedan varje rad för kontroller och mappning.
Salesforce frågas och arbetsflödet delas upp i ”befintliga” vs ”nya”. Det söker konton på företagsnamn, slår ihop resultat för sammanhang och använder sedan en If-kontroll för att välja väg. Befintliga konton får sitt konto-ID mappat så att kontakter kan kopplas korrekt.
Nya företag avdubbletteras och skapas en gång. Innan något konto skapas avdubbletterar arbetsflödet listan över nya företag, skapar de saknade kontona och kopplar sedan tillbaka kontodatan till raderna så att varje kontakt får rätt kontorelation.
Du kan enkelt justera matchningsreglerna för att använda en striktare nyckel (som webbplatsdomän) utifrån dina behov. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: konfigurera den manuella triggern
Det här arbetsflödet startas manuellt och förgrenas sedan till flera parallella grenar för kontomatchning och kontakt-upserts.
- Lägg till och öppna Manual Launch Trigger för att bekräfta att den är arbetsflödets startpunkt.
- Koppla Manual Launch Trigger till Retrieve Sheet Rows som visas i flödet.
- Gå igenom Flowpast Branding (sticky note) för dokumentationskontext – ingen konfiguration krävs.
Steg 2: anslut Google Sheets
Hämta CRM-data från ett kalkylark för att driva uppdateringar i Salesforce.
- Öppna Retrieve Sheet Rows.
- Ställ in Document på ert målkalkylark.
- Ställ in Sheet på det kalkylblad som innehåller kolumner som
Company Name,First Name,Last NameochEmail. - Autentisering krävs: anslut era googleSheetsOAuth2Api-uppgifter.
{{$json["Company Name"]}} att ge tomma värden längre ned i flödet.Steg 3: sätt upp logik för matchning av befintliga konton
Det här steget frågar Salesforce efter matchande konton, slår ihop resultat och kontrollerar om ett befintligt konto-id finns.
- Öppna Query Salesforce Accounts och ställ in Resource på
search. - Ställ in Query på
=SELECT id, Name FROM Account WHERE Name = '{{$json["Company Name"].replace(/'/g, '\\\'')}}'. - I Combine Existing Accounts ställer ni in Mode på
combine, aktiverar Advanced och slår ihop på Company Name (field1) ↔ Name (field2). - I Existing Account Check lägger ni till ett strängvillkor med Value 1 satt till
{{ $json["Id"] }}och Operation tillisNotEmpty. - I Map Existing Account ID mappar ni Current Key
Idtill New KeyAccount ID.
Steg 4: skapa nya konton för företag som inte matchar
Företag som inte hittas i Salesforce dedupliceras och skapas som nya konton innan kontakter upsertas.
- I Retain New Companies ställer ni in Join Mode på
keepNonMatchesoch Output Data From påinput1, och slår ihop på Company Name ↔ Name. - I Deduplicate Company List ställer ni in Operation på
removeDuplicatesoch jämför på Company Name. - I Generate Salesforce Account ställer ni in Resource på
accountoch Name på{{ $json["Company Name"] }}. - I Map New Account Name ställer ni in Keep Only Set på
trueoch lägger till: id ={{ $json["id"] }}och Name ={{ $node["Deduplicate Company List"].json["Company Name"] }}.
Steg 5: upserta kontakter och länka till konton
Nya och befintliga konto-id:n slås ihop med kontaktdata och skickas till Salesforce som en upsert.
- I Join New Company Contacts ställer ni in Mode på
combineoch slår ihop på Company Name ↔ Name. - Öppna Upsert Salesforce Contact och ställ in Resource på
contactoch Operation påupsert. - Ställ in External ID på
Emailoch External ID Value på{{ $json["Email"] }}. - Ställ in Last Name på
{{ $json["Last Name"] }}. - I Additional Fields ställer ni in email på
{{ $json["Email"] }}, firstName på{{ $json["First Name"] }}och acconuntId på{{ $json["Account ID"] }}.
Steg 6: testa och aktivera ert arbetsflöde
Kör ett manuellt test för att validera parallell förgrening och uppdateringar i Salesforce, och aktivera sedan för användning i produktion.
- Klicka på Execute Workflow för att köra Manual Launch Trigger.
- Bekräfta att Retrieve Sheet Rows skickar ut data till alla parallella grenar: Query Salesforce Accounts, Combine Existing Accounts, Existing Account Check, Retain New Companies, Deduplicate Company List, Join New Company Contacts och Upsert Salesforce Contact parallellt.
- Verifiera att befintliga kontakter uppdateras och att nya kontakter skapas med ett Account ID när matchande konton hittas eller skapas.
- När resultatet ser korrekt ut, växla arbetsflödet till Active för löpande användning.
Vanliga fallgropar
- Google Sheets-uppgifter kan löpa ut eller kräva specifika behörigheter. Om det skapar fel, kontrollera först ditt Google OAuth-samtycke och tokenstatus i n8n-uppgifter.
- Om du importerar ett större ark och använder batchar eller väntetider varierar processtiderna. Öka fördröjningar (eller batchstorlek) om efterföljande Salesforce-noder misslyckas eftersom poster inte har skapats ännu.
- Matchning på företagsnamn är hjälpsamt men inte perfekt. Om ditt ark har ”Acme” och ”Acme Group”, justera uppslagslogiken eller lägg till en andra identifierare, annars får du falska matchningar som kopplar kontakter fel.
Vanliga frågor
Cirka 15–30 minuter om dina Google- och Salesforce-konton är redo.
Nej. Du kopplar främst uppgifter och mappar fält i några noder.
Ja. n8n har ett gratis self-hosted-alternativ 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å ta med Salesforce-licenser i kalkylen (och eventuella betalda Google Workspace-policyer som din organisation kräver).
Två alternativ: n8n Cloud (hanterat, enklast att komma i gång) eller self-hosting på en VPS. För self-hosting är Hostinger VPS prisvärt och hanterar n8n bra. Self-hosting ger obegränsat antal körningar men kräver grundläggande serveradministration.
Ja, och det är en smart uppgradering om din data innehåller många snarlika namn. Byt uppslag av konto till att söka på Website (eller ett anpassat ”Domain”-fält) i stället för Company Name och behåll samma förgrening ”befintliga vs nya”. Vanliga anpassningar är att normalisera domäner (ta bort http/https), ignorera ”Inc/LLC” i namn och hoppa över rader när obligatoriska fält saknas.
Oftast är det en utgången token eller att Connected App saknar rätt scopes för åtkomst till konto och kontakt. Autentisera Salesforce-uppgiften på nytt i n8n och bekräfta sedan att användarprofilen kan läsa konton och skapa eller uppdatera kontakter. Om det bara misslyckas vid större körningar kan du också slå i API-gränser, så testa mindre batchar.
I n8n Cloud beror det på din månadsgräns för körningar; om du self-hostar beror det främst på din server och Salesforce API-gränser. I praktiken kör de flesta mindre team några hundra rader per import utan problem, särskilt om du delar upp i batchar. Om du importerar tusentals åt gången, planera för batchning och schemalägg körningar utanför kontorstid.
Ofta ja, eftersom dubblettskydd vanligtvis kräver förgreningslogik, sammanslagning av datapaths och noggrann hantering av ”skapa vs uppdatera”. n8n gör den typen av logik enklare att uttrycka, och self-hosting gör kostnaderna mer förutsägbara när du kör importer ofta. Zapier och Make kan fortfarande fungera om ditt behov är litet och dina matchningsregler är enkla. Men när du börjar hantera edge cases (stökiga namn, saknade fält, flera kontakter per företag) vill du ha mer kontroll. Prata med en automationsexpert om du vill ha hjälp att välja.
När detta väl rullar blir ditt kalkylark en pålitlig inmatning, inte en återkommande trigger för CRM-städning. Sätt upp det, testa på en liten batch och håll din Salesforce-data felfri utan att behöva vaka över varje import.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.