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

Postgres + Gmail: påminnelser om förfallna fakturor

Rickard Andersson Partner, Nodenordic.se

Förfallna fakturor är irriterande av en anledning: du upptäcker dem oftast först när det redan är ett problem. Då sitter du och gräver i en databas, skriver ”ville bara kolla läget”-mejl och hoppas att du inte råkar skicka samma påminnelse två gånger.

Den här Postgres Gmail-automationen träffar ekonomiansvariga först, men byråägare och ops-chefer känner av den också. Du får konsekventa uppföljningar, tydliga loggar och en daglig ögonblicksbild av vad som är utestående – utan att behöva sitta och passa processen.

Nedan ser du vad arbetsflödet gör, hur det beter sig i vardagen och vad du kan justera så att det matchar din påminnelsestil och dina eskaleringsregler.

Så fungerar den här automationen

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

n8n Workflow Template: Postgres + Gmail: påminnelser om förfallna fakturor

Problemet: förfallna uppföljningar som faller mellan stolarna

Att jaga förfallna fakturor är enkelt arbete, men det är aldrig litet. Du behöver ta fram en lista med obetalda fakturor, sortera på förfallodatum, avgöra vem som ska få en påminnelse i dag och sedan skriva ett mejl som är tydligt utan att låta robotiskt. Gör du det för några kunder så tar det plötsligt upp större delen av förmiddagen. Och eftersom det är manuellt blir felen förutsägbara: påminnelser går iväg för sent, fel person får mejl eller så loggas ingenting – vilket gör att du nästa vecka får gissa vad som hände.

Friktionen byggs på. En missad påminnelse går att rädda. En månad av inkonsekvent uppföljning blir en dimma i kassaflödet.

  • Någon måste komma ihåg att köra frågan för ”obetalda fakturor” och tolka resultatet på samma sätt varje gång.
  • Tidpunkterna för påminnelser blir inkonsekventa, så kunder lär sig att de kan betala sent utan konsekvenser.
  • Att skicka mejl från en personlig inkorg förstör spårbarheten, vilket gör att tvister tar längre tid att reda ut än nödvändigt.
  • Ekonomiuppdateringar finns på för många ställen, så status och betalningsdatum glider ur synk.

Lösningen: dagliga förfallokontroller + AI-skrivna Gmail-påminnelser + loggning

Det här arbetsflödet kör en daglig kontroll kl. 09:00, hämtar dina öppna fakturor från Postgres och isolerar de som är förfallna baserat på förfallodatum och status. Därefter tillämpar det dina påminnelseregler (till exempel ”påminn inte två gånger inom två dagar” eller ”skärp tonen efter en vecka”), bygger en prompt och ber en AI-agent att skriva ett personligt mejl med rätt fakturadetaljer. Mejlet formateras som ett snyggt HTML-meddelande och skickas automatiskt. Varje utskick registreras tillbaka i Postgres och en aktivitetslogg sparas för senare granskning. Dessutom får ekonomiteamet ett dagligt sammanfattningsmejl så ingen behöver fråga: ”Vad är utestående i dag?”

En separat gren lyssnar efter betalningsbekräftelser via en webhook. När en betalning kommer in markerar arbetsflödet fakturan som betald i Postgres och skickar ett kvitto till kunden, så att både bokföring och kommunikationen ligger i linje.

Det du får: automation vs. resultat

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

Säg att du har 40 öppna fakturor i Postgres och att ungefär 10 blir förfallna någon gång under en normal vecka. Manuell hantering: du kanske lägger 10 minuter på att hitta rätt fakturor, sedan ytterligare 10 minuter på att skriva och skicka varje påminnelse, plus några minuter på att logga. Det blir ungefär 3 timmar över veckan. Med det här arbetsflödet lägger du kanske 10 minuter i början på att sätta regler och prompt, sedan är den dagliga körningen och loggningen automatisk och ekonomi läser bara sammanfattningen.

