Utgiftsspårning faller isär på tråkiga sätt. Du missar en liten UPI-avgift, du glömmer en kontantnotering du sms:ade till dig själv och plötsligt är din ”budget” bara ett hoppfullt kalkylark som du uppdaterar en gång i månaden.
Den här automationen för utgiftsloggning slår hårdast mot upptagna grundare och hushållsansvariga, men marknadschefer som kör teamkort och ops-personer som stämmer av verktyg känner det också. Resultatet är enkelt: dina transaktioner fångas upp, kategoriseras och loggas utan det dagliga copy-paste-slitet.
Du får se hur det här n8n-flödet hämtar transaktioner från Gmail och Telegram, använder AI för att strukturera detaljerna och skriver allt till Google Sheets så att din budgetuppföljning alltid är uppdaterad.
Så fungerar automationen
Hela n8n-flödet, från trigger till slutresultat:
n8n Workflow Template: Gmail + Telegram till Google Sheets – utgifter loggas
flowchart LR
subgraph sg0["Telegram Flow"]
direction LR
n0["<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/telegram.svg' width='40' height='40' /></div><br/>Telegram Trigger"]
n1@{ icon: "mdi:brain", form: "rounded", label: "Google Gemini Chat Model", pos: "b", h: 48 }
n2@{ icon: "mdi:robot", form: "rounded", label: "Budget information extractor", pos: "b", h: 48 }
n3@{ icon: "mdi:brain", form: "rounded", label: "Google Gemini Chat Model1", pos: "b", h: 48 }
n4@{ icon: "mdi:robot", form: "rounded", label: "Expense information extractor", pos: "b", h: 48 }
n5@{ icon: "mdi:brain", form: "rounded", label: "Google Gemini Chat Model2", pos: "b", h: 48 }
n6@{ icon: "mdi:robot", form: "rounded", label: "Structured Output Parser", pos: "b", h: 48 }
n7@{ icon: "mdi:robot", form: "rounded", label: "Structured Output Parser1", pos: "b", h: 48 }
n11@{ icon: "mdi:robot", form: "rounded", label: "Information extraction from ..", pos: "b", h: 48 }
n12@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Raw check if the transaction..", pos: "b", h: 48 }
n13@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Check if the transaction is ..", pos: "b", h: 48 }
n14@{ icon: "mdi:database", form: "rounded", label: "Append transaction data to b..", pos: "b", h: 48 }
n15@{ icon: "mdi:database", form: "rounded", label: "Append transaction data to e..", pos: "b", h: 48 }
n16["<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/telegram.svg' width='40' height='40' /></div><br/>Send a confirmation reply to.."]
n0 --> n11
n1 -.-> n11
n6 -.-> n4
n3 -.-> n2
n5 -.-> n4
n7 -.-> n2
n2 --> n13
n4 --> n13
n14 --> n16
n15 --> n16
n11 --> n12
n13 --> n14
n13 --> n15
n12 --> n2
n12 --> n4
end
subgraph sg1["Gmail Flow"]
direction LR
n8@{ icon: "mdi:play-circle", form: "rounded", label: "Gmail Trigger", pos: "b", h: 48 }
n9@{ icon: "mdi:brain", form: "rounded", label: "Google Gemini Chat Model3", pos: "b", h: 48 }
n10@{ icon: "mdi:brain", form: "rounded", label: "Google Gemini Chat Model4", pos: "b", h: 48 }
n17["<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/code.svg' width='40' height='40' /></div><br/>Extract the email only from .."]
n18@{ icon: "mdi:robot", form: "rounded", label: "Generate the structured data..", pos: "b", h: 48 }
n19@{ icon: "mdi:robot", form: "rounded", label: "Extract the information and ..", pos: "b", h: 48 }
n20@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Check if the transaction is ..", pos: "b", h: 48 }
n21@{ icon: "mdi:database", form: "rounded", label: "Append transaction data to e..", pos: "b", h: 48 }
n22@{ icon: "mdi:database", form: "rounded", label: "Append transaction data to e..", pos: "b", h: 48 }
n8 --> n17
n9 -.-> n18
n10 -.-> n19
n19 --> n20
n20 --> n21
n20 --> n22
n18 --> n19
n17 --> n18
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,n8 trigger
class n2,n4,n6,n7,n11,n18,n19 ai
class n1,n3,n5,n9,n10 aiModel
class n12,n13,n20 decision
class n14,n15,n21,n22 database
class n17 code
classDef customIcon fill:none,stroke:none
class n0,n16,n17 customIcon
Problemet: utgiftsspårning kraschar när den är manuell
Om dina utgifter kommer från flera håll (bankaviseringar, UPI-appar som Google Pay eller Paytm, kortköp och slumpmässiga ”jag loggar det senare”-anteckningar) blir manuell spårning ett veckoprojekt för upprensning. Du letar igenom Gmail, kopierar belopp till ett ark, gissar kategorier och försöker sedan minnas vad ”₹430 till XYZ” faktiskt var. Ett missat mejl blir till två. Sedan bygger din budgetgenomgång på ofullständig data, vilket ärligt talat är värre än att inte ha någon uppföljning alls eftersom det ger en falsk trygghet. Även när du loggar allt smyger det in små formateringsfel och dubbla rader.
Friktionen byggs på. Här är var det oftast faller isär.
- Du lägger cirka 10 minuter per transaktion på att kopiera detaljer från Gmail till ett ark, och det blir snabbt mycket under en månad.
- UPI- och bankmejl ser olika ut, så dina kategorier blir inkonsekventa och dina rapporter blir röriga.
- Telegram-”snabbanteckningar” är lätta att skicka och lätta att glömma, vilket gör att kontantutgifter och udda köp slinker igenom.
- Budgetkontroller sker efter att skadan redan är skedd eftersom ingen räknar om totaler varje dag.
Lösningen: AI-kategoriserade utgifter från Gmail och Telegram till Sheets
Det här flödet bevakar två ingångar: nya finansrelaterade mejl i Gmail och utgifts-/budgetmeddelanden som skickas till en Telegram-bot. När ett meddelande kommer in körs innehållet genom en AI-tolk (Gemini-modeller i n8n, med en OpenAI Chat Model också med i flödet) som plockar ut de fält du faktiskt behöver för uppföljning: datum, belopp, kategori, beskrivning, källa och status. Sedan avgör den vad du menade (en budgetuppdatering eller en utgift) och lägger till en korrekt formaterad rad på rätt flik i Google Sheets. För Gmail-transaktioner identifierar den även konto/källa baserat på avsändaradressen eller UPI-mönster, filtrerar bort irrelevanta mejl och delar upp kredit kontra debet så att din uppföljning förblir strukturerad. Till sist får du ett bekräftelsemeddelande i Telegram och ditt ark är redo för månads- och årssammanställningar.
Flödet startar när Gmail- eller Telegram-triggers går igång. AI gör ostrukturerad text till konsekventa kolumner och Google Sheets blir din enda logg. Om dina totaler överstiger budgeten du satt i fliken Budgets kan du trigga en varning (flödet stödjer varningar och den föreslagna lösningen inkluderar ett Google Sheets Apps Script för e-postnotiser).
Det du får: automation vs. resultat
| Det här automatiserar flödet | Resultaten du får |
|---|---|
|
|
Exempel: så här ser det ut
Säg att du får ungefär 2 bank-/UPI-transaktionsmejl per dag och att du även skickar in 1 manuell utgiftsanteckning i Telegram. Manuellt är det ungefär 10 minuter per post för att öppna meddelandet, läsa, formatera en rad och välja en kategori, alltså runt 30 minuter per dag (cirka 15 timmar i månaden). Med det här flödet lägger du kanske 2 minuter på att skicka en Telegram-anteckning vid behov, och Gmail-posterna sker av sig själva medan du jobbar. Du tittar fortfarande igenom arket ibland, men den dagliga loggningen försvinner i praktiken.
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)
- Google Sheets för att lagra flikarna Expenses och Budgets.
- Gmail för inkommande bank- och UPI-transaktionsmejl.
- Telegram-bot för att snabbt lägga in manuella utgifter eller budgetar.
- Gemini API-nyckel (hämta den från Google AI Studio eller ditt Google Cloud-projekt).
Kunskapsnivå: Medel. Du kopplar konton, klistrar in API-nycklar och gör en lätt uppsättning i Google Sheets (flikar och kolumner) utan att skriva kod i n8n.
Vill du inte sätta upp detta själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
Gmail eller Telegram startar flödet. En Gmail-trigger bevakar nya meddelanden, medan en Telegram-trigger lyssnar på meddelanden som skickas till din bot. Två ingångar, en uppföljning.
Filtrering till enbart ekonomi sker tidigt. Ett litet kodbaserat filter kontrollerar avsändarmönster (HDFC, Indian Bank, Indian Overseas Bank och vanliga UPI-format) så att du inte loggar slumpmässigt inkorgsbrus. Om den inte kan matcha avsändaren mot en känd källa hoppar den över posten.
AI gör rörig text till strukturerade kolumner. Flödet skickar mejlkroppen eller Telegram-meddelandet till en AI-kedja för ”strukturering”, och sedan plockar en strukturerad parser ut konsekventa fält som datum, belopp, konto, typ (kredit/debet) och kategori. Det är den här delen som gör arket användbart på lång sikt.
Google Sheets blir systemet som gäller. Utgifter hamnar i fliken Expenses (med separata grenar för kredit och debet), budgetar hamnar i fliken Budgets och Telegram skickar tillbaka en bekräftelse så att du vet att det loggades korrekt.
Du kan enkelt ändra avsändaridentifiering och kategorier så att de matchar dina egna banker och din budgetstruktur. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: Konfigurera triggrarna
Det här arbetsflödet startar från Telegram-meddelanden och Gmail-aviseringar, så båda triggernoderna måste konfigureras först.
- Öppna Telegram Intake Trigger och anslut er Telegram-bot för att lyssna på Updates som är satt till
message. - Autentiseringsuppgifter krävs: Anslut era
telegramApi-autentiseringsuppgifter i Telegram Intake Trigger (detta krävs även om det inte är förkonfigurerat). - Öppna Gmail Intake Trigger och bekräfta att Poll Times är satt till
everyHour. - Autentiseringsuppgifter krävs: Anslut era Gmail OAuth-autentiseringsuppgifter i Gmail Intake Trigger (inte konfigurerat i mallen).
Steg 2: Anslut Google Sheets
Alla finansposter läggs till längst ned i arken Budgets och Expenses i kalkylarket Finances.
- Öppna Append Budget Sheet Row och ställ in Document till
[YOUR_ID]och Sheet tillBudgets. - Mappa kolumnvärdena i Append Budget Sheet Row till uttryck som
{{$json.output.Month}},{{$json.output['Budget Amount']}}och{{$json.output.UpdatedAt}}. - Autentiseringsuppgifter krävs: Anslut era
googleSheetsOAuth2Api-autentiseringsuppgifter i Append Budget Sheet Row (inte konfigurerat i mallen). - Öppna Append Expense Sheet Row och bekräfta att Document är
[YOUR_ID]och att Sheet ärExpenses. - Säkerställ att Append Expense Sheet Row mappar fält som
{{$json.output.Amount}},{{$json.output.Category}}och{{$json.output.MessageId}}. - Autentiseringsuppgifter krävs: Anslut era
googleSheetsOAuth2Api-autentiseringsuppgifter i Append Expense Sheet Row, Append Credit Expense Row och Append Debit Expense Row.
Steg 3: Sätt upp AI-kedjan för tolkning
Arbetsflödet använder flera Gemini-chattmotorer och strukturerade parsers för att tolka budgetar och utgifter från Telegram- och Gmail-indata.
- Öppna Gemini Chat Engine A och lägg till era Gemini-autentiseringsuppgifter för användning av Telegram Message Parser.
- Autentiseringsuppgifter krävs: Anslut era
googlePalmApi-autentiseringsuppgifter i Gemini Chat Engine A (inte konfigurerat i mallen). - Bekräfta att Telegram Message Parser använder Text satt till
{{$json.message.text}}och att dess systemmeddelande innehåller de obligatoriska reglerna för endast JSON-utdata. - Verifiera att Budget Detail Extractor och Expense Detail Extractor använder Text satt till
{{$json.text}}och Prompt Type satt tilldefine. - Säkerställ att Gemini Chat Engine B och Gemini Chat Engine C är anslutna som språkmodeller för Budget Detail Extractor respektive Expense Detail Extractor.
- Autentiseringsuppgifter krävs: Gemini Chat Engine B och Gemini Chat Engine C måste använda
googlePalmApi-autentiseringsuppgifter (redan konfigurerat). - För de strukturerade parsernoderna: behåll schemana i Expense Schema Parser och Budget Schema Parser som de är. Autentiseringsuppgifter för dessa parsers måste läggas till i deras överordnade noder (Budget Detail Extractor och Expense Detail Extractor), inte i undernoderna.
- Bekräfta att LLM Email Structuring använder Text satt till
{{$json.snippet}}och är ansluten till Gemini Chat Engine D, som redan hargooglePalmApi-autentiseringsuppgifter konfigurerade. - Bekräfta att Parse Email Details använder Text satt till
{{$json.text}}och är ansluten till Gemini Chat Engine E medgooglePalmApi-autentiseringsuppgifter konfigurerade.
Steg 4: Konfigurera filtrering och routningslogik
Routningsnoder avgör om indata är en budget eller en utgift och var utgiftsposter ska lagras.
- I Filter Finance Email Sources, behåll den befintliga JavaScript-koden för att vitlista avsändare av ekonomi-mejl och identifiera
account-värdet. - Bekräfta att Initial Budget vs Expense Check använder villkoret
{{ JSON.parse($json.text.replace(/```json\n?|```/g, '').trim()).type }}är lika medbudget. - Säkerställ att Final Budget vs Expense Gate kontrollerar att
{{$json.output.type}}är lika medbudgetinnan den skriver till budgetarket. - Verifiera att Credit vs Debit Branch kontrollerar att
{{$json.output.type}}är lika medCreditför att routa till Append Credit Expense Row; den falska grenen routar till Append Debit Expense Row.
Steg 5: Konfigurera utdata-aviseringar
När en rad har lagts till skickar arbetsflödet en Telegram-bekräftelse till den användare som initierade flödet.
- Öppna Send Telegram Confirmation och bekräfta att Chat ID är satt till
{{$('Telegram Intake Trigger').item.json.message.from.id}}. - Uppdatera bekräftelsemeddelandet i Text vid behov, och se till att kalkylarks-URL:en är uppdaterad:
https://docs.google.com/spreadsheets/d/[YOUR_ID]/edit?usp=sharing. - Autentiseringsuppgifter krävs: Anslut era
telegramApi-autentiseringsuppgifter i Send Telegram Confirmation (redan konfigurerat).
Steg 6: Testa och aktivera ert arbetsflöde
Kör end-to-end-tester från både Telegram och Gmail för att validera routning och uppdateringar i arken.
- Klicka på Execute Workflow och skicka ett Telegram-meddelande som ”Set budget for groceries 5000” för att trigga Telegram Intake Trigger.
- Verifiera att en ny rad visas i arket
Budgetsvia Append Budget Sheet Row och att ett Telegram-svar skickas av Send Telegram Confirmation. - Skicka ett testmejl med bankavisering till Gmail-inkorgen som används av Gmail Intake Trigger och bekräfta att Filter Finance Email Sources släpper igenom det.
- Kontrollera att posten routas via Credit vs Debit Branch och läggs till av antingen Append Credit Expense Row eller Append Debit Expense Row.
- När allt är verifierat, växla arbetsflödet till Active för användning i produktion.
Vanliga fallgropar
- Google Sheets-inloggningar kan löpa ut eller kräva specifika behörigheter. Om något slutar fungera, kontrollera först statusen för n8n-credentials och att kalkylarket är delat med det anslutna Google-kontot.
- Om du använder Wait-noder eller extern rendering varierar behandlingstiderna. Öka väntetiden om noder längre ned fallerar på tomma svar.
- Standardprompter i AI-noder är generiska. Lägg in din tonalitet tidigt, annars kommer du att redigera utdata för alltid.
Vanliga frågor
Cirka en timme om ditt Google Sheet redan är förberett.
Nej. Du kopplar mest konton, lägger till API-nycklar och mappar kolumner i Google Sheets.
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 volym. Du behöver också räkna in kostnader för Gemini/OpenAI API, som oftast är små per meddelande men beror på din användning.
Två alternativ: n8n Cloud (hanterat, enklast att sätta upp) eller egen drift på en VPS. För egen drift är Hostinger VPS prisvärt och klarar n8n bra. Egen drift ger obegränsade körningar men kräver grundläggande serverhantering.
Ja, och det bör du. Kodsteget ”Filter Finance Email Sources” är där du lägger till eller ändrar avsändarmönster (banker, UPI-appar), och AI-extraktionsstegen kan uppdateras för att inkludera dina egna kategorier som Resor, Mat, Prenumerationer eller Kundmiddagar. Många justerar också kontrollerna för ”Budget vs Expense” så att Telegram-meddelanden som ”budget mat 12000” eller ”spenderade 450 kaffe” hamnar rätt. När det väl är intrimmat håller det sig konsekvent.
Oftast är det ett autentiseringsproblem: Gmail OAuth-tokenen har löpt ut, det anslutna Google-kontot har ändrats eller triggern tappade behörighet efter en säkerhetsgranskning. Återanslut Gmail-credential i n8n och bekräfta att flödet får läsa inkorgen. Kontrollera också filterlogiken: om avsändaren inte matchar dina bank-/UPI-mönster kan flödet ”fungera” men medvetet inte ge något utdata.
För de flesta privatpersoner och små team räcker det mer än väl.
Ofta, ja, eftersom det här flödet behöver förgreningslogik (budget vs. utgift, kredit vs. debet) och AI-tolkning, och sådana flöden kan bli dyra eller klumpiga i enklare verktyg. n8n är flexibelt med ”if”-grindar, sammanslagning av vägar och strukturerad extraktion, så att du kan hålla allt i en automation istället för att jonglera flera Zaps. En annan stor anledning är egen drift, vilket kan göra loggning i hög volym prisvärd när du har många transaktionsmejl. Samtidigt: om du bara behöver ”Telegram-meddelande → lägg till rad i ark” kan Zapier eller Make kännas snabbare att sätta upp. Om du är osäker, prata med en automationsexpert och få en tydlig rekommendation.
När detta väl rullar slutar ditt ark att vara en ”någon gång”-adminuppgift och börjar spegla verkligheten. Flödet tar bort den repetitiva loggningen från din att-göra-lista så att du kan fatta beslut med aktuella siffror.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.