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 SinergiaCRM utan dubbletter

Rickard Andersson Partner, Nodenordic.se

Du samlar in anmälningar i ett kalkylark och lägger sedan eftermiddagen på att kopiera in dem i ett CRM. Och det värsta är när någon anmäler sig två gånger och du upptäcker det först när deltagarlistan redan är stökig.

Eventmarknadsförare brukar känna av det här först. En CRM-administratör som städar poster känner det också. Till och med en småföretagare som håller workshops behöver samma Sheets CRM-automation för att hålla anmälningar strukturerade och användbara.

Det här arbetsflödet bevakar nya rader i Google Sheets, kontrollerar SinergiaCRM via NIF för att förhindra dubbletter, registrerar personen och markerar raden som behandlad. Du får se hur det fungerar, vad du behöver och vad du kan justera.

Så fungerar den här automationslösningen

Här är hela arbetsflödet som du kommer att sätta upp:

n8n Workflow Template: Google Sheets till SinergiaCRM utan dubbletter

Varför det här spelar roll: dubblettanmälningar förstör ditt CRM i det tysta

Kalkylark är bra för att samla in anmälningar, men de är usla på att säkerställa ”en person, en post”. Folk skickar in två gånger. Någon i teamet importerar samma rader igen ”för säkerhets skull”. Sedan har ditt CRM två kontakter med samma e-post, en som saknar NIF, och båda är halvregistrerade för eventet. Du lägger tid på att slå ihop poster, dina deltagarsiffror blir fel och uppföljningsmail går till fel segment. Ärligt talat är det precis den typen av tråkig admin som tar bort momentum när du egentligen borde marknadsföra eventet.

Det byggs upp snabbt. Här är var det fallerar i verkligheten.

  • Någon måste bevaka arket och manuellt lägga in varje anmälan i SinergiaCRM, oftast i batchar i slutet av dagen.
  • Dubblettkontroller görs ”på känsla”, vilket innebär att några dubbletter slinker igenom vid varje event.
  • När kontakter redan finns måste du ändå skapa relationen och eventanmälan, och det är där manuella inmatningsfel uppstår.
  • Utan en tydlig status för ”Behandlad” tillbaka i arket kan du inte säkert se vad som är importerat och vad som inte är det.

Det du bygger: Google Sheets → SinergiaCRM anmälningar utan dubbletter

Det här arbetsflödet gör ditt Google Sheet till en pålitlig inmatningskö för SinergiaCRM. När en ny anmälningsrad dyker upp kontrollerar n8n ett par ”ska vi behandla det här?”-flaggor så att du behåller kontrollen. Sedan slår det upp personen i SinergiaCRM med hjälp av NIF-fältet (en mycket starkare identifierare än matchning på namn). Om kontakten redan finns hoppar arbetsflödet över att skapa kontakt och går direkt till att skapa rätt relation och eventanmälan. Om kontakten inte finns skapar det först kontakten och slutför sedan relationen och anmälan. Till sist skriver det tillbaka till Google Sheet och markerar raden som behandlad så att samma anmälan inte hanteras två gånger.

Arbetsflödet startar i Google Sheets och använder villkorskontroller för att filtrera bort rader du inte vill importera ännu. SinergiaCRM hanterar åtgärderna för ”kontakt vs. relation vs. eventanmälan”, och Google Sheets uppdateras som sanningskälla för vad som är klart.

Det du bygger

Förväntade resultat

Säg att du driver en webbinarieserie och får cirka 40 anmälningar i veckan i Google Sheets. Manuellt är det lätt att lägga kanske 2 minuter per anmälan på att söka i CRM:et, skapa eller uppdatera personen, registrera dem och sedan anteckna vad du gjorde. Det är runt 80 minuter per vecka, plus omarbete när dubbletter smyger sig in. Med den här automationslösningen skummar du mest igenom arket efter avvikande rader; det faktiska CRM-arbetet sker i bakgrunden och markeringen ”Behandlad” gör att du inte gör samma jobb två gånger.

Innan du börjar

  • n8n-instans (testa n8n Cloud gratis)
  • Alternativ för egen hosting om du föredrar det (Hostinger fungerar bra)
  • Google Sheets för att lagra anmälningar och behandlingsflaggor.
  • SinergiaCRM för att skapa kontakter, relationer och eventanmälningar.
  • OAuth-uppgifter (konfigureras i Google- och SinergiaCRM-kopplingarna).

