Behöver ert företag hjälp med att implementera AI? Kontakta oss och få prisoffert här →
AI Skolan
januari 22, 2026

Postgres till Google Sheets, leverera rensade leads

Rickard Andersson Partner, Nodenordic.se

Din lead-tracker är bara ”pålitlig” tills någon glömmer att kopiera en rad, klistrar in fel e-postadress eller exporterar databasen med ett filter som i tysthet tappar halva veckan. Sedan frågar sälj varför siffrorna inte stämmer, marknad frågar vad som räknas som ”kvalificerad”, och du hamnar med att granska kalkylblad i stället för att driva pipeline.

Den här Postgres Sheets sync träffar marketing ops först, men säljchefer och grundare känner av den också. Du får ett Google Sheet som teamet faktiskt kan lita på, med interna domäner blockerade och kvalificerade leads levererade automatiskt.

Nedan ser du hur flödet flyttar ett nytt lead från Postgres till Google Sheets, var filtret ligger och vad du ska justera för att det ska matcha er process.

Så här fungerar automatiseringen

Se hur detta löser problemet:

n8n Workflow Template: Postgres till Google Sheets, leverera rensade leads

Utmaningen: att hålla lead-trackers korrekta (utan att behöva passa dem)

Lead-data tenderar att ligga där den skapas (i din appdatabas), men teamet jobbar i Google Sheets. Så du exporterar CSV:er, klistrar in rader, tar ”snabbt” bort interna och test-e-postadresser och hoppas att ingen sorterar arket på ett sätt som skapar fel i nästa import. Det handlar inte bara om tid. Det är den ständiga lågintensiva stressen av att inte veta om arket är aktuellt, eller om någon plockade förra tisdagens export och kallade det en rapport. En missad uppdatering kan ge ringar på vattnet: felaktiga uppföljningar, obekväma interna möten och kampanjer som optimeras mot fel lista.

Det eskalerar snabbt. Här är var det brukar fallera.

  • Manuella exporter hoppas över när veckan blir stressig, så din ”live”-tracker är alltid lite inaktuell.
  • Interna domäner och testleads smyger sig in, vilket gör att sälj slösar tid och att mätetal blåses upp.
  • Kopiera/klistra skapar dubbletter och formateringsdrift, och då kan du inte deduplicera eller segmentera pålitligt.
  • När siffrorna inte matchar Postgres tappar du förtroendet för arket och slutar använda det.

Lösningen: lead-leverans från Postgres till Sheets med domänfiltrering

Det här flödet bevakar din Postgres-databas efter nya kvalificerade leads och pushar dem automatiskt till ett Google Sheet. När en ny rad (eller en ändringshändelse) kommer in från Postgres kör flödet ett litet anpassat skript för att forma datan så som arket förväntar sig, och applicerar sedan ett filter för e-postdomäner så att interna adresser aldrig hamnar i din rapporterings-tracker. Om leadet går igenom filtret skrivs det till Google Sheets, vilket ger teamet en gemensam vy som hålls uppdaterad utan att någon exporterar, klistrar in eller rensar. Och om du vill testa innan du slår på det finns även en manuell startväg så att du kan köra ett exempel-lead och bekräfta att allt hamnar rätt.

Flödet startar antingen via en Postgres change listener (för synk i realtid) eller via en manuell trigger (för test). Ett anpassat skript formaterar och normaliserar lead-fälten, därefter avgör ett domänfilter vad som är tillåtet. Till sist läggs det godkända leadet till i ditt Google Sheet så att resten av teamet ser det direkt.

Vad som förändras: före vs. efter

Effekt i verkligheten

Säg att teamet går igenom nya leads två gånger per dag, och att du vanligtvis exporterar från Postgres, filtrerar domäner och sedan klistrar in i Sheets. Det är kanske 15 minuter per uppdatering (export, filtrering, klistra in, deduplicera), alltså runt 30 minuter per dag, eller ungefär 2–3 timmar i veckan. Med det här flödet blir ”arbetet” en snabb engångssetup, och sedan landar leads i Sheets automatiskt när de skapas. Ni granskar fortfarande listan, men ni slutar göra grovjobbet som skapade den.

