This workflow follows the Form Trigger → Google Sheets recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"nodes": [
{
"name": "Form Trigger",
"type": "n8n-nodes-base.formTrigger",
"typeVersion": 1,
"position": [
200,
300
],
"parameters": {
"formTitle": "Shopify CSV Order Import",
"formFields": {
"values": [
{
"fieldLabel": "Channel Name",
"fieldType": "dropdown",
"fieldOptions": {
"values": [
{
"option": "Store_A"
},
{
"option": "Store_B"
}
]
},
"required": true
},
{
"fieldLabel": "Orders CSV",
"fieldType": "file",
"required": true
}
]
}
}
},
{
"name": "Move Binary Data",
"type": "n8n-nodes-base.moveBinaryData",
"typeVersion": 1,
"position": [
420,
300
],
"parameters": {
"mode": "binaryToJson",
"binaryPropertyName": "Orders CSV",
"options": {
"destinationKey": "data"
}
}
},
{
"name": "Read CSV",
"type": "n8n-nodes-base.spreadsheetFile",
"typeVersion": 1,
"position": [
650,
300
],
"parameters": {
"operation": "read",
"fileFormat": "csv",
"binaryPropertyName": "data",
"options": {
"headerRow": true
}
}
},
{
"name": "Get Shopify Channels",
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4,
"position": [
650,
520
],
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"parameters": {
"operation": "read",
"sheetId": "YOUR_SHEET_ID",
"range": "Shopify_Channels!A:D"
}
},
{
"name": "Match Channel",
"type": "n8n-nodes-base.if",
"typeVersion": 1,
"position": [
880,
520
],
"parameters": {
"conditions": {
"string": [
{
"value1": "={{$json.channel_name}}",
"value2": "={{$node['Form Trigger'].json['Channel Name']}}"
}
]
}
}
},
{
"name": "Merge Order + Auth",
"type": "n8n-nodes-base.merge",
"typeVersion": 2,
"position": [
1080,
300
],
"parameters": {
"mode": "mergeByPosition"
}
},
{
"name": "Check Duplicate",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4,
"position": [
1280,
300
],
"parameters": {
"method": "GET",
"url": "=https://{{$json.store_url}}/admin/api/{{$json.api_version}}/orders.json?status=any&email={{$json['Email']}}",
"authentication": "none",
"headerParametersJson": "{ \"X-Shopify-Access-Token\": \"{{$json.admin_api_token}}\" }"
}
},
{
"name": "IF Duplicate Found",
"type": "n8n-nodes-base.if",
"typeVersion": 1,
"position": [
1480,
300
],
"parameters": {
"conditions": {
"number": [
{
"value1": "={{$json.orders.length}}",
"operation": "larger",
"value2": 0
}
]
}
}
},
{
"name": "Log Duplicate (Failed)",
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4,
"position": [
1680,
180
],
"parameters": {
"operation": "append",
"sheetId": "YOUR_SHEET_ID",
"range": "Shopify_Import_Failed!A:F",
"valueInputMode": "RAW",
"data": [
[
"={{new Date().toISOString()}}",
"={{$node['Form Trigger'].json['Channel Name']}}",
"={{$json['Email']}}",
"={{$json['Lineitem sku']}}",
"DUPLICATE_ORDER",
"={{JSON.stringify($json)}}"
]
]
}
},
{
"name": "Rate Limit Wait",
"type": "n8n-nodes-base.wait",
"typeVersion": 1,
"position": [
1680,
420
],
"parameters": {
"amount": 500,
"unit": "milliseconds"
}
},
{
"name": "Create Shopify Order",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4,
"position": [
1880,
420
],
"parameters": {
"method": "POST",
"url": "=https://{{$json.store_url}}/admin/api/{{$json.api_version}}/orders.json",
"jsonParameters": true,
"headerParametersJson": "{ \"X-Shopify-Access-Token\": \"{{$json.admin_api_token}}\" }",
"bodyParametersJson": "{ \"order\": { \"email\": \"{{$json['Email']}}\", \"financial_status\": \"{{$json['Financial Status'].toLowerCase()}}\", \"line_items\": [{ \"title\": \"{{$json['Lineitem name']}}\", \"sku\": \"{{$json['Lineitem sku']}}\", \"quantity\": {{$json['Lineitem quantity']}}, \"price\": \"{{$json['Lineitem price']}}\" }], \"shipping_address\": { \"first_name\": \"{{$json['Shipping First Name']}}\", \"last_name\": \"{{$json['Shipping Last Name']}}\", \"address1\": \"{{$json['Shipping Address1']}}\", \"address2\": \"{{$json['Shipping Address2']}}\", \"city\": \"{{$json['Shipping City']}}\", \"province\": \"{{$json['Shipping Province']}}\", \"zip\": \"{{$json['Shipping Zip']}}\", \"country\": \"{{$json['Shipping Country']}}\", \"phone\": \"{{$json['Shipping Phone']}}\" }, \"tags\": \"CSV_IMPORT\" }}"
}
},
{
"name": "Log Success",
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4,
"position": [
2100,
420
],
"parameters": {
"operation": "append",
"sheetId": "YOUR_SHEET_ID",
"range": "Shopify_Import_Success!A:G",
"valueInputMode": "RAW",
"data": [
[
"={{new Date().toISOString()}}",
"={{$node['Form Trigger'].json['Channel Name']}}",
"={{$json.order.email}}",
"={{$json.order.line_items[0].sku}}",
"={{$json.order.id}}",
"={{$json.order.name}}",
"SUCCESS"
]
]
}
}
],
"connections": {
"Form Trigger": {
"main": [
[
{
"node": "Move Binary Data",
"type": "main",
"index": 0
}
]
]
},
"Move Binary Data": {
"main": [
[
{
"node": "Read CSV",
"type": "main",
"index": 0
}
]
]
},
"Read CSV": {
"main": [
[
{
"node": "Merge Order + Auth",
"type": "main",
"index": 0
}
]
]
},
"Get Shopify Channels": {
"main": [
[
{
"node": "Match Channel",
"type": "main",
"index": 0
}
]
]
},
"Match Channel": {
"main": [
[
{
"node": "Merge Order + Auth",
"type": "main",
"index": 1
}
]
]
},
"Merge Order + Auth": {
"main": [
[
{
"node": "Check Duplicate",
"type": "main",
"index": 0
}
]
]
},
"Check Duplicate": {
"main": [
[
{
"node": "IF Duplicate Found",
"type": "main",
"index": 0
}
]
]
},
"IF Duplicate Found": {
"main": [
[
{
"node": "Log Duplicate (Failed)",
"type": "main",
"index": 0
}
],
[
{
"node": "Rate Limit Wait",
"type": "main",
"index": 0
}
]
]
},
"Rate Limit Wait": {
"main": [
[
{
"node": "Create Shopify Order",
"type": "main",
"index": 0
}
]
]
},
"Create Shopify Order": {
"main": [
[
{
"node": "Log Success",
"type": "main",
"index": 0
}
]
]
}
}
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
googleSheetsOAuth2Api
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Shopify Csv Import. Uses formTrigger, moveBinaryData, spreadsheetFile, googleSheets. Event-driven trigger; 12 nodes.
Source: https://gist.github.com/rv-sharma/4d78570835d9b3e8018654841449aa45 — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
PCN. Uses googleSheets, httpRequest, @n-octo-n/n8n-nodes-json-database, itemLists. Event-driven trigger; 60 nodes.
Overview 🌐
Splitout Code. Uses splitOut, httpRequest, googleSheets, stickyNote. Event-driven trigger; 36 nodes.
This n8n workflow is designed for Customer Success Managers (CSM), marketers, sales teams, and data administrators who need to automate the process of uploading and processing CSV data in HubSpot. It
The SEO On Page API is a powerful tool for keyword research, competitor analysis, backlink insights, and overall SEO optimization. With multiple endpoints, you can instantly gather actionable SEO data