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 + Postgres: felfria CRM-samtalsloggar

Rickard Andersson Partner, Nodenordic.se

Telefonen ringer, du tar emot reseförfrågan – och sedan börjar den röriga delen. Anteckningar på tre ställen, halvt ifyllda uppgifter och det där ”jag loggar det senare”-löftet som i tysthet blir till missade uppföljningar.

Resebyråägare känner av det först. Men en försäljningschef som jagar återuppringningar och en driftperson som städar kalkylblad stöter på samma huvudvärk. Den här Sheets Postgres-automationen fångar samtalet, validerar reseuppgifter och ser till att din pipeline inte läcker leads.

Det här arbetsflödet visar hur du går från ”hoppas vi skrev ner det” till strukturerade samtalsloggar, verifierad reseinfo och snabba svar som får dig att framstå som proffsig.

Så fungerar den här automationen

Hela n8n-arbetsflödet, från trigger till slutligt output:

n8n Workflow Template: Google Sheets + Postgres: felfria CRM-samtalsloggar

Problemet: samtalsanteckningar blir inte till korrekta bokningar

Ett samtal med en reseförfrågan har hög intent. Det är också kaotiskt. Folk pratar snabbt, datum ändras mitt i meningen och ”vi funderar på antingen Bali eller Vietnam” blir en vag notering du inte kan agera på. Sedan kommer adminjobbet: logga samtalet, reda ut om reseuppgifterna ens är rimliga, tilldela en ansvarig och komma ihåg att följa upp. Om något steg missas får du det värsta utfallet. Ett varmt lead kallnar för att ingen hade felfri data när det faktiskt gällde.

Det byggs snabbt på, särskilt när veckan är en dimma av samtal och WhatsApp-meddelanden.

  • Samtalsdetaljer skrivs in i Google Sheets senare, vilket gör att tidsstämplar, intent och kontext ofta blir fel.
  • Reseuppgifter valideras inte, så du lovar sådant du inte kan leverera (eller måste ringa upp igen bara för att reda ut grunderna).
  • Bokningar kan dubbelloggas när två personer registrerar samma uppringare i olika verktyg.
  • Uppföljning av leads bygger på minnet – och minnet är inget system.

Lösningen: logga varje samtal, verifiera resedata och styr nästa åtgärd

Det här n8n-arbetsflödet gör inkommande samtalsaktivitet till strukturerad CRM-data du kan lita på. När ett samtal kommer in (eller när ditt telefonsystem skickar en callback-händelse) sparar arbetsflödet uppringarens uppgifter i Google Sheets så att du direkt får en sökbar logg för uppföljning och rapportering. Parallellt kontrollerar det reseuppgifterna mot din Postgres-databas innan någon binder upp sig till fel destination, fel datum eller en arrangör som inte är tillgänglig. Om uppgifterna godkänns i valideringen får uppringaren automatiskt rätt arrangörsinformation eller bokningssvar. Om inte kan du routa förfrågan till en människa eller fånga saknade fält på ett strukturerat sätt.

Arbetsflödet börjar med en samtalstrigger, validerar sedan resan i Postgres och skickar därefter ett svar tillbaka till samtalssystemet. Separata spår hanterar bokningsinsamling (upsert av bokningspost, skicka bekräftelse) och lead-detektering (formatera leaddata, starta marknadsutskick via HTTP) så att du kan köra sälj och marknad utan att trampa varandra på tårna.

Vad du får: automation vs. resultat

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

Säg att du får cirka 12 förfrågningssamtal per dag. Manuellt tar det kanske 10 minuter att logga varje samtal och strukturera upp detaljerna, plus ytterligare 5 minuter för en rimlighetskontroll av datum, destination och arrangörers tillgänglighet. Det är ungefär 3 timmar per dag. Med det här arbetsflödet hamnar samtalsloggen i Google Sheets automatiskt och Postgres-valideringen körs i bakgrunden; du lägger bara tid på samtal som inte går igenom valideringen eller som kräver mänsklig bedömning. De flesta team får tillbaka runt 2 timmar om dagen när allt är intrimmat.