Kunskapsnivå: Medel. Du skriver ingen kod, men du kommer att mappa fält, koppla OAuth-konton och bekräfta att dina kolumner i arket matchar arbetsflödet.

Vill du att någon bygger detta åt dig? Prata med en automationsexpert (gratis 15-minuters konsultation).

Steg för steg

En ny anmälningsrad dyker upp i Google Sheets. Google Sheets Trigger bevakar ditt valda kalkylark och arbetsblad efter nya rader som kommer in.

Din ”redo för CRM”-logik kontrolleras. Två snabba beslutspunkter tittar på radens styrkolumner (som ”To CRM” och om den redan är markerad ”Processed”). Det hindrar arbetsflödet från att importera utkast, testrader eller annat du vill hålla tillbaka.

SinergiaCRM söks via NIF, sedan körs rätt spår. Om en kontakt finns slår arbetsflödet ihop identifieraren, mappar nödvändiga fält och skapar sedan relationen och eventanmälan. Om det inte finns någon matchning skapar det först kontakten och skapar därefter relationen och anmälan via grenen ”Alt”.

Arket uppdateras så att du får en spårbar logg. När CRM-åtgärderna lyckas markerar arbetsflödet raden som behandlad i Google Sheets så att den inte hanteras igen.

Du kan enkelt ändra styrkolumnerna så att de passar din interna process, till exempel genom att byta ”To CRM” mot ”Approved”. Se hela implementationsguiden nedan för anpassningsalternativ.

Steg-för-steg-guide för implementation

Steg 1: Konfigurera Google Sheets-triggern

Konfigurera workflowet så att det lyssnar efter nya rader som läggs till i ert Google-kalkylark.

  1. Lägg till och öppna Sheets Row Watcher.
  2. Ställ in EventrowAdded.
  3. Ställ in Poll TimeseveryMinute.
  4. Välj Document som [YOUR_ID] och Sheet som Sheet1 (gid=0).
  5. Credential Required: Anslut era googleSheetsTriggerOAuth2Api-credentials.

Steg 2: Anslut Google Sheets för uppdateringar

Konfigurera noderna som skriver tillbaka till arket när bearbetningen är klar.

  1. Öppna Mark Sheet Processed och ställ in Operationupdate.
  2. Ställ in Document[YOUR_ID] och SheetSheet1 (gid=0).
  3. I Columns ställer ni in NIF{{ $('Contact Exists?').item.json.NIF }} och ProcessedYes, med Matching Columns inställt på NIF.
  4. Öppna Mark Sheet Processed 2 och ställ in Operationupdate med samma dokument och ark.
  5. I Columns ställer ni in NIF{{ $('Generate CRM Contact').item.json.attributes.stic_identification_number_c }} och ProcessedYes, med Matching Columns inställt på NIF.
  6. Credential Required: Anslut era googleSheetsOAuth2Api-credentials till båda uppdateringsnoderna.

Steg 3: Konfigurera filter, lookup och mappning

Validera rader, kontrollera dubbletter och normalisera indata innan CRM-åtgärderna körs.

  1. Konfigurera Check CRM Flag för att filtrera rader där To CRM är lika med {{ $json['To CRM'] }} med Right Value inställt på Yes.
  2. Konfigurera Verify Unprocessed så att endast rader där Processed är lika med {{ $json.Processed }} med Right Value inställt på No släpps igenom.
  3. I Lookup Contact NIF ställer ni in ModuleContacts och filtrerar stic_identification_number_c med {{ $json.NIF }}.
  4. I Merge CRM Identifier ställer ni in Modecombine, Join ModeenrichInput2 och Merge By Fieldsattributes.stic_identification_number_cNIF.
  5. I Map Input Fields lägger ni till tilldelningar med uttryck som First name {{ $json['First name'] }}, NIF {{ $json.NIF }}, Event ID {{ $json['Event ID'] }} och id {{ $json.id }}.

Verify Unprocessed skickar utdata parallellt till både Lookup Contact NIF och Merge CRM Identifier, vilket säkerställer att CRM-lookup och merge sker samtidigt.