Det här behöver du

  • n8n-instans (testa n8n Cloud gratis)
  • Självhosting om du föredrar det (Hostinger fungerar bra)
  • Postgres för att lagra fakturor och påminnelseloggar.
  • Gmail (eller SMTP för e-postutskick) för att skicka påminnelser och kvitton.
  • OpenAI API-nyckel (hämtas i din OpenAI-dashboard) för att skriva utkast till påminnelse- och bekräftelsemejl.

Kunskapsnivå: Medel. Du kopplar upp inloggningar, mappar några fält (som förfallodatum och kundens e-post) och testar med exempelfakturor.

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

Så fungerar det

Ett dagligt schema startar allt. Kl. 09:00 kör n8n automatiskt och börjar med att fråga Postgres efter öppna fakturor (obetald status, inget betalningsdatum, den typen av kriterier).

Fakturor sorteras till ”kräver åtgärd” eller ”inte än”. Ett förfallofilter kontrollerar förfallodatum, och sedan avgör ett steg med påminnelseregler om en faktura ska kontaktas i dag eller hoppas över eftersom du redan följt upp nyligen.

AI skriver utkastet, sedan skickar arbetsflödet. n8n sätter ihop en prompt med kundnamn, faktura-ID, belopp och förfallodatum, AI-agenten skriver mejltexten och ett mallsteg formaterar det som ett HTML-mejl innan Gmail skickar.

Allt registreras och sammanfattas. Efter utskick uppdaterar arbetsflödet Postgres så att du ser status som ”påminnelse skickad”, sparar en aktivitetsrad för spårbarhet och mejlar en daglig sammanfattningsrapport till ekonomiteamet.

Du kan enkelt ändra reglerna för påminnelsetiming så att de matchar din policy, eller byta mejlstil till mer formell (eller mer direkt) beroende på behov. Se hela implementeringsguiden nedan för anpassningsalternativ.

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

Steg 1: Konfigurera den schemalagda triggern

Ställ in det dagliga schemat som initierar hämtning av fakturor och hantering av påminnelser.

  1. Lägg till noden Scheduled Daily Trigger.
  2. Ställ in schemaregeln till cron-uttrycket 0 9 * * * för kl. 09:00 varje dag.
  3. Anslut Scheduled Daily Trigger till Retrieve Open Invoices.

Steg 2: Anslut Postgres för fakturadata

Hämta aktuella fakturor och tillämpa filtret som endast släpper igenom obetalda poster som förfaller snart eller redan är förfallna.

  1. Öppna Retrieve Open Invoices och ställ in Operation till executeQuery.
  2. Ställ in Query till:
    SELECT invoice_id, client_name, client_email, invoice_number, invoice_amount, currency, issue_date, due_date, payment_status, days_overdue, last_reminder_sent FROM invoices WHERE payment_status != 'paid' AND due_date <= CURRENT_DATE + INTERVAL '7 days' ORDER BY due_date ASC;
  3. Autentiseringsuppgifter krävs: Anslut era postgres-uppgifter i Retrieve Open Invoices.
  4. Konfigurera Overdue Invoice Filter med följande villkor:
    leftValue ={{ $json.payment_status }} är lika med unpaid
    leftValue ={{ $json.days_overdue }} är större än eller lika med 0
  5. Anslut Retrieve Open InvoicesOverdue Invoice FilterCompute Reminder Rules.

⚠️ Vanlig fallgrop: Säkerställ att er fakturatabell använder samma kolumnnamn som refereras i SQL-frågan och filtervillkoren (t.ex. payment_status, days_overdue).

Steg 3: Sätt upp påminnelselogik och AI-utkast

Avgör typ av påminnelse och brådskenivå, och skapa sedan ett anpassat e-postutkast med hjälp av AI-agenten.

  1. I Compute Reminder Rules behåller ni den medföljande JavaScript-koden som beräknar reminderType, urgencyLevel och daysOverdue.
  2. Konfigurera Compose AI Prompt med värdet för aiPrompt som innehåller fakturadetaljer och formateringsinstruktioner. Säkerställ att värdet använder de inbäddade uttrycken som {{ $json.client_name }} och {{ $json.invoice_number }}.
  3. Anslut Compute Reminder RulesCompose AI PromptAI Email Draft Agent.
  4. I OpenAI Draft Model ställer ni in Model till =gpt-4o-mini och behåller alternativen maxTokens och temperature enligt konfigurationen.
  5. Autentiseringsuppgifter krävs: Anslut era openAiApi-uppgifter i OpenAI Draft Model.
  6. Säkerställ att OpenAI Draft Model är ansluten som språkmodell för AI Email Draft Agent (autentiseringsuppgifter ska läggas till i OpenAI Draft Model, inte i agentnoden).

