Utgiftsgodkännanden fallerar oftast inte för att folk är lata. De fallerar för att begäran begravs i någons inkorg, kvittot saknas och du jagar sammanhanget i tre olika verktyg.
Den här Jotform Slack-automationen träffar ekonomiavdelningar först, ärligt talat. Men driftschefer och byråägare känner av den också, eftersom utlägg blir till tjat, förseningar och obekväma “någon uppdatering?”-meddelanden. Målet är enkelt: få strukturerade, korrekt formaterade begäranden godkända snabbt, utan handpåläggning.
Du får se hur det här flödet routar utlägg enligt policy, postar godkännanden i Slack, loggar allt i Google Sheets och skickar rätt mejl automatiskt.
Så fungerar automatiseringen
Hela n8n-flödet, från trigger till slutresultat:
n8n Workflow Template: Jotform till Slack: snabbare utläggsgodkännanden
flowchart LR
subgraph sg0["Jotform 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/code.svg' width='40' height='40' /></div><br/>Parse Form Data"]
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/>Validate Policy"]
n2@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Check Violations", pos: "b", h: 48 }
n3@{ icon: "mdi:swap-vertical", form: "rounded", label: "Set Rejection", pos: "b", h: 48 }
n4@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Route Auto", pos: "b", h: 48 }
n5@{ icon: "mdi:swap-vertical", form: "rounded", label: "Auto Approve", pos: "b", h: 48 }
n6@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Route Manager", pos: "b", h: 48 }
n7["<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/slack.svg' width='40' height='40' /></div><br/>Slack Manager"]
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/slack.svg' width='40' height='40' /></div><br/>Slack Director"]
n9@{ icon: "mdi:database", form: "rounded", label: "Log to Sheets", pos: "b", h: 48 }
n10@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Is Approved", pos: "b", h: 48 }
n11@{ icon: "mdi:message-outline", form: "rounded", label: "Rejection Email", pos: "b", h: 48 }
n12@{ icon: "mdi:message-outline", form: "rounded", label: "Approved", 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/jotform.dark.svg' width='40' height='40' /></div><br/>Jotform Trigger"]
n4 --> n5
n4 --> n6
n10 --> n12
n10 --> n11
n5 --> n9
n9 --> n10
n6 --> n7
n6 --> n8
n3 --> n9
n7 --> n9
n8 --> n9
n13 --> n0
n0 --> n1
n1 --> n2
n2 --> n4
n2 --> n3
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 n13 trigger
class n2,n4,n6,n10 decision
class n9 database
class n0,n1 code
classDef customIcon fill:none,stroke:none
class n0,n1,n7,n8,n13 customIcon
Problemet: utgiftsgodkännanden fastnar (och ingen litar på processen)
En enkel utgiftsprocess låter harmlös tills du kör den i större skala. Någon skickar in ett formulär, någon annan ber om kvittot igen, och ekonomi kontrollerar manuellt policyregler som bara finns i en PDF från 2019. Sedan sker godkännanden i privata DM:ar eller mejltrådar utan spårbarhet. När det väl är dags att ersätta utlägget återskapar du vad som hände från skärmdumpar och halvt ihågkomna beslut, och det är lätt att missa en avvikelse eller godkänna något du inte borde.
Friktionen bygger på. Den märks som förlorad tid, långsamma ersättningar och ständiga uppföljningar.
- Manuella policykontroller och fram-och-tillbaka kan sluka 10+ timmar i veckan för ett litet ekonomiteam.
- Godkännanden i Slack-DM:ar eller mejltrådar ger ingen pålitlig tidslinje när du behöver granska en tvist senare.
- Kvitton hamnar separat från begäran, så du tvingas jaga medarbetare efter filer som du redan “borde” ha.
- Dyra utlägg blir liggande eftersom ingen är säker på vem som ska godkänna dem.
Lösningen: routa Jotform-utlägg till Slack, logga och notifiera automatiskt
Det här flödet startar i samma ögonblick som en medarbetare skickar in ett utlägg via Jotform, inklusive uppladdning av kvitto. n8n normaliserar inskickningen (så namn, belopp, kategorier och datum blir konsekventa), och kontrollerar sedan allt mot dina policyregler på ett och samma ställe. Om begäran bryter mot policyn flaggas den direkt med en tydlig avslagsorsak, loggas i Google Sheets och medarbetaren får ett mejl som faktiskt förklarar vad som blev fel. Om den följer policyn routar flödet godkännandet baserat på belopp: små utlägg kan auto-godkännas, mellannivå skickas till en chef i Slack och högre belopp notifierar en kanal för ekonomichef/finance director. Varje utfall registreras med tidsstämplar, godkännardetaljer och status så att du slipper göra detektivarbete senare.
Flödet börjar med en Jotform-trigger och kör sedan två snabba “tänksteg” (normalisera data och validera policy). Därefter används enkel routning för att välja auto-godkännande, chefsgodkännande i Slack eller direktörsgodkännande i Slack. Till sist blir Google Sheets granskningsloggen och Gmail skickar godkännande- eller avslagsmejl.
Det du får: 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 hanterar cirka 100 utläggsrapporter i månaden. Manuellt kanske ni lägger ungefär 10 minuter per begäran på att samla in kvitto, kontrollera policy, hitta rätt godkännare och uppdatera en spårning, vilket blir runt 16 timmar administrativt arbete. Med det här flödet skickar medarbetaren in en gång i Jotform, godkännanden går automatiskt till Slack och Google Sheets uppdaterar sig själv, så ekonomi hanterar främst undantagen. För många team motsvarar det ungefär en eller två arbetsdagar tillbaka varje månad, plus snabbare ersättningar.
Det här behöver du
- n8n-instans (prova n8n Cloud gratis)
- Alternativ för egen hosting om du föredrar det (Hostinger fungerar bra)
- Jotform för formuläret som tar emot utlägg och kvitton.
- Slack för att leverera godkännanden till rätt personer.
- Google Sheets för att lagra granskningsloggen och statushistoriken.
- Gmail för att skicka godkännande- och avslagsmejl.
Svårighetsgrad: Medel. Du kopplar konton, klistrar in ett Sheet-ID och justerar några policyregler i en kodnod.
Vill du inte sätta upp detta själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
En ny utläggsinskickning i Jotform kommer in. En medarbetare skickar in belopp, kategori, leverantör/handlare, beskrivning och laddar upp ett kvitto. Den formulärinskickningen triggar automatiseringen direkt.
Data städas upp och standardiseras. n8n normaliserar fälten så att “Måltider”, “måltider” och “MÅLTID” inte blir tre olika kategorier i dina register. Här kan du också tvinga fram obligatoriska fält så att ofullständiga inskick inte slinker igenom.
Policyregler avgör vad som händer härnäst. En efterlevnadskontroll utvärderar kategori- och beloppsgränser, och därefter routar en IF-port utlägget: avslå med orsaker, auto-godkänn under din gräns eller be om godkännande i Slack på rätt nivå.
Allt loggas och medarbetaren informeras. Google Sheets får en ny rad (eller en tillagd granskningspost) med tidsstämplar och status. Gmail skickar ett godkännande- eller avslagsmejl så att medarbetaren inte lämnas gissande.
Du kan enkelt justera godkännandegränserna så att de matchar din policy utifrån teamstorlek eller utgiftsmönster. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: Konfigurera formulärtriggern
Konfigurera Jotform-triggern för att ta emot kostnadsinlämningar och starta arbetsflödet.
- Lägg till noden Incoming Form Trigger och välj formuläret som ska övervakas.
- Ställ in Form på
[YOUR_ID]. - Autentiseringsuppgifter krävs: Anslut era jotFormApi-autentiseringsuppgifter i Incoming Form Trigger.
Steg 2: Normalisera och validera inskickade data
Transformera råa formulär-payloads och tillämpa företagets policys innan ni routar godkännanden.
- I Normalize Submission Data behåller ni JavaScript-koden som mappar formulärfält till standardiserade nycklar (t.ex.
employeeName,amount,category). - I Policy Compliance Check verifierar ni policyreglerna och tröskelvärdena för
autoApproveThresholdochmanagerApprovalThreshold. - Konfigurera Violation Gate för att tillåta kompatibla poster genom att sätta villkoret Left Value till
{{ $json.policyViolations.length }}och Right Value till0.
Steg 3: Konfigurera routning för godkännande och statusuppdateringar
Routa kostnader efter godkännandenivå och sätt status för godkänd eller avvisad.
- I Auto Approval Route ställer ni in villkoret så att det kontrollerar att Left Value
{{ $json.requiresApproval }}är lika medauto. - I Quick Approval Mark ställer ni in tilldelningar för status till
approved, approvedBy tillSystem (Auto-Approved)och approvedAt till{{ new Date().toISOString() }}. - I Manager Approval Route ställer ni in villkoret så att det kontrollerar att Left Value
{{ $json.requiresApproval }}är lika medmanager(true-sökvägen). - I Reject Status Setter ställer ni in status till
rejectedoch rejectionReason tillPolicy violations: {{ $json.policyViolations.join(', ') }}.
Steg 4: Konfigurera notifieringar och granskningsloggning
Skicka Slack-notiser till godkännare, logga varje beslut och mejla medarbetare baserat på status.
- I Manager Slack Alert sätter ni Text till
New Expense Approval Required\nEmployee: {{ $json.employeeName }}\nAmount: ${{ $json.amount }}\nCategory: {{ $json.category }}och väljer en Channel. - I Director Slack Alert sätter ni Text till
High-Value Expense - Director Approval\nEmployee: {{ $json.employeeName }}\nAmount: ${{ $json.amount }}\nCategory: {{ $json.category }}och väljer en Channel. - Autentiseringsuppgifter krävs: Anslut era slackApi-autentiseringsuppgifter i både Manager Slack Alert och Director Slack Alert.
- I Append Audit Sheet sätter ni Operation till
appendOrUpdate, Sheet Name tillSheet1och Document ID till[YOUR_ID]. - Säkerställ att Append Audit Sheet har Matching Columns satt till
submissionIdför upserts. - Autentiseringsuppgifter krävs: Anslut era googleSheetsOAuth2Api-autentiseringsuppgifter i Append Audit Sheet.
- I Approval Outcome Split sätter ni villkoret så att det kontrollerar att Left Value
{{ $json.status }}är lika medapproved. - I Send Approval Email sätter ni Send To till
{{ $json.employeeEmail }}, Subject tillExpense Approved - ${{ $json.amount }}och Message tillHej, er kostnad för {{ $json.Amount }} har godkänts. - I Send Rejection Email sätter ni Send To till
{{ $json.employeeEmail }}, Subject tillExpense Rejected - ${{ $json.amount }}och Message tillHej, er kostnad för {{ $json.amount}} har avvisats eftersom den inte matchade företagets valideringspolicy.. - Autentiseringsuppgifter krävs: Anslut era gmailOAuth2-autentiseringsuppgifter i både Send Approval Email och Send Rejection Email.
{{ $json.Amount }} (stort A). Säkerställ att era normaliserade data innehåller det fältet eller uppdatera det till {{ $json.amount }} för konsekvens.Steg 5: Testa och aktivera ert arbetsflöde
Validera varje routning och bekräfta att loggning och notifieringar fungerar som förväntat.
- Klicka på Execute Workflow och skicka in en testkostnad via Jotform.
- Verifiera att Normalize Submission Data och Policy Compliance Check ger förväntade fält och godkännanderoutningar.
- Bekräfta att Append Audit Sheet skriver en rad till
Sheet1och att Approval Outcome Split skickar rätt mejl. - När allt fungerar, växla arbetsflödet till Active för att aktivera hantering i produktion.
Vanliga fallgropar
- Slack-inloggningar kan löpa ut eller kräva specifika behörigheter. Om något slutar fungera: kontrollera dina credential-inställningar i n8n och bekräfta först att boten får posta i målkanalen.
- Om du använder Wait-noder eller extern rendering varierar process-tiderna. Öka väntetiden om efterföljande noder fallerar på tomma svar.
- Standardprompter i AI-noder är generiska. Lägg in er tonalitet tidigt, annars kommer du redigera output för alltid.
Vanliga frågor
Cirka 45 minuter om dina konton och kanaler är klara.
Nej. Du kommer främst att koppla konton och ändra några policyvärden. Den enda “koden” är oftast att kopiera/klistra in eller justera regel-logik som redan ingår.
Ja. n8n har ett gratis alternativ för self-hosting och en gratis testperiod 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 Gmail och Slack (oftast inga) samt eventuella valfria OCR/AI-tjänster om du lägger till dem.
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 kör n8n bra. Self-hosting ger obegränsade körningar men kräver grundläggande serverhantering.
Ja, och det är en vanlig uppgradering. Du justerar routningslogiken i IF-noderna för godkännande (Manager Approval Route och Director-slingan) och använder det normaliserade avdelningsfältet från steget “Normalize Submission Data” för att välja rätt Slack-kanal. Många team uppdaterar också reglerna i “Policy Compliance Check” så att kategorigränser varierar per avdelning.
Oftast är det en utgången token eller att appen inte får posta i kanalen. Anslut Slack på nytt i n8n, bekräfta sedan att kanal-ID:t är korrekt och att boten har behörighet att posta där. Om du nyligen ändrade inställningar i workspacet kan du också behöva godkänna scopes igen för chat:write.
Många. Med n8n Cloud Starter begränsas du främst av månatliga executions och hur många begäranden du routar; de flesta små team ligger gott inom planens gränser. Om du self-hostar finns ingen exekveringstak, så det beror mest på din server och hur tunga dina tillägg är (som OCR). För vanlig formulärroutning plus Slack är hundratals begäranden per dag realistiskt.
För godkännanderoutning med flera grenar är n8n ofta ett renare val eftersom du kan bygga komplex beslutslogik utan att betala extra för varje “väg”. Self-hosting är också viktigt om din utläggsvolym toppar säsongsvis. Zapier och Make fungerar bra för enkla tvåstegsflöden, men den här processen har policykontroller, flera godkännandenivåer och granskningsloggning, vilket gör att scenariot snabbt blir rörigt. Om du är osäker: välj verktyget som ditt team faktiskt kommer att underhålla. Du kan alltid ta nästa steg senare, eller resonera med en automationsexpert.
När detta är i drift slutar godkännanden vara en skattjakt. Du får en snabbare ersättningscykel, ett tydligare spår i Sheets och ett ekonomiteam som kan fokusera på undantag i stället för copy-paste-jobb.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.