This workflow corresponds to n8n.io template #6739 — we link there as the canonical source.
This workflow follows the Google Sheets → Googlesheetstrigger 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 →
{
"id": "ugi00HVDOW9kN81g",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "Sentiment Analysis of Product Reviews with OpenAI",
"tags": [],
"nodes": [
{
"id": "a0c76f41-a0f7-4c15-88ed-9372ecac1db3",
"name": "Sentiment Analysis",
"type": "@n8n/n8n-nodes-langchain.sentimentAnalysis",
"position": [
-100,
-40
],
"parameters": {
"options": {},
"inputText": "={{ $json.Review }}"
},
"typeVersion": 1
},
{
"id": "4fc752b9-8dcf-4c92-9ffe-83ff63f02a6e",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
-80,
160
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "2fb5412d-bf2f-4e9c-9f99-e057b6b8c0bc",
"name": "Google Sheets Trigger",
"type": "n8n-nodes-base.googleSheetsTrigger",
"position": [
-300,
-40
],
"parameters": {
"options": {},
"pollTimes": {
"item": [
{
"mode": "everyMinute"
}
]
},
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1HOq0GIqZ80rMhlDaU9B4d4Vq9BPj1WsTzfnB1kAmY2g",
"cachedResultUrl": "",
"cachedResultName": "Review"
}
},
"credentials": {
"googleSheetsTriggerOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "88925ca1-3294-4655-8943-67f403044dd9",
"name": "Updated Sentiment of Product Review",
"type": "n8n-nodes-base.googleSheets",
"position": [
440,
-60
],
"parameters": {
"columns": {
"value": {
"Review": "={{ $json.Review }}",
"Sentiment": "={{ $json.sentimentAnalysis.category }}"
},
"schema": [
{
"id": "Review",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Review",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Sentiment",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Sentiment",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "row_number",
"type": "string",
"display": true,
"removed": true,
"readOnly": true,
"required": false,
"displayName": "row_number",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"Review"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1HOq0GIqZ80rMhlDaU9B4d4Vq9BPj1WsTzfnB1kAmY2g",
"cachedResultUrl": "",
"cachedResultName": "Review"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.5
},
{
"id": "dd0610dd-524c-4987-8fca-fc2ed6e1deb2",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-440,
-240
],
"parameters": {
"color": 3,
"width": 1100,
"height": 520,
"content": "## Sentiment Analysis of Product Review Using OpenAI"
},
"typeVersion": 1
},
{
"id": "be858b1d-e0c6-4337-b3da-77b748b82597",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-440,
300
],
"parameters": {
"color": 7,
"width": 1100,
"height": 180,
"content": "## Description\n\nWhenever a product review is submitted, the workflow is initiated. Each review is then sent for sentiment analysis using OpenAI. Once the sentiment is determined, the result is updated alongside the review."
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "07a342c5-be90-41f9-99c3-93d918db974d",
"connections": {
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "Sentiment Analysis",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Sentiment Analysis": {
"main": [
[
{
"node": "Updated Sentiment of Product Review",
"type": "main",
"index": 0
}
],
[
{
"node": "Updated Sentiment of Product Review",
"type": "main",
"index": 0
}
],
[
{
"node": "Updated Sentiment of Product Review",
"type": "main",
"index": 0
}
]
]
},
"Google Sheets Trigger": {
"main": [
[
{
"node": "Sentiment Analysis",
"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.
googleSheetsOAuth2ApigoogleSheetsTriggerOAuth2ApiopenAiApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Automated customer feedback analyzer: Trigger: Google Sheets triggers on new product review rows. Sentiment Analysis: Review text sent to OpenAI. Writeback: Resulting sentiment (Positive, Neutral, Negative) is written back to the sheet.
Source: https://n8n.io/workflows/6739/ — 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.
Who is this for? Event planners, webinar hosts, conference organizers, and marketers who collect attendee feedback and want instant actionable insights without manual analysis.
This workflow automates the process of scraping Trustpilot reviews, extracting key details, analyzing sentiment, and saving the results to Google Sheets. It uses OpenAI for sentiment analysis and HTML
Use cases are many: Whether you're a YouTube creator exploring feedback, a social media manager fine-tuning engagement strategy, a brand team monitoring campaign sentiment, or a marketing agency condu
Influencers, marketers, and data teams who need instant insights into audience sentiment—without manual exports or scattered tools. Manual exports from YouTube Studio Time-consuming sentiment tagging
Google Sheets → OpenAI GPT-4o → QuickChart → Gmail Fetches customer reviews from a Google Sheet. Classifies each review as Positive, Neutral or Negative with GPT-4o-mini. Writes the sentiment back to