Det här behöver du

  • n8n-instans (prova n8n Cloud gratis)
  • Alternativ för self-hosting om du föredrar det (Hostinger fungerar bra)
  • Google Sheets för samtalsloggar och kalkylblad för leadspårning
  • Postgres för att validera resor och lagra bokningar
  • API för telefoni/telefonsystem (hämtas från din samtalsleverantörs dashboard)

Kunskapsnivå: Medel. Du kopplar konton, mappar fält och bekräftar att dina databastabeller/kolumner matchar det arbetsflödet förväntar sig.

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

Så fungerar det

Inkommande samtal eller callback startar flödet. Ditt telefonsystem anropar en n8n-webhook när någon ringer (eller när samtalet avslutas och skickar ett callback-payload). Den händelsen är ”single source of truth” för samtalsposten.

Reseuppgifter kontrolleras mot Postgres. Arbetsflödet frågar dina tabeller för arrangörer och resor för att bekräfta att grunderna följer dina regler, som destination, resedatum och eventuell tillgänglighetsstatus som du lagrar.

Bokningsdata fångas och uppdateras strukturerat. När uppringaren visar bokningsintent (ofta via röstinsamling som hanteras av din telefonilösning) upsertar n8n bokningsraden i Postgres så att återkommande uppringare inte råkar skapa en andra ”ny bokning”.

Allt loggas och besvaras automatiskt. Uppringarens data skrivs in i Google Sheets för snabb överblick, filtrering och överlämningar, och sedan svarar arbetsflödet tillbaka till samtalssystemet (arrangörsinformation, bokningssvar eller bekräftelse) så att loopen stängs.

Du kan enkelt justera valideringsreglerna så att de passar dina paket, partners och stopptider utifrån dina behov. Se hela implementationsguiden nedan för anpassningsalternativ.

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

Steg 1: konfigurera webhook-triggern

Det här arbetsflödet använder flera webhook-endpoints för att ta emot inkommande samtalshändelser och inmatning från uppringaren.

  1. Lägg till noden Incoming Call Trigger och ställ in HTTP Method till POST och Path till get-call.
  2. I Incoming Call Trigger ställer ni in Response Mode till responseNode så att svaret skickas från Return Organizer Details.
  3. Lägg till noden Capture Caller Input och ställ in HTTP Method till POST och Path till input-data.
  4. Ställ in Capture Caller Input till Response Mode responseNode så att Send Booking Reply kan svara.
  5. Lägg till noden Inbound Call Callback och ställ in HTTP Method till POST och Path till call.
  6. Låt Inbound Call Callback vara inställd på Response Mode responseNode så att Return System Acknowledgement kan svara.

Tips: När ni har sparat varje webhook, kopiera produktions-URL:en från n8n och konfigurera er telefonioperatör att POST:a till rätt endpoint.

Steg 2: anslut Google Sheets och lead-trigger

Nya leads från Google Sheets triggar utgående marknadsföringssamtal och samtalsutfall registreras tillbaka i Sheets.

  1. Lägg till New Lead Detector och ställ in Event till rowAdded.
  2. Ställ in Document ID till [YOUR_ID] och Sheet Name till [YOUR_ID] i New Lead Detector.
  3. Inloggningsuppgifter krävs: Anslut era googleSheetsTriggerOAuth2Api-inloggningsuppgifter till New Lead Detector.
  4. Lägg till Record Caller Data och ställ in Operation till appendOrUpdate.
  5. Ställ in Authentication till serviceAccount, Document ID till [YOUR_ID] och Sheet Name till gid=0 i Record Caller Data.
  6. Mappa kolumner med de medföljande uttrycken, till exempel call_notes till {{ $json.body.message.toolCalls[0].function.arguments.call_notes }} och phone_number till {{ $json.body.message.toolCalls[0].function.arguments.phone_number }}.
  7. Inloggningsuppgifter krävs: Anslut era googleApi-inloggningsuppgifter till Record Caller Data.

