ChatGPTCreativeWritingAI score · PendingAI-assisted edit · no obvious prompt-injection riskn8n.io

n8n Multi-Channel Feedback Pipeline: AI Analysis → Jira Tickets → Monthly Reports

Unify scattered feedback from Telegram, Google Forms/Sheets, and Gmail into a normalized structure, then auto-classify, score, and route it into Jira tickets, Notion docs, and scheduled email reports

ExperiencedStepsWorkflowPromptTip
Who
Product managers, SaaS teams, and customer-support leads
You get
End-to-end automation from multi-channel intake to structured ticket creation, priority scoring, and monthly retrospectives with minimal manual triage
You need
n8n · jira · notion · google-sheets · gmail · telegram

Constraints

Prerequisites: an n8n instance; credentials for Google Sheets, Gmail, Notion, Jira Cloud, Telegram Bot, and OpenAI; an existing Jira project and a Notion parent page/database. The template contains placeholder IDs (yourdocumentid, yoururl, 000000000, etc.) that must all be replaced before activation. The monthly-report node still references modelId=gpt-5, which should be changed to an available model (e.g., gpt-4o).

What they did

Author yassinzehar published a 29-node n8n workflow template that consolidates product feedback from a Telegram bot, Google Form/Sheet, and Gmail. Each incoming item is normalized via a code node, then sent to an OpenAI node for automatic categorization, tagging, sentiment scoring, pain/impact/effort estimation, and summary generation. A custom RICE-style priority calculator scores each item and maps it to Jira priorities, after which the workflow creates a Jira ticket, a Notion page, a Google Sheets log entry, and user notifications. A monthly scheduled branch aggregates all feedback data and uses AI to generate a Product Intelligence Report, which is saved to Notion and emailed to stakeholders.

How it went

Author-reported outcome: the template is designed to move teams from scattered manual feedback handling to a repeatable, data-driven intake process with zero manual triage. Expected outputs include auto-created Jira issues, Telegram/email confirmations, populated analytics sheets, Notion documentation pages, and monthly summary emails. This site has not tested the workflow; actual runtime stability and AI output accuracy are unverified.

Worth knowing

1) The template contains multiple placeholder values (yourdocumentid, yoururl, 000000000, [email protected]) that must all be replaced before activation. 2) The 'Message a model1' node references modelId 'gpt-5', which is not publicly available; change it to gpt-4o or gpt-4o-mini. 3) The tierMapping example uses repeated placeholder emails and must be rewritten for your user base. 4) The RICE calculator hardcodes frequency=10, which may not reflect real usage patterns. 5) Code nodes include fallback parsing for malformed AI responses, but unrecoverable errors will still throw and may require manual intervention. 6) Monthly filtering relies on the current system month and a specific timestamp format; timezone or format mismatches can cause data to be skipped.

n8n workflow template

Structure checked · Not run-tested

Use “Import from File” in n8n, or copy the JSON and paste it into the editor. Connect your own accounts, then try test data. The template is inactive by default.

Setup and test checklist

Credentials to connect

  • After import, connect your own credentials on auth-required nodes; author secrets are not included.

Configuration to replace

  • Source template is n8n public workflow #10896 (~29 nodes). Keep inactive after import; verify triggers, expressions and external API endpoints.
  • Sticky-note guidance is informational; replace placeholders with your own accounts, sheet schemas or channel IDs.

Test input and expected output

  • Manually run the main path once in a test workspace and confirm credentialed nodes authenticate without errors.
  • Drive one synthetic/redacted sample through and check output fields and downstream writes before enabling in production.

Template changes

  • Author credential bindings, webhookId and execution data are removed; the workflow is inactive. Nodes, connections and original prompts are preserved. Not run-tested in n8n.
  • No business-logic edits; verify keys, quotas and privacy compliance before use.

Template retrieved: 2026-10-24

