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

Postgres + e-post: felloggar utan varningsspam

Rickard Andersson Partner, Nodenordic.se

Dina automationer fallerar. Det verkliga problemet är vad som händer sedan: antingen märker ingen något förrän kunderna klagar, eller så blir alla nedskräpade med “fel”-mejl tills de börjar ignorera dem.

Den här typen av upplägg för Postgres e-postaviseringar slår hårdast mot Ops-team, men även byråägare som kör klientflöden och marknadsteam som är beroende av schemalagda jobb drabbas. Du kommer att logga varje fel för senare analys, samtidigt som aviseringarna förblir lugna och användbara.

Det här arbetsflödet gör om brusiga felfändelser till en strukturerad Postgres-logg plus ett aviseringsmönster: “skicka högst ett mejl var 5:e minut”. Du får se hur det fungerar, vad du behöver och var du kan anpassa det på ett säkert sätt.

Så fungerar automationen

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

n8n Workflow Template: Postgres + e-post: felloggar utan varningsspam

Problemet: brusiga aviseringar, saknad kontext och återkommande fel

Felhantering börjar ofta med goda intentioner: “Mejla mig bara när det går sönder.” Sedan lanserar du några flöden, lägger till scheman, integrerar API:er, och plötsligt skapar ett enda avbrott uppströms 50 fel på 10 minuter. Inkorgen blir övervakningssystemet. Folk tystar tråden. Samtidigt ligger det viktiga (vad som gick fel, var och hur ofta) utspritt i enskilda körningsloggar, så att hitta återkommande problem blir en manuell skattjakt. Och om du jobbar med kunder blir det ännu värre: du reagerar på brus i stället för att åtgärda rotorsaker.

Det eskalerar snabbt. Här är var det vanligtvis brister.

  • När ett API blir instabilt kan du få en kaskad av aviseringar som ser olika ut men kommer från samma rotproblem.
  • Kritisk kontext finns inne i n8n:s körningsdetaljer, vilket betyder mer klickande när du redan är i “brandkårs”-läge.
  • Manuellt “logga det någonstans senare” händer aldrig, så mönster syns först efter tredje eller fjärde incidenten.
  • En enkel regel som “skicka mejl vid fel” tränar teamet att ignorera mejl, inklusive det som faktiskt är viktigt.

Lösningen: logga allt till Postgres, avisera med ett vettigt intervall

Det här flödet använder n8n:s felfändelser för att göra två saker samtidigt. Först blir varje fel en strukturerad post i Postgres, så att du alltid har en sökbar historik med titel, meddelande, stack trace, senaste nod, en URL tillbaka till körningen och den råa JSON-payloaden. Sedan kontrollerar det hur många fel som har inträffat nyligen och skickar bara aviseringar när det är rimligt (exempel: “högst en avisering var 5:e minut”). Det ger full insyn utan konstant mejlbombardemang. Det finns även en valfri städrutin som är praktisk i utveckling, där du kan vilja återställa status efter att ha testat fel.

Flödet startar när en felfändelse fångas (antingen från den inbyggda fel-triggern eller från ett annat flöde som anropar det). Det skriver felet till Postgres, räknar nyligen skapade loggrader och använder en If-kontroll för att avgöra mellan “skicka en avisering nu” eller “logga tyst och gå vidare”. Till sist kör det en städrutin för att avsluta körningen och undvika att lämna saker halvt öppna.

Det här får du: automation vs. resultat

Exempel: så här ser det ut

Säg att du kör 12 schemalagda arbetsflöden. Ett externt API börjar tajma ut och triggar 30 fel på 10 minuter. Manuell avisering kan innebära 30 separata mejl plus cirka 5 minuter varje gång för att öppna körningen och plocka detaljer, vilket blir ungefär 2 timmar av avbrott. Med det här flödet loggas felen automatiskt, och du får högst två aviseringsmejl under samma 10-minutersfönster (ett per 5 minuter) med den viktigaste kontexten. Du ser fortfarande problemet, men du drunknar inte i det.

