Kostnadsuppföljning faller sönder i de små glappen. Ett kvitto kommer in när du är på språng, du ”lägger det på minnet”, och sedan står kalkylarket tomt tills det är för sent.
Frilansare märker det vid deklarationen. En småföretagare märker det när kassan blir ansträngd. Och en ekonomiassistent får jaga folk efter detaljer. Den här automatiseringen för Telegram-baserad kostnadsloggning lägger varje transaktion i Google Sheets med ett godkännandesteg, så att inget ”försvinner” mellan chattmeddelanden och månadsskifte.
Du får se hur flödet fångar intäkter och kostnader i Telegram, validerar formatet, loggar det på rätt flik i arket och sedan skickar kostnader vidare till en ansvarig för Godkänn, Avslå eller Visa detaljer.
Så här fungerar automatiseringen
Hela n8n-flödet, från trigger till slutresultat:
n8n Workflow Template: Telegram + Google Sheets: godkända utlägg loggas
flowchart LR
subgraph sg0["Telegram - Incoming Webhook 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 - Incoming Webhook"]
n1["<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/>Detect Message Type"]
n2@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Route by Input Type", pos: "b", h: 48 }
n3@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Handle /start or Message Input", pos: "b", h: 48 }
n4["<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/>Show Income/Expense Options"]
n5["<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/>Validate Input Format"]
n6["<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 Data Type"]
n7@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Route Based on Data Type", pos: "b", h: 48 }
n8["<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/>Parse Income Data"]
n9@{ icon: "mdi:database", form: "rounded", label: "Save Income to Sheet", pos: "b", h: 48 }
n10["<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/>Notify User Income Recorded"]
n11["<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/>Parse Expense Data"]
n12@{ icon: "mdi:database", form: "rounded", label: "Save Expense to Sheet", pos: "b", h: 48 }
n13["<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/>Notify User Expense Pending"]
n14["<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 Approval Request"]
n15["<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/>Parse Callback Response"]
n16@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Route Based on Callback Type", pos: "b", h: 48 }
n17@{ icon: "mdi:database", form: "rounded", label: "Update Approval Status", pos: "b", h: 48 }
n18@{ icon: "mdi:database", form: "rounded", label: "Get Approved Row", pos: "b", h: 48 }
n19["<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/>Notify User of Approval Result"]
n20@{ icon: "mdi:database", form: "rounded", label: "Get Row for Detail View", pos: "b", h: 48 }
n21["<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/>Format Expense Detail Message"]
n22["<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 Expense Detail to Super.."]
n23["<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/>Show Income Input Format"]
n24["<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/>Show Expense Input Format"]
n25["<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 Income Format Message"]
n26["<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 Expense Format Message"]
n18 --> n19
n6 --> n7
n8 --> n9
n11 --> n12
n1 --> n2
n2 --> n3
n2 --> n15
n9 --> n10
n12 --> n13
n5 --> n6
n17 --> n18
n20 --> n21
n15 --> n16
n7 --> n8
n7 --> n11
n23 --> n25
n24 --> n26
n13 --> n14
n0 --> n1
n16 --> n17
n16 --> n20
n16 --> n23
n16 --> n24
n21 --> n22
n3 --> n4
n3 --> n5
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 trigger
class n2,n3,n7,n16 decision
class n9,n12,n17,n18,n20 database
class n1,n5,n6,n8,n11,n15,n21,n23,n24 code
classDef customIcon fill:none,stroke:none
class n0,n1,n4,n5,n6,n8,n10,n11,n13,n14,n15,n19,n21,n22,n23,n24,n25,n26 customIcon
Problemet: kostnadsuppföljning som bygger på minnet
De flesta ”system” för kostnader är egentligen bara goda intentioner. Någon betalar något, slänger kvittot i en väska och skickar ett snabbt meddelande som ”Taxi 18” eller ”Kundlunch” utan sammanhang. Senare öppnar du kalkylarket och inser att hälften av detaljerna saknas, vissa transaktioner registrerades aldrig, och ingen minns vad som var företag vs. privat. Det är inte bara långsamt. Det är stressande, eftersom varje saknad rad blir till bollande fram och tillbaka, gissningar och panikröj strax innan stängning.
Friktionen byggs på. Här är var det brakar i verkligheten.
- Du lägger cirka 5 minuter per transaktion på att översätta avslappnade chattmeddelanden till rader som fungerar i kalkylarket.
- Godkännanden sker på olika ställen, så du ser inte vad som är klart vs. fortfarande väntande.
- Formateringen är inkonsekvent, vilket leder till fel kategorier, dubbla rader och stökiga månadsavslut.
- Någon frågar oundvikligen om ”status” och du får manuellt kolla arket och svara.
Lösningen: logga transaktioner i Telegram, godkänn med ett tryck
Det här flödet gör Telegram till ett lättviktigt formulär för ekonomiinkommande som folk faktiskt använder. En användare startar boten med /start, väljer om de loggar intäkt eller kostnad och skickar sedan in transaktionen i ett strukturerat format (så att inget tappas bort). n8n kontrollerar meddelandet, tolkar nyckelfälten och skriver raden till Google Sheets direkt. Är det en intäkt får användaren en omedelbar bekräftelse och sen är det klart. Är det en kostnad markerar flödet den som väntande, pingar en ansvarig i Telegram och erbjuder knappar i chatten för Godkänn ✅, Avslå ❌ eller Visa detaljer 👁. Användaren får ett tydligt besked när den ansvariga har fattat beslut.
Flödet börjar med en Telegram Bot Trigger som fångar meddelanden och knapptryck. Därefter routas det baserat på meddelandetyp (start, textinmatning eller callback från ansvarig), skriver eller uppdaterar rätt rad i Google Sheets och skickar rätt notis tillbaka till rätt person.
Det här får du: automatisering vs. resultat
| Vad det här flödet automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut
Säg att ditt team registrerar 20 kostnader i veckan. Manuellt blir det ofta ”hitta meddelandet, be om saknade detaljer, lägga in raden och sedan uppdatera status senare”, vilket lätt är 5 minuter per styck, eller cirka 2 timmar i veckan. Med det här flödet är loggningen ett snabbt Telegram-meddelande (säg 1 minut), och godkännandet för ansvarig är ett enda tryck när de ser förfrågan. Du väntar fortfarande på beslutet, men du jagar inte och du matar inte in data.
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)
- Telegram-bot för att ta emot transaktioner och hantera godkännanden
- Google Sheets för att lagra intäkts- och kostnadsposter
- Google OAuth2-uppgifter (skapa i Google Cloud Console)
Kunskapsnivå: Nybörjare. Du kopplar konton, klistrar in en bot-token och uppdaterar ett sheet-ID och ett chat-ID för ansvarig.
Vill du inte sätta upp detta själv? Prata med en automationsexpert (kostnadsfri 15-minuters konsultation).
Så fungerar det
Ett Telegram-meddelande eller ett knapptryck triggar flödet. Telegram Bot Trigger fångar både skrivna meddelanden och callbacks från inline-knappar, vilket gör att samma automation hanterar både inmatning och beslut från ansvarig.
Flödet identifierar vilken typ av input som kom in. Det skiljer på ”/start”, vanliga textinlämningar och callback-åtgärder och routar sedan varje variant till rätt väg så att användare inte fastnar i fel meny.
Strukturerad text valideras och tolkas till korrekt formaterade fält. En liten uppsättning logiknoder kontrollerar formatering, avgör om det är intäkt eller kostnad och plockar ut detaljer som Google Sheets kan lagra konsekvent.
Google Sheets uppdateras och rätt personer får notiser. Intäkter läggs till i kalkylbladet intäkter och bekräftas tillbaka till användaren. Kostnader loggas på din kostnadsflik, markeras som väntande och skickas till en ansvarig som kan godkänna, avslå eller begära detaljer utan att lämna Telegram.
Du kan enkelt justera routingen till ansvarig för att stödja flera godkännare eller olika avdelningar baserat på kategori. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: Konfigurera Telegram-triggern
Det här arbetsflödet startar när ett Telegram-meddelande eller en callback tas emot av Telegram Webhook Intake.
- Lägg till och öppna Telegram Webhook Intake.
- Anslut den Telegram-bot som ska ta emot meddelanden och callbacks.
- Spara noden så att n8n registrerar Telegram-webhooken.
Steg 2: Anslut Google Sheets
Arbetsflödet skriver och uppdaterar finansiella poster i Google Sheets med flera bladnoder för intäkter, utgifter och godkännanden.
- Öppna Log Income to Sheet och välj kalkylarket och arbetsbladet där intäkter ska lagras.
- Öppna Log Expense to Sheet och välj utgiftsbladet för väntande utgifter.
- Öppna Modify Approval Status, Retrieve Approved Row och Fetch Row for Detail View och peka dem mot samma blad för godkännandespårning.
- Säkerställ att alla Google Sheets-noder mappar mot samma struktur (kolumner för datum, kategori, belopp, anteckningar och godkännandestatus).
Steg 3: Ställ in meddelandeklassificering och routning
Inkommande meddelanden kategoriseras och routas genom den centrala bearbetningsvägen för tolkning av intäkter/utgifter.
- Granska Identify Message Category för att bekräfta att den kategoriserar Telegram-uppdateringar korrekt innan arbetsflödet når Direct by Input Kind.
- Konfigurera Direct by Input Kind så att den delar upp mellan meddelanden och callback queries, och skickar meddelandeflödet till Process Start or Text samt callback-flödet till Decode Callback Response.
- Ställ in Process Start or Text så att textinmatningar routas till Verify Input Structure och startmeddelanden till Display Income Expense Menu.
- I Verify Input Structure och Derive Data Category, validera inmatningsformatet och sätt kategorin innan det skickas vidare till Switch by Data Category.
Steg 4: Konfigurera loggning av intäkter/utgifter och notiser
Vägarna för intäkter och utgifter tolkar meddelandet, loggar data till bladen och skickar bekräftelsemeddelanden.
- Säkerställ att Switch by Data Category routar intäkter till Interpret Income Details och utgifter till Interpret Expense Details.
- I Interpret Income Details, mappa utdatafälten som förväntas av Log Income to Sheet.
- I Interpret Expense Details, mappa utdatafälten som förväntas av Log Expense to Sheet.
- Konfigurera Confirm Income Logged för att skicka ett lyckat-meddelande efter Log Income to Sheet.
- Konfigurera Alert Expense Pending för att meddela användaren att godkännande krävs efter Log Expense to Sheet.
- Bekräfta att Alert Expense Pending routar till Dispatch Approval Prompt för att begära godkännande från ansvarig.
Steg 5: Konfigurera callback-godkännanden och detaljvyer
Callback-knappar avkodas för att uppdatera godkännandestatus, visa detaljvyer och skicka formattips.
- I Decode Callback Response, tolka callback-data så att Switch by Callback Type kan routa varje åtgärd.
- Säkerställ att Switch by Callback Type routar godkännanden till Modify Approval Status, därefter till Retrieve Approved Row, och sedan till Send Approval Outcome.
- Säkerställ att Switch by Callback Type routar detaljförfrågningar till Fetch Row for Detail View, därefter till Compose Expense Detail, och sedan till Notify Supervisor Detail.
- Bekräfta att Present Income Format → Send Income Format Tip och Present Expense Format → Send Expense Format Tip är kopplade för hjälpmeddelanden.
Steg 6: Testa och aktivera ert arbetsflöde
Validera mottagning av meddelanden, loggning och godkännande-callbacks innan ni aktiverar arbetsflödet i produktion.
- Klicka på Execute Workflow och skicka ett Telegram-meddelande till boten för att trigga Telegram Webhook Intake.
- Bekräfta att meddelandet passerar genom Identify Message Category → Direct by Input Kind → Process Start or Text och når Display Income Expense Menu eller Verify Input Structure.
- Skicka in en intäktspost och verifiera att Log Income to Sheet skriver till ert blad och att Confirm Income Logged returnerar ett lyckat-meddelande.
- Skicka in en utgiftspost och verifiera att Log Expense to Sheet skriver till ert blad och att Alert Expense Pending → Dispatch Approval Prompt skickar godkännandeförfrågan.
- Klicka på en godkännande-callback och säkerställ att Modify Approval Status → Retrieve Approved Row → Send Approval Outcome slutför godkännandeflödet.
- När ni är nöjda, växla Active för att aktivera arbetsflödet för kontinuerlig användning.
Vanliga fallgropar
- Telegram-uppgifter kan sluta fungera om bot-token har återskapats. Om meddelanden slutar komma in, kontrollera först din n8n-credential för Telegram API och BotFather-token.
- Om du använder Wait-noder eller extern rendering varierar processtider. Öka väntetiden om efterföljande noder fallerar på tomma svar.
- Uppdateringar i Google Sheets kan missa rätt rad utan att säga till om strukturen i arket ändras. Om godkännanden uppdaterar fel rad, kontrollera mappningen i ”Modify Approval Status” och bekräfta att fliknamnet i kalkylarket är korrekt.
Vanliga frågor
Cirka 30 minuter om din Telegram-bot och din Google-åtkomst redan är på plats.
Nej. Du kommer främst att koppla konton och klistra in ID:n och tokens.
Ja. n8n har ett gratis self-hosted-alternativ och en gratis provperiod på n8n Cloud. Cloud-planer börjar på 20 $/månad för högre volym. Du behöver också räkna in Google Workspace-åtkomst (om relevant), men det här flödet kräver inga betalda AI-anrop för att fungera.
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) 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.
Ja, men du vill justera logiken i ”Dispatch Approval Prompt” för att välja rätt chatId för ansvarig baserat på kategori, team eller vem som skickade in kostnaden. Många team håller en enkel mapping-tabell i Google Sheets och slår upp godkännaren innan de skickar godkännandeknapparna.
Oftast är det en ogiltig eller utbytt bot-token, så att n8n inte längre kan autentisera mot Telegram. Uppdatera Telegram API-credential i n8n och skicka sedan /start till boten igen för att bekräfta att meddelanden kommer fram. Om du kör boten i en gruppchatt kan privacy mode också påverka vad boten kan ”se”, så kontrollera dina BotFather-inställningar. Och om godkännanden inte når den ansvariga, verifiera chatId för ansvarig i noden som skickar godkännandeförfrågan.
Tillräckligt för de flesta små team: tänk hundratals transaktioner per månad utan problem. På n8n Cloud beror gränsen på planens antal körningar; om du self-hostar handlar det mest om din serverstorlek och Google Sheets API-gränser.
Ofta, ja, eftersom godkännandeflödet kräver förgreningar, callbacks och raduppdateringar som blir klumpiga (och dyra) i enklare automationsverktyg. n8n hanterar logik med flera vägar snyggt, och self-hosting är ett alternativ om du vill ha obegränsat antal körningar. Zapier eller Make kan fortfarande fungera om du bara vill ha ”Telegram-meddelande → lägg till rad i kalkylark” utan loop för ansvarig. Värdet i den här mallen är ärligt talat beslutsteget. Prata med en automationsexpert om du vill ha hjälp att välja enklaste upplägg för ditt team.
När det här väl rullar slutar kostnaderna leva i folks huvuden och i chathistoriken. Flödet håller registren strukturerade, och dina godkännanden slutar vara en skattjakt.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.