AutomationFlowsAI & RAG › Collect Customer Testimonials with Gpt-4 Analysis, Jotform, Gmail & Google…

Collect Customer Testimonials with Gpt-4 Analysis, Jotform, Gmail & Google…

Original n8n title: Collect Customer Testimonials with Gpt-4 Analysis, Jotform, Gmail & Google Sheets

ByJitesh Dugar @jiteshdugar on n8n.io

Transform scattered testimonials into organized marketing assets - achieving 500 percent increase in testimonial collection, instant multi-channel optimization, and turning happy customers into brand advocates with automated rewards and recognition.

Event trigger★★★★☆ complexityAI-powered15 nodesAgentGoogle SheetsGmailJot Form TriggerOpenAI Chat
AI & RAG Trigger: Event Nodes: 15 Complexity: ★★★★☆ AI nodes: yes Added:

This workflow corresponds to n8n.io template #9840 — we link there as the canonical source.

This workflow follows the Agent → Gmail 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
{
  "nodes": [
    {
      "id": "111a0f7d-7e79-4bce-9499-31f9b05de3c4",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -784,
        16
      ],
      "parameters": {
        "color": 4,
        "width": 360,
        "height": 472,
        "content": "Customer Testimonial Collector - Purpose: Transform scattered testimonials into organized marketing assets with AI-powered analysis. Key Features: Centralized testimonial submission, AI tone and sentiment detection, Automatic quote extraction, Marketing-ready content log, Automated thank-you with rewards, Social media optimization. Impact: 500 percent increase in testimonial collection, instant marketing assets"
      },
      "typeVersion": 1
    },
    {
      "id": "7dd98765-6e75-49fb-85d5-0b3c8f4c4a3e",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -384,
        -16
      ],
      "parameters": {
        "color": 5,
        "width": 340,
        "height": 524,
        "content": "Jotform Testimonial Fields: Customer Name, Customer Email, Company Name, Job Title, Product or Service Used, Testimonial Text, Rating, Permission to Share, Photo Upload, Use Case or Industry. Create your form for free on Jotform\nCreate your form for free on [Jotform using this link](https://www.jotform.com/?partner=mediajade)"
      },
      "typeVersion": 1
    },
    {
      "id": "296a41d8-94ff-4eb0-9d73-0e192e5a315b",
      "name": "Extract Testimonial Data",
      "type": "n8n-nodes-base.set",
      "position": [
        -192,
        352
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "customer_name",
              "name": "customerName",
              "type": "string",
              "value": "={{ $json['Customer Name'] }}"
            },
            {
              "id": "customer_email",
              "name": "customerEmail",
              "type": "string",
              "value": "={{ $json['Customer email'] }}"
            },
            {
              "id": "company_name",
              "name": "companyName",
              "type": "string",
              "value": "={{ $json['Company Name'] }}"
            },
            {
              "id": "product_service",
              "name": "productService",
              "type": "string",
              "value": "={{ $json['Product/service'] }}"
            },
            {
              "id": "testimonial_text",
              "name": "testimonialText",
              "type": "string",
              "value": "={{ $json['Testimonial Text'] }}"
            },
            {
              "id": "rating",
              "name": "rating",
              "type": "number",
              "value": "={{ $json.Rating }}"
            },
            {
              "id": "submitted_at",
              "name": "submittedAt",
              "type": "string",
              "value": "={{ $now.toISO() }}"
            }
          ]
        }
      },
      "typeVersion": 3.3
    },
    {
      "id": "cb2f4ae6-07c1-4441-9634-b719bc13e196",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -16,
        0
      ],
      "parameters": {
        "color": 6,
        "width": 408,
        "height": 508,
        "content": "AI Testimonial Analysis - AI Analyzes For: Tone and Sentiment, Best Quote Extraction, Key Benefits Mentioned, Emotional Impact Score, Marketing Use Cases, Social Media Optimization. Output: Marketing-ready assets"
      },
      "typeVersion": 1
    },
    {
      "id": "3019c6a9-0a80-4fda-82dc-3d9f5753c1d0",
      "name": "AI Testimonial Analysis",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        0,
        304
      ],
      "parameters": {
        "text": "Analyze this customer testimonial and extract marketing insights. Customer name, Company, Title, Product, Rating out of 5, and Testimonial text provided. Return JSON with: overallTone, sentimentScore 0-100, emotionalImpact, authenticity, bestQuote max 280 chars, alternateQuotes array, keyBenefitsMentioned array, painPointsAddressed array, specificResults array, marketingUseCase, targetAudience, twitterVersion 280 chars, linkedinVersion 150 words, websiteVersion 50-75 words, headlineVersion 10 words, calloutWords array, marketingPriority high medium or low",
        "agent": "conversationalAgent",
        "options": {
          "systemMessage": "You are a marketing copywriter. Extract compelling elements from testimonials and optimize for marketing channels."
        },
        "promptType": "define"
      },
      "typeVersion": 1.6
    },
    {
      "id": "4dbf0dde-e75d-4e36-9fa5-7482747cd2f2",
      "name": "Parse AI Analysis",
      "type": "n8n-nodes-base.set",
      "position": [
        272,
        304
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "919aa6bf-5541-4f2d-81a0-54fe9b2bf141",
              "name": "output",
              "type": "string",
              "value": "={{ $json.output }}"
            }
          ]
        }
      },
      "typeVersion": 3.3
    },
    {
      "id": "b679a227-4334-40a8-b017-f19c6f134fa9",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        416,
        -48
      ],
      "parameters": {
        "color": 2,
        "width": 340,
        "height": 524,
        "content": "Testimonial Content Log - Google Sheets Database: Complete testimonial details, AI analysis and quotes, Marketing versions, Permission tracking, Searchable library. Enables: Easy marketing access"
      },
      "typeVersion": 1
    },
    {
      "id": "d30e7007-322b-43c1-9f82-809a3627e365",
      "name": "Log to Testimonial Library",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        512,
        192
      ],
      "parameters": {
        "columns": {
          "value": {
            "email": "={{ $('Jotform Trigger').item.json['Customer email'] }}",
            "rating": "={{ $('Jotform Trigger').item.json.Rating }}",
            "compnay name": "={{ $('Jotform Trigger').item.json['Company Name'] }}",
            "Customer name ": "={{ $('Jotform Trigger').item.json['Customer Name'] }}",
            "product/service": "={{ $('Jotform Trigger').item.json['Product/service'] }}",
            "testiminial text": "={{ $('Jotform Trigger').item.json['Testimonial Text'] }}"
          },
          "schema": [
            {
              "id": "Customer name ",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Customer name ",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "email",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "rating",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "rating",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "compnay name",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "compnay name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "testiminial text",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "testiminial text",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "product/service",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "product/service",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "Customer name "
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "name",
          "value": "Sheet2"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1K0lqkb-z0fbdb_pEUDtUfl5N2jQ_nT-YEQtylwB4968",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1K0lqkb-z0fbdb_pEUDtUfl5N2jQ_nT-YEQtylwB4968/edit?usp=drivesdk",
          "cachedResultName": "Fleet"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.4
    },
    {
      "id": "fc5e67db-7ab5-4288-a1c4-bcba869b71b7",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        928,
        -48
      ],
      "parameters": {
        "color": 3,
        "width": 340,
        "height": 440,
        "content": "Customer Thank You - Automated Email: Thank customer, Show usage preview, Exclusive coupon code, Referral incentive, Social share versions. Drives: Loyalty and advocacy"
      },
      "typeVersion": 1
    },
    {
      "id": "8d2e5076-9867-4ceb-8867-9fcb910e2380",
      "name": "Generate Coupon Code",
      "type": "n8n-nodes-base.code",
      "position": [
        656,
        352
      ],
      "parameters": {
        "jsCode": "const jotformData = items[0].json;\nconst customerName = jotformData['Customer Name'] || 'Customer';\nconst rating = parseInt(jotformData.Rating) || 3;\n\nconst namePart = customerName.substring(0, 5).replace(/\\s/g, '');\nconst randomNum = Math.floor(Math.random() * 9999);\nconst couponCode = 'THANKS' + namePart + randomNum;\n\nlet discountPercent = 10;\nif (rating === 5) {\n  discountPercent = 20;\n} else if (rating === 4) {\n  discountPercent = 15;\n}\n\nconst expiryDate = new Date(Date.now() + 30 * 24 * 60 * 60 * 1000).toISOString().slice(0, 10);\n\nreturn [{\n  json: {\n    couponCode: couponCode,\n    discountPercent: discountPercent,\n    expiryDays: 30,\n    expiryDate: expiryDate,\n    customerName: customerName,\n    customerEmail: jotformData['Customer email'],\n    rating: rating\n  }\n}];"
      },
      "typeVersion": 2
    },
    {
      "id": "8126ef33-ad08-47d5-803e-0ec77f1d8233",
      "name": "Send Thank You Email",
      "type": "n8n-nodes-base.gmail",
      "position": [
        1104,
        160
      ],
      "parameters": {
        "sendTo": "={{ $json.customerEmail }}",
        "message": "Hi there, Thank you for your testimonial! Your feedback means the world to us. As a token of appreciation, here is your exclusive coupon code: CODE with DISCOUNT percent off, valid until EXPIRY. We truly appreciate your support! Best regards, The Team",
        "options": {},
        "subject": "Thank You for Your Testimonial!"
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "2c22739d-2bec-49a6-a606-3341cc26e3ee",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        896,
        416
      ],
      "parameters": {
        "color": 7,
        "width": 320,
        "height": 328,
        "content": "Marketing Team Alert - Notification Includes: New testimonial available, AI analysis summary, Best quotes, Priority level, Usage recommendations. Enables: Immediate campaign use"
      },
      "typeVersion": 1
    },
    {
      "id": "9960fab6-6012-4e86-9020-fb83c1949946",
      "name": "Notify Marketing Team",
      "type": "n8n-nodes-base.gmail",
      "position": [
        1088,
        576
      ],
      "parameters": {
        "sendTo": "user@example.com",
        "message": "New testimonial available. Customer details and AI analysis included. Please check the testimonial library for full details.",
        "options": {},
        "subject": "New Testimonial Received"
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "411f477b-f50a-4089-b246-6fde5d782e3d",
      "name": "Jotform Trigger",
      "type": "n8n-nodes-base.jotFormTrigger",
      "position": [
        -368,
        352
      ],
      "parameters": {
        "form": "252892971568071"
      },
      "credentials": {
        "jotFormApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "780472ed-f2ed-4a0e-8844-2cd3ef4d01de",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        0,
        464
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    }
  ],
  "connections": {
    "Jotform Trigger": {
      "main": [
        [
          {
            "node": "Extract Testimonial Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "AI Testimonial Analysis",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Parse AI Analysis": {
      "main": [
        [
          {
            "node": "Log to Testimonial Library",
            "type": "main",
            "index": 0
          },
          {
            "node": "Generate Coupon Code",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Generate Coupon Code": {
      "main": [
        [
          {
            "node": "Send Thank You Email",
            "type": "main",
            "index": 0
          },
          {
            "node": "Notify Marketing Team",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Testimonial Analysis": {
      "main": [
        [
          {
            "node": "Parse AI Analysis",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract Testimonial Data": {
      "main": [
        [
          {
            "node": "AI Testimonial 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.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

Transform scattered testimonials into organized marketing assets - achieving 500 percent increase in testimonial collection, instant multi-channel optimization, and turning happy customers into brand advocates with automated rewards and recognition.

Source: https://n8n.io/workflows/9840/ — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

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

AI & RAG

Transform guest complaints into loyalty opportunities - achieving 60% reduction in negative reviews, 85% faster service recovery, and turning dissatisfied guests into brand advocates through AI-powere

Agent, Gmail, HTTP Request +3
AI & RAG

Transform patient intake from paperwork chaos into intelligent, automated triage that detects emergencies, prepares providers with comprehensive briefs, and streamlines scheduling—improving patient sa

Agent, OpenAI Chat, Output Parser Structured +4
AI & RAG

Transform accounts payable from a manual bottleneck into an intelligent, automated system that reads invoices, detects fraud, and processes payments automatically—saving 20+ hours per week while preve

OpenAI, Agent, OpenAI Chat +6
AI & RAG

Transform college admissions from an overwhelming manual process into an intelligent, efficient, and equitable system that analyzes essays, scores applicants holistically, and identifies top candidate

OpenAI, Agent, OpenAI Chat +5
AI & RAG

Streamline client onboarding and project setup from hours to minutes with AI-driven automation. This intelligent workflow eliminates manual coordination, builds proposals, creates projects in Asana, w

Agent, Asana, Slack +5