Kundmigreringar låter enkla tills du hamnar i CSV-filen. Kolumnerna matchar inte, namn hamnar i fel fält och Shopify kastar importfel som skickar dig rakt tillbaka till kalkylarkshelvetet. Det är exakt det som Shopify import automation är till för att lösa.
E-handelsansvariga känner av det vid en plattformsflytt. Byråteam som gör migreringar känner av det mellan kunder. Och företagare som gör det “bara den här gången” inser snabbt att det aldrig är bara en gång, eftersom du ändå måste importera om efter att du har rensat filen.
Det här flödet konverterar en Squarespace Contacts-export till en Shopify-klar kundfil med Google Sheets. Du får se vad som ändras, hur flödet fungerar och vad du behöver för att köra det stabilt.
Så här fungerar automatiseringen
Se hur detta löser problemet:
n8n Workflow Template: Squarespace till Shopify, strukturerad import via Google Sheets
flowchart LR
subgraph sg0["Manual 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/webhook.dark.svg' width='40' height='40' /></div><br/>Webhook"]
n1@{ icon: "mdi:database", form: "rounded", label: "Shopify Customers", pos: "b", h: 48 }
n2@{ icon: "mdi:database", form: "rounded", label: "Read Squarespace profiles", pos: "b", h: 48 }
n3@{ icon: "mdi:database", form: "rounded", label: "Append Squarespace profiles", pos: "b", h: 48 }
n4@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Over Items", pos: "b", h: 48 }
n5@{ icon: "mdi:cog", form: "rounded", label: "Extract items from webhook s..", pos: "b", h: 48 }
n6@{ icon: "mdi:play-circle", form: "rounded", label: "Manual trigger", pos: "b", h: 48 }
n0 --> n5
n6 --> n2
n4 --> n1
n4 --> n3
n2 --> n1
n3 --> n4
n5 --> n4
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,n2,n3 database
class n0 api
classDef customIcon fill:none,stroke:none
class n0 customIcon
Utmaningen: Shopifys kundimporter havererar på stökiga CSV-filer
Squarespace exporterar kontakter i ett format som fungerar för Squarespace, inte för Shopify. Så du exporterar “Profiles”, öppnar CSV-filen och börjar den välkända rutinen: dela upp fullständiga namn, normalisera telefonnummer, lista ut vilket fält som är “Email” vs “Email Address” och ta bort kolumner som Shopify kommer att avvisa. Sedan importerar du, får en felrapport och gör om allt igen. Det går långsamt, det är lätt att göra fel och det är mentalt dränerande eftersom varje justering känns riskfylld när riktiga kunder är inblandade.
Det blir snabbt mycket. Här brukar friktionen uppstå.
- Shopifys importmall kräver specifika kolumnnamn och ordning, så även “små” skillnader kan göra att uppladdningen misslyckas.
- Manuell rensning bjuder in misstag som förskjutna rader, trasiga avgränsare eller att du råkar ta bort inledande nollor i telefonnummer.
- Dubbletter smyger sig in när du kör processen igen, vilket betyder mer efterarbete med kundregister senare.
- Arbetet är svårt att delegera, eftersom alla “fixar” arket lite olika.
Lösningen: Konvertera Squarespace-kontakter till Shopify-format automatiskt
Det här n8n-flödet tar din Squarespace-kontaktexport och gör den till en Shopify-kompatibel kundimportfil genom att använda en strukturerad Google Sheets-mall som “source of truth”. Du kan köra det manuellt efter att du har klistrat in/importerat Squarespace-CSV:n i inmatningsarket, eller trigga det via webhook genom att ladda upp CSV-filen direkt. När filen är tolkad loopar flödet igenom varje kontakt, mappar fält till rätt Shopify-kolumner och skriver korrekta, strukturerade rader i utdataarket (“Shopify Customers”). När det är klart exporterar du arket Shopify Customers som CSV och importerar det i Shopify med betydligt färre överraskningar.
Flödet startar antingen med en webhook-uppladdning eller en manuell körning som läser in inmatningsarket. Därefter bearbetar det kontakter i batchar (så att stora exporter inte får körningen att fallera) och skriver standardiserade kundrader tillbaka till Google Sheets. Slutresultatet är en Shopify-klar CSV som du kan importera direkt.
Vad som ändras: före vs. efter
| Det här eliminerar | Effekten du kommer att se |
|---|---|
|
|
Praktisk effekt i verkligheten
Säg att du migrerar 2 000 kontakter. Manuellt kan du lägga runt 2 timmar bara på att fixa kolumner, ta bort problemfält och testimportera (och det är om inget konstigt händer). Med det här flödet klistrar/importerar du Squarespace-CSV:n i inmatningsarket eller laddar upp den via webhook, och låter sedan n8n mappa och skriva rader i arket Shopify Customers. Din “hands-on”-tid hamnar närmare 10 minuter, plus en kort väntan medan den bearbetar i batchar.
Krav
- n8n-instans (testa n8n Cloud gratis)
- Alternativ för egen hosting om du föredrar det (Hostinger fungerar bra)
- Google Sheets för in-/utdatamallen.
- Squarespace Contacts CSV-export som källdata.
- Google Sheets API-uppgifter (hämta dem i Google Cloud Console).
Kunskapsnivå: Nybörjare. Du kopplar Google Sheets, kopierar en mall och kör en webhook eller manuell trigger.
Behöver du hjälp att implementera detta? Prata med en automationsexpert (gratis 15-minuters konsultation).
Flödet i arbetsprocessen
Två sätt att starta. Du kan trigga det genom att ladda upp en Squarespace-CSV-fil till en n8n-webhook, eller köra det manuellt efter att du har importerat CSV:n i arket “Squarespace Profiles (Input)”.
Filen (eller arket) läses in och tolkas. Om du använder webhooken extraherar flödet poster från den uppladdade CSV:n. Om du kör manuellt hämtar det rader från Google Sheets i stället.
Kontakter bearbetas i batchar. n8n loopar över items med en batch-iterator (Split in Batches), vilket gör körningarna stabila när du hanterar hundratals eller tusentals kontakter.
Shopify-klara rader skrivs till utdataarket. Flödet uppdaterar arket “Shopify Customers (Output)” så att kolumnerna matchar Shopifys CSV-format för kundimport. Det lägger också till originalprofildatan i inmatningsarket så att du har ett tydligt underlag för vad som har bearbetats.
Du kan enkelt justera kolumnmappningen så att den matchar din Shopify-konfiguration (taggar, marknadsföringssamtycke, standardadresser) utifrån dina behov. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: Konfigurera webhook-triggern
Sätt upp den inkommande triggern som tar emot uppladdade profilfiler samt en valfri manuell trigger för backfills.
- Lägg till och konfigurera Incoming Webhook Trigger med HTTP Method satt till
POSToch Path satt tillsubmit-profiles. - I Incoming Webhook Trigger, låt Allowed Origins vara satt till
*om ni förväntar er anrop från flera domäner. - Lägg till Manual Launch Start för att möjliggöra körningar vid behov som går förbi webhooken.
⚠️ Vanlig fallgrop: Det inkommande anropet måste innehålla ett binärt filfält med namnet file, annars hittar inte Parse Upload Records uppladdningen.
Steg 2: Anslut Google Sheets
Anslut ert Google Sheets-konto så att arbetsflödet kan läsa och skriva profil- och kunddata.
- Öppna Append Profile Sheet och välj kalkylarket med Document satt till
1yf_RYZGFHpMyOvD3RKGSvIFY2vumvI4474Qm_1t4-jMoch Sheet satt tillsquarespace_profiles. - Öppna Retrieve Profile Sheet och sätt Document till
1yf_RYZGFHpMyOvD3RKGSvIFY2vumvI4474Qm_1t4-jMoch Sheet tillsquarespace_profiles. - Öppna Update Customer Sheet och sätt Document till
1yf_RYZGFHpMyOvD3RKGSvIFY2vumvI4474Qm_1t4-jMoch Sheet tillshopify_template. - Inloggningsuppgifter krävs: Anslut era
googleSheetsOAuth2Api-uppgifter i Append Profile Sheet, Retrieve Profile Sheet och Update Customer Sheet.
Steg 3: Sätt upp filparsning och batchning
Tolka den uppladdade filen och bearbeta poster i hanterbara batchar innan ni skriver till Sheets.
- Konfigurera Parse Upload Records med Binary Property Name satt till
fileför att extrahera rader från den inkommande uppladdningen. - Konfigurera Batch Item Iterator med Batch Size satt till
1000för att bearbeta rader i block. - Bekräfta flödet: Incoming Webhook Trigger → Parse Upload Records → Batch Item Iterator.
Tips: Använd Flowpast Branding endast som en visuell notering—ingen konfiguration krävs.
Steg 4: Konfigurera utdataåtgärder och mappning
Definiera hur varje profilrad läggs till eller uppdateras i både profil- och kundarken.
- I Append Profile Sheet, låt Operation vara satt till
appendOrUpdateoch mappa fält som Email till{{ $json.Email }}och Billing Address 1 till{{ $json['Billing Address 1'] }}. - I Update Customer Sheet, låt Operation vara satt till
appendOrUpdateoch mappa Tags tilln8n, squarespace, {{ $json['Last Order Date'] ? "ground-control," : "" }}. - Även i Update Customer Sheet, verifiera att Email är satt till
{{ $json.Email }}och att Default Address Address1 är satt till{{ $json['Billing Address 1'] }}för matchning och uppdateringar. - Förstå förgreningen: Batch Item Iterator skickar utdata till både Update Customer Sheet och Append Profile Sheet parallellt.
- Säkerställ att den manuella backfill-vägen är ansluten: Manual Launch Start → Retrieve Profile Sheet → Update Customer Sheet.
⚠️ Vanlig fallgrop: Update Customer Sheet använder Matching Columns satt till Email. Om e-postadresser saknas eller är inkonsekventa kan posterna inte uppdateras som förväntat.
Steg 5: Testa och aktivera ert arbetsflöde
Kör ett manuellt test och bekräfta att data hamnar korrekt i båda arken innan ni slår på arbetsflödet.
- Klicka på Execute Workflow på Manual Launch Start för att testa backfill-vägen och verifiera att Retrieve Profile Sheet → Update Customer Sheet uppdaterar data.
- Skicka ett testanrop med
POSTtill Incoming Webhook Trigger-URL:en med ett binärt filfält som heterfile, och bekräfta att rader läggs till i Append Profile Sheet. - Kontrollera Update Customer Sheet för att bekräfta att fält som Tags och Email fylldes i enligt uttrycken.
- När allt fungerar, slå om arbetsflödet till Active för användning i produktion.
Se upp med
- Google Sheets-uppgifter kan gå ut eller kräva specifika behörigheter. Om det slutar fungera, kontrollera först statusen för inloggningsuppgifterna i Google Cloud Console och åtkomst/behörigheter till arket.
- Om du använder Wait-noder eller extern rendering varierar bearbetningstiden. Öka väntetiden om noder längre ned misslyckas på grund av tomma svar.
- Standardprompter i AI-noder är generiska. Lägg in ert tonalitet tidigt, annars kommer du att redigera utdata i all evighet.
Vanliga frågor
Cirka 30 minuter om din Google Sheets-åtkomst är redo.
Ja. Du kommer främst att kopiera en Google Sheets-mall och koppla ditt Google-konto i n8n.
Ja. n8n har ett gratisalternativ för egen hosting 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 med användning av Google Sheets API (oftast försumbar vid mindre migreringar).
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller egen hosting på en VPS. För egen hosting är Hostinger VPS prisvärd och klarar n8n bra. Egen hosting ger dig obegränsade körningar men kräver grundläggande serverhantering.
Det går. De flesta anpassningar görs i Google Sheets-mappningen och i skrivsteget “Update Customer Sheet”, där du bestämmer vad som hamnar i Shopifys kolumner. Vanliga justeringar är att lägga till kundtaggar, sätta fält för marknadsföringssamtycke enligt kraven i din region och välja hur tomma fält ska hanteras (hoppa över fältet vs. skriv ett tomt värde). Om du har flera Squarespace-exporter, håll en mall per kund för att undvika oavsiktliga överskrivningar.
Oftast beror det på att OAuth-åtkomsten har gått ut eller att det kopplade Google-kontot saknar behörighet till mallarket. Anslut Google Sheets på nytt i n8n och bekräfta sedan att exakt det kalkylarket är delat med det kontot. Kontrollera också att du inte har bytt namn på flikar som flödet förväntar sig (till exempel namnen på in-/utdataarken), eftersom noden kan peka på den gamla referensen.
Den hanterar typiska migreringsexporter utan problem (tusentals kontakter) eftersom den bearbetar rader i batchar. I n8n Cloud beror kapaciteten främst på dina månadsvisa körningar och hur många rader du skriver per körning. Vid egen hosting finns ingen gräns för körningar, men mycket stora filer kan kräva större batchstorlekar eller mer serverminne.
Ofta, ja, eftersom den här typen av filkonvertering gynnas av batchbearbetning, repeterbar mappning och möjligheten att hosta själv när du kör mycket. Zapier och Make kan fungera, men flöden med CSV in och “rensad CSV” ut blir ofta pilliga och kan bli dyra när du itererar rad för rad. n8n gör det också enklare att stödja både manuell trigger och webhook-trigger i samma flöde, vilket är smidigt när du jobbar med kunder. Nackdelen är startsträckan: du lägger lite mer tid i början och slipper sedan betala den kostnaden vid varje migrering. Om du vill ha en second opinion, prata med en automationsexpert.
Korrekt formaterade kundimporter är ett tråkigt jobb, vilket är precis varför det ska automatiseras. Sätt upp detta en gång, så känns nästa migrering betydligt mindre dramatisk.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.