Shopify-Produkte aus Google Tabellen erstellen
Fortgeschritten
Dies ist ein CRM-Bereich Automatisierungsworkflow mit 13 Nodes. Hauptsächlich werden If, Graphql, GoogleSheets, ManualTrigger, SplitInBatches und andere Nodes verwendet. Batch-Erstellung von Shopify-Produkten aus Google Tabellen mit Bestandsverwaltung
Voraussetzungen
- •Google Sheets API-Anmeldedaten
Verwendete Nodes (13)
Kategorie
Workflow-Vorschau
Visualisierung der Node-Verbindungen, mit Zoom und Pan
Workflow exportieren
Kopieren Sie die folgende JSON-Konfiguration und importieren Sie sie in n8n
{
"id": "NO1Jrg2IkMTiquxb",
"meta": {
"instanceId": "eeebdb47cbe0bf5bc137514a863458fd2f9ab992b2ebeb2c6062100cdade81e7",
"templateCredsSetupCompleted": true
},
"name": "Create Shopify Products from Google Sheet",
"tags": [
{
"id": "cWC39BXOsHlOhwEC",
"name": "google-sheet",
"createdAt": "2025-06-11T02:39:38.743Z",
"updatedAt": "2025-06-11T02:39:38.743Z"
},
{
"id": "vMF1giVsFs9aUam0",
"name": "shopify",
"createdAt": "2025-06-11T02:39:27.034Z",
"updatedAt": "2025-06-11T02:39:27.034Z"
}
],
"nodes": [
{
"id": "0d76a8c0-fd78-47d8-899d-6a084317ab28",
"name": "Workflow starten",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-540,
20
],
"parameters": {},
"typeVersion": 1
},
{
"id": "54ce8605-f90e-4666-85e5-cdbc0dba8077",
"name": "Google Tabellenblatt, Produkte abrufen",
"type": "n8n-nodes-base.googleSheets",
"position": [
-40,
20
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "list",
"value": 1164444657,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1IxiuRiu6XKBkEa1NIUebBWn73jIKUrgE9Sqj4XtQgBk/edit#gid=1164444657",
"cachedResultName": "Products"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1IxiuRiu6XKBkEa1NIUebBWn73jIKUrgE9Sqj4XtQgBk",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1IxiuRiu6XKBkEa1NIUebBWn73jIKUrgE9Sqj4XtQgBk/edit?usp=drivesdk",
"cachedResultName": "Shopify Test Store Data"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "GQE41DhnGDDJ8Hfq",
"name": "Google Sheets account"
}
},
"executeOnce": true,
"typeVersion": 4.6
},
{
"id": "c750de2c-71c4-4eed-a6d2-6f0fa8cfe114",
"name": "Shopify, ProductQuery",
"type": "n8n-nodes-base.graphql",
"position": [
500,
40
],
"parameters": {
"query": "query Products ($handle: String! ) {\n productByHandle(handle: $handle) {\n id\n title\n variants(first:20) {\n edges {\n node {\n id\n title\n sku\n price \n inventoryItem {\n id\n }\n }\n }\n }\n updatedAt\n createdAt\n }\n}",
"endpoint": "https://store99563.myshopify.com/admin/api/2025-04/graphql.json",
"variables": "={\n \"handle\" : \"{{ $json.slug }}\"\n}",
"authentication": "headerAuth"
},
"credentials": {
"httpHeaderAuth": {
"id": "mHtpN3u5aCWsxWih",
"name": "Shopify GraphQL Header Auth account"
}
},
"typeVersion": 1.1
},
{
"id": "2f350bac-d1d5-4d69-b18b-a2f802594599",
"name": "Wenn Produkt existiert",
"type": "n8n-nodes-base.if",
"position": [
740,
40
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "81228bbc-7111-40ec-8b37-3c9878945c4d",
"operator": {
"type": "object",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.data.productByHandle }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "fe218fdb-6c58-49d5-b3c2-b34bbf14b54c",
"name": "Shopify, CreateProduct",
"type": "n8n-nodes-base.graphql",
"position": [
960,
200
],
"parameters": {
"query": "mutation productCreate($product: ProductCreateInput!, $media: [CreateMediaInput!]) {\n productCreate(product: $product, media: $media) {\n product {\n id\n title\n descriptionHtml\n vendor\n productType\n status\n handle\n variants(first:10) {\n edges {\n node {\n id\n sku\n displayName\n inventoryItem {\n id\n sku\n tracked\n requiresShipping\n }\n }\n }\n }\n media(first: 10) {\n edges {\n node {\n alt\n mediaContentType\n status\n id\n preview {\n image {\n url\n }\n status\n }\n }\n }\n }\n options {\n id\n name\n position\n optionValues {\n id\n name\n hasVariants\n }\n }\n }\n userErrors {\n field\n message\n }\n }\n}",
"endpoint": "https://store99563.myshopify.com/admin/api/2025-04/graphql.json",
"variables": "={\n \"product\": {\n \"title\": \" {{ $('Loop Over Items').item.json.title }} \",\n \"descriptionHtml\": \"{{ $('Loop Over Items').item.json.description }}\",\n \"vendor\" : \"{{ $('Loop Over Items').item.json.company }}\",\n \"productType\": \"{{ $('Loop Over Items').item.json.category }}\",\n \"status\": \"{{ $('Loop Over Items').item.json.status }}\",\n \"handle\": \"{{ $('Loop Over Items').item.json.slug }}\"\n },\n \"media\" : [{\n \"alt\" : \"alt tag\",\n \"mediaContentType\" : \"IMAGE\",\n \"originalSource\" : \"https://placehold.co/800x600.png\"\n }]\n}",
"authentication": "headerAuth"
},
"credentials": {
"httpHeaderAuth": {
"id": "mHtpN3u5aCWsxWih",
"name": "Shopify GraphQL Header Auth account"
}
},
"typeVersion": 1.1
},
{
"id": "65032b74-36a8-46ee-b1a1-eaddcec9be1b",
"name": "Elemente durchlaufen",
"type": "n8n-nodes-base.splitInBatches",
"position": [
240,
20
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "099ed035-6a41-4abb-8bed-011d8a6e4cc5",
"name": "Shopify, GetLocations",
"type": "n8n-nodes-base.graphql",
"position": [
-280,
20
],
"parameters": {
"query": "query {\n locations(first:1, reverse:true) {\n edges {\n node {\n id\n name\n address {\n address1\n address2\n city\n country\n zip\n province\n }\n }\n }\n }\n}",
"endpoint": "https://store99563.myshopify.com/admin/api/2025-04/graphql.json",
"authentication": "headerAuth"
},
"credentials": {
"httpHeaderAuth": {
"id": "mHtpN3u5aCWsxWih",
"name": "Shopify GraphQL Header Auth account"
}
},
"executeOnce": true,
"typeVersion": 1.1
},
{
"id": "be29e4ea-51fb-4e8b-a2c2-b4b2e590fd2a",
"name": "Shopify, Enable InventoryTracking",
"type": "n8n-nodes-base.graphql",
"position": [
1160,
200
],
"parameters": {
"query": "mutation inventoryItemUpdate($id: ID!, $input: InventoryItemInput!) {\n inventoryItemUpdate(id: $id, input: $input) {\n inventoryItem {\n id\n unitCost {\n amount\n }\n tracked\n }\n userErrors {\n message\n }\n }\n}",
"endpoint": "https://store99563.myshopify.com/admin/api/2025-04/graphql.json",
"variables": "={\n \"id\": \"{{ $json.data.productCreate.product.variants.edges[0].node.inventoryItem.id }}\",\n \"input\": {\n \"tracked\": true,\n \"requiresShipping\": true\n }\n}",
"authentication": "headerAuth"
},
"credentials": {
"httpHeaderAuth": {
"id": "mHtpN3u5aCWsxWih",
"name": "Shopify GraphQL Header Auth account"
}
},
"typeVersion": 1.1
},
{
"id": "a22761aa-b55d-41a6-b853-d165ae9aa89c",
"name": "Shopify, Setzen InventoryLevel",
"type": "n8n-nodes-base.graphql",
"position": [
1360,
200
],
"parameters": {
"query": "mutation inventorySetOnHandQuantities($input: InventorySetOnHandQuantitiesInput!) {\n inventorySetOnHandQuantities(input: $input) {\n userErrors {\n field\n message\n }\n }\n}",
"endpoint": "=https://store99563.myshopify.com/admin/api/2025-04/graphql.json",
"variables": "={\n \"input\" : {\n \"reason\": \"correction\",\n \"setQuantities\" :[{\n \"inventoryItemId\":\"{{ $json.data.inventoryItemUpdate.inventoryItem.id }}\",\n \"locationId\": \"{{ $('Shopify, GetLocations').item.json.data.locations.edges[0].node.id }}\",\n \"quantity\" : {{ $('Loop Over Items').item.json.stock_on_hand }}\n }]\n }\n}",
"authentication": "headerAuth"
},
"credentials": {
"httpHeaderAuth": {
"id": "mHtpN3u5aCWsxWih",
"name": "Shopify GraphQL Header Auth account"
}
},
"typeVersion": 1.1
},
{
"id": "2b69fe40-d04e-4e60-b1e4-f19290b97edc",
"name": "Abgeschlossen",
"type": "n8n-nodes-base.noOp",
"position": [
460,
-220
],
"parameters": {},
"typeVersion": 1
},
{
"id": "44572b5d-e19b-48e3-b80d-6d6ec7ae0273",
"name": "Notizzettel",
"type": "n8n-nodes-base.stickyNote",
"position": [
-540,
-680
],
"parameters": {
"width": 800,
"height": 660,
"content": "## Create Products in Shopify from a Google Sheet\n\nThis workflow creates products in your Shopify store from a google sheet. It also enables inventory tracking and sets the quantity of an inventory item at your store's default location. \n\nThis is a great way to get test data into test or staging stores to try out apps, update template or try out new designs. \n\nThis Automation will only import new products. It will skip existing products if the slug matches an existing product's handle (Shopify's term for a slug).\n \n### Setup Notes\n\nThe Google Sheet has the following columns\ntitle - free text\ndescription - free text\ncompany - free text\ncategory - free text\nstatus - ACTIVE, DRAFT or ARCHIVE\nslug - used in the product url, text with no spaces, can also use hyphen.\nprice - sale price of the products\ncompare_at_price - compare at price for products\nsku - unique code for each product\nstock_on_hand - quantity of this item available for purchase.\n\nUse those labels in the first row of your sheet and N8N will create one object per row with the column names as object fields. \n\n### Update GraphQL nodes with your Shopify store URL\n\n1) Replace the URL in all GraphQL nodes with the URL for your Shopify store. \n2) These GraphQL requests all use the Shopify 2025-04 GraphQL Admin API. \n"
},
"typeVersion": 1
},
{
"id": "56b55c86-ec42-4154-a44f-c8cf50cbcc0f",
"name": "Notizzettel1",
"type": "n8n-nodes-base.stickyNote",
"position": [
420,
-40
],
"parameters": {
"width": 480,
"height": 340,
"content": "## Check to see if product exists\n"
},
"typeVersion": 1
},
{
"id": "1c3e5c1d-fad0-4059-9fe2-cc1ea3b9ca52",
"name": "Notizzettel2",
"type": "n8n-nodes-base.stickyNote",
"position": [
920,
60
],
"parameters": {
"width": 600,
"height": 400,
"content": "## Create the Product\n- Create product.\n- Enable inventory tracking \n- Set inventory quantity"
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "292ad12e-25e6-495f-9361-f63996ac146a",
"connections": {
"0d76a8c0-fd78-47d8-899d-6a084317ab28": {
"main": [
[
{
"node": "099ed035-6a41-4abb-8bed-011d8a6e4cc5",
"type": "main",
"index": 0
}
]
]
},
"65032b74-36a8-46ee-b1a1-eaddcec9be1b": {
"main": [
[
{
"node": "2b69fe40-d04e-4e60-b1e4-f19290b97edc",
"type": "main",
"index": 0
}
],
[
{
"node": "c750de2c-71c4-4eed-a6d2-6f0fa8cfe114",
"type": "main",
"index": 0
}
]
]
},
"2f350bac-d1d5-4d69-b18b-a2f802594599": {
"main": [
[
{
"node": "65032b74-36a8-46ee-b1a1-eaddcec9be1b",
"type": "main",
"index": 0
}
],
[
{
"node": "fe218fdb-6c58-49d5-b3c2-b34bbf14b54c",
"type": "main",
"index": 0
}
]
]
},
"099ed035-6a41-4abb-8bed-011d8a6e4cc5": {
"main": [
[
{
"node": "54ce8605-f90e-4666-85e5-cdbc0dba8077",
"type": "main",
"index": 0
}
]
]
},
"c750de2c-71c4-4eed-a6d2-6f0fa8cfe114": {
"main": [
[
{
"node": "2f350bac-d1d5-4d69-b18b-a2f802594599",
"type": "main",
"index": 0
}
]
]
},
"fe218fdb-6c58-49d5-b3c2-b34bbf14b54c": {
"main": [
[
{
"node": "be29e4ea-51fb-4e8b-a2c2-b4b2e590fd2a",
"type": "main",
"index": 0
}
]
]
},
"Shopify, Set InventoryLevel": {
"main": [
[
{
"node": "65032b74-36a8-46ee-b1a1-eaddcec9be1b",
"type": "main",
"index": 0
}
]
]
},
"54ce8605-f90e-4666-85e5-cdbc0dba8077": {
"main": [
[
{
"node": "65032b74-36a8-46ee-b1a1-eaddcec9be1b",
"type": "main",
"index": 0
}
]
]
},
"be29e4ea-51fb-4e8b-a2c2-b4b2e590fd2a": {
"main": [
[
{
"node": "Shopify, Set InventoryLevel",
"type": "main",
"index": 0
}
]
]
}
}
}Häufig gestellte Fragen
Wie verwende ich diesen Workflow?
Kopieren Sie den obigen JSON-Code, erstellen Sie einen neuen Workflow in Ihrer n8n-Instanz und wählen Sie "Aus JSON importieren". Fügen Sie die Konfiguration ein und passen Sie die Anmeldedaten nach Bedarf an.
Für welche Szenarien ist dieser Workflow geeignet?
Fortgeschritten - Kundenbeziehungsmanagement
Ist es kostenpflichtig?
Dieser Workflow ist völlig kostenlos. Beachten Sie jedoch, dass Drittanbieterdienste (wie OpenAI API), die im Workflow verwendet werden, möglicherweise kostenpflichtig sind.
Verwandte Workflows
Chorus -> HubSpot - Anrufzusammenfassungsübertragung
Automatische Übertragung von Anrufzusammenfassungen von Chorus AI zu HubSpot CRM
If
Code
Filter
+
If
Code
Filter
18 NodesRivers Colyer
Kundenbeziehungsmanagement
Vorschlagsgenerierung_Entwurfsspeicher-Automatisierung
Mit Azure GPT-4o Geschäftsvorschläge erstellen und aus Sheets als Gmail-Entwurf speichern
If
Code
Gmail
+
If
Code
Gmail
16 NodesRahul Joshi
Kundenbeziehungsmanagement
KI-generierter WordPress-Artikel-Zusammenfassungsblock
Ein KI-generierter Zusammenfassungsblock für WordPress-Artikel
If
Set
Slack
+
If
Set
Slack
32 NodesDataki
Künstliche Intelligenz
AI-Powered Facebook Comment Management_ Auto-Reply, Delete, Ban & Notify
If
Set
Code
+
If
Set
Code
59 NodesSpaGreen Creative
Soziale Medien
AI-Powered Lead Enrichment with Bright Data MCP and Google Sheets
If
Set
Wait
+
If
Set
Wait
51 NodesCyril Nicko Gaspar
Vertrieb
Automatisierung der agilen Detailplanungsvorbereitung mit Gmail, OpenAI und Google Sheets
Automatisierung der agilen Detailplanungsvorbereitung mit Gmail, OpenAI und Google Sheets
If
Set
Gmail
+
If
Set
Gmail
51 NodesWillemijn
Produkt
Workflow-Informationen
Schwierigkeitsgrad
Fortgeschritten
Anzahl der Nodes13
Kategorie1
Node-Typen7
Autor
Richard Uren
@elrichoExterne Links
Auf n8n.io ansehen →
Diesen Workflow teilen