Steps

  1. Configure multi-channel triggers and credentials

    After importing the template into n8n, set up the three triggers: Telegram Trigger (listens for bot messages), Google Sheets Trigger (listens for new form/row additions with polling interval such as everyMinute), and Gmail Trigger (filters new emails by sender/label with polling interval such as everyHour). All three sources feed into the 'data normalizer' code node. Complete credential authorization for Google Sheets, Gmail, Notion, Jira Cloud, Telegram Bot, and OpenAI.

  2. Normalize data and run AI enrichment

    The 'data normalizer' code node detects the source (telegram / gmail / google_forms) from payload structure and outputs a standard JSON with id, source, timestamp, user, content, and metadata. Then 'instant reply' sends a Telegram acknowledgment; 'user enrichment' maps the user tier (free/pro/enterprise) by email and attaches tier_weight. Finally the 'Message a model' OpenAI node classifies the feedback, extracts tags, scores sentiment/pain/impact/effort, and writes a summary with acceptance criteria.

    Execution prompt · Source text。OpenAI node 'Message a model' system message field

    You are a Product Manager analyzing user feedback.
    Your task is to categorize, tag, score and summarize feedback.
    
    Return ONLY valid JSON with this exact structure (no markdown, no backticks):
    {
      "category": "bug|feature_request|improvement|question",
      "tags": ["tag1", "tag2", "tag3"],
      "sentiment": "positive|neutral|negative",
      "pain_level": 1-10,
      "business_impact": 1-10,
      "implementation_effort": 1-10,
      "summary": "One sentence, max 80 chars",
      "description": "2-3 sentences for Jira ticket",
      "acceptance_criteria": ["criterion1", "criterion2", "criterion3"]
    }
    
    Rules:
    - Tags: max 3, specific and lowercase
    - Summary: actionable, clear, <80 chars
    - Scores: realistic based on content
    - Description: detailed enough for dev team
    - ONLY return the JSON, nothing else

    Execution prompt · Source text。OpenAI node 'Message a model' user message field

    =Analyze this user feedback:
    
    FEEDBACK: "{{$json.content.raw_text}}"
    USER TIER: {{$json.user.tier}}
    SOURCE: {{$json.source}}
    
    USER SELECTED CATEGORY: {{ $json.content.category_hint || 'none' }}
    USER URGENCY ASSESSMENT: {{ $json.content.urgency_hint || 'none' }}
    
    Return the JSON analysis.
  3. Compute priority and create Jira ticket with docs and notifications

    The 'parse json' code node cleans and parses the AI response into ai_analysis JSON. The 'priority calculator' computes a RICE score from pain_level, business_impact, implementation_effort, and tier_weight, then maps internal priority P0-P3 to Jira priorities Highest-Low. 'Create an issue' opens a Jira ticket with summary, description, labels, and priority drawn from upstream nodes. 'post processing' assembles the Jira URL; if the source is Telegram, 'send result to user' sends a rich message with ticket link and scores. Simultaneously, 'log to analytics' appends a row to Google Sheets, 'end notification' sends an email confirmation, and 'Create a page' generates a linked Notion document.

    Execution prompt · Source text。Telegram node 'send result to user' text field

    =🎉 *Feedback treated !*
    
    🎫 *Ticket created  :* [{{ $json.jira.key }}]({{ $json.jira.url }})
    
    📊 *Analysis :*
    - Category : {{ $('priority calculator').item.json.ai_analysis.category }}
    - Priority : {{ $('priority calculator').item.json.scoring.priority }}
    - Score RICE :{{ $('priority calculator').item.json.scoring.rice_score }}
    
    🏷️ *Tags :* {{ $('priority calculator').item.json.ai_analysis.tags }}
    
    
    
    Thanks ! 🙏
  4. Aggregate monthly data and generate the intelligence report

    '1 month Trigger' fires on a monthly schedule. 'query google sheet' reads the feedback log; 'aggregate monthly stats' computes totals, category breakdown, sentiment score, average RICE, P0/P1 rate, and top pain points/feature requests. Then 'Message a model1' uses AI to generate a structured monthly report (executive_summary, insights, trends, recommendations, risk_areas). 'parse response' extracts the JSON; 'monthly report' writes to Notion; 'montly report log' appends to Google Sheets; and 'Email reporting' sends a formatted HTML email to stakeholders.

    Execution prompt · Source text。OpenAI node 'Message a model1' system message field

    You are a Senior Product Manager analyzing monthly user feedback data.
    Generate strategic insights, identify trends, and provide actionable recommendations.
    
    Return ONLY valid JSON (no markdown):
    {
      "executive_summary": "2-3 sentence critical takeaway",
      "key_insights": [
        "Insight 1 (data-driven, actionable)",
        "Insight 2",
        "Insight 3",
        "Insight 4",
        "Insight 5"
      ],
      "trends": {
        "positive": ["Positive trend 1", "Positive trend 2"],
        "concerning": ["Concern 1", "Concern 2"]
      },
      "strategic_recommendations": [
        {
          "title": "Recommendation title",
          "rationale": "Why this matters (with data)",
          "priority": "High|Medium|Low",
          "estimated_impact": "Expected business impact"
        }
      ],
      "risk_areas": [
        {
          "area": "Risk description",
          "severity": "High|Medium|Low",
          "mitigation": "Suggested action"
        }
      ]
    }

    Execution prompt · Source text。OpenAI node 'Message a model1' user message field

    =Analyze this monthly feedback data for {{ $now.toFormat('LLLL yyyy') }}:
    
    OVERVIEW:
    - Total feedbacks: {{ $json.stats.total }}
    - Avg RICE Score: {{ $json.stats.avg_rice_score }}
    - P0/P1 rate: {{ $json.stats.p0_p1_rate }}
    - Sentiment score: {{ $json.stats.sentiment_score }}/10
    
    BY CATEGORY:
    {{ Object.entries($json.stats.by_category).map(([k,v]) => `- ${k}: ${v}`).join('\n') }}
    
    BY USER TIER:
    {{ Object.entries($json.stats.by_tier).map(([k,v]) => `- ${k}: ${v}`).join('\n') }}
    
    TOP PAIN POINTS (by RICE):
    {{ $json.stats.top_pain_points.slice(0, 5).map((p, i) => `${i+1}. ${p.summary} (RICE: ${p.rice}, Pain: ${p.pain})`).join('\n') }}
    
    TOP FEATURE REQUESTS:
    {{ $json.stats.top_feature_requests.slice(0, 5).map((f, i) => `${i+1}. ${f.summary} (RICE: ${f.rice})`).join('\n') }}
    
    Generate strategic insights and recommendations.

Prompt you can copy

Setup guidance · Editorial suggestion。Setup assistant starter prompt to guide template import and credential configuration

This block is the prompt. Ads are never placed here.

This is an official n8n workflow template. After importing it, complete the setup in this order: 1) Replace all placeholder IDs and URLs; 2) Authorize all external service credentials; 3) Verify the AI model selection in each OpenAI node (change the residual gpt-5 reference to gpt-4o or gpt-4o-mini); 4) Adjust tierMapping and RICE thresholds to match your business rules; 5) Run a test submission through each channel to confirm connectivity.

Start with credential authorization; Telegram chatId, Google documentId, Notion pageId, and Jira project key must be replaced with real values; verify the model ID in the monthly-report node before first run.

Source

Multi-channel feedback to Jira pipeline with AI analysis & Notion reporting · yassinzehar · n8n.io · 2025-11-17

Comments & feedback

Tried this method? Share results, problems or improvements. Comments appear after moderation. Please avoid sensitive information.

Loading…

    Related