Beställningar trillar in, och du upptäcker att ni är slut i lager på värsta möjliga sätt: efter att ni redan har lovat leverans. Då blir det panikjakt i kalkylark, DM:ar och “vem såg meddelandet?”-förvirring.
Den här lagerlarm-automationen träffar driftsansvariga först, men butiksägare och lagerledare känner av det också. I stället för att manuellt kontrollera Google Sheets och hoppas att någon pingar rätt person, får du en Slack-notis för varje order, plus en strukturerad logg du faktiskt kan lita på.
Nedan finns det exakta n8n-flödet som validerar inkommande ordrar, kontrollerar lagersaldo i Google Sheets, larmar i Slack och loggar vad som hände så att du kan skärpa upp fulfillment utan att lägga till fler möten.
Så här fungerar automatiseringen
Hela n8n-flödet, från trigger till slutresultat:
n8n Workflow Template: Google Sheets + Slack: lagerlarm vid varje order
flowchart LR
subgraph sg0["Flow 1"]
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/webhook.dark.svg' width='40' height='40' /></div><br/>Incoming Order Hook"]
n1@{ icon: "mdi:code-braces", form: "rounded", label: "Validate Order Payload", pos: "b", h: 48 }
n2@{ icon: "mdi:code-braces", form: "rounded", label: "Prepare Order Details", pos: "b", h: 48 }
n3@{ icon: "mdi:code-braces", form: "rounded", label: "Extract Item Quantities", pos: "b", h: 48 }
n4@{ icon: "mdi:database", form: "rounded", label: "Retrieve Stock Levels", pos: "b", h: 48 }
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/merge.svg' width='40' height='40' /></div><br/>Combine Item Stock"]
n6@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Stock Availability Check", pos: "b", h: 48 }
n7@{ icon: "mdi:code-braces", form: "rounded", label: "Generate Invoice Record", 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/slack.svg' width='40' height='40' /></div><br/>Slack Success Alert"]
n9@{ icon: "mdi:code-braces", form: "rounded", label: "Build Success Log", pos: "b", h: 48 }
n10@{ icon: "mdi:database", form: "rounded", label: "Append Log Sheet", pos: "b", h: 48 }
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/slack.svg' width='40' height='40' /></div><br/>Slack Shortage Alert"]
n12@{ icon: "mdi:code-braces", form: "rounded", label: "Build Shortage Log", pos: "b", h: 48 }
n1 --> n2
n5 --> n6
n2 --> n3
n0 --> n1
n6 --> n7
n6 --> n11
n7 --> n8
n4 --> n5
n3 --> n4
n3 --> n5
n8 --> n9
n9 --> n10
n12 --> n10
n11 --> n12
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 n6 decision
class n4,n10 database
class n0 api
class n1,n2,n3,n7,n9,n12 code
classDef customIcon fill:none,stroke:none
class n0,n5,n8,n11 customIcon
Problemet: lagerkontroller sker för sent
Manuella lagerkontroller fallerar inte för att folk är lata. De fallerar för att ordervolymen är ojämn, avbrotten är konstanta och “jag kollar om en minut” blir till 20 minuter. Under tiden har kunden redan fått en orderbekräftelse. Sedan sitter du fast med återbetalningar, stressade delleveranser eller att ta kostnaden för expresspåfyllnad. Och om teamet använder Slack för den dagliga koordineringen blir den värsta varianten när larmet hamnar i fel kanal, eller inte går iväg alls. Samma resultat: sen leverans, missnöjd kund, stökiga överlämningar.
Friktionen byggs på. Här är var det brister i verkligheten.
- Någon måste kopiera SKU:er från ordern, slå upp varje SKU i ett ark och räkna ut mängderna.
- Slut-i-lager upptäcks efter att ordern redan är “accepterad”, vilket gör att kundsupport får hantera konsekvenserna.
- Slack-meddelanden är inkonsekventa, så lagret kan inte avgöra vilka ordrar som är säkra att plocka och vilka som måste stoppas.
- Om det inte finns en pålitlig logg kan du inte se mönster, som att samma 5 SKU:er skapar problem varje vecka.
Lösningen: ordertriggade lagerkontroller med Slack-larm
Det här flödet gör lagerkontroll till något som sker automatiskt i exakt rätt ögonblick: när en order kommer in. En inkommande order träffar en n8n-webhook, som validerar payloaden så att du inte hanterar ofullständiga ordrar eller felaktig artikeldata. Därefter formaterar den ordern, plockar ut varje artikels SKU och antal, och hämtar senaste lagersaldon från Google Sheets. Efter det slår flödet ihop resultaten till en vy och kontrollerar tillgänglighet. Om allt finns i lager skickar det en “success”-notis i Slack och loggar detaljerna i ett Google Sheet. Om något saknas postar det ett bristlarm (till kanalen du väljer) och loggar avvikelsen så att den går att följa upp.
Flödet startar med en webhook-händelse för order. Sedan jämför det antal per artikel mot lagersaldon i Google Sheets och skickar ordern vidare via ett spår för godkänt eller brist. Till sist får Slack rätt meddelande och loggarket får hela spårbarheten.
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 du hanterar 20 ordrar per dag och att varje order har 3 artiklar. Om någon lägger ens 3 minuter per artikel på att kolla Google Sheets och göra snabb huvudräkning blir det ungefär 3 timmar per dag av “bara verifiera lagret”. Med det här flödet blir den manuella tiden i princip själva triggen (ordern kommer in) plus en kort väntan medan n8n hämtar rader från Google Sheets och postar i Slack. Du gör fortfarande fulfillment, såklart. Du slutar bara med den repetitiva kontrollen och pingandet.
Det du behöver
- n8n-instans (prova n8n Cloud gratis)
- Self-hosting-alternativ om du föredrar det (Hostinger fungerar bra)
- Google Sheets för att lagra och hämta lagersaldon
- Slack för att larma rätt kanal direkt
- Webhook-källa (hämta den från din butiks-/appintegration)
Svårighetsgrad: Nybörjare. Du kopplar konton, klonar ett Google Sheet och justerar några villkor och kanalnamn.
Vill du inte sätta upp det här själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
En order träffar din webhook. n8n tar emot ordern från din webbplats, ditt formulär, din app eller vilket system som helst som kan skicka JSON till flödets URL.
Ordern struktureras och valideras. Flödet kontrollerar att payloaden innehåller det du behöver (order-id, kundfält, artiklar, antal) och förbereder sedan en konsekvent struktur så att resten av logiken inte skapar fel vid konstiga indata.
Lager hämtas från Google Sheets och jämförs. För varje SKU i ordern hämtar flödet lagersaldon från ditt ark, slår ihop resultaten och kör en tillgänglighetskontroll baserad på de tröskelvärden du har satt.
Slack och loggning sker automatiskt. Ordrar som finns i lager får ett lyckat-meddelande plus en loggrad för godkänt. Brister triggar ett larm till din “warehouse”-kanal (eller en annan kanal du väljer) och en loggrad för brist så att du kan följa återkommande problem.
Du kan enkelt modifiera Slack-routingen för att posta olika larm per produktkategori eller plats utifrån dina behov. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementation
Steg 1: Konfigurera webhook-triggern
Sätt upp den inkommande webhooken som tar emot orderpayloads från ert e-handelssystem.
- Lägg till och öppna Incoming Order Hook.
- Ställ in Path på
ecom-order. - Ställ in HTTP Method på
POST. - Ställ in Response Data på
All Entriesoch Response Mode påLast Node.
Steg 2: Anslut Google Sheets för lager och loggning
Konfigurera uppslag i kalkylbladet för lagernivåer samt append till loggen för orderutfall.
- Öppna Retrieve Stock Levels och anslut arket som innehåller lager per SKU.
- Credential Required: Anslut era googleSheetsOAuth2Api-credentials.
- Ställ in Operation på
lookup, Range påInventories!A:Boch Lookup Column påsku. - Ställ in Lookup Value på
={{$json["sku"]}}och Sheet ID till ert kalkylblads-ID (ersätt[YOUR_ID]). - Öppna Append Log Sheet och ställ in Operation på
appendmed RangeOrderLogs!A:Eoch ert Sheet ID. - Credential Required: Anslut era googleSheetsOAuth2Api-credentials.
sku i kolumn A och lagervärden i kolumn B för att matcha uppslagsintervallet Inventories!A:B.Steg 3: Sätt upp funktioner för orderparsning och förberedelser
Dessa funktionsnoder validerar den inkommande payloaden och normaliserar orderdata för lagerkontroller och fakturering.
- Öppna Validate Order Payload och behåll valideringslogiken som kastar ett fel om
id,customerelleritemssaknas. - Öppna Prepare Order Details för att mappa kunddata, rader och totalsummor till en konsekvent struktur.
- Öppna Extract Item Quantities för att skapa per-rad-poster med
skuochqty. - Observera att Extract Item Quantities skickar output parallellt till både Retrieve Stock Levels och Combine Item Stock.
items-array med sku och quantity; annars kastar Validate Order Payload felet Invalid order payload.Steg 4: Konfigurera sammanslagning av lager och logik för tillgänglighet
Kombinera beställda artiklar med lagernivåer och kontrollera om ordern kan levereras.
- I Combine Item Stock, ställ in Mode på
combineoch Fields to Match påsku. - I Stock Availability Check, ställ in det booleska villkoret så att det jämför kvantiteter och lager med
={{ $items().every(item => item.json.qty <= item.json.stock) }}mot={{ true }}. - Verifiera att Combine Item Stock går in i Stock Availability Check för slutlig routning.
Steg 5: Konfigurera aviseringar för lyckat flöde och brist
Skicka Slack-notiser baserat på om lagret är tillräckligt eller inte.
- Öppna Slack Success Alert och ställ in Text på
={{ '✅ Order ' + $json.orderId + 'Invoiced. \nInvoice: ' + $json.invoiceId + ', \nAmount: $' + $json.amount + ', \nCustomer: ' + $json.customer + ', \nDate: ' + $json.date}}. - Ställ in Channel till ert Slack-kanal-ID (ersätt
[YOUR_ID]), och använd AuthenticationoAuth2. - Credential Required: Anslut era slackOAuth2Api-credentials.
- Öppna Slack Shortage Alert och ställ in Text på
={{'⚠️ Order '}} {{ $('Prepare Order Details').item.json.id }} {{'is not available for order due to lack of stock.'}} \n{{'\n SKU: '}} {{ $json.sku }}\n{{'\n Request quantity: '}} {{ $json.qty }}\n{{'\n Stock quantity: '}} {{ $json.stock }}. - Ställ in Channel till ert Slack-kanal-ID (ersätt
[YOUR_ID]) och säkerställ att Authentication äroAuth2. - Credential Required: Anslut era slackOAuth2Api-credentials.
Steg 6: Bygg faktura- och loggposter
Skapa fakturadata för lyckade ordrar och logga utfall för både lyckat flöde och bristgrenen.
- Öppna Generate Invoice Record och behåll fakturakonstruktionen som använder fält från Prepare Order Details och Extract Item Quantities.
- Verifiera att Generate Invoice Record skickar output till Slack Success Alert.
- Öppna Build Success Log och bekräfta att den sätter
statustillSuccess. - Öppna Build Shortage Log och bekräfta att den sätter
statustillOut of Stock. - Säkerställ att både Build Success Log och Build Shortage Log är kopplade till Append Log Sheet.
Steg 7: Testa och aktivera ert arbetsflöde
Kör ett manuellt test med en exempelpayload för att bekräfta att lagerkontroller, aviseringar och loggning fungerar.
- Klicka på Execute Workflow och skicka en test-POST-begäran till URL:en för Incoming Order Hook med en giltig orderpayload.
- En lyckad körning ska: passera Validate Order Payload, fylla Prepare Order Details, och slutföra lageruppslag/sammanslagning före Stock Availability Check.
- Om lagret finns, verifiera ett meddelande i Slack Success Alert och en ny rad som läggs till av Append Log Sheet.
- Om lagret är otillräckligt, verifiera ett meddelande i Slack Shortage Alert och en loggrad från Build Shortage Log som läggs till i Append Log Sheet.
- När allt är verifierat, slå på 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 n8n-menyn Credentials och bekräfta att arket är delat med det anslutna Google-kontot.
- Om din lageruppslagning kräver exakt SKU-matchning kommer små formateringsskillnader att skapa falska brister. Kontrollera extra mellanslag, olika versalisering eller SKU:er som är lagrade som tal i Google Sheets.
- Slack-larm kan tyst hamna fel om kanalnamnet ändras. Kontrollera att kanalen (ofta “warehouse”) finns och matchar konfigurationen i Slack-noden innan du litar på den i produktion.
Vanliga frågor
Cirka 30 minuter om ditt Google Sheet och Slack är redo.
Nej. Du klistrar in inloggningsuppgifter och justerar några villkor. Den “svåra delen” är helt enkelt att bestämma vad som räknas som en brist för din verksamhet.
Ja. n8n har ett gratis self-hosted-alternativ 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å ta hänsyn till begränsningar i Google Workspace och Slack-planer om ditt konto är begränsat.
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller self-hosting på en VPS. För self-hosting är Hostinger VPS prisvärt och hanterar n8n bra. Self-hosting ger dig obegränsade körningar men kräver grundläggande serverhantering.
Ja, och det är en av de bästa uppgraderingarna. Du kan routa meddelanden genom att lägga till ett villkor direkt efter Extract Item Quantities, och sedan skicka larm till olika Slack-noder (eller sätta kanal dynamiskt) innan flödet når Slack Success Alert eller Slack Shortage Alert. Vanliga anpassningar är separata kanaler för restorder vs. normal plock, olika tröskelvärden för snabbrörliga SKU:er och att tagga en specifik ansvarig för ordrar med högt värde.
Oftast beror det på utgångna inloggningsuppgifter eller saknade workspace-behörigheter i din n8n Slack-credential. Kontrollera också kanalnamnet: om “warehouse” inte finns (eller har bytt namn) postar Slack inte där du förväntar dig. Om du skickar många larm samtidigt kan även rate limits dyka upp, vilket ser ut som slumpmässiga fel.
Många. I n8n Cloud beror kapaciteten på din plans exekveringsgränser, och vid self-hosting beror det på din server. I praktiken är uppslag i Google Sheets den största flaskhalsen, men de flesta små team kan köra detta hela dagen utan att märka något.
Ofta, ja, eftersom det här flödet har förgreningslogik (godkänt vs. brist) plus dataformatering som är enklare att styra i n8n. Du får också möjligheten att self-hosta, vilket är viktigt när ordervolymen sticker iväg och per-task-prissättning blir irriterande, ärligt talat. Zapier eller Make kan fortfarande vara helt okej för en enkel “ny order → posta meddelande”-setup, men det här flödet gör validering, kontroller för flera artiklar och strukturerad loggning. Om du är osäker, prata med en automationsexpert så pekar vi dig mot det enklaste pålitliga alternativet.
När detta väl är igång slutar lagerkontroller vara en daglig brandkårsutryckning och blir en tyst bakgrundsprocess. Du får snabbare beslut, tydligare överlämningar i Slack och betydligt färre oväntade slut-i-lager.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.