Behöver ert företag hjälp med att implementera AI? Kontakta oss och få prisoffert här →
AI Skolan
januari 22, 2026

Shopify + WooCommerce: lagersaldo i synk

Rickard Andersson Partner, Nodenordic.se

Ditt lager kan vara “rätt” i Shopify och ändå vara fel i WooCommerce. Sedan köper en kund den sista varan två gånger, supporten får det arga mejlet och du sitter fast med återbetalningar som du hade kunnat undvika.

Den här typen av lager-synkautomatisering drabbar butiksägare först, men även driftsansvariga och marknadsföraren som kör kampanjer känner av följderna. Om du säljer samma sortiment i Shopify och WooCommerce håller det här flödet lagret synkat och ger dig ett strukturerat revisionsspår.

Du får se hur flödet jämför lagersaldo, uppdaterar rätt butik, loggar varje ändring i Google Sheets och mejlar dig när något ser avvikande ut.

Så fungerar automatiseringen

Hela n8n-flödet, från trigger till slutresultat:

n8n Workflow Template: Shopify + WooCommerce: lagersaldo i synk

Problemet: lagersaldot glider isär mellan Shopify och WooCommerce

Om du säljer på två plattformar är det nästan garanterat att lagersaldon glider isär. En retur hanteras i en butik men inte i den andra. En manuell justering görs under stress. En bulk-uppdatering importeras på ett konstigt sätt, och plötsligt är din produkt som visar “5 i lager” egentligen nere på noll. Det värsta är fördröjningen: du får oftast reda på det efter en översäljning, inte innan. Sedan städar du upp ordrar, redigerar listningar och försöker lista ut vilken siffra som ens var korrekt från början.

Friktionen byggs på. Här är var det brukar fallera.

  • Att kontrollera Shopify och WooCommerce produkt för produkt blir en veckoritual som äter upp cirka 2 timmar.
  • Manuella “snabbfixar” skapar nya misstag, särskilt när två personer uppdaterar lager samma dag.
  • Du råkar sälja för mycket under kampanjer eftersom den snabbare butiken inte väntar på den långsammare.
  • När något går fel finns inget revisionsspår, så du kan inte med säkerhet svara på “vad ändrades och när?”

Lösningen: automatisk lagersynk + loggade undantag

Det här flödet ger dig en pålitlig lager-handshake mellan Shopify och WooCommerce. Det körs enligt schema (din “lagerpuls”) eller triggas direkt via en webhook när en plattform rapporterar en förändring. n8n hämtar lagerdata från båda butikerna, kombinerar flödena och jämför sedan siffrorna för att hitta avvikelser. Om det är en korrekt och säker uppdatering bygger det rätt åtgärd och pushar korrigeringen tillbaka till den butik som ligger efter. Varje uppdatering skrivs till Google Sheets så att du kan granska vad som hände i efterhand. Och när en mismatch ser riskfylld ut eller kräver ett mänskligt beslut flaggar flödet den och mejlar dig via Gmail så att det inte tyst ligger och blir ett problem i bakgrunden.

Flödet startar med en timer eller webhook och normaliserar inkommande payload. Därefter hämtas lagernivåer från Shopify och WooCommerce och slås ihop till ett gemensamt jämförelseunderlag. Till sist genomförs uppdateringar där det är lämpligt, resultaten loggas i Google Sheets och Gmail skickar en varning om granskning behövs.

Det här får du: automatisering vs. resultat

Exempel: så här ser det ut i praktiken

Säg att du hanterar 200 SKU:er i Shopify och WooCommerce. En enkel manuell rutin är att kontrollera lagret i ena butiken, kontrollera den andra och sedan justera. Även med 1 minut per SKU för att verifiera och fixa blir det cirka 3 timmar när du gör en full genomgång. Med det här flödet ställer du in lagerpulsen (till exempel varje timme) och systemet sköter jämförelse och uppdateringar automatiskt. Ditt “jobb” blir att granska enstaka Gmail-varningar och skumma Google Sheets-loggen, vilket vanligtvis tar omkring 10 minuter.

Det här behöver du

  • n8n-instans (testa n8n Cloud gratis)
  • Self-hosting-alternativ om du föredrar det (Hostinger fungerar bra)
  • Shopify för att läsa och uppdatera lagernivåer.
  • WooCommerce för att hämta lager och genomföra korrigeringar.
  • Google Sheets för revisionsloggning och historik för granskning.
  • Gmail för att skicka varningar vid undantag och avvikelser.
  • Shopify + WooCommerce API-nycklar (skapa dem i respektive plattforms utvecklar-/API-inställningar).