⚠️ Vanlig fallgrop: Säkerställ att ert Google Sheet innehåller samma kolumn-ID:n som anges i Record Caller Data (till exempel phone_number och call_notes), annars kommer upsert att misslyckas.

Steg 3: anslut Postgres-datalagret

Postgres används för att verifiera resdetaljer och upserta bokningsposter.

  1. Lägg till Verify Trip Details och ställ in Operation till select med Limit 150.
  2. Ställ in Schema till public och Table till [YOUR_ID] i Verify Trip Details.
  3. Inloggningsuppgifter krävs: Anslut era postgres-inloggningsuppgifter till Verify Trip Details.
  4. Lägg till Upsert Booking Entry och ställ in Operation till upsert med Mapping Mode autoMapInputData.
  5. Ställ in Schema till public och Table till [YOUR_ID] i Upsert Booking Entry.
  6. Inloggningsuppgifter krävs: Anslut era postgres-inloggningsuppgifter till Upsert Booking Entry.

⚠️ Vanlig fallgrop: Ersätt [YOUR_ID] med ett riktigt tabellnamn i båda Postgres-noderna för att undvika körningsfel.

Steg 4: konfigurera lead-förberedelse och utgående samtal

Nya leads transformeras och skickas till API:t för utgående samtal.

  1. Lägg till Prepare Lead Data och ställ in tilldelningen Phone_number till uttrycket =+{{ $json.Phone }}.
  2. Lägg till Launch Marketing Call och ställ in URL till https://api.vapi.ai/call med Method POST.
  3. Ställ in Send Body till true och Specify Body till json i Launch Marketing Call.
  4. Ställ in JSON Body till { "assistantId": "[YOUR_ID]", "phoneNumberId": "[YOUR_ID]", "customers": [ { "number":"{{ $json.Phone }}" } ] }.
  5. Inloggningsuppgifter krävs: Anslut era httpBearerAuth-inloggningsuppgifter till Launch Marketing Call.

⚠️ Vanlig fallgrop: Ersätt båda [YOUR_ID]-värdena i JSON-body med era faktiska VAPI-assistent- och telefonnummer-ID:n.

Steg 5: konfigurera webhook-svar

Varje webhook använder en response-nod för att bekräfta hanteringen tillbaka till det anropande systemet.

  1. Koppla Incoming Call Trigger till Verify Trip Details och därefter till Return Organizer Details.
  2. I Return Organizer Details ställer ni in Respond With till json och Response Body till { "results": [ { "toolCallId": "{{ $('Incoming Call Trigger').item.json.body.message.toolCalls[0].id }}", "result": "{{ $json.available }}" } ] }.
  3. Koppla Capture Caller Input till Upsert Booking Entry och därefter till Send Booking Reply.
  4. I Send Booking Reply ställer ni in Respond With till json och Response Body till { "results": [ { "toolCallId": "{{ $('Capture Caller Input').item.json.body.message.toolCalls[0].id }}", "result": "{{ $json.status }}" } ] }.
  5. Koppla Inbound Call Callback till Record Caller Data och därefter till Return System Acknowledgement för att avsluta webhook-svaret.

Tips: Exekveringsflödet är sekventiellt utan parallella grenar: varje webhook-väg slutförs innan dess response-nod skickar JSON tillbaka.

Steg 6: testa och aktivera ert arbetsflöde