Krav

  • n8n-instans (prova n8n Cloud gratis)
  • Alternativ för self-hosting om du föredrar det (Hostinger fungerar bra)
  • Postgres som källdatabas för leads.
  • Google Sheets för att lagra och dela de godkända leadsen.
  • Google-inloggning/credentials (skapa i Google Cloud Console och anslut i n8n).

Kunskapsnivå: Nybörjare. Du kopplar konton, väljer ett kalkylark och justerar ett enkelt filter/skript.

Behöver du hjälp att implementera detta? Prata med en automationsexpert (gratis 15-minuters konsultation).

Flödet steg för steg

Ett nytt lead hamnar i Postgres (eller så kör du ett test). Postgres change listener väntar på en ny kvalificerad lead-post, medan manuell start finns där när du vill validera mappningen utan att röra produktion.

Leadet struktureras och korrektformateras. Ett anpassat skript standardiserar fälten du bryr dig om (som e-post, namn, företag och tidsstämplar) så att Google Sheet alltid får konsekventa kolumner.

Filtrering av e-postdomän avgör vad som räknas. Filtret blockerar interna domäner och andra adresser du inte vill ha i din tracker. Här sätter du reglerna för ”riktiga leads” så att rapporteringen inte blir rörig senare.

Godkända leads hamnar i Google Sheets. Flödet skriver den strukturerade lead-raden till ditt målark, så att sälj och marknad ser samma uppdaterade lista utan att någon exporterar data.

Du kan enkelt ändra domänreglerna så att de matchar teamets definitioner. Se hela implementationsguiden nedan för anpassningsalternativ.

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

Steg 1: Konfigurera Postgres-triggern

Konfigurera databaslyssnaren så att arbetsflödet reagerar på användaruppdateringar och skickar data vidare till filtreringslogiken.

  1. Lägg till och öppna Postgres Change Listener.
  2. Ställ in Fires OnUPDATE.
  3. Välj Schema som computed och Table Name som users.
  4. Credential Required: Anslut era postgres-inloggningsuppgifter.
  5. Koppla Postgres Change Listener till Email Domain Filter.

Tips: Triggern är inaktiverad som standard i JSON-filen. Se till att ni aktiverar Postgres Change Listener innan produktionsanvändning.

Steg 2: Anslut Google Sheets

Auktorisera åtkomst till Google Sheets så att arbetsflödet kan lägga till eller uppdatera lead-poster.

  1. Öppna Update Google Spreadsheet.
  2. Credential Required: Anslut era googleSheetsOAuth2Api-inloggningsuppgifter.
  3. Ställ in Document ID till [YOUR_ID] och Sheet Name till [YOUR_ID].

⚠️ Vanlig fallgrop: Ersätt [YOUR_ID] med era faktiska dokument- och blad-ID:n för Google Sheet, annars kommer noden inte att kunna hitta kalkylarket.

Steg 3: Ställ in bearbetningslogiken

Konfigurera logiken för datagenerering och filtrering som används för manuella tester och liveuppdateringar från databasen.

  1. Öppna Manual Execution Start och använd den för manuella tester.
  2. I Custom Script, behåll JavaScript Code som den är, och ersätt platshållarmailen i "email": "[YOUR_EMAIL]" med en riktig adress för testning.
  3. Koppla Manual Execution StartCustom ScriptEmail Domain Filter.
  4. I Email Domain Filter ställer ni in strängvillkoret till Value 1 ={{ $json.email }}, Operation notContains och Value 2 n8n.io.

⚠️ Vanlig fallgrop: Om er testmejl innehåller n8n.io kommer den att filtreras bort och når inte kalkylarket.

Steg 4: Konfigurera utdata till Google Sheets

Mappa fält från inkommande data till ert kalkylark och definiera hur uppdateringar matchas.

  1. I Update Google Spreadsheet ställer ni in Operation till appendOrUpdate.
  2. Under Columns mappar ni id till ={{ $json.id }}, email till ={{ $json.email }} och username till ={{ $json.username }}.
  3. Ställ in Matching Columns till id så att uppdateringar tillämpas på rätt rad.
  4. Ställ in Cell Format till USER_ENTERED.