Kunskapsnivå: Medel. Du kopplar konton, klistrar in API-nycklar och mappar fält som SKU och lagersaldo.

Vill du inte sätta upp detta själv? Prata med en automatiseringsexpert (gratis 15-minuters konsultation).

Så fungerar det

Ett schema eller en webhook startar körningen. Flödet kan triggas av en timer (“Schemalagd lagerpuls”) för kontinuerlig synk, eller reagera direkt när en webhook skickar en plattformsförändring.

Lagret hämtas från båda butikerna. n8n använder HTTP-anrop för att hämta Shopify-lager och WooCommerce-lager och normaliserar sedan data så att du jämför äpplen med äpplen (oftast SKU plus antal).

Skillnader upptäcks och omvandlas till åtgärder. Ett kodsteg beräknar avvikelsen, en If-kontroll avgör vad som är en verklig differens och ett annat kodsteg bygger själva instruktionerna för “uppdatera den här artikeln”. Vissa avvikelser kan markeras för manuell granskning, vilket är ett bra skyddsräcke.

Uppdateringar, loggar och varningar sker automatiskt. Uppdateringar styrs till Shopify eller WooCommerce, resultat slås ihop och sedan skrivs allt till Google Sheets. Om varningsvillkoret uppfylls skickar Gmail ett meddelande och flödet returnerar ett tydligt webhook-svar.

Du kan enkelt ändra synkfrekvensen så att den matchar hur snabbt ditt sortiment rör sig. Du kan också justera vad som räknas som “manuell granskning behövs” så att du inte störs av ofarliga edge cases. Se hela implementationsguiden nedan för anpassningsalternativ.

Steg-för-steg-guide för implementation

Steg 1: konfigurera schedule- och webhook-triggers

Sätt upp de två ingångarna så att arbetsflödet kan köras på en timer eller svara på plattformswebhooks.

  1. Öppna ⏰ Scheduled Inventory Pulse och ställ in schemaregeln så att den körs varje timme (noden använder Interval med Field satt till hours).
  2. Öppna 📥 Incoming Platform Webhook och ställ in Path till inventory-webhook, HTTP Method till POST och Response Mode till responseNode.
  3. Notera det parallella flödet: 📥 Incoming Platform Webhook skickar utdata till både 📝 Map Trigger Payload och 📝 Build Update Actions parallellt.

Steg 2: anslut datakällor för Shopify och WooCommerce

Normalisera trigger-payloaden och hämta produktdata från Shopify och WooCommerce parallellt.

  1. I 📝 Map Trigger Payload ställer ni in tilldelningar: triggerType till ={{ $json.body ? 'webhook' : 'schedule' }}, sku till ={{ $json.body?.sku || 'ALL' }}, platform till ={{ $json.body?.platform || 'ALL' }} och syncMode till ={{ $json.body?.sku ? 'single' : 'full' }}.
  2. I 🛍️ Retrieve Shopify Stock ställer ni in URL till https://{{ $env.SHOPIFY_STORE }}.myshopify.com/admin/api/2024-01/products.json och aktiverar frågeparametrarna limit=250 och fields=id,title,variants.
  3. I 🛒 Retrieve Woo Stock ställer ni in URL till ={{ $env.WOOCOMMERCE_URL }}/wp-json/wc/v3/products och aktiverar frågeparametrarna per_page=100 och status=publish.
  4. Bekräfta parallell körning: 📝 Map Trigger Payload skickar utdata till både 🛍️ Retrieve Shopify Stock och 🛒 Retrieve Woo Stock parallellt.

Autentisering krävs: Anslut era httpHeaderAuth-uppgifter i 🛍️ Retrieve Shopify Stock.

Autentisering krävs: Anslut era httpBasicAuth-uppgifter i 🛒 Retrieve Woo Stock.

Tips: Säkerställ att miljövariabler som SHOPIFY_STORE och WOOCOMMERCE_URL är definierade i n8n så att request-URL:erna resolvas korrekt.

Steg 3: sätt upp bearbetning av lagervarianser