Det här behöver du

  • n8n-instans (prova n8n Cloud gratis)
  • Alternativ för egen drift om du föredrar det (Hostinger fungerar bra)
  • PostgreSQL för att lagra en sökbar fellogg
  • E-postleverantör för att skicka aviseringsnotiser
  • Postgres-inloggningsuppgifter (skapa en användare med tabellåtkomst)

Svårighetsgrad: Medel. Du ska vara bekväm med att lägga in inloggningsuppgifter i n8n och skapa en Postgres-tabell från angiven SQL.

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

Så fungerar det

En felfändelse startar flödet. Flödet kan starta från n8n:s inbyggda fel-trigger, eller anropas av ett annat flöde som ett dedikerat del-flöde för felhantering.

Felet loggas till Postgres. Steget “Write Error Log” lägger in en rad i din N8Err-tabell och sparar meddelandet, stacken, senaste noden och rå JSON så att du kan felsöka senare utan att öppna gamla körningar igen.

En volymkontroll förhindrar aviseringsspam. En andra Postgres-fråga räknar hur många loggar som skapats nyligen, och sedan avgör en If-villkor om din “Primary Email Alert” ska triggas eller om flödet ska ligga lågt just nu.

Aviseringar och städning sker på slutet. Om tröskeln säger “avisera” skickas mejl (och valfritt en pushnotis). Den avslutande städkoden återställer körningsstatus och avslutar korrekt. Det finns också en manuell trigger-väg för att rensa loggtabellen, vilket är användbart i utveckling.

Du kan enkelt ändra regeln “var 5:e minut” så att den matchar din tolerans (eller eskalera efter upprepade fel). Se hela implementationsguiden nedan för anpassningsalternativ.

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

Steg 1: konfigurera feltriggern

Det här arbetsflödet startar när en körning misslyckas, samlar in feldata för loggning och strypt avisering.

  1. Lägg till och öppna Failure Event Trigger för att lyssna på arbetsflödesfel.
  2. Behåll standardinställningarna i Failure Event Trigger (inga parametrar krävs).
  3. Notera den parallella routningen: Failure Event Trigger skickar utdata parallellt till både Write Error Log och Count Recent Logs.

Steg 2: anslut Postgres och logga fel

Dessa noder skriver feldetaljer till Postgres och frågar efter nyliga fel för att tillämpa strypning av aviseringar.

  1. Öppna Write Error Log och ställ in Schema till p1gq6ljdsam3x1m och Table till N8Err.
  2. Bekräfta att kolumnmappningarna i Write Error Log använder uttryck som {{$json.execution.url}}, {{JSON.stringify($json)}}, {{$json.execution.error.stack}}, {{$json.workflow.name}}, {{$json.execution.error.message}}, {{$json.execution.lastNodeExecuted}} och {{$now}}.
  3. Inloggning krävs: Anslut era postgres-uppgifter till Write Error Log.
  4. Öppna Count Recent Logs och ställ in Query till SELECT count(*) FROM p1gq6ljdsam3x1m."N8Err" where created_at >= $1;.
  5. Ställ in Query Replacement till {{$now.minus(5, 'minutes').toString()}} och behåll Operation som executeQuery.
  6. Inloggning krävs: Anslut era postgres-uppgifter till Count Recent Logs.

Tips: Anpassa Postgres-schemat och tabellnamnen efter er databas. Om de skiljer sig åt, uppdatera både Write Error Log och Count Recent Logs.

Steg 3: konfigurera strypningslogik och anpassade åtgärder

