Du får inte slut i lager för att du ”glömde lagret”. Du får slut för att en daglig koll av ett kalkylark blir varannan dag, sedan var tredje – och till slut reagerar du först när det redan är för sent.
Operations managers märker det när plockarna inte kan skicka. En butiksägare märker det när kunderna lämnar. Och en stressad inköpsansvarig märker det när leverantörer behöver ”bara en detalj till” samtidigt som du bygger inköpsorder manuellt. Den här lagersautomationen i Google Sheets tar bort den dagliga övervakningen och mailutkasten från din att-göra-lista.
Du får se hur det här flödet kontrollerar lagernivåer enligt ett schema, skapar inköpsorderunderlag för varje artikel som ligger under sin tröskel, mejlar leverantörer via Gmail och loggar allt tillbaka i Google Sheets för strukturerad spårning.
Så fungerar den här automationen
Hela n8n-flödet, från trigger till slutresultat:
n8n Workflow Template: Google Sheets + Gmail – inköpsorder vid lågt lager
flowchart LR
subgraph sg0["Trigger Everyday Flow"]
direction LR
n0@{ icon: "mdi:message-outline", form: "rounded", label: "Send Order to Suplier", pos: "b", h: 48 }
n1@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Switch Email & PO", pos: "b", h: 48 }
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/>Generate Email & PO"]
n3["<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/>Order Handling"]
n4@{ icon: "mdi:cog", form: "rounded", label: "No Operation, do nothing", pos: "b", h: 48 }
n5@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Over Items", pos: "b", h: 48 }
n6@{ icon: "mdi:play-circle", form: "rounded", label: "Trigger Everyday", pos: "b", h: 48 }
n7@{ icon: "mdi:database", form: "rounded", label: "Get Low Stock Product", pos: "b", h: 48 }
n8@{ icon: "mdi:database", form: "rounded", label: "Get Purchase Order", pos: "b", h: 48 }
n9@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Check Record Exists Or Not", pos: "b", h: 48 }
n10@{ icon: "mdi:database", form: "rounded", label: "Store a Purchase Order", pos: "b", h: 48 }
n3 --> n2
n5 --> n8
n6 --> n7
n1 --> n0
n1 --> n5
n8 --> n9
n2 --> n1
n7 --> n3
n10 --> n5
n4 --> n5
n9 --> n4
n9 --> n10
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 trigger
class n1,n9 decision
class n7,n8,n10 database
class n2,n3 code
classDef customIcon fill:none,stroke:none
class n2,n3 customIcon
Problemet: kontroller vid lågt lager blir sista minuten-kriser
Om ditt lager finns i Google Sheets ser processen ofta ”enkel” ut på papper: öppna arket, filtrera lågt lager, räkna ut vad som ska beställas, skapa en inköpsorder, mejla leverantören och kom ihåg att logga vad du skickade. I praktiken blir det konstant kontextväxling. Du kollar lagret samtidigt som du svarar på kundmejl, hanterar returer eller jagar sena leveranser. Små misstag smyger sig också in: du beställer fel antal, mejlar fel leverantörskontakt eller glömmer att registrera beställningen – vilket gör att nästa veckas kontroll bygger på felaktiga data.
Friktionen bygger på. Här är var det brukar fallera.
- Daglig lagermonitorering glider, så du upptäcker problemen först efter att någon klagar eller när en produktsida visar ”slut i lager”.
- Inköpsorder byggs från grunden i mejltrådar, vilket gör att varje ombeställning känns som att börja om.
- Manuell loggning är lätt att hoppa över, och det är så du hamnar i ”beställde vi redan det här?”-lägen.
- När du skalar till dussintals SKU:er fungerar kalkylarket fortfarande, men den mänskliga processen runt omkring börjar spricka.
Lösningen: dagliga inköpsorder vid lågt lager från Google Sheets till Gmail
Det här n8n-flödet automatiserar din ombeställningsloop från start till mål. Det körs på ett dagligt schema (eller vilket intervall du vill), öppnar ditt lager i Google Sheets och identifierar artiklar där aktuellt saldo är under den miniminivå du har definierat. För varje artikel med lågt lager räknar det ut hur många enheter som ska beställas och sammanställer inköpsorderdetaljer som SKU, artikelnamn, behövd kvantitet och leverantörens e-postadress. Därefter skickas informationen in i ett färdigt mejl och skickas automatiskt via Gmail till leverantören. Till sist skriver det tillbaka posten ”PO skickad” i Google Sheets med tidsstämpel, så du får en revisionsspårning utan att behöva leta kvitton i inkorgen.
Flödet börjar med en schemalagd trigger och en uppslagning i arket. Sedan sätter två kodsteg ihop orderraderna och genererar mejlinnehållet för inköpsordern. Efter det skickar Gmail meddelandet och Google Sheets uppdateras så att din logg förblir strukturerad.
Det 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 följer 40 SKU:er i Google Sheets och att ungefär 10 av dem en normal vecka hamnar under miniminivån. Manuellt kanske du lägger cirka 10 minuter per SKU på att verifiera siffror, räkna ut ombeställningskvantitet, skriva ett mejl och logga det – alltså runt 1,5 timme per vecka. Med det här flödet lägger du kanske 10 minuter en gång på att sätta trösklar och e-postfält, och sedan sköter den dagliga körningen kontroll, utskick och loggning medan du gör annat. Din ”lagertid” blir snabb stickprovskontroll, inte daglig administration.
Det här behöver du
- n8n-instans (testa n8n Cloud gratis)
- Alternativ för self-hosting om du föredrar det (Hostinger fungerar bra)
- Google Sheets för att lagra lager, trösklar och PO-loggar
- Gmail för att mejla leverantörer automatiskt
- Åtkomst till Google-konto (auktorisera Sheets och Gmail i n8n)
Kunskapsnivå: Medel. Du kopplar konton och mappar kolumner i arket noggrant, plus gör lätt testning för att bekräfta att mejl och loggar ser rätt ut.
Vill du inte sätta upp det här själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
Ett dagligt schema startar allt. Flödet körs automatiskt på en timer, så ombeställningar hänger inte på att någon kommer ihåg att ”kolla lagret” i slutet av dagen.
Ditt lagerark skannas efter lågt saldo. n8n läser rader från Google Sheets och jämför aktuellt lager mot varje artikels minimitröskel. Bara de artiklar som faktiskt behöver åtgärd går vidare.
Orderkvantiteter och PO-innehåll genereras. Två kodsteg räknar ut behövd kvantitet och sätter ihop ett tydligt inköpsordermeddelande (SKU, artikelnamn, lagernivå och leverantörens e-post). En switch avgör vilken väg som ska tas, så flödet kan hantera olika fall utan att du behöver bevaka det.
Leverantörer får mejlet och ditt ark får registreringen. Gmail skickar inköpsordern, och därefter uppdateras Google Sheets med en tidsstämpel och en status som ”PO skickad” så att du kan följa upp i efterhand.
Du kan enkelt ändra ombeställningsreglerna så att de matchar dina verkliga inköpsvanor (som förpackningsstorlekar, ledtider eller föredragna leverantörer) utifrån dina behov. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: Konfigurera schedule trigger
Det här arbetsflödet startar dagligen via schedule trigger innan det hämtar lagerdata.
- Lägg till och öppna Daily Schedule Trigger.
- Ställ in intervallet för Rule så att det körs dagligen (standardstrukturen för regeln finns redan; ange den exakta tid på dagen som ni vill använda).
- Koppla Daily Schedule Trigger till Fetch Low Stock Items.
Steg 2: Anslut Google Sheets
Tre Google Sheets-noder läser lagerdata och loggar inköpsordrar.
- Öppna Fetch Low Stock Items och välj dokument-ID
[YOUR_ID]med arketInventory_Stock(gid0). - I Fetch Low Stock Items ställer ni in filtret så att Inventory Status är lika med
Low Stock. - Öppna Retrieve PO Records och välj dokument-ID
[YOUR_ID]med arketPurchase Order(gid1455016343). - I Retrieve PO Records ställer ni in filter så att SKU är lika med
={{ $json.sku }}och Order Status är lika medIn Progress. - Öppna Log Purchase Order, ställ in Operation på
appendoch mappa kolumner med hjälp av de angivna uttrycken, till exempel SKU →={{ $('Compose Email and PO').item.json.sku }}och Order Status →In Progress.
Autentisering krävs: Anslut era Google Sheets-inloggningsuppgifter.
⚠️ Vanlig fallgrop: Kolumnnamnen som refereras i Process Stock Orders (t.ex. Available Qty, Min. Threshold) måste matcha era rubriker i arket exakt.
Steg 3: Sätt upp bearbetningslogik
De två kodnoderna beräknar påfyllningskvantiteter och bygger payloads för e-post/inköpsorder.
- Öppna Process Stock Orders och bekräfta att JavaScript-logiken använder fält som
Available Qty,Min. Threshold,Min OrderochMax Orderför att sättareorder_neededochorder_qty. - Öppna Compose Email and PO och verifiera att den genererar objekt med
type: "email"ochtype: "po", inklusivepo_numberochorder_date. - Säkerställ att exekveringsflödet följer Fetch Low Stock Items → Process Stock Orders → Compose Email and PO.
Steg 4: Konfigurera routning och e-post till leverantör
Objekt routas till e-post eller loggning av inköpsorder baserat på deras typ.
- Öppna Route Email vs PO och bekräfta att första regeln matchar
={{ $json.type }}lika medemailoch byter namn på utdata till Email. - Bekräfta att den andra regeln matchar
={{ $json.type }}lika medpooch byter namn på utdata till Purchase Order. - Koppla utdata Email från Route Email vs PO till Dispatch Supplier Email.
- I Dispatch Supplier Email ställer ni in Send To till
={{ $json.supplier_email }}, Subject till={{ $json.subject }}och Message till={{ $json.body }}.
Autentisering krävs: Anslut era Gmail-inloggningsuppgifter.
Steg 5: Logga inköpsordrar och förhindra dubbletter
Den här grenen säkerställer att endast nya inköpsordrar loggas och itererar genom raderna i inköpsordern.
- Koppla utdata Purchase Order från Route Email vs PO till Iterate Order Lines.
- Säkerställ att Iterate Order Lines skickar objekt till Retrieve PO Records för uppslag i arket Purchase Order.
- I Verify Record Presence bekräftar ni att villkoret kontrollerar att
={{ $json['Order Status'] }}finns för att upptäcka befintliga poster. - Skicka grenen false (ingen befintlig post) till Log Purchase Order så att nya rader läggs till.
- Routa grenen true till Idle Placeholder för att hoppa över dubbletter, och sedan tillbaka in i Iterate Order Lines enligt konfiguration.
⚠️ Vanlig fallgrop: Om Retrieve PO Records inte returnerar ett fält Order Status kommer Verify Record Presence att routa till Log Purchase Order för varje objekt.
Steg 6: Testa och aktivera ert arbetsflöde
Validera flödet från start till mål innan ni aktiverar dagliga körningar.
- Klicka på Execute Workflow för att köra Daily Schedule Trigger manuellt och hämta artiklar med lågt lagersaldo.
- Bekräfta att Dispatch Supplier Email skickar e-post till leverantör och att Log Purchase Order lägger till rader i arket
Purchase Order. - Kontrollera att objekt med befintlig Order Status i Retrieve PO Records routas till Idle Placeholder och inte loggas igen.
- När allt är verifierat växlar ni arbetsflödet till Active för att aktivera daglig schemaläggning.
Vanliga fallgropar
- Åtkomsten till Google Sheets kan fallera om det anslutna Google-kontot tappar behörighet till filen eller om bladflikens namn ändras. Om det skapar fel, kontrollera n8n:s behörighetskoppling och kalkylarkets ID först.
- Om du använder väntbeteende eller långsamma externa anrop varierar processtiderna. Öka väntetiden om nedströmsnoder misslyckas på tomma svar, särskilt när Sheets returnerar många rader.
- Utskick via Gmail kan misslyckas utan tydligt fel om du når dagliga sändgränser eller om leverantörsadresser inte är validerade. Testa med en enda SKU först och bekräfta att ”Från”-adressen och svarshanteringen matchar din process.
Vanliga frågor
Cirka 30–60 minuter om ditt ark redan är organiserat.
Nej. Du kopplar främst konton och mappar kalkylarkskolumner. Kodstegen är redan inbyggda i flödet, så du konfigurerar – du programmerar inte.
Ja. n8n har ett gratis self-hosted-alternativ och en gratis provperiod i n8n Cloud. Cloud-planer startar på 20 USD/månad för högre volym. Du behöver också räkna in eventuella Google Workspace-kostnader om din Gmail/Sheets ligger på en betald domän.
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 då behöver du ändra routningslogiken. Lägg till ett godkännandesteg innan Gmail-utskicket genom att justera switchen ”Route Email vs PO” och lägga in en manuell godkännandepath (till exempel skicka ett internt mejl eller ett Slack-meddelande och vänta på svar). Vanliga anpassningar är leverantörsspecifika mallar, minsta orderkvantiteter och att beställa i förpackningar i stället för styckvis.
Oftast handlar det om behörigheter eller en ändrad kalkylarksstruktur. Återanslut Google Sheets-credential i n8n, bekräfta att kalkylarkets ID är korrekt och säkerställ att fliknamn och rubrikkolumner fortfarande matchar det flödet förväntar sig. Om någon har döpt om ”Supplier Email” till något annat kan flödet läsa tomma värden och du ser saknade fält längre fram. Kontrollera också att det anslutna Google-kontot faktiskt kan öppna filen utanför n8n.
Hundratals rader brukar fungera bra för en daglig körning.
Det beror på hur strikta dina inköpsregler är. Zapier och Make är bra för enkla triggers, men det här flödet drar nytta av n8n:s förgreningar och kodbaserade bearbetning, vilket hjälper när du räknar kvantiteter, bygger mejl med flera rader och skriver tillbaka strukturerade loggar till Sheets. n8n ger dig också ett self-hosting-alternativ, vilket kan vara avgörande när du kör dagliga kontroller över många SKU:er. Om du bara behöver ”om lagret är lågt, skicka mig ett meddelande” kan enklare verktyg räcka. Om du vill ha en pålitlig ombeställningsloop med revisionsspårning passar n8n bättre. Prata med en automationsexpert om du vill ha en snabb rekommendation baserad på din volym.
När det här väl rullar sker ombeställningarna i bakgrunden och ditt ark håller sig korrekt. Det betyder färre utryckningar – och mycket mer förutsägbarhet.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.