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
flowchart LR
subgraph sg0["Google Sheets Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "Google Sheets Trigger", pos: "b", h: 48 }
n1@{ icon: "mdi:cog", form: "rounded", label: "SinergiaCRM: Create Contact", pos: "b", h: 48 }
n2@{ icon: "mdi:cog", form: "rounded", label: "SinergiaCRM: Create Relation..", pos: "b", h: 48 }
n3@{ icon: "mdi:cog", form: "rounded", label: "SinergiaCRM: Create Registra..", pos: "b", h: 48 }
n4@{ icon: "mdi:database", form: "rounded", label: "Google Sheets: Mark Procesad..", pos: "b", h: 48 }
n5@{ icon: "mdi:swap-horizontal", form: "rounded", label: "IF: to CRM == Yes", pos: "b", h: 48 }
n6@{ icon: "mdi:swap-horizontal", form: "rounded", label: "IF: Not processed == No", pos: "b", h: 48 }
n7@{ icon: "mdi:swap-horizontal", form: "rounded", label: "IF: Person exist", pos: "b", h: 48 }
n8@{ icon: "mdi:cog", form: "rounded", label: "Find person by NIF", pos: "b", h: 48 }
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/merge.svg' width='40' height='40' /></div><br/>Combinar ID del CRM"]
n10@{ icon: "mdi:cog", form: "rounded", label: "SinergiaCRM: Create Relation..", pos: "b", h: 48 }
n11@{ icon: "mdi:cog", form: "rounded", label: "SinergiaCRM: Create Registra..", pos: "b", h: 48 }
n12@{ icon: "mdi:database", form: "rounded", label: "Google Sheets: Mark Procesad..", pos: "b", h: 48 }
n13@{ icon: "mdi:swap-vertical", form: "rounded", label: "Edit Fields", pos: "b", h: 48 }
n13 --> n7
n7 --> n2
n7 --> n1
n5 --> n6
n8 --> n9
n9 --> n13
n0 --> n5
n6 --> n8
n6 --> n9
n1 --> n10
n3 --> n4
n2 --> n3
n11 --> n12
n10 --> n11
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 n5,n6,n7 decision
class n4,n12 database
classDef customIcon fill:none,stroke:none
class n9 customIcon
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
| Vad som automatiseras | Vad du uppnår |
|---|---|
|
|
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.
- Lägg till och öppna Sheets Row Watcher.
- Ställ in Event på
rowAdded. - Ställ in Poll Times på
everyMinute. - Välj Document som
[YOUR_ID]och Sheet somSheet1 (gid=0). - 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.
- Öppna Mark Sheet Processed och ställ in Operation på
update. - Ställ in Document på
[YOUR_ID]och Sheet påSheet1 (gid=0). - I Columns ställer ni in NIF på
{{ $('Contact Exists?').item.json.NIF }}och Processed påYes, med Matching Columns inställt påNIF. - Öppna Mark Sheet Processed 2 och ställ in Operation på
updatemed samma dokument och ark. - I Columns ställer ni in NIF på
{{ $('Generate CRM Contact').item.json.attributes.stic_identification_number_c }}och Processed påYes, med Matching Columns inställt påNIF. - 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.
- 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. - Konfigurera Verify Unprocessed så att endast rader där Processed är lika med
{{ $json.Processed }}med Right Value inställt påNosläpps igenom. - I Lookup Contact NIF ställer ni in Module på
Contactsoch filtrerar stic_identification_number_c med{{ $json.NIF }}. - I Merge CRM Identifier ställer ni in Mode på
combine, Join Mode påenrichInput2och Merge By Fields påattributes.stic_identification_number_c↔NIF. - 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.
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.
- I Contact Exists? ställer ni in villkoret så att det kontrollerar att id inte är tomt med
{{ $json.id }}. - För befintliga kontakter konfigurerar ni Create CRM Relationship med Module
stic_Contacts_Relationshipsoch Operationcreate, med{ "start_date": "{{ $json['Relation date'] }}", "relationship_type": "{{ $json['Relation type'] }}", "stic_contacts_relationships_contactscontacts_ida": "{{ $json.id }}", "assigned_user_id": "2" }. - Konfigurera därefter Create Event Signup med Module
stic_Registrationsoch Operationcreate, 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'] }}" }. - För nya kontakter konfigurerar ni Generate CRM Contact med Module
Contactsoch Operationcreate, 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 }}" }. - 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'] }}" }.
{{ $('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.
- Bekräfta körordningen: Sheets Row Watcher → Check CRM Flag → Verify Unprocessed → parallellt Lookup Contact NIF och Merge CRM Identifier → Map Input Fields → Contact Exists? → CRM-åtgärder → sheet-uppdateringar.
- 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.
- Klicka på Execute Workflow och lägg till en ny rad i arket med To CRM inställt på
Yesoch Processed inställt påNo. - Kontrollera att raden uppdateras till Processed =
Yesi antingen Mark Sheet Processed eller Mark Sheet Processed 2. - Verifiera att CRM-poster skapades eller uppdaterades beroende på grenen i Contact Exists?.
- När allt fungerar, slå på workflowet till Active för kontinuerlig övervakning.
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
Cirka 30 minuter om dina kolumner i Google Sheet är klara.
Nej. Du kopplar konton och mappar fält en gång.
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.
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.
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).
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.
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.
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.