This workflow follows the Gmail → 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 →
{
"updatedAt": "2026-02-16T08:54:56.853Z",
"createdAt": "2026-02-13T03:51:41.496Z",
"id": "7qcxlXpoQdgL2IRZLnLjR",
"name": "reviewFunnel",
"description": null,
"active": true,
"isArchived": false,
"nodes": [
{
"parameters": {
"authentication": "oAuth2",
"topic": "orders/fulfilled"
},
"type": "n8n-nodes-base.shopifyTrigger",
"typeVersion": 1,
"position": [
0,
0
],
"id": "9b981efa-65f5-48cd-8394-940f71fd2bff",
"name": "Shopify Trigger",
"credentials": {
"shopifyOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"amount": 10,
"unit": "days"
},
"type": "n8n-nodes-base.wait",
"typeVersion": 1.1,
"position": [
208,
0
],
"id": "a1c4828e-8513-4bef-8cc1-327c6b225b74",
"name": "Wait"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "b7b1657c-276a-4752-af00-f983ab237582",
"name": "order_number",
"value": "={{ $json.order_number }}",
"type": "number"
},
{
"id": "d8ea47d2-3557-416d-815d-1e25b3a1d658",
"name": "contact_email",
"value": "={{ $json.contact_email }}",
"type": "string"
},
{
"id": "00d8c4b3-f850-48a2-84ae-5fae6437fc93",
"name": "customer.first_name",
"value": "={{ $json.customer.first_name }}",
"type": "string"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
1024,
-96
],
"id": "f558dcda-eb25-4eba-b27f-348591d103a1",
"name": "Edit Fields"
},
{
"parameters": {
"sendTo": "={{ $json.contact_email }}",
"subject": "Quick question about your recent order",
"message": "=Hi {{ $json.customer.first_name }},\n<br><br>\nQuick question for you \u2014 did the part solve the problem the way you expected?\n<br><br>\nClick the option that fits:\n\n<br><br>\n\n<strong>Everything worked perfectly</strong>\n<a href=\"https://n8n.srv1127913.hstgr.cloud/webhook/review-happy?email={{ $json.contact_email }}&order={{ $json.order_number }}\">\nYes \u2014 job done.\n</a>\n\n<br><br>\n\n<strong>Something wasn\u2019t right</strong>\n<a href=\"https://n8n.srv1127913.hstgr.cloud/webhook/review-help?email={{ $json.contact_email }}&order={{ $json.order_number }}\">\nNo \u2014 I need help.\n</a>\n\n<br><br>\n\nIf it didn\u2019t fit, didn\u2019t perform, or just wasn\u2019t what you expected we\u2019ll make it right.\n\nNo hassle. No back-and-forth.\n\nThat\u2019s how we do business.\n\n<br><br>\n\nWindow Revival Shop",
"options": {
"appendAttribution": true,
"bccList": "shop@windowrevival.com.au",
"replyTo": "shop@windowrevival.com.au"
}
},
"type": "n8n-nodes-base.gmail",
"typeVersion": 2.2,
"position": [
1216,
-96
],
"id": "996d5635-febd-4068-bf07-6080585c794f",
"name": "Send a message",
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 3
},
"conditions": [
{
"id": "0056568e-5dd0-4b8c-915e-5e5c6d12e242",
"leftValue": "={{ (Array.isArray($json) ? $json[0] : $json).financial_status }}",
"rightValue": "paid",
"operator": {
"type": "string",
"operation": "equals",
"name": "filter.operator.equals"
}
},
{
"id": "c16fd693-54ca-4072-a612-a1e571305233",
"leftValue": "={{ (Array.isArray($json) ? $json[0] : $json).fulfillment_status }}",
"rightValue": "fulfilled",
"operator": {
"type": "string",
"operation": "equals",
"name": "filter.operator.equals"
}
},
{
"id": "776e7d3e-aa70-4894-a590-9c6af2861217",
"leftValue": "={{ (Array.isArray($json) ? $json[0] : $json).cancelled_at }}",
"rightValue": "",
"operator": {
"type": "string",
"operation": "empty",
"singleValue": true
}
},
{
"id": "49b9505b-fc66-4557-b84a-d68f3747ba6c",
"leftValue": "={{ ((Array.isArray($json) ? $json[0] : $json).refunds || []).length }}",
"rightValue": 0,
"operator": {
"type": "number",
"operation": "equals"
}
},
{
"id": "7a842510-f69a-47a4-8639-9374ac1fbaa3",
"leftValue": "={{ (Array.isArray($json) ? $json[0] : $json).email }}",
"rightValue": "",
"operator": {
"type": "string",
"operation": "notEmpty",
"singleValue": true
}
},
{
"id": "8589a686-33da-4c95-a728-8667b4d4e64d",
"leftValue": "={{ $('Get row(s) in sheet').item.json.status }}",
"rightValue": "\ud83d\udfe2 Delivered",
"operator": {
"type": "string",
"operation": "equals"
}
}
],
"combinator": "and"
},
"options": {}
},
"type": "n8n-nodes-base.if",
"typeVersion": 2.3,
"position": [
768,
0
],
"id": "cd0160c5-9bc9-4d68-b796-19a39567dac8",
"name": "If"
},
{
"parameters": {
"authentication": "oAuth2",
"operation": "get",
"orderId": "={{ $('Shopify Trigger').item.json.id }}",
"options": {}
},
"type": "n8n-nodes-base.shopify",
"typeVersion": 1,
"position": [
592,
0
],
"id": "34bf9c3a-b48b-4dba-ac9b-6ca076571702",
"name": "Get an order",
"credentials": {
"shopifyOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {},
"type": "n8n-nodes-base.noOp",
"typeVersion": 1,
"position": [
1040,
112
],
"id": "c434ce12-e942-4a01-bc42-6afcd2955c84",
"name": "No Operation, do nothing"
},
{
"parameters": {
"documentId": {
"__rl": true,
"value": "https://docs.google.com/spreadsheets/d/1Saoy_4dBYP6pOevexzFizFDmkFt-6ARlmwRvYPzGtWU/edit?pli=1&gid=2095084692#gid=2095084692",
"mode": "url"
},
"sheetName": {
"__rl": true,
"value": 2095084692,
"mode": "list",
"cachedResultName": "Tracker - Shopify",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1Saoy_4dBYP6pOevexzFizFDmkFt-6ARlmwRvYPzGtWU/edit#gid=2095084692"
},
"filtersUI": {
"values": [
{
"lookupColumn": "=order_no",
"lookupValue": "=#{{ $json.order_number }}"
}
]
},
"options": {
"dataLocationOnSheet": {
"values": {
"rangeDefinition": "specifyRange",
"headerRow": 3,
"firstDataRow": 6
}
}
}
},
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.7,
"position": [
400,
0
],
"id": "eeb3410d-fc11-4e0c-adc8-4eca0fbb8cd2",
"name": "Get row(s) in sheet",
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
}
}
],
"connections": {
"Shopify Trigger": {
"main": [
[
{
"node": "Wait",
"type": "main",
"index": 0
}
]
]
},
"Wait": {
"main": [
[
{
"node": "Get row(s) in sheet",
"type": "main",
"index": 0
}
]
]
},
"Edit Fields": {
"main": [
[
{
"node": "Send a message",
"type": "main",
"index": 0
}
]
]
},
"Send a message": {
"main": [
[]
]
},
"Get an order": {
"main": [
[
{
"node": "If",
"type": "main",
"index": 0
}
]
]
},
"If": {
"main": [
[
{
"node": "Edit Fields",
"type": "main",
"index": 0
}
],
[
{
"node": "No Operation, do nothing",
"type": "main",
"index": 0
}
]
]
},
"Get row(s) in sheet": {
"main": [
[
{
"node": "Get an order",
"type": "main",
"index": 0
}
]
]
}
},
"settings": {
"executionOrder": "v1",
"binaryMode": "separate",
"availableInMCP": false,
"timeSavedMode": "fixed",
"errorWorkflow": "uuxIWB5TVjU2H3nWtHINp",
"callerPolicy": "workflowsFromSameOwner",
"executionTimeout": 3600
},
"staticData": {
"node:Shopify Trigger": {
"webhookId": 1567795773607
}
},
"meta": {
"templateCredsSetupCompleted": true
},
"versionId": "ccd913f0-e061-4229-94b8-118e1c5b7d2b",
"activeVersionId": "ccd913f0-e061-4229-94b8-118e1c5b7d2b",
"versionCounter": 350,
"triggerCount": 1,
"shared": [
{
"updatedAt": "2026-02-13T03:51:41.500Z",
"createdAt": "2026-02-13T03:51:41.500Z",
"role": "workflow:owner",
"workflowId": "7qcxlXpoQdgL2IRZLnLjR",
"projectId": "6TsYTzg0HY92xH2K",
"project": {
"updatedAt": "2025-11-14T08:33:27.896Z",
"createdAt": "2025-11-14T07:49:25.938Z",
"id": "6TsYTzg0HY92xH2K",
"name": "Christine Kam <windowrevival@gmail.com>",
"type": "personal",
"icon": null,
"description": null,
"creatorId": "bc31a112-3ed8-48ca-b94c-7225571c3d7b"
}
}
],
"tags": [],
"activeVersion": {
"updatedAt": "2026-02-16T08:55:44.000Z",
"createdAt": "2026-02-16T08:54:56.854Z",
"versionId": "ccd913f0-e061-4229-94b8-118e1c5b7d2b",
"workflowId": "7qcxlXpoQdgL2IRZLnLjR",
"nodes": [
{
"parameters": {
"authentication": "oAuth2",
"topic": "orders/fulfilled"
},
"type": "n8n-nodes-base.shopifyTrigger",
"typeVersion": 1,
"position": [
0,
0
],
"id": "9b981efa-65f5-48cd-8394-940f71fd2bff",
"name": "Shopify Trigger",
"webhookId": "0f8c7c98-0d7a-41b4-86b1-484dc04678f5",
"credentials": {
"shopifyOAuth2Api": {
"id": "GM2UhKe3UQoTJHft",
"name": "Shopify account"
}
}
},
{
"parameters": {
"amount": 10,
"unit": "days"
},
"type": "n8n-nodes-base.wait",
"typeVersion": 1.1,
"position": [
208,
0
],
"id": "a1c4828e-8513-4bef-8cc1-327c6b225b74",
"name": "Wait",
"webhookId": "51d37979-64d4-43be-a0e9-b3141f777469"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "b7b1657c-276a-4752-af00-f983ab237582",
"name": "order_number",
"value": "={{ $json.order_number }}",
"type": "number"
},
{
"id": "d8ea47d2-3557-416d-815d-1e25b3a1d658",
"name": "contact_email",
"value": "={{ $json.contact_email }}",
"type": "string"
},
{
"id": "00d8c4b3-f850-48a2-84ae-5fae6437fc93",
"name": "customer.first_name",
"value": "={{ $json.customer.first_name }}",
"type": "string"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
1024,
-96
],
"id": "f558dcda-eb25-4eba-b27f-348591d103a1",
"name": "Edit Fields"
},
{
"parameters": {
"sendTo": "={{ $json.contact_email }}",
"subject": "Quick question about your recent order",
"message": "=Hi {{ $json.customer.first_name }},\n<br><br>\nQuick question for you \u2014 did the part solve the problem the way you expected?\n<br><br>\nClick the option that fits:\n\n<br><br>\n\n<strong>Everything worked perfectly</strong>\n<a href=\"https://n8n.srv1127913.hstgr.cloud/webhook/review-happy?email={{ $json.contact_email }}&order={{ $json.order_number }}\">\nYes \u2014 job done.\n</a>\n\n<br><br>\n\n<strong>Something wasn\u2019t right</strong>\n<a href=\"https://n8n.srv1127913.hstgr.cloud/webhook/review-help?email={{ $json.contact_email }}&order={{ $json.order_number }}\">\nNo \u2014 I need help.\n</a>\n\n<br><br>\n\nIf it didn\u2019t fit, didn\u2019t perform, or just wasn\u2019t what you expected we\u2019ll make it right.\n\nNo hassle. No back-and-forth.\n\nThat\u2019s how we do business.\n\n<br><br>\n\nWindow Revival Shop",
"options": {
"appendAttribution": true,
"bccList": "shop@windowrevival.com.au",
"replyTo": "shop@windowrevival.com.au"
}
},
"type": "n8n-nodes-base.gmail",
"typeVersion": 2.2,
"position": [
1216,
-96
],
"id": "996d5635-febd-4068-bf07-6080585c794f",
"name": "Send a message",
"webhookId": "c704bb28-568a-414f-a65a-c39fbbe83a5e",
"credentials": {
"gmailOAuth2": {
"id": "XttthNS8ehA8gBFE",
"name": "WR: Revival Shop"
}
}
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 3
},
"conditions": [
{
"id": "0056568e-5dd0-4b8c-915e-5e5c6d12e242",
"leftValue": "={{ (Array.isArray($json) ? $json[0] : $json).financial_status }}",
"rightValue": "paid",
"operator": {
"type": "string",
"operation": "equals",
"name": "filter.operator.equals"
}
},
{
"id": "c16fd693-54ca-4072-a612-a1e571305233",
"leftValue": "={{ (Array.isArray($json) ? $json[0] : $json).fulfillment_status }}",
"rightValue": "fulfilled",
"operator": {
"type": "string",
"operation": "equals",
"name": "filter.operator.equals"
}
},
{
"id": "776e7d3e-aa70-4894-a590-9c6af2861217",
"leftValue": "={{ (Array.isArray($json) ? $json[0] : $json).cancelled_at }}",
"rightValue": "",
"operator": {
"type": "string",
"operation": "empty",
"singleValue": true
}
},
{
"id": "49b9505b-fc66-4557-b84a-d68f3747ba6c",
"leftValue": "={{ ((Array.isArray($json) ? $json[0] : $json).refunds || []).length }}",
"rightValue": 0,
"operator": {
"type": "number",
"operation": "equals"
}
},
{
"id": "7a842510-f69a-47a4-8639-9374ac1fbaa3",
"leftValue": "={{ (Array.isArray($json) ? $json[0] : $json).email }}",
"rightValue": "",
"operator": {
"type": "string",
"operation": "notEmpty",
"singleValue": true
}
},
{
"id": "8589a686-33da-4c95-a728-8667b4d4e64d",
"leftValue": "={{ $('Get row(s) in sheet').item.json.status }}",
"rightValue": "\ud83d\udfe2 Delivered",
"operator": {
"type": "string",
"operation": "equals"
}
}
],
"combinator": "and"
},
"options": {}
},
"type": "n8n-nodes-base.if",
"typeVersion": 2.3,
"position": [
768,
0
],
"id": "cd0160c5-9bc9-4d68-b796-19a39567dac8",
"name": "If"
},
{
"parameters": {
"authentication": "oAuth2",
"operation": "get",
"orderId": "={{ $('Shopify Trigger').item.json.id }}",
"options": {}
},
"type": "n8n-nodes-base.shopify",
"typeVersion": 1,
"position": [
592,
0
],
"id": "34bf9c3a-b48b-4dba-ac9b-6ca076571702",
"name": "Get an order",
"credentials": {
"shopifyOAuth2Api": {
"id": "GM2UhKe3UQoTJHft",
"name": "Shopify account"
}
}
},
{
"parameters": {},
"type": "n8n-nodes-base.noOp",
"typeVersion": 1,
"position": [
1040,
112
],
"id": "c434ce12-e942-4a01-bc42-6afcd2955c84",
"name": "No Operation, do nothing"
},
{
"parameters": {
"documentId": {
"__rl": true,
"value": "https://docs.google.com/spreadsheets/d/1Saoy_4dBYP6pOevexzFizFDmkFt-6ARlmwRvYPzGtWU/edit?pli=1&gid=2095084692#gid=2095084692",
"mode": "url"
},
"sheetName": {
"__rl": true,
"value": 2095084692,
"mode": "list",
"cachedResultName": "Tracker - Shopify",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1Saoy_4dBYP6pOevexzFizFDmkFt-6ARlmwRvYPzGtWU/edit#gid=2095084692"
},
"filtersUI": {
"values": [
{
"lookupColumn": "=order_no",
"lookupValue": "=#{{ $json.order_number }}"
}
]
},
"options": {
"dataLocationOnSheet": {
"values": {
"rangeDefinition": "specifyRange",
"headerRow": 3,
"firstDataRow": 6
}
}
}
},
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.7,
"position": [
400,
0
],
"id": "eeb3410d-fc11-4e0c-adc8-4eca0fbb8cd2",
"name": "Get row(s) in sheet",
"credentials": {
"googleSheetsOAuth2Api": {
"id": "iNsBYYAG0CoB29qK",
"name": "WR: Google Sheets Shop"
}
}
}
],
"connections": {
"Shopify Trigger": {
"main": [
[
{
"node": "Wait",
"type": "main",
"index": 0
}
]
]
},
"Wait": {
"main": [
[
{
"node": "Get row(s) in sheet",
"type": "main",
"index": 0
}
]
]
},
"Edit Fields": {
"main": [
[
{
"node": "Send a message",
"type": "main",
"index": 0
}
]
]
},
"Send a message": {
"main": [
[]
]
},
"Get an order": {
"main": [
[
{
"node": "If",
"type": "main",
"index": 0
}
]
]
},
"If": {
"main": [
[
{
"node": "Edit Fields",
"type": "main",
"index": 0
}
],
[
{
"node": "No Operation, do nothing",
"type": "main",
"index": 0
}
]
]
},
"Get row(s) in sheet": {
"main": [
[
{
"node": "Get an order",
"type": "main",
"index": 0
}
]
]
}
},
"authors": "Christine Kam",
"name": "Version 1.4",
"description": "fix wait time\nfixed subject and body of email\nbcc shop - for initial testing\nallow reply to shop@windowrevival.com.au",
"autosaved": true,
"workflowPublishHistory": [
{
"createdAt": "2026-02-16T08:55:44.425Z",
"id": 189,
"workflowId": "7qcxlXpoQdgL2IRZLnLjR",
"versionId": "ccd913f0-e061-4229-94b8-118e1c5b7d2b",
"event": "activated",
"userId": "bc31a112-3ed8-48ca-b94c-7225571c3d7b"
}
]
}
}
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.
gmailOAuth2googleSheetsOAuth2ApishopifyOAuth2Api
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
reviewFunnel. Uses shopifyTrigger, gmail, shopify, googleSheets. Event-driven trigger; 8 nodes.
Source: https://github.com/donPuerto/n8n-workflows/blob/1218084aa4a7b90465c878f09c6960f21d9f1f9e/workflows/reviewFunnel.json — 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 workflow is built to monitor your Shopify store every hour and automatically detect open, unfulfilled orders that have gone past your dispatch SLA window. The moment a breach is detected, alerts
This workflow ingests proof-of-delivery and completion documents from Gmail or a webhook, extracts key fields with an OpenRouter vision model, reconciles them against Google Sheets dispatch data, arch
Loan eligibility workflow. Uses formTrigger, googleSheets, gmail. Event-driven trigger; 53 nodes.
Splitout Code. Uses manualTrigger, httpRequest, stickyNote, splitOut. Event-driven trigger; 46 nodes.
Automate CSV imports into HubSpot without the mess. Powered by n8n. Supercharged by Pollup AI.