Steg 5: Testa och aktivera ert arbetsflöde

Validera arbetsflödet med manuell data och aktivera sedan databastriggern för liveuppdateringar.

  1. Klicka på Execute Workflow och använd Manual Execution Start för att generera en testpost via Custom Script.
  2. Bekräfta att posten passerar Email Domain Filter (det bör den göra om mejladressen inte innehåller n8n.io).
  3. Kontrollera ert Google Sheet för att verifiera att Update Google Spreadsheet lade till eller uppdaterade raden med de mappade fälten.
  4. Aktivera Postgres Change Listener och växla arbetsflödet till Active för produktionsanvändning.
🔒

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

Få den kompletta implementeringsguiden + nedladdningsbar mall

Se upp med

  • Google Sheets-credentials kan löpa ut eller sakna åtkomst till målfilen. Om uppdateringar slutar, kontrollera n8n-anslutningen för credentials och bekräfta att Google-kontot kan redigera just det arket.
  • Om du förlitar dig på en Postgres change listener spelar databasrättigheter roll. När inget triggas, verifiera att Postgres-användaren kan läsa ändringar (och att nätverk/brandvägg tillåter anslutningen).
  • ”Custom Script” är kraftfullt, men små fältändringar kan slå sönder din mappning. Om appen lägger till eller byter namn på en kolumn, gå tillbaka till skriptet och rubrikerna i arket så att du inte skriver tomma celler.

Vanliga frågor

Hur snabbt kan jag implementera den här Postgres Sheets sync-automatiseringen?

Oftast på cirka 30 minuter om din Postgres- och Google-åtkomst redan är på plats.

Kan icke-tekniska team implementera den här Postgres Sheets sync?

Ja, men du vill ha en person som är bekväm med att redigera ett kort skript och testa det. Det mesta av uppsättningen är att koppla konton och välja rätt kalkylark.

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

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å ta hänsyn till Google API-användning, som normalt är försumbar för enkla skrivningar till Sheets.

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 self-hosting på en VPS. För self-hosting är Hostinger VPS prisvärt och klarar n8n bra. Self-hosting ger dig obegränsade körningar men kräver grundläggande serverhantering.

Hur anpassar jag den här Postgres Sheets sync-lösningen till mina specifika utmaningar?

Du kan anpassa ”Custom Script” så att det matchar dina exakta kolumner i arket, till exempel genom att slå ihop för-/efternamn eller normalisera UTM-fält. ”Email Domain Filter” är den andra stora spaken; lägg till era interna domäner, blockera domäner för engångsmejl eller tillåt bara specifika företagsdomäner om ni kör ABM. Om du senare bestämmer att Sheets bara ska vara en staging-yta behåller du samma filter och byter ut steget ”Update Google Spreadsheet” mot en annan destination.

Varför misslyckas min Google Sheets-anslutning i det här Postgres Sheets sync-flödet?

Oftast handlar det om behörigheter. Bekräfta att det anslutna Google-kontot kan redigera exakt det kalkylarket och att du inte flyttade filen till en begränsad Drive. Om det fungerade en gång och sedan slutade, återanslut Google Sheets-credential i n8n för att uppdatera åtkomsten.

Vilken kapacitet har den här Postgres Sheets sync-lösningen?

För de flesta små team hanterar den utan problem hundratals leads per dag.

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

Ofta, ja – särskilt om du vill ha Postgres-triggern och lite anpassad logik utan att betala extra för varje förgreningsregel. n8n ger också en self-hosting-väg, vilket är bra när volymen växer och du vill slippa överraskningar med prissättning per task. Zapier eller Make kan fortfarande passa om flödet är väldigt enkelt och du föredrar ett helt guidat gränssnitt. Den större frågan är var du vill att ”sanningen” ska ligga: om det är i din databas passar n8n naturligt. Prata med en automationsexpert om du vill ha en snabb rekommendation baserad på din stack.

När det här väl rullar slutar arket att vara en skör artefakt och blir en livevy som teamet kan lita på. Sätt upp det, gör en rimlighetskontroll och gå vidare till arbete som faktiskt ökar intäkterna.

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