Steg 4: Rendera och skicka påminnelsemejl

Konvertera AI-utdata till ett formaterat HTML-mejl och skicka påminnelser.

  1. I Render Email Template behåller ni JavaScript-koden som extraherar ämnesraden, bygger HTML-innehållet och outputar emailSubject och emailBody.
  2. Anslut AI Email Draft AgentRender Email TemplateDispatch Reminder Email.
  3. I Dispatch Reminder Email ställer ni in Subject till ={{ $json.emailSubject }} och sätter To Email samt From Email till [YOUR_EMAIL].
  4. Autentiseringsuppgifter krävs: Anslut era smtp-uppgifter i Dispatch Reminder Email.

⚠️ Vanlig fallgrop: Ersätt [YOUR_EMAIL] med riktiga adresser innan ni aktiverar, annars misslyckas e-postutskicken utan tydlig felindikering.

Steg 5: Logga påminnelsestatus och skicka daglig sammanfattning

Uppdatera fakturastatus, spara aktivitetsloggar och mejla en daglig ekonomisammanfattning.

  1. Konfigurera Record Reminder Status med uppdateringsfrågan som använder uttryck som {{ $json.reminderType }} och {{ $json.invoice_id }}.
  2. Autentiseringsuppgifter krävs: Anslut era postgres-uppgifter i Record Reminder Status.
  3. I Build Activity Entry behåller ni objektet logEntry som använder uttryck såsom {{ $now.toISO() }} och {{ $json.daysOverdue }}.
  4. I Store Activity Log ställer ni in Schema till public och Table till invoice_activity_log med Mapping Mode inställt på autoMapInputData.
  5. Autentiseringsuppgifter krävs: Anslut era postgres-uppgifter i Store Activity Log.
  6. Anslut Record Reminder StatusBuild Activity EntryStore Activity LogAssemble Daily SummaryEmail Finance Summary.
  7. I Email Finance Summary ställer ni in Subject till =Daily Invoice Reminder Report - {{ $now.toFormat('yyyy-MM-dd') }} och sätter To Email/From Email till [YOUR_EMAIL].
  8. Autentiseringsuppgifter krävs: Anslut era smtp-uppgifter i Email Finance Summary.

Steg 6: Konfigurera webbhook-sökvägen för betalning (parallellt svar och kvitto)

Fånga betalningsbekräftelser och uppdatera fakturor, samtidigt som ni svarar anroparen och skickar ett kvitto parallellt.

  1. I Incoming Payment Webhook ställer ni in Path till invoice-paid, HTTP Method till POST och Response Mode till responseNode.
  2. Anslut Incoming Payment WebhookMark Invoice Paid.
  3. I Mark Invoice Paid ställer ni in Query till uppdateringssatsen som använder uttryck som {{ $json.body.amount }}, {{ $json.body.payment_method }} och {{ $json.body.invoice_number }}.
  4. Autentiseringsuppgifter krävs: Anslut era postgres-uppgifter i Mark Invoice Paid.
  5. Mark Invoice Paid skickar utdata till både Return Payment Response och Send Payment Receipt parallellt.
  6. I Return Payment Response behåller ni JSON-Response Body med uttryck som {{ $json.invoice_number }} och {{ $json.payment_amount }}.
  7. I Send Payment Receipt ställer ni in Subject till =Payment Confirmation - Invoice {{ $json.invoice_number }} och sätter To Email/From Email till [YOUR_EMAIL].
  8. Autentiseringsuppgifter krävs: Anslut era smtp-uppgifter i Send Payment Receipt.

Steg 7: Testa och aktivera ert workflow