Kombinera plattformsflöden, upptäck avvikelser och dela upp dem i enskilda poster för efterföljande åtgärder.

  1. I 🔀 Combine Platform Feeds ställer ni in Mode till combine för att slå ihop svaren från Shopify och WooCommerce.
  2. Öppna 🔍 Detect Stock Variance och behåll den befintliga koden för normalisering och jämförelse av lager (inga parameterändringar krävs).
  3. I ❓ Discrepancy Check bekräftar ni att villkoret använder Left Value ={{ $json.summary.discrepanciesFound }} med Operation gt och Right Value 0.
  4. I 📋 Segment Variances for AI behåller ni koden som delar upp varje avvikelse i separata items för vidare bearbetning.

Steg 4: konfigurera uppdateringsåtgärder och butiksrouting

Översätt avvikelseposter till uppdateringsåtgärder, routa per butik och skicka lageruppdateringar parallellt.

  1. I 📝 Build Update Actions behåller ni koden som tolkar AI-beslut och bygger payloads för plattformsuppdateringar.
  2. I 🚨 Manual Review Needed? bekräftar ni att villkoret kontrollerar att ={{ $json.requiresManualReview }} är lika med true.
  3. I 🔀 Separate Updates by Store behåller ni koden som delar upp uppdateringsitems till individuella plattformsuppdateringar.
  4. I 🔀 Route Updates by Store bekräftar ni att reglerna routar ={{ $json.platform }} till utdata shopify och woocommerce.
  5. I 🛍️ Apply Shopify Update ställer ni in URL till =https://{{ $env.SHOPIFY_STORE }}.myshopify.com/admin/api/2024-01/inventory_levels/set.json, Method till PUT och body-parametrar: location_id ={{ $env.SHOPIFY_LOCATION_ID }}, inventory_item_id ={{ $json.variantId }}, available ={{ $json.newQuantity }}.
  6. I 🛒 Apply Woo Update ställer ni in URL till ={{ $env.WOOCOMMERCE_URL }}/wp-json/wc/v3/products/{{ $json.productId }}, Method till PUT och JSON Body till ={ "stock_quantity": {{ $json.newQuantity }} }.
  7. Notera parallell körning: 🔀 Route Updates by Store skickar utdata till både 🛍️ Apply Shopify Update och 🛒 Apply Woo Update parallellt.

Autentisering krävs: Anslut era httpHeaderAuth-uppgifter i 🛍️ Apply Shopify Update (redan konfigurerat i arbetsflödet).

Autentisering krävs: Anslut era httpBasicAuth-uppgifter i 🛒 Apply Woo Update.

Steg 5: konfigurera audit-loggning, aviseringar och webhook-svar

Slå ihop uppdateringsresultat, logga auditer till Google Sheets, skicka aviseringar vid behov och returnera webhook-svar.

  1. I 🔀 Combine Update Results ställer ni in Mode till combine så att resultat från Shopify och Woo slås ihop.
  2. I 📊 Write Audit to Sheets ställer ni in Operation till appendOrUpdate, Sheet Name till Audit Log och Document ID till ={{ $env.GOOGLE_SHEETS_AUDIT_ID }}. Mappa kolumner med de angivna uttrycken som ={{ $json.sku }}, ={{ $json.platform }} och ={{ $now.toISO() }}.
  3. I 📧 Alert Required? bekräftar ni att boolean-kontrollen använder ={{ $json.aiDecision?.requiresManualReview || $json.severity === 'critical' }} lika med true.
  4. I ✉️ Dispatch Alert Email ställer ni in Send To till ={{ $env.NOTIFICATION_EMAIL }}, Subject till =🚨 Inventory Sync Alert: {{ $json.sku }} och Message till HTML-mallen som finns i noden.
  5. I 📤 Return Webhook Result ställer ni in Respond With till json och Response Body till ={{ { "success": true, "summary": $('🔍 Detect Stock Variance').item.json.summary, "discrepanciesProcessed": $('📝 Build Update Actions').all().length, "updatesApplied": $('🔀 Combine Update Results').all().length, "timestamp": $now.toISO() } }}.

Autentisering krävs: Anslut era Google Sheets-uppgifter i 📊 Write Audit to Sheets.

Autentisering krävs: Anslut era Gmail-uppgifter i ✉️ Dispatch Alert Email.

Steg 6: testa och aktivera ert arbetsflöde