Validera varje trigger-väg och bekräfta att data skrivs till Postgres och Google Sheets.

  1. Klicka på Execute Workflow och skicka en test-POST till Incoming Call Trigger för att bekräfta att Verify Trip Details och Return Organizer Details returnerar ett giltigt JSON-svar.
  2. Skicka en test-POST till Capture Caller Input och bekräfta att Upsert Booking Entry skriver till Postgres och att Send Booking Reply returnerar en status.
  3. Lägg till en ny rad i Google Sheet för att trigga New Lead Detector och bekräfta att Launch Marketing Call skickar HTTP-begäran.
  4. Skicka en test-payload till Inbound Call Callback och verifiera att Record Caller Data uppdaterar arket innan Return System Acknowledgement svarar.
  5. När alla tester passerar, växla arbetsflödet till Active för att aktivera produktionsbearbetning.
🔒

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

Få den kompletta implementeringsguiden + nedladdningsbar mall

Vanliga fallgropar

  • Google Sheets-autentisering kan löpa ut eller kräva specifika behörigheter. Om något slutar fungera, kontrollera först vyn Credentials i n8n och bekräfta att det anslutna Google-kontot fortfarande har redigeringsåtkomst till det aktuella kalkylarket.
  • Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om nedströmsnoder fallerar på tomma svar.
  • Postgres-frågor misslyckas tyst när kolumnnamn inte matchar. Dubbelkolla ditt tabellschema för fält som destination, resedatum och arrangörsstatus innan du skyller på arbetsflödet.

Vanliga frågor

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

Cirka 45 minuter om du har åtkomst till Sheets, Postgres och telefonsystemet på plats.

Behöver jag kunna koda för att automatisera samtalsloggning med Sheets Postgres?

Nej. Du kommer mest att mappa fält och klistra in inloggningsuppgifter i n8n. Den enda ”tekniska” delen är att bekräfta att kolumnerna i dina Postgres-tabeller matchar det du vill lagra.

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

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 volym. Du behöver också räkna in avgifter från din telefonileverantör och eventuella kostnader för röstigenkänning om din lösning använder det.

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

Två alternativ: n8n Cloud (hanterat, enklast) eller self-hosting på en VPS. För self-hosting är Hostinger VPS prisvärd och hanterar n8n bra. Self-hosting ger dig obegränsade körningar men kräver grundläggande serverhantering.

Kan jag anpassa det här arbetsflödet för Sheets Postgres-automation för flera filialer eller destinationer?

Ja, och det bör du. Du kan justera Postgres-valideringen i steget ”Verify Trip Details” för att kontrollera olika arrangörspooler per destination, datumintervall eller pakettyp. Vanliga anpassningar är att routa VIP-uppringare till ett specifikt team, lägga till en regel för minsta gruppstorlek och skriva till separata Google Sheets-flikar per filial.

Varför fungerar inte min Google Sheets-anslutning i det här arbetsflödet?

Oftast beror det på att Googles auktorisering har löpt ut eller att kalkylarket har flyttats till en annan plats i Drive. Anslut Google Sheets-credential igen i n8n och bekräfta sedan att exakt Sheet ID och fliknamn fortfarande matchar det som steget ”Record Caller Data” skriver till. Om det fungerar för vissa rader men inte andra kan du också stöta på skyddade intervall eller en ändrad rubrikrad.

Hur många samtal kan den här Sheets Postgres-automationen hantera?

I en typisk setup är hundratals samtal per dag realistiskt.

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

Ofta ja, eftersom det här arbetsflödet drar nytta av grenlogik, databasvalidering och att skriva till flera system utan att det blir en dyr explosion av tasks. n8n ger dig också self-hosting-alternativet, vilket blir viktigt när samtalsvolymen växer. Zapier eller Make kan fortfarande fungera bra för ett enkelt ”logga till Sheets”-flöde, men så fort du lägger till Postgres-kontroller och villkorade svar blir det lätt pilligt. Den rätta lösningen beror ärligt talat på hur strikta dina valideringsregler är och hur många spår du behöver. Prata med en automationsexpert om du är osäker på vad som passar.

Du slutar tappa leads på grund av rörig administration, och teamet slipper gissa vad som hände i samtalet. Sätt upp det en gång, och låt sedan arbetsflödet sköta loggning och validering medan du fokuserar på att stänga bokningar.

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