Credential Required: Anslut era SinergiaCRMCredentials-credentials till Sinergia CRM-noderna (totalt 6), inklusive Lookup Contact NIF, Create CRM Relationship, Generate CRM Contact, Create Event Signup, Create Relationship Alt och Create Signup Alt.

Tips: Om ert ark använder ett annat värde för “To CRM” eller “Processed”, uppdatera villkoren i Check CRM Flag och Verify Unprocessed så att de matchar er exakta text.

Steg 4: Konfigurera CRM-åtgärder och logik för förgrening

Routa befintliga kontra nya kontakter och skapa relationer samt eventanmälningar därefter.

  1. I Contact Exists? ställer ni in villkoret så att det kontrollerar att id inte är tomt med {{ $json.id }}.
  2. För befintliga kontakter konfigurerar ni Create CRM Relationship med Module stic_Contacts_Relationships och Operation create, med { "start_date": "{{ $json['Relation date'] }}", "relationship_type": "{{ $json['Relation type'] }}", "stic_contacts_relationships_contactscontacts_ida": "{{ $json.id }}", "assigned_user_id": "2" }.
  3. Konfigurera därefter Create Event Signup med Module stic_Registrations och Operation create, med { "stic_registrations_contactscontacts_ida": "{{ $('Contact Exists?').item.json.id }}", "stic_registrations_stic_eventsstic_events_ida": "{{ $('Contact Exists?').item.json['Event ID'] }}", "participation_type": "attendant", "attendees": "1", "assigned_user_id": "2", "status": "confirmed", "registration_date": "{{ $('Contact Exists?').item.json['Registration date'] }}" }.
  4. För nya kontakter konfigurerar ni Generate CRM Contact med Module Contacts och Operation create, med { "first_name": "{{ $json['First name'] }}", "last_name": "{{ $json['Last name'] }}", "email1": "{{ $json.Email }}", "stic_identification_type_c": "nif", "stic_identification_number_c": "{{ $json.NIF }}" }.
  5. Ställ sedan in Create Relationship Alt med { "start_date": "{{ $('Contact Exists?').item.json['Relation date'] }}", "relationship_type": "{{ $('Contact Exists?').item.json['Relation type'] }}", "stic_contacts_relationships_contactscontacts_ida": "{{ $json.id }}", "assigned_user_id": "2" } och Create Signup Alt med { "stic_registrations_contactscontacts_ida": "{{ $('Generate CRM Contact').item.json.id }}", "stic_registrations_stic_eventsstic_events_ida": "{{ $('Generate CRM Contact').item.json.id }}", "participation_type": "attendant", "attendees": "1", "assigned_user_id": "2", "status": "confirmed", "registration_date": "{{ $('Contact Exists?').item.json['Relation date'] }}" }.

⚠️ Vanlig fallgrop: Create Signup Alt använder {{ $('Generate CRM Contact').item.json.id }} för både kontakt- och event-ID. Säkerställ att detta matchar ert CRM:s förväntade event-ID, eller ersätt event-ID-värdet med rätt fält.

Steg 5: Bekräfta workflow-layout och anteckningar

Säkerställ att flödet är korrekt kopplat och notera informationsnoden.

  1. Bekräfta körordningen: Sheets Row WatcherCheck CRM FlagVerify Unprocessed → parallellt Lookup Contact NIF och Merge CRM IdentifierMap Input FieldsContact Exists? → CRM-åtgärder → sheet-uppdateringar.
  2. Lämna Flowpast Branding som en referensnotering; den påverkar inte körningen.

Steg 6: Testa och aktivera ert workflow

Verifiera end-to-end-beteende med en exempelrad och aktivera sedan workflowet för produktion.

  1. Klicka på Execute Workflow och lägg till en ny rad i arket med To CRM inställt på Yes och Processed inställt på No.
  2. Kontrollera att raden uppdateras till Processed = Yes i antingen Mark Sheet Processed eller Mark Sheet Processed 2.
  3. Verifiera att CRM-poster skapades eller uppdaterades beroende på grenen i Contact Exists?.
  4. När allt fungerar, slå på workflowet till Active för kontinuerlig övervakning.
🔒

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

Få den kompletta implementeringsguiden + nedladdningsbar mall

