Dina orderdata finns i Shopify, men din rapportering finns i Google Sheets. Så du exporterar, kopierar, klistrar in, fixar kolumner och sitter ändå och undrar om du missade något (särskilt under hektiska dagar).
Den här uppsättningen för Shopify Sheets logging träffar butiksägare först, men marknadsförare som bygger veckodashboards och operations-team som stämmer av leveranser märker det också. Målet är enkelt: varje order hamnar i ett kalkylark, tillförlitligt, utan luckor.
Det här flödet hämtar ordrar via Shopify Admin REST API med korrekt paginering och skriver sedan resultaten till Google Sheets i ett konsekvent format. Du får se vad det gör, varför det undviker de vanliga felpunkterna och hur du kör det på beställning eller enligt schema.
Så fungerar den här automatiseringen
Hela n8n-flödet, från trigger till slutresultat:
n8n Workflow Template: Shopify till Google Sheets: order loggas utan glapp
flowchart LR
subgraph sg0["When clicking ‘Test workflow’ Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "When clicking ‘Test workflow’", 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/httprequest.dark.svg' width='40' height='40' /></div><br/>Get Orders"]
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/>Extract page_info "]
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/>Merge Loop items"]
n4@{ icon: "mdi:swap-vertical", form: "rounded", label: "List Orders", pos: "b", h: 48 }
n5@{ icon: "mdi:database", form: "rounded", label: "Google Sheets", pos: "b", h: 48 }
n6@{ icon: "mdi:play-circle", form: "rounded", label: "Schedule Trigger", pos: "b", h: 48 }
n7@{ icon: "mdi:swap-vertical", form: "rounded", label: "Assign page_info parameter", pos: "b", h: 48 }
n8@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Check page_info existence", pos: "b", h: 48 }
n1 --> n8
n4 --> n5
n3 --> n4
n6 --> n1
n2 --> n7
n8 --> n3
n8 --> n2
n7 --> n1
n0 --> n1
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 n0,n6 trigger
class n8 decision
class n5 database
class n1 api
class n2,n3 code
classDef customIcon fill:none,stroke:none
class n1,n2,n3 customIcon
Problemet: Shopify-exporter förblir inte kompletta
Shopify gör det enkelt att se ordrar. Det är betydligt mindre trevligt att hålla en felfri och komplett orderlogg någon annanstans. Exporter blir stökiga när volymen ökar, och ”bara hämta de senaste ordrarna” förvandlas till en konstant oro för att du hoppat över en sida, duplicerat rader eller saboterat din arksstruktur med ett nytt fält. Då blir rapportering en diskussion i stället för ett beslut: ”Stämmer den här siffran?” Den osäkerheten kostar dig i det tysta tid varje vecka, och den dyker ofta upp precis när du behöver svar snabbt (månadsslut, en stor kampanj, en lagerfråga).
Det går snabbt. Här är var det faller isär i praktiken:
- Manuella exporter är lätta att glömma, vilket gör att din ”dashboard” alltid ligger några dagar efter.
- Att hämta ”alla ordrar” kan missa poster om paginering inte hanteras korrekt, särskilt när du förlitar dig på verktyg som antar sidnummer.
- Sheets blir korrupta över tid när kolumner förskjuts eller nya fält dyker upp, så du fastnar i att fixa formler i stället för att läsa dem.
- Dubblettrader smyger sig in när du kör en synk igen utan ett konsekvent upplägg, och du märker det inte förrän totalsummorna ser fel ut.
Lösningen: Paginering av Shopify-ordrar till ett Google Sheet
Det här flödet hämtar Shopify-ordrar via Shopify Admin REST API och skriver dem till Google Sheets på ett repeterbart sätt. I stället för att förlita sig på den inbyggda genvägen ”hämta många ordrar” använder det en HTTP-förfrågan som medvetet hanterar Shopifys cursor-baserade paginering. Det är den delen som de flesta exporter gör fel. Varje API-anrop hämtar en batch med ordrar, sedan läser flödet pagineringstoken (från svarsheaders), sätter token för nästa förfrågan och upprepar tills det inte finns fler sidor. När alla sidor är insamlade delar det upp ordrarna till individuella objekt och uppdaterar ditt målkalkylark så att ett enda ark förblir korrekt för rapportering.
Flödet startar enligt schema eller via manuell körning. Shopify returnerar ordrar i chunkar, och flödet fortsätter att loopa genom att skicka page_info-cursorn vidare. Till sist uppdateras Google Sheets med en strukturerad lista med orderposter som du kan filtrera, bygga pivottabeller på och dela.
Det du får: Automatisering vs. resultat
| Det här automatiserar flödet | Resultat du får |
|---|---|
|
|
Exempel: Så här ser det ut
Säg att du gör en veckovis operationskontroll och behöver alla ordrar i ett Google Sheet för pivottabeller, återbetalningar och leveransanteckningar. Manuellt exporterar du från Shopify, formaterar kolumner och rimlighetskontrollerar totalsummor, vilket brukar ta cirka 45 minuter varje gång. Om exporten delas upp eller du måste göra om den kan det lätt bli 90 minuter. Med det här flödet klickar du på kör (eller låter schemat sköta det), väntar några minuter tills pagineringen är klar och ditt ark uppdateras på ett ställe utan filtrassel.
Det här behöver du
- n8n-instans (prova n8n Cloud gratis)
- Alternativ för self-hosting om du föredrar det (Hostinger fungerar bra)
- Shopify Admin REST API för att hämta orderbatchar.
- Google Sheets för att lagra och rapportera på ordrar.
- Shopify API-inloggningsuppgifter (skapa en app i Shopify admin).
Kunskapsnivå: Medel. Du klistrar in API-uppgifter, väljer fält och bekräftar att kolumnerna i ditt ark matchar det du skriver.
Vill du inte sätta upp det här själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
Manuell eller schemalagd trigger. Du kan köra det direkt för att fylla på historik, eller låta Scheduled Run Trigger hålla ditt Google Sheet uppdaterat utan att någon behöver komma ihåg att exportera.
Hämtning av Shopify-ordrar med paginering. HTTP Request-noden anropar Shopify Admin REST API med en limit (ofta 50, och du kan höja). Svarsheaders inkluderas så att flödet kan se cursortoken som Shopify använder för nästa sida.
Cursor-tolkning och loopstyrning. Ett litet kodsteg läser token för nästa sida (page_info), sparar den och en If-kontroll avgör om ytterligare en förfrågan behövs. Om ja loopar den tillbaka och hämtar nästa chunk. Om nej går den vidare.
Uppdatering av arket. Ordrar slås ihop, delas upp till radformade objekt och sedan skriver eller uppdaterar Google Sheets-noden poster i ditt målkalkylark så att din rapportering hålls i en fil.
Du kan enkelt ändra vilka fält du hämtar från Shopify så att de matchar exakt de kolumner du vill ha i Sheets utifrån dina behov. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: konfigurera triggertypen
Det här arbetsflödet kan startas manuellt eller enligt ett schema innan ni hämtar Shopify-ordrar.
- Öppna Manual Start Trigger om ni vill köra arbetsflödet vid behov.
- Öppna Scheduled Run Trigger för att definiera ett automatiserat intervall (ställ in schemaregeln efter er frekvens).
- Säkerställ att både Manual Start Trigger och Scheduled Run Trigger ansluter till Fetch Order Records enligt arbetsflödet.
Steg 2: anslut Shopify
Konfigurera API-anropet som hämtar orderposter från Shopify.
- Öppna Fetch Order Records.
- Inloggningsuppgifter krävs: Anslut era shopifyAccessTokenApi-uppgifter.
- Ställ in URL till
https://{store}.myshopify.com/admin/api/2025-01/orders.json. - Aktivera Send Query och säkerställ att frågeparametrarna inkluderar limit =
250och fields =id,note,email,processed_at,customer. - För paginering, ställ in det dynamiska namnet på frågeparametern till
{{ $json.page_info ? "page_info" : "status" }}och värdet till{{ $json.page_info ? $json.page_info : 'any' }}.
{store} i Shopify-URL:en med er faktiska butiks-subdomän, annars misslyckas anropet.
Steg 3: konfigurera paginering och aggregering
Dessa noder avgör om det finns fler sidor och bygger ett sammanlagt resultat.
- I Verify Next Page Link, behåll villkoret som kontrollerar att
{{ $json.headers.link }}notContainsrel="next"för att avgöra om en nästa sida finns. - Bekräfta att Verify Next Page Link skickar en utgång till Combine Loop Results och den andra till Parse Next Page Token.
- I Parse Next Page Token, behåll den angivna JavaScript-koden för att tolka
link-headern till pagineringsparametrar. - I Set Next Page Value, ställ in tilldelningsvärdet för page_info till
{{ $json.page_info }}. - Säkerställ att Set Next Page Value routar tillbaka till Fetch Order Records för att fortsätta pagineringen.
- I Combine Loop Results, behåll JavaScript-koden som slår ihop alla körningar av Fetch Order Records till en komplett datamängd.
Steg 4: konfigurera utdata till Google Sheets
Dela upp orderlistan och skriv varje order till ert kalkylark.
- Öppna Split Order Items och ställ in Field to Split Out till
body.orders. - Öppna Update Sheets Records.
- Inloggningsuppgifter krävs: Anslut era googleSheetsOAuth2Api-uppgifter.
- Ställ in Operation till
appendOrUpdate. - Ställ in Document till
[YOUR_ID]och Sheet tillshopify_orders. - Mappa kolumner: id =
{{ $json.id }}, note ={{ $json.note }}, email ={{ $json.email }}, processed_at ={{ $json.processed_at }}. - Behåll Matching Columns inställt på
idså att poster uppdateras baserat på order-id.
Steg 5: testa och aktivera ert arbetsflöde
Kör ett manuellt test, verifiera utdata och aktivera sedan den schemalagda automatiseringen.
- Klicka på Execute Workflow med Manual Start Trigger.
- Bekräfta att Fetch Order Records returnerar data och att Verify Next Page Link routar korrekt baserat på pagineringen.
- Verifiera att Update Sheets Records lägger till eller uppdaterar rader i arket
shopify_orders. - När allt är validerat, aktivera arbetsflödet så att Scheduled Run Trigger körs enligt ert angivna intervall.
Vanliga fallgropar
- Shopify Admin REST API-uppgifter kan löpa ut eller tappa scopes efter appändringar. Om det slutar fungera, kontrollera först behörigheterna för din Shopify-app och återskapa access token.
- Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om nedströmsnoder misslyckas på tomma svar.
- Skrivningar till Google Sheets misslyckas oftare än man tror när kolumnrubriker glider. Behåll en fast rubrikrad och ändra bara fält i flödet efter att du har uppdaterat arket.
Vanliga frågor
Cirka 30 minuter om dina Shopify- och Google-inloggningsuppgifter är klara.
Nej. Du klistrar mest in inloggningsuppgifter och väljer vilka orderfält som ska sparas. Det inkluderade flödet hanterar redan pagineringslogiken åt dig.
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å räkna in Shopify API-användning (vanligtvis försumbar för typiska orderhämtningar).
Två alternativ: n8n Cloud (hanterad, 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 serveradministration.
Ja, och det bör du. Ändra parametern fields i Shopify HTTP Request så att du bara hämtar det du faktiskt ska rapportera på, och linjera sedan dessa fält med kolumnerna som din Google Sheets-nod skriver. Vanliga justeringar är att lägga till kundens e-post, finansiell status, leveransstatus och totalsummor per radartikel. Håll rubrikraden stabil och justera sedan flödet så att det matchar den, inte tvärtom.
För det mesta beror det på en ogiltig eller utgången access token, så att återskapa Shopify Admin API-uppgifterna löser det. Det kan också handla om saknade API-scopes i din Shopify-app eller fel butiksdomän i förfrågnings-URL:en. Om det bara fallerar vid större hämtningar kan du slå i rate limits, så att sänka limit (batchstorlek) hjälper oftast.
Många. Shopify returnerar ordrar i paginerade batchar (ofta 50–250 per förfrågan), och flödet fortsätter att loopa tills det är klart, så volymen begränsas främst av API-gränser och hur länge du är villig att låta det köra. På n8n Cloud spelar din månatliga körningskvot roll; på self-hosted n8n finns inget tak, men då blir serverstorlek och skrivhastigheten i Google Sheets flaskhalsen.
Ofta, ja, om kravet är ”alla ordrar med paginering”. Cursor-baserad paginering är där enklare verktyg ofta blir krångliga, och du kan få ofullständiga exporter om du inte bygger ett mer komplext scenario. n8n ger dig också kontroll över headers, villkorslogik och loopbeteende utan att ta extra betalt för varje gren. Zapier eller Make kan fortfarande fungera för lättviktiga ”ny order → lägg till rad”-synkar, men de är inte mitt förstahandsval för backfills eller revisioner. Om du är osäker, prata med en automationsexpert så hjälper vi dig välja utifrån volym och rapporteringsbehov.
När det här väl rullar slutar ditt ark vara ”ännu en export” och blir pålitligt. Ärligt talat räcker det för att motivera uppsättningen.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.