Validera båda trigger-vägarna och bekräfta att uppdateringar, audit-loggar och aviseringar fungerar som förväntat.

  1. Kör ⏰ Scheduled Inventory Pulse manuellt för att verifiera att den schemalagda vägen går via 📝 Map Trigger Payload, hämtar data och loggar till 📊 Write Audit to Sheets.
  2. Skicka en POST-request till URL:en för 📥 Incoming Platform Webhook med en exempel-payload för att validera webhook-vägen och JSON-svaret från 📤 Return Webhook Result.
  3. Bekräfta att en lyckad körning skapar rader i arket Audit Log och endast skickar e-postaviseringar när 📧 Alert Required? evalueras till true.
  4. Aktivera arbetsflödet genom att slå om det till Active när testningen är lyckad.
🔒

Lås upp fullständig steg-för-steg-guide

Få den kompletta implementeringsguiden + nedladdningsbar mall

Vanliga fallgropar

  • Shopify-inloggning kan löpa ut eller kräva rätt scopes för lager. Om uppdateringar misslyckas, kontrollera appbehörigheterna i Shopify Admin och autentisera på nytt i n8n.
  • Om du använder Wait-noder eller om butikernas API:er är långsamma under rusningstid varierar bearbetningstiden. Öka väntetiden om efterföljande noder misslyckas på grund av tomma svar.
  • Google Sheets-loggning kan sluta fungera utan att det märks om ett kolumnnamn ändras. Bekräfta att mappningen i “Skriv revisionslogg till Sheets” fortfarande matchar din rubrikrad innan du litar på revisionsspåret.

Vanliga frågor

Hur lång tid tar det att sätta upp den här lager-synkautomatiseringen?

Cirka 30 minuter om dina API-nycklar är klara.

Behöver jag kunna koda för att automatisera lagersynk?

Nej. Du kopplar Shopify, WooCommerce, Google Sheets och Gmail och bekräftar sedan att dina SKU- och antal-fält matchar.

Är n8n gratis att använda för det här flödet för lager-synkautomatisering?

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 volymer. Du bör också ta hänsyn till eventuella Shopify/WooCommerce API-begränsningar, även om de flesta butiker inte når dem med en synk varje timme.

Var kan jag hosta n8n för att köra den här lager-synkautomatiseringen?

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.

Kan jag anpassa det här flödet för lager-synkautomatisering till Slack-varningar i stället för Gmail?

Ja, men du behåller samma logik och byter ut notifieringssteget. Ersätt noden “Dispatch Alert Email” (Gmail) med en Slack-nod och koppla den till det befintliga beslutet “Alert Required?” så att bara riktiga undantag notifierar teamet. Vanliga anpassningar är att ändra synkfrekvensen, lägga till en “gör ingenting”-gren för små avvikelser och skriva extra fält (som produktnamn och URL) i Google Sheets-revisionsloggen.

Varför misslyckas min Shopify-anslutning i det här flödet?

Oftast handlar det om en utgången token eller saknade lagerbehörigheter i Shopifys appinställningar. Återanslut Shopify i n8n, bekräfta att appen har åtkomst till lager-endpoints och verifiera att du använder rätt butiksdomän. Om fel bara uppstår vid stora körningar kan du stöta i rate limits, så att glesa ut anropen kan hjälpa.

Hur många SKU:er kan den här lager-synkautomatiseringen hantera?

Tusentals, förutsatt att dina API-gränser och serverresurser är rimliga.

Är den här lager-synkautomatiseringen bättre än Zapier eller Make?

Ofta, ja, eftersom det här inte bara är “om X så Y”. Du slår ihop två flöden, beräknar avvikelse, förgrenar på undantag och skriver sedan en revisionslogg, vilket är den typ av flöde som blir klumpigt (och dyrt) i enklare verktyg. n8n ger dig också ett self-hosting-alternativ, vilket innebär att du inte betalar per litet steg när du skalar. Zapier eller Make kan fortfarande vara bra om du bara vill ha en enkel varning för lågt lager eller en enkel tvåstegssynk. Om du är osäker, prata med en automatiseringsexpert så får du en rak rekommendation.

När detta väl rullar slutar lageravvikelser att komma som en överraskning. Flödet sköter de repetitiva kontrollerna, loggar sanningen i Google Sheets och pingar dig bara när något faktiskt behöver din uppmärksamhet.

Kontakta oss

Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.

×

Använd mall

Få direkt tillgång till denna n8n-arbetsflödes JSON-fil

Få prisoffert redan idag!
Få prisoffert redan idag!

Berätta vad ni behöver hjälp med så hör vi av oss inom en arbetsdag!

Få prisoffert redan idag!
Få prisoffert redan idag!

Berätta vad ni behöver hjälp med så hör vi av oss inom en arbetsdag!

Launch login modal Launch register modal