Din Shopify-orderexport ser bra ut tills den inte gör det. En saknad sida här, en duplicerad bit där, och plötsligt är din ”rapport” en gissningslek. Shopifys API begränsar hur mycket du kan hämta åt gången, så manuella hämtningar tappar i det tysta ordrar när butiken får hög belastning.
Den här Shopify Sheets-automatiseringen slår hårdast mot e-handelsansvariga under veckorapportering, men analytiker som städar data för dashboards känner av det också. Och om du är ny på n8n förtjänar du ändå en setup som bara fungerar. Resultatet är enkelt: varje order, varje sida, appendas till Google Sheets som felfria radposter du kan lita på.
Nedan ser du exakt hur workflowet hämtar ordrar i batchar, loopar igenom varje sida och skriver en rapportklar dataset till Sheets utan den vanliga exportstruligheten.
Så fungerar automatiseringen
Hela n8n-workflowet, från trigger till slutresultat:
n8n Workflow Template: Shopify till Google Sheets: kompletta orderrapporter
flowchart LR
subgraph sg0["Scheduled Time Starter Flow"]
direction LR
n0@{ icon: "mdi:swap-vertical", form: "rounded", label: "Define Date Window", pos: "b", h: 48 }
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/graphql.png' width='40' height='40' /></div><br/>Retrieve Order Pages"]
n2@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Check Next Page", pos: "b", h: 48 }
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/>Summarize Items by Vendor"]
n4@{ icon: "mdi:database", form: "rounded", label: "Append to Sheets", pos: "b", h: 48 }
n5@{ icon: "mdi:play-circle", form: "rounded", label: "Scheduled Time Starter", pos: "b", h: 48 }
n0 --> n1
n1 --> n2
n5 --> n0
n3 --> n4
n2 --> n1
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 n5 trigger
class n2 decision
class n4 database
class n3 code
classDef customIcon fill:none,stroke:none
class n1,n3 customIcon
Problemet: Shopify-orderhämtningar missar data i större skala
Shopify-orderdata verkar enkel att hämta tills du försöker dra ”alla ordrar” för ett datumintervall och API:et bara returnerar första delen. Med GraphQL får du ett begränsat antal ordrar per request (upp till 250), vilket betyder att du måste paginera med cursors. Missar du en cursor-uppdatering, avbryter en loop för tidigt eller kör jobbet vid fel tidpunkt blir ditt kalkylark ofullständigt utan att du märker det. Sedan lägger du eftermiddagen på att stämma av totalsummor, exportera CSV igen och förklara varför siffrorna för ekonomi och marknad inte matchar. Ärligt talat är det inte jobbet som gör mest ont. Det är osäkerheten.
Friktionen eskalerar snabbt. Här är var det fallerar i verkligheten:
- Du exporterar CSV flera gånger eftersom Shopifys exporter är lätta att råka få fel på när filter ändras.
- GraphQL-paginering kräver cursor-logik, och ett litet misstag gör att en hel ordersida försvinner.
- Din ”orderrapport” är inte rapportklar eftersom radposter ligger inuti nästlade orderobjekt.
- När rapportering är manuell försenar du beslut eftersom du ännu inte litar på siffrorna.
Lösningen: hämta varje Shopify-ordersida till Sheets
Det här n8n-workflowet gör Shopifys begränsning ”250 ordrar åt gången” till något du aldrig behöver tänka på igen. Det startar enligt ett schema (dagligen, varje timme eller när du vill), sätter ett tydligt datumintervall och frågar sedan Shopify via GraphQL efter första ordersidan. Om Shopify säger att det finns en sida till hämtar workflowet automatiskt nästa 250 med den cursor som returneras, och upprepar tills det inte finns fler sidor kvar. När alla ordrar för intervallet är insamlade plattar ett kodsteg ut den nästlade datan till kalkylarksvänliga rader (radposter i stället för trasslig JSON). Till sist görs en felfri append till Google Sheets, så ditt rapportark växer konsekvent över tid.
Workflowet börjar med triggern Scheduled Time, därefter sätter ”Define Date Window” startDay och endDay. ”Retrieve Order Pages” fortsätter att hämta tills ”Check Next Page” säger stopp, och först då förbereder ”Summarize Items by Vendor” radposter för ”Append to Sheets”. Ingen passning. Inga saknade sidor.
Det du får: automatisering vs. resultat
| Vad det här workflowet automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut
Säg att du kör en veckovis orderrapport och att butiken genererar cirka 1 000 ordrar i det intervallet. Manuellt brukar du exportera, stickprova, exportera igen och sedan forma om radposter i Sheets eller Excel, vilket lätt tar runt 2 timmar. Med det här workflowet lägger du kanske 10 minuter en gång på att sätta schema och kolumner i arket, och sedan hämtar varje körning fyra sidor (250 × 4), plattar ut artiklarna och appendar dem automatiskt. Du granskar fortfarande rapporten. Du slutar bara att bygga ihop den.
Det här behöver du
- n8n-instans (testa n8n Cloud gratis)
- Självhosting om du föredrar det (Hostinger fungerar bra)
- Shopify Admin API-åtkomst för GraphQL-frågor mot ordrar
- Google Sheets för att lagra rapportklara orderradposter
- Shopify access token (skapas i Shopify Admin under Appar)
Kunskapsnivå: Nybörjare. Du kopplar Shopify- och Google-inloggningar och bekräftar sedan att Sheet-kolumnerna matchar det workflowet skickar ut.
Vill du inte sätta upp detta själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
Ett schema startar allt. Workflowet körs enligt din valda frekvens med Scheduled Time Starter, så rapportering sker även när ingen i teamet tänker på det.
Ett tydligt datumintervall definieras. ”Define Date Window” sätter startDay och endDay baserat på aktuell tid, vilket gör hämtningarna konsekventa och undviker diskussionen ”fick vi med gårdagen?”.
Shopify-sidor hämtas tills det inte finns fler. ”Retrieve Order Pages” begär första batchen ordrar via GraphQL, sedan tittar ”Check Next Page” på Shopifys pageInfo.hasNextPage och cursor. Om en sida till finns loopar workflowet tillbaka och hämtar igen. Om inte går det vidare.
Radposter plattas ut och skrivs till Google Sheets. Kodsteget summerar artiklar (inklusive leverantör/SKU-kontext) och ”Append to Sheets” skickar slutraderna till ditt kalkylark så rapporten är redo för pivottabeller, Looker Studio eller vad du använder härnäst.
Du kan enkelt ändra datumintervall-logiken så den matchar dina rapportstopp (t.ex. ”endast igår” eller ”senaste 7 dagarna”) baserat på dina behov. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: Konfigurera schema-triggern
Ställ in workflowet så att det körs dagligen enligt ett schema, så att det kan hämta och sammanfatta nyliga Shopify-ordrar automatiskt.
- Lägg till och öppna Scheduled Time Starter.
- Ställ in Rule så att den triggar kl.
08:43(som konfigurerat medtriggerAtHour: 8ochtriggerAtMinute: 43). - Koppla Scheduled Time Starter till Define Date Window.
Steg 2: Anslut Shopify och ställ in datumfönstret
Definiera datumintervallet för ordrar och anslut till Shopify GraphQL API för att hämta paginerade resultat.
- Öppna Define Date Window och lägg till två fält: startDay med
={{$now.plus({ days: -30 }).toFormat('yyyy-MM-dd')}}och endDay med={{$now.toFormat('yyyy-MM-dd')}}. - Öppna Retrieve Order Pages och sätt Endpoint till
https://lokal-eg.myshopify.com/admin/api/2025-01/graphql.json. - Ställ in Authentication till
headerAuth. - Klistra in GraphQL-frågan exakt som den är konfigurerad, inklusive cursor- och datumuttryck som refererar till
{{ $('Define Date Window').item.json.startDay }}och{{ $('Define Date Window').item.json.endDay }}. - Behörighet krävs: Anslut era httpHeaderAuth-credentials i Retrieve Order Pages.
pageInfo.endCursor. Säkerställ att cursor-uttrycket förblir intakt, annars stannar pagineringen efter första sidan.Steg 3: Konfigurera paginering och bearbetning
I det här steget loopar ni igenom Shopify-ordrars sidor och sammanfattar rader per SKU och leverantör innan resultaten skickas vidare.
- Öppna Check Next Page och bekräfta att villkoret kontrollerar att
={{ $json.data.orders.pageInfo.hasNextPage }}är lika medtrue. - Verifiera routingen: Check Next Page ska routa true tillbaka till Retrieve Order Pages och false till Summarize Items by Vendor.
- Öppna Summarize Items by Vendor och behåll JavaScript-koden som den är för att aggregera ordrar från alla sidor med
$items("Retrieve Order Pages", 0, counter). - Bekräfta utdatafälten: SKU, Title, Brand, total_quantity_sold och total_sales.
Steg 4: Konfigurera utdata till Google Sheets
Lägg till den sammanfattade datan i ert målark.
- Öppna Append to Sheets och ställ in Operation till
append. - Ställ in Document ID till ert kalkylarks-ID (för närvarande
[YOUR_ID]). - Ställ in Sheet Name till
Dump(konfigurerat somgid=0). - Säkerställ att Columns är inställda på
autoMapInputDatamed schemafälten som matchar sammanfattningens utdata. - Behörighet krävs: Anslut era googleSheetsOAuth2Api-credentials i Append to Sheets.
Steg 5: Testa och aktivera ert workflow
Kör workflowet end-to-end för att bekräfta att data hämtas, sammanfattas och läggs till korrekt.
- Klicka på Execute Workflow för att köra flödet från Scheduled Time Starter.
- Verifiera att Retrieve Order Pages returnerar data och att Check Next Page loopar tills
hasNextPageär false. - Bekräfta att Summarize Items by Vendor ger aggregerade rader och att Append to Sheets lägger till nya rader i arket
Dump. - När allt är validerat, slå på workflowet till Active så att det körs enligt schema.
Vanliga fallgropar
- Shopify Admin API-inloggningar kan gå ut eller sakna scopes för ordrar. Om det strular, kontrollera först appens API-scopes och tokenstatus i Shopify Admin.
- Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om nedströmsnoder fallerar på tomma svar.
- Append i Google Sheets kan se ”fel” ut när dina kolumner inte matchar den utplattade outputen. Bekräfta rubriker och kolumnordning i målarket innan du litar på datan.
Vanliga frågor
Cirka 30 minuter om din Shopify- och Google-åtkomst är redo.
Nej. Du kopplar konton och klistrar in din Shopify-token. Kodsteget finns redan med, så du konfigurerar främst fält och arket.
Ja. n8n har ett gratis självhostat 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 Shopify API-användning, som normalt täcks av din butiksplan men kan slå i rate limits vid stora backfills.
Två alternativ: n8n Cloud (hanterat, enklast setup) eller självhosting på en VPS. För självhosting är Hostinger VPS prisvärd och kör n8n bra. Självhosting ger dig obegränsade körningar men kräver grundläggande serverhantering.
Ja, och det handlar främst om att ändra datumintervallet. Justera logiken i ”Define Date Window” så att startDay och endDay sätts till dina månadsgränser, och behåll sedan samma pagineringsloop. Vissa team lägger också till en andra Google Sheet-flik för ”Månadsöversikt” och låter detta workflow fortsätta skriva råa radposter till första fliken.
Oftast beror det på en utgången token eller saknade API-scopes för ordrar. Skapa en ny Shopify access token och uppdatera sedan de credentials som används av GraphQL-requesten i ”Retrieve Order Pages”. Om det bara fallerar vid stora hämtningar slår du sannolikt i rate limits, så minska datumintervallet eller schemalägg körningar oftare.
Många. Workflowet paginerar i sidor om 250 ordrar och loopar vidare tills Shopify rapporterar att det inte finns fler sidor, så ”tusentals ordrar” är normalt så länge dina API-gränser och n8n-körtid hänger med.
Ofta, ja, eftersom paginering och datatformning är hela grejen här. Zapier och Make kan hämta ordrar, men att hantera ”fortsätt begära nästa sida tills det är klart” kan bli klumpigt, och du märker det när du passerar några hundra ordrar. n8n är bekvämt med loopar, villkorsstyrd logik och egna transformationer, vilket gör att outputen kan bli genuint rapportklar. Det självhostade alternativet spelar också roll när du inte vill tänka på task limits. Om du bara behöver en minimal tvåstegssynk för en lågvolymsbutik kan Zapier eller Make fortfarande vara enklare. Prata med en automationsexpert om du vill ha en snabb rekommendation för din setup.
När detta väl rullar slutar din Shopify-orderrapportering att vara ett återkommande projekt. Workflowet tar hand om de repetitiva delarna och ditt ark förblir komplett.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.