Det här steget styr när aviseringar ska gå vidare och ger en hook för extra felåtgärder.

  1. Öppna Check Recent Log Count och verifiera att villkoret använder {{$json.count}} med operatorn lte och Right Value 0.
  2. Koppla true-utgången från Check Recent Log Count till Add Custom Error Actions och false-utgången till Finalize Execution Cleanup.
  3. Använd Add Custom Error Actions som en platshållare för ytterligare felhanteringssteg som ni kan lägga till senare.
  4. Öppna Finalize Execution Cleanup och behåll JavaScript Code som return []; för att avsluta körningen på ett säkert sätt.

⚠️ Vanlig fallgrop: Om er fråga returnerar ett annat kolumnnamn än count, justera villkoret i Check Recent Log Count därefter.

Steg 4: konfigurera aviseringar och routning till sub-arbetsflöde

Aviseringar skickas via e-post och mobil push, och kan vid behov triggas av en körning av ett sub-arbetsflöde.

  1. Öppna Run Sub-Workflow (Configure Required) och välj målflödets ID i Workflow ID.
  2. Notera den parallella routningen: Run Sub-Workflow (Configure Required) skickar utdata parallellt till både Primary Email Alert och Mobile Push Notice.
  3. I Primary Email Alert, ställ in To Email och From Email till [YOUR_EMAIL], och behåll uttrycken för Text och Subject som angivet (till exempel {{ $("Failure Event Trigger").item.json.execution.error.message }}).
  4. Inloggning krävs: Anslut era smtp-uppgifter till Primary Email Alert.
  5. I Secondary Email Alert, behåll samma fält och uttryck, och ställ in To Email/From Email till den adress ni vill använda.
  6. Inloggning krävs: Anslut era smtp-uppgifter till Secondary Email Alert.
  7. I Mobile Push Notice, ställ in User Key till [CONFIGURE_YOUR_TOKEN] och behåll Message-uttrycket.
  8. Inloggning krävs: Anslut era pushoverApi-uppgifter till Mobile Push Notice.
  9. Aktivera de avstängda aviseringsnoderna (Primary Email Alert, Secondary Email Alert och Mobile Push Notice) när ni är redo att ta emot notiser.

Tips: Behåll Secondary Email Alert som en fallback; den är kopplad till felutgången från Primary Email Alert för failover-aviseringar.

Steg 5: lägg till manuell städning och inkommande felhantering

Manuell städning gör att ni kan rensa loggtabellen, och inkommande hantering gör att andra arbetsflöden kan vidarebefordra sina fel till detta arbetsflöde.

  1. Öppna Manual Cleanup Start för att aktivera en manuell trigger för underhållskörningar.
  2. I Clear Log Table, ställ in Schema till p1gq6ljdsam3x1m och Table till N8Err, med Operation som deleteTable och Restart Sequences aktiverat.
  3. Inloggning krävs: Anslut era postgres-uppgifter till Clear Log Table.
  4. Öppna Inbound Error Handler och behåll Input Source inställt på passthrough för att ta emot fel från sub-arbetsflöden.
  5. Notera den parallella routningen: Inbound Error Handler skickar utdata parallellt till både Write Error Log och Count Recent Logs.

⚠️ Vanlig fallgrop: Att köra Clear Log Table tar bort all logghistorik. Använd den endast under underhållsfönster.

Steg 6: testa och aktivera ert arbetsflöde

Verifiera felinsamling, strypningslogik och leverans av aviseringar innan ni aktiverar det här arbetsflödet för produktionsanvändning.

  1. Kör manuellt ett arbetsflöde som förväntas misslyckas så att Failure Event Trigger triggas.
  2. Bekräfta att Write Error Log lägger in en rad i p1gq6ljdsam3x1m.N8Err och att Count Recent Logs returnerar ett antal.
  3. Verifiera att Check Recent Log Count routar till Add Custom Error Actions när antalet uppfyller villkoret lte 0.
  4. Om aviseringar är aktiverade, validera leverans från Primary Email Alert, Secondary Email Alert och Mobile Push Notice.
  5. Kör Manual Cleanup Start för att bekräfta att Clear Log Table fungerar som förväntat.
  6. Slå på arbetsflödet med Active för produktion när testerna passerar.
