Du får inte slut i lager för att du ”glömde lagret”. Du får slut för att efterfrågan skiftar i det tysta, din data ligger på tre ställen och ombeställningsbeslut tas lite för sent.
Operationsansvariga känner av det först, sedan dras inköpsansvariga och grundare in när mejlet om ”akut påfyllning” landar. Den här OpenAI reorder automation bevakar försäljningstakt och lagernivåer, tar fram ett utkast till inköpsorder och skickar en korrekt formaterad sammanfattning så att du kan godkänna snabbt (eller låta den gå helt automatiskt).
Nedan ser du hur flödet fungerar, vad du kan förvänta dig att få tillbaka varje vecka och de praktiska uppsättningsdelarna som oftast får team att fastna.
Så fungerar den här automationen
Hela n8n-flödet, från trigger till slutligt utdata:
n8n Workflow Template: OpenAI + e-post: smartare lagerpåfyllnad, färre slut
flowchart LR
subgraph sg0["Schedule 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/httprequest.dark.svg' width='40' height='40' /></div><br/>Fetch Current Inventory"]
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/httprequest.dark.svg' width='40' height='40' /></div><br/>Fetch Sales Velocity"]
n2["<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/>Merge Inventory & Sales Data"]
n3@{ icon: "mdi:robot", form: "rounded", label: "AI Demand Forecasting", 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/code.svg' width='40' height='40' /></div><br/>Parse AI Response"]
n5@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Filter: Reorder Needed", pos: "b", h: 48 }
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/>Create Purchase Order"]
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/httprequest.dark.svg' width='40' height='40' /></div><br/>Send PO to Supplier"]
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/httprequest.dark.svg' width='40' height='40' /></div><br/>Log to ERP System"]
n9["<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/postgres.svg' width='40' height='40' /></div><br/>Save to Database"]
n10@{ icon: "mdi:message-outline", form: "rounded", label: "Send Notification Email", pos: "b", h: 48 }
n11@{ icon: "mdi:play-circle", form: "rounded", label: "Schedule Trigger", pos: "b", h: 48 }
n9 --> n10
n11 --> n0
n8 --> n9
n4 --> n5
n7 --> n8
n3 --> n4
n6 --> n7
n5 --> n6
n0 --> n1
n0 --> n2
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 n11 trigger
class n3 ai
class n5 decision
class n9 database
class n0,n1,n7,n8 api
class n2,n4,n6 code
classDef customIcon fill:none,stroke:none
class n0,n1,n2,n4,n6,n7,n8,n9 customIcon
Problemet: ombeställningar sker för sent (eller för tidigt)
Lagerbeslut är sällan ”svåra”. De är bara ständiga. Någon hämtar lagersaldon från lagersystemet, någon annan kollar försäljningstakt, sedan försöker ni gissa hur efterfrågan ser ut nästa vecka. Och eftersom det är manuellt blir det sporadiskt. Ni får en person som ”äger” ombeställningar och som lever i kalkylark och mejltrådar, vilket innebär avbrutna helger och röriga överlämningar. Än värre: små fel staplas. Ett felaktigt styckpris, en missad SKU, ett leverantörs-API-svar som ingen loggade – och plötsligt jagar ni undantag i stället för att driva verksamheten.
Det blir snabbt mycket. Här brukar friktionen uppstå.
- När du väl upptäcker lågt saldo har ledtiden redan ätit upp bufferten.
- Försäljningstakt och lagersaldon granskas separat, så ”magkänslan” vinner över data vid ombeställning.
- Inköpsorder skapas från noll, vilket bjuder in copy-paste-misstag och inkonsekvent formatering.
- Loggning till ERP och databas behandlas som ”senare”, och senare blir aldrig.
Lösningen: AI-prognostiserade inköpsorder som mejlar och loggar sig själva
Det här flödet körs enligt schema (var 6:e timme som standard) och kontrollerar ditt live-lager samt aktuell försäljningstakt. Det slår ihop de två dataströmmarna till en konsekvent vy och ber sedan OpenAI att prognostisera närtida efterfrågan med hjälp av trenddatan du redan har. När modellen flaggar att en ombeställning behövs genererar flödet en inköpsorder-payload med artikeluppgifter, kvantiteter och kostnader och skickar den till din leverantörsendpoint. Efter att leverantören bekräftat registrerar flödet transaktionen i ditt ERP-system och sparar hela inköpsordern plus prognossäkerhet i Postgres för spårbarhet och revision. Till sist mejlar den en sammanfattning till teamet så att människor fortfarande är med i loopen.
Flödet börjar med schemalagd övervakning och slutar med en dokumenterad ombeställning som går att spåra. Däremellan gör OpenAI ”stökiga signaler” (lager + försäljningstakt) till ett enkelt beslut och en motivering du kan granska.
Vad du får: automation 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 200 aktiva SKU:er och gör en ”riktig” ombeställningsgenomgång två gånger i veckan. Manuellt är det lätt att lägga cirka 2 timmar på att hämta lagerdata, ytterligare en timme på att kolla försäljningstakt och sedan 30 minuter på att skapa och skicka inköpsorder (och det är innan loggning). Med det här flödet som kör var 6:e timme blir hands-on-tiden mest granskning: kanske 10 minuter för att skumma mejlsammanfattningen och stickprovskontrollera flaggade artiklar. Resten är redan skapat, skickat och registrerat.
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)
- OpenAI för efterfrågeprognos och resonemang.
- E-post (SMTP) för att skicka inköpssammanfattningar.
- Postgres för att lagra inköpsorder och prognosmätvärden.
- API-uppgifter för lager + försäljning (från administratören för ditt lagersystem och din säljplattform).
Svårighetsnivå: Medel. Du mappar främst fält och lägger in API-uppgifter, plus lite testning för att matcha dina ERP- och leverantörspayloads.
Vill du inte sätta upp detta själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
Ett schema drar i gång. Flödet kör var 6:e timme, så du är inte beroende av att någon kommer ihåg att ”kolla lagret” efter lunch.
Lager- och försäljningsdata hämtas in. n8n anropar din lagerendpoint för aktuella lagernivåer och hämtar sedan senaste försäljningstakt från din försäljningsdatakälla. De två anropen är grunden, så det är värt att göra dem stabila och tydligt avgränsade.
OpenAI prognostiserar efterfrågan och flaggar ombeställningar. Den sammanslagna datamängden skickas till OpenAI-noden, som returnerar en efterfrågeprognos, en rekommendation om ombeställning och en säkerhetssignal. Ett filtersteg behåller bara de SKU:er som faktiskt kräver åtgärd.
Skapa, skicka och logga inköpsorder sker i en kedja. För varje flaggad artikel genererar flödet inköpsorderdetaljerna, skickar ordern till leverantörens endpoint, registrerar resultatet i ditt ERP, sparar hela posten i Postgres och mejlar sedan en sammanfattning som teamet kan granska.
Du kan enkelt justera ombeställningströsklarna för att kräva högre säkerhet, eller routa artiklar med låg säkerhet till ett mejl för manuell granskning i stället för att skicka dem till en leverantör. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: Konfigurera den schemalagda triggern
Ställ in arbetsflödet så att det körs enligt ett fast schema, så att lagerkontroller sker automatiskt under dagen.
- Lägg till noden Scheduled Inventory Trigger och öppna dess konfiguration.
- Ställ in schemaregelns intervall så att den körs var 6:e timme genom att konfigurera Rule till ett intervall med Field satt till
hoursoch Hours Interval satt till6. - Bekräfta att noden är ansluten till Retrieve Stock Levels som första steg i flödet.
Steg 2: Anslut datakällor för lager och försäljning
Hämta lagerdata och försäljningstakt från era API:er. Retrieve Stock Levels skickar output parallellt till både Get Sales Pace och Combine Stock & Sales.
- I Retrieve Stock Levels, ställ in URL till
https://your-warehouse-api.com/api/inventory. - Aktivera Send Headers och lägg till Authorization med värdet
Bearer [CONFIGURE_YOUR_TOKEN]. - I Get Sales Pace, ställ in URL till
https://your-sales-api.com/api/sales/velocity. - Aktivera Send Query och lägg till query-parametern days med värdet
30. - Aktivera Send Headers och lägg till Authorization med värdet
Bearer [CONFIGURE_YOUR_TOKEN].
product_id-värden; felmatchade ID:n gör att Combine Stock & Sales faller tillbaka till standardförsäljningsdata.Steg 3: Sätt upp datasammanslagning och AI-prognoser
Slå ihop lager- och försäljningsdata och kör sedan AI-prognoser för att avgöra om varje artikel behöver beställas på nytt.
- Öppna Combine Stock & Sales och behåll den angivna JavaScript Code för att slå ihop lager- och försäljningsindata till enhetliga poster.
- I AI Demand Projection, behåll Resource satt till
__CUSTOM_API_CALL__för er OpenAI-baserade prognoslogik. - Inloggningsuppgifter krävs: Anslut era
openAiApi-uppgifter i AI Demand Projection. - Gå igenom Interpret AI Output och behåll parsningen som läser
item.message?.contentelleritem.contentför att strukturera prognosresultaten.
Steg 4: Filtrera ombeställningar och skapa inköpsorder
Filtrera AI-output till endast artiklar som behöver påfyllnad och bygg sedan strukturerade inköpsorder.
- I Reorder Requirement Filter, ställ in det booleska villkoret till Value 1
={{ $json.should_reorder }}och Value 2 tilltrue. - Öppna Generate Purchase Order och behåll den angivna JavaScript Code som genererar
po_number, beräknartotal_costoch byggerexpected_delivery.
Steg 5: Konfigurera utdata för leverantör, ERP, databas och e-post
Skicka inköpsordern till er leverantör, registrera den i ERP, spara den i Postgres och notifiera inköp.
- I Dispatch PO to Vendor, ställ in URL till
https://your-supplier-api.com/api/purchase-ordersoch Method tillPOST. - Ställ in body-fält i Dispatch PO to Vendor med uttryck: po_number
={{ $json.po_number }}, supplier_id={{ $json.supplier_id }}, product_id={{ $json.product_id }}, quantity={{ $json.quantity }}, total_cost={{ $json.total_cost }}, expected_delivery={{ $json.expected_delivery }}. - I Record in ERP, ställ in URL till
https://your-erp-system.com/api/purchase-ordersoch Method tillPOSTmed Content Typeraw. - I Persist PO to Database, ställ in Operation till
executeQueryoch behåll SQL-frågan med uttryck som{{ $json.po_number }}och{{ $json.forecast_data.confidence_level }}. - Inloggningsuppgifter krävs: Anslut era
postgres-uppgifter i Persist PO to Database. - I Email Procurement Alert, ställ in Subject till
New Purchase Order Created: {{ $json.po_number }}, To Email till[YOUR_EMAIL]och From Email till[YOUR_EMAIL]. - Inloggningsuppgifter krävs: Anslut era
smtp-uppgifter i Email Procurement Alert.
Steg 6: Testa och aktivera ert arbetsflöde
Validera flödet från början till slut med en manuell körning innan ni aktiverar schemalagd körning.
- Klicka på Execute Workflow för att köra ett manuellt test från Scheduled Inventory Trigger.
- Verifiera att Retrieve Stock Levels returnerar lagerdata och att Get Sales Pace körs parallellt med Combine Stock & Sales.
- Bekräfta att artiklar som passerar Reorder Requirement Filter skapar inköpsorder och skickas korrekt via Dispatch PO to Vendor och Record in ERP.
- Kontrollera att Persist PO to Database infogar poster och att Email Procurement Alert skickar notifieringar.
- När resultaten stämmer, slå om arbetsflödet till Active för att köra enligt schema.
Vanliga fallgropar
- Credentials och headers i HTTP Request fallerar ofta tyst efter en API-ändring. Om lagerhämtningen slutar fungera, börja med att kontrollera lager-API-loggarna och din Authorization-header i anropet ”Retrieve Stock Levels”.
- Om du använder Wait-noder eller extern rendering varierar processtiderna. Ö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 att redigera utdata i all evighet.
Vanliga frågor
Cirka 60–90 minuter när dina API:er är klara.
Nej. Du kopplar konton, klistrar in API-nycklar och mappar några fält så att det matchar dina system.
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 OpenAI API-kostnader (oftast några cent per körning, beroende på tokens).
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 dig obegränsade körningar men kräver grundläggande serverhantering.
Ja, och det är en vanlig justering. I stället för att skicka leverantörsanropet direkt efter ”Generate Purchase Order” routar du inköpsordern till ett godkännande via e-post (eller Telegram) och fortsätter sedan till ”Dispatch PO to Vendor” först när du får en godkännandesignal via en Webhook. Team anpassar också säkerhetströskeln, lägger till leverantörsspecifika minsta orderkvantiteter och inkluderar säsongsnoteringar i OpenAI-prompten.
Vanligtvis beror det på SMTP-uppgifter eller en säkerhetsinställning hos leverantören som blockerar inloggning. Kontrollera SMTP-användarnamn/lösenord, bekräfta att ”från”-adressen är tillåten och granska din e-postleverantörs loggar för avvisade utskick. Om du använder Gmail eller Outlook är applösenord och tenant-behörigheter vanliga orsaker. Bekräfta också att flödet inte försöker skicka till ett tomt mottagarfält efter filtrering.
Tillräckligt för de flesta små team: med n8n Cloud Starter kan du köra upp till cirka 2 500 körningar per månad, och vid egen drift finns ingen fast körningsgräns (det beror på din server). Om schemat kör var 6:e timme blir det cirka 120 körningar per månad innan du ens räknar per-SKU-bearbetning. I praktiken är den tyngre begränsningen dina API:ers (lager, ERP, leverantör) rate limits, inte n8n.
Ofta, ja, eftersom det här flödet behöver förgreningar, filtrering och flerstegsloggning som blir dyrt och klumpigt i enklare verktyg. n8n ger dig också en väg för egen drift, vilket spelar roll om du kör frekventa kontroller och inte vill räkna varje uppgift. Zapier eller Make kan fortfarande vara bra för ett enkelt ”mejl vid lågt saldo”-flöde. Prata med en automationsexpert om du vill ha hjälp att välja det mest robusta upplägget.
När det här väl rullar slutar ombeställningar vara en återkommande brandkårsutryckning och blir en tyst bakgrundsprocess. Du har fortfarande kontroll över vad som skickas, men du slipper bygga upp samma beslut från grunden varje vecka.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.