AutomationFlowsEmail & Gmail › Reviewfunnel

Reviewfunnel

reviewFunnel. Uses shopifyTrigger, gmail, shopify, googleSheets. Event-driven trigger; 8 nodes.

Event trigger★★★★☆ complexity8 nodesShopify TriggerGmailShopifyGoogle Sheets
Email & Gmail Trigger: Event Nodes: 8 Complexity: ★★★★☆ Added:

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 →

Download .json
{
  "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.

Pro

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 →

More Email & Gmail workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Email & Gmail

Loan eligibility workflow. Uses formTrigger, googleSheets, gmail. Event-driven trigger; 53 nodes.

Form Trigger, Google Sheets, Gmail
Email & Gmail

Splitout Code. Uses manualTrigger, httpRequest, stickyNote, splitOut. Event-driven trigger; 46 nodes.

HTTP Request, Execute Workflow Trigger, Gmail +1
Email & Gmail

Automate CSV imports into HubSpot without the mess. Powered by n8n. Supercharged by Pollup AI.

HTTP Request, Execute Workflow Trigger, Gmail +1
Email & Gmail

AICARE Email Blast System. Uses googleDrive, httpRequest, googleSheets, gmail. Event-driven trigger; 39 nodes.

Google Drive, HTTP Request, Google Sheets +2
Email & Gmail

Telegram Code. Uses stickyNote, telegramTrigger, telegram, googleDrive. Event-driven trigger; 37 nodes.

Telegram Trigger, Telegram, Google Drive +2