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.
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.
AICARE Email Blast System. Uses googleDrive, httpRequest, googleSheets, gmail. Event-driven trigger; 39 nodes.
Telegram Code. Uses stickyNote, telegramTrigger, telegram, googleDrive. Event-driven trigger; 37 nodes.