🔒

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

Få den kompletta implementeringsguiden + nedladdningsbar mall

Vanliga fallgropar

  • Postgres-inloggningsuppgifter kan gå ut eller sakna tabellbehörigheter. Om inserts misslyckas, kontrollera n8n-credential, schemanamn och att användaren kan skriva till "N8Err".
  • Om du lägger in waits eller är beroende av externa tjänster (som pushnotiser) kan tiderna variera. Öka eventuell väntetid om noder längre ned kör innan data finns tillgängligt.
  • AI-genererade sammanfattningar (om du aktiverar AI Agent/OpenAI-delarna) kan bli intetsägande. Sätt formatet tidigt, annars kommer du fortsätta skriva om “vad som hände” i varje avisering.

Vanliga frågor

Hur lång tid tar det att sätta upp den här automationen för Postgres e-postaviseringar?

Cirka 30 minuter om Postgres är klart.

Behöver jag kodningskunskaper för att automatisera Postgres e-postaviseringar?

Nej. Du klistrar mest in inloggningsuppgifter och kör SQL:en för att skapa tabellen en gång.

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

Ja. n8n har ett gratis alternativ för egen drift och en gratis provperiod på n8n Cloud. Cloud-planer börjar på 20 USD/månad för högre volymer. Du behöver också räkna in kostnader för e-postleverantör och eventuell OpenAI-användning om du aktiverar AI-sammanfattningen (oftast bara några ören per dag vid låg volym).

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 egen drift på en VPS. För egen drift är Hostinger VPS prisvärd och hanterar n8n bra. Egen drift ger obegränsade körningar men kräver grundläggande serverhantering.

Kan jag anpassa det här flödet för Postgres e-postaviseringar till ett annat aviseringsfönster, som 15 minuter?

Ja, men behåll logiken konsekvent. Ändra tidsfönstret i Postgres-frågan “Count Recent Logs” och uppdatera If-villkoret “Check Recent Log Count” så att det matchar din nya tröskel. Vanliga anpassningar är att eskalera till Secondary Email Alert först efter upprepade fel, lägga till en annan kanal (som Slack) i “Add Custom Error Actions” eller byta mejlinnehållet så att det inkluderar en kort AI-genererad sammanfattning från AI Agent/OpenAI Chat Model.

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

Oftast handlar det om behörigheter eller att schema/tabell inte matchar. Bekräfta att tabellen "N8Err" finns i samma schema som din Postgres-nod pekar på, och att databasanvändaren kan göra inserts och skapa index om du använder exempel-DDL:en. Om det fungerade en gång och sedan slutade, kontrollera roterade lösenord eller en uppdaterad brandväggs-/VPC-regel. Dubbelkolla även citattecken, eftersom kolumnnamn med blandad skiftläge som "LastNode" kan vara känsliga.

Hur många fel kan den här automationen för Postgres e-postaviseringar hantera?

Väldigt många, eftersom det mesta är enkla inserts och en count-fråga.

Är den här automationen för Postgres e-postaviseringar bättre än att använda Zapier eller Make?

Ofta, ja, särskilt för felhantering. Zapier och Make fungerar bra för raka automationer, men de blir klumpiga när du behöver villkorsstyrd throttling, en riktig databaslogg och städlogik som kör tillförlitligt efter fel. n8n ger dig också ett alternativ för egen drift, så du betalar inte mer bara för att ett avbrott genererade många händelser. Nackdelen är att du lägger lite mer tid i början på att sätta upp Postgres och inloggningsuppgifter. Om du är osäker, prata med en automationsexpert så kartlägger vi det mot din volym och din risktolerans.

Du får full insyn i fel utan att träna teamet att ignorera aviseringar. Sätt upp det en gång, så blir nästa avbrott helt enkelt enklare att hantera.

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