Tips för felsökning

  • Google Sheets-inloggningar kan löpa ut eller tappa åtkomst om ägaren till kalkylarket ändras. Om det slutar fungera, kontrollera Google-anslutningen i n8n och bekräfta att kontot fortfarande kan öppna just det arket.
  • Om du använder Wait-noder eller extern rendering varierar bearbetningstiderna. Öka väntetiden om nedströms noder fallerar på tomma svar.
  • SinergiaCRM-uppslagningar beror på NIF-formatering. Extra mellanslag, skillnader i skiljetecken eller tomma NIF-celler kan ge ”hittas inte”-resultat, så normalisera NIF i arket och gör det obligatoriskt för behandling.

Snabba svar

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

Cirka 30 minuter om dina kolumner i Google Sheet är klara.

Krävs kodning för den här dedupliceringen av anmälningar?

Nej. Du kopplar konton och mappar fält en gång.

Är n8n gratis att använda för det här arbetsflödet för Sheets CRM-automation?

Ja. n8n har ett gratis alternativ för egen hosting och en gratis provperiod på n8n Cloud. Molnplaner börjar på 20 USD/månad för högre volymer. Du behöver också räkna med kostnader för åtkomst till SinergiaCRM om din plan begränsar API-användning.

Var kan jag hosta n8n för att köra den här automationslösningen?

Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller egen hosting på en VPS. För egen hosting är Hostinger VPS prisvärt och klarar n8n bra. Egen hosting ger obegränsade körningar men kräver grundläggande serverhantering.

Kan jag anpassa det här arbetsflödet för Sheets CRM-automation för andra användningsfall?

Ja, men behåll styrlogiken intakt. De flesta team anpassar kontrollerna i Google Sheets (kolumnerna ”To CRM” och ”Processed”) och mappningen i ”Map Input Fields” så att den matchar deras kalkylark. Du kan också ändra vad som händer efter ”Contact Exists?” så att en befintlig kontakt bara får en eventanmälan, inte en relationsuppdatering. Om du kör flera event är en vanlig justering att använda en annan kolumn för event-id (eller ett andra ark).

Varför misslyckas min SinergiaCRM-anslutning i det här arbetsflödet?

Oftast beror det på utgångna inloggningsuppgifter eller att community-noden inte finns tillgänglig i n8n Cloud. Det här arbetsflödet använder SinergiaCRM community-noder, som bara är kompatibla med egenhostad n8n, så bekräfta att du kör det på din egen instans. Dubbelkolla sedan behörigheterna för SinergiaCRM-kontot och säkerställ att uppslagsfältet för NIF finns och stavas på samma sätt som noden förväntar sig.

Vilka volymer kan det här arbetsflödet för Sheets CRM-automation hantera?

I praktiken fungerar dussintals till hundratals rader per dag bra för de flesta små team. Om du kör egen hosting finns ingen begränsning i antal körningar (det beror på din server), och rate limits i Google Sheets och CRM:ets API blir den verkliga flaskhalsen. Om du förväntar dig stora toppar, batcha intaget från arket eller kör arbetsflödet på schema så att det bearbetar i klumpar i stället för direkt per rad. Håll också koll på omförsök; upprepade fel kan skapa köer av körningar.

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

För just det här arbetsflödet är n8n oftast bättre eftersom förgreningslogiken (befintlig kontakt vs. ny kontakt) förblir lätt att läsa och inte blir dyr när du lägger till villkor. Egen hosting är också viktig här, eftersom SinergiaCRM är implementerat via community-noder och du kan vilja ha obegränsade körningar under anmälningstoppar. Zapier eller Make kan ändå fungera om du bygger om SinergiaCRM-anropen med generiska HTTP-moduler, men du kommer att lägga mer tid på att testa edge cases. Om din process är ”2 steg, ingen dedupe” känns de verktygen snabbare. Prata med en automationsexpert om du vill ha hjälp att välja.

När det här väl rullar slutar ditt kalkylark att vara en att-göra-lista och blir i stället en pålitlig inmatningspipeline. Arbetsflödet sköter det repetitiva CRM-arbetet så att du kan fokusera på själva eventet.

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

Få prisoffert redan idag!
Få prisoffert redan idag!

Berätta vad ni behöver hjälp med så hör vi av oss inom en arbetsdag!

Få prisoffert redan idag!
Få prisoffert redan idag!

Berätta vad ni behöver hjälp med så hör vi av oss inom en arbetsdag!

Launch login modal Launch register modal