This workflow corresponds to n8n.io template #3218 — we link there as the canonical source.
This workflow follows the Google Sheets → HTTP Request 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 →
{
"meta": {
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "33114dba-d3e2-469c-bb01-e50d4e84be53",
"name": "When clicking \u2018Test workflow\u2019",
"type": "n8n-nodes-base.manualTrigger",
"position": [
120,
60
],
"parameters": {},
"typeVersion": 1
},
{
"id": "68a92424-8345-40d1-bdb2-ad4b68c35406",
"name": "Get Orders",
"type": "n8n-nodes-base.httpRequest",
"position": [
500,
0
],
"parameters": {
"url": "https://{store}.myshopify.com/admin/api/2025-01/orders.json",
"options": {
"response": {
"response": {
"fullResponse": true
}
}
},
"sendQuery": true,
"authentication": "predefinedCredentialType",
"queryParameters": {
"parameters": [
{
"name": "limit",
"value": "250"
},
{
"name": "fields",
"value": "id,note,email,processed_at,customer"
},
{
"name": "={{ $json.page_info ? \"page_info\" : \"status\" }}",
"value": "={{ $json.page_info ? $json.page_info : 'any' }}"
}
]
},
"nodeCredentialType": "shopifyAccessTokenApi"
},
"credentials": {
"shopifyAccessTokenApi": {
"name": "<your credential>"
}
},
"typeVersion": 4.2
},
{
"id": "e0e67ff4-cba3-420e-ad06-4201d8517470",
"name": "Extract page_info ",
"type": "n8n-nodes-base.code",
"position": [
900,
120
],
"parameters": {
"jsCode": "function parseNextParams(headerValue) {\n // Match the URL inside <>\n const urlMatch = headerValue.match(/<([^>]+)>;\\s*rel=\"next\"/);\n if (!urlMatch) return null;\n\n const url = urlMatch[1]; // Extracted URL\n const paramsString = url.split(\"?\")[1]; // Get query string\n\n if (!paramsString) return {}; // No params found\n\n // Convert query string to object\n return paramsString.split(\"&\").reduce((acc, param) => {\n const [key, value] = param.split(\"=\");\n acc[decodeURIComponent(key)] = decodeURIComponent(value);\n return acc;\n }, {});\n}\n\n/* Example usage\n`<https://59b774-3.myshopify.com/admin/api/2025-01/orders.json?limit=250&fields=id%2Cnote%2Cemail%2Cprocessed_at%2Ccustomer&page_info=eyJzdGF0dXMiOiJhbnkiLCJsYXN0X2lkIjo2MzQ5MjI3MDAwMDk0LCJsYXN0X3ZhbHVlIjoiMjAyNC0xMi0zMSAwOToxMzowMi42MTcxNjYiLCJkaXJlY3Rpb24iOiJuZXh0In0>; rel=\"next\"`\n*/\nconst headerValue = $input.first().json.headers.link;\nconst params = parseNextParams(headerValue);\nreturn params;"
},
"typeVersion": 2
},
{
"id": "fd06d8fa-3c6d-4877-a2e8-cb71b0d0ef32",
"name": "Merge Loop items",
"type": "n8n-nodes-base.code",
"position": [
1120,
-100
],
"parameters": {
"jsCode": "let results = [],\n i = 0;\n\ndo {\n try {\n results = results.concat($(\"Get Orders\").all(0, i));\n } catch (error) {\n return results;\n }\n i++;\n} while (true);"
},
"typeVersion": 2
},
{
"id": "cd9840ad-4ec2-4979-b0cc-c7dc42917452",
"name": "List Orders",
"type": "n8n-nodes-base.splitOut",
"position": [
1380,
-100
],
"parameters": {
"options": {},
"fieldToSplitOut": "body.orders"
},
"typeVersion": 1
},
{
"id": "9d491fda-ab2e-4247-85bd-969a07476471",
"name": "Google Sheets",
"type": "n8n-nodes-base.googleSheets",
"position": [
1620,
-100
],
"parameters": {
"columns": {
"value": {
"id": "={{ $json.id }}",
"note": "={{ $json.note }}",
"email": "={{ $json.email }}",
"processed_at": "={{ $json.processed_at }}"
},
"schema": [
{
"id": "id",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "id",
"defaultMatch": true,
"canBeUsedToMatch": true
},
{
"id": "email",
"type": "string",
"display": true,
"required": false,
"displayName": "email",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "processed_at",
"type": "string",
"display": true,
"required": false,
"displayName": "processed_at",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "note",
"type": "string",
"display": true,
"required": false,
"displayName": "note",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"id"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "list",
"value": 2030201341,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1yf_RYZGFHpMyOvD3RKGSvIFY2vumvI4474Qm_1t4-jM/edit#gid=2030201341",
"cachedResultName": "shopify_orders"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1yf_RYZGFHpMyOvD3RKGSvIFY2vumvI4474Qm_1t4-jM",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1yf_RYZGFHpMyOvD3RKGSvIFY2vumvI4474Qm_1t4-jM/edit?usp=drivesdk",
"cachedResultName": "Squarespace automation"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.5
},
{
"id": "d1974350-5fcb-448a-b895-17b296de0019",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
440,
-160
],
"parameters": {
"width": 232,
"height": 346,
"content": "## Edit this node \ud83d\udc47\n\nGet your store URL and replace in the GET url: https://{your-store}.myshopify.com/admin/api/2025-01/orders.json\n"
},
"typeVersion": 1
},
{
"id": "bbc911a5-0020-47d9-8b2f-2edd7ac83325",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
1580,
-260
],
"parameters": {
"width": 252,
"height": 346,
"content": "## Clone this spreadsheet\n\nhttps://docs.google.com/spreadsheets/d/1KRl6aCCU2SE3Z6vB2EbTnSwSUAre0BLf9Wu6fyPlrIE/edit?usp=sharing"
},
"typeVersion": 1
},
{
"id": "fdec0965-3a0c-4886-90b4-f2ef4f0cebdd",
"name": "Schedule Trigger",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
120,
-120
],
"parameters": {
"rule": {
"interval": [
{}
]
}
},
"typeVersion": 1.2
},
{
"id": "87cdb9e8-a031-4a40-a5e6-65a0cfc40180",
"name": "Assign page_info parameter",
"type": "n8n-nodes-base.set",
"position": [
1120,
120
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "57e59bb7-ac20-4a1b-b54a-3468fc0519d3",
"name": "page_info",
"type": "string",
"value": "={{ $json.page_info }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "8f15e8a1-19de-401f-8ef2-358a42e806bb",
"name": "Check page_info existence",
"type": "n8n-nodes-base.if",
"position": [
720,
0
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "30d965c3-cbba-430e-81c2-ef8b543665e7",
"operator": {
"type": "string",
"operation": "notContains"
},
"leftValue": "={{ $json.headers.link }}",
"rightValue": "rel=\"next\""
}
]
}
},
"typeVersion": 2.2
}
],
"connections": {
"Get Orders": {
"main": [
[
{
"node": "Check page_info existence",
"type": "main",
"index": 0
}
]
]
},
"List Orders": {
"main": [
[
{
"node": "Google Sheets",
"type": "main",
"index": 0
}
]
]
},
"Merge Loop items": {
"main": [
[
{
"node": "List Orders",
"type": "main",
"index": 0
}
]
]
},
"Schedule Trigger": {
"main": [
[
{
"node": "Get Orders",
"type": "main",
"index": 0
}
]
]
},
"Extract page_info ": {
"main": [
[
{
"node": "Assign page_info parameter",
"type": "main",
"index": 0
}
]
]
},
"Check page_info existence": {
"main": [
[
{
"node": "Merge Loop items",
"type": "main",
"index": 0
}
],
[
{
"node": "Extract page_info ",
"type": "main",
"index": 0
}
]
]
},
"Assign page_info parameter": {
"main": [
[
{
"node": "Get Orders",
"type": "main",
"index": 0
}
]
]
},
"When clicking \u2018Test workflow\u2019": {
"main": [
[
{
"node": "Get Orders",
"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.
googleSheetsOAuth2ApishopifyAccessTokenApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow retrieves all Shopify Orders and saves them into a Google Sheets spreadsheet using the Shopify Admin REST API. It uses pagination to ensure all orders are collected efficiently.
Source: https://n8n.io/workflows/3218/ — 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.
This n8n workflow automatically sends WhatsApp notifications to customers when their Shopify orders are fulfilled. It extracts order details, validates customer phone numbers for WhatsApp compatibilit
The workflow triggers on a new checkout event from Shopify and extracts all relevant cart data. It filters carts based on value and age to isolate qualified abandoned checkouts. For each qualified car
This workflow automates inventory management and predictive reordering for Shopify stores. It integrates Shopify, Google Sheets, and Slack to monitor inventory levels, calculate dynamic reorder points
A webhook or timer triggers the workflow to automatically fetch inventory data from multiple platforms. Stock levels are compared across stores to identify discrepancies, and any inconsistencies are u
This workflow automates the synchronization of product prices across Shopify and WooCommerce platforms to ensure retail consistency. It triggers when a price change is detected in either system, appli