Verifiera både påminnelseflödet och betalningsflödet innan ni slår på automatiseringen.

  1. Klicka på Execute Workflow för att testa den schemalagda påminnelsevägen från Scheduled Daily Trigger till Email Finance Summary.
  2. Bekräfta att Dispatch Reminder Email skickar mejl och att Record Reminder Status uppdaterar tabellen invoices.
  3. Skicka en POST-begäran till Incoming Payment Webhook med en payload som innehåller invoice_number, amount och payment_method för att testa betalningsvägen.
  4. Verifiera att Return Payment Response returnerar en JSON med lyckat resultat och att Send Payment Receipt mejlar kvittot parallellt.
  5. Växla workflowet till Active när testerna är godkända, så att påminnelser körs dagligen enligt 0 9 * * *.
🔒

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

Få den kompletta implementeringsguiden + nedladdningsbar mall

Vanliga fallgropar

  • Postgres-inloggningar kan löpa ut eller peka mot fel databas. Om något skapar fel, kontrollera n8n-uppgiften som används av ”Retrieve Open Invoices” och bekräfta att den kan läsa och uppdatera fakturatabellen.
  • Om du använder Wait-noder eller extern rendering varierar handläggningstiderna. Öka väntetiden om noder längre fram fallerar på tomma svar.
  • Standardprompter i AI-noder är generiska. Lägg in er tonalitet tidigt, annars kommer du redigera utdata i all evighet.

Vanliga frågor

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

Cirka 30–60 minuter om din Postgres-tabell och Gmail-åtkomst är redo.

Behöver jag kunna koda för att automatisera uppföljning av förfallna fakturor?

Nej. Du kopplar främst konton och mappar fält som förfallodatum, belopp och kundens e-post.

Är n8n gratis att använda för det här Postgres Gmail-automationsarbetsflödet?

Ja. n8n har ett gratis alternativ för självhosting 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 kostnader för OpenAI API (ofta några cent per batch av mejl, beroende på volym och promptstorlek).

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

Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller självhosting på en VPS. För självhosting är Hostinger VPS prisvärd och hanterar n8n bra. Självhosting ger dig obegränsade körningar men kräver grundläggande serverhantering.

Kan jag anpassa det här Postgres Gmail-automationsarbetsflödet för eskalering i flera steg?

Ja, men du vill justera logiken i ”Compute Reminder Rules” och AI-prompten som används i ”Compose AI Prompt”. Vanliga justeringar är en mjukare första påminnelse, en tydligare andra påminnelse efter ungefär en vecka och att ”slutlig påminnelse”-mejl skickas från en annan avsändare eller en delad ekonomibrevlåda.

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

Oftast beror det på utgångna eller återkallade behörigheter för Gmail/Google-uppgiften i n8n. Återanslut Gmail-uppgiften och testa sedan om stegen ”Dispatch Reminder Email” och ”Send Payment Receipt” fungerar. Kontrollera också att Google-kontot tillåter API-åtkomst och att du inte slår i sändningsgränser om du skickar många påminnelser samtidigt.

Hur många fakturor kan den här Postgres Gmail-automationen hantera?

På en typisk n8n Cloud-plan hanterar den här bekvämt hundratals fakturor per dag, och självhosting tar bort körningsbegränsningar (då blir servern flaskhalsen). I praktiken är den långsammaste delen oftast e-postutskick och eventuell AI-skrivning, inte Postgres-frågan.

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

Ofta, ja, eftersom arbetsflödet blandar databasläsningar/skrivningar, förgreningslogik och två e-postspår (påminnelser och betalningskvitton) på ett ställe. n8n hanterar den typen av ”riktigt arbetsflöde” snyggt, och självhosting kan vara avgörande om du kör många exekveringar. Zapier eller Make kan fortfarande vara bra om du bara behöver en enkel trigger och ett enda mejl. Det svåra är att få till pålitlig loggning och logik för ”påminn inte två gånger” utan att tejpa ihop det. Prata med en automationsspecialist om du vill ha hjälp att välja.

När detta väl är igång slutar uppföljning av förfallna fakturor att ligga i någons huvud. Arbetsflödet sköter jagandet och loggningen, och teamet kan fokusera på avvikelserna.

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