Support tickets, App Store reviews, community rants, support emails, that one line in the user group saying "this feature is anti-human"-feedback is scattered across five or six channels. Product folks manually dig through it weekly, classify by gut feel, and bugs slip through to next week before anyone notices. This n8n workflow funnels multi-channel feedback into one pipe, auto-dedupes and masks PII, runs an LLM to tag along four dimensions (type / sentiment / urgency / product module), files bugs straight to GitHub Issues, pushes P0 complaints to a WeCom group, and lands everything else in a summary table for the weekly report. The more feedback volume, the more it saves-a single piece can go from intake to dispatch in minutes.
Workflow Chain
Multi-channel intake (Webhook for support tickets / App Store RSS / community bot relay / email IMAP) -> Code node dedupes + masks PII -> LLM four-dimension tagging (type: complaint/suggestion/bug/praise; sentiment: positive/neutral/negative; urgency: P0/P1/P2/P3; product module) -> IF urgency=P0 push WeCom group -> IF type=bug create GitHub Issue -> full stream into Feishu Bitable summary -> Schedule weekly aggregation report.
Download Template
Setup Steps
- Import: n8n -> Workflows -> Import from File, pick workflow-customer-feedback-analysis.json
- Webhook node: copy the Production URL, wire it to your support-ticket backend / community-bot relay. App Store reviews use a scheduled Schedule + HTTP Request pulling RSS; community channels forward via bot webhook
- Dedupe + mask node: the Code node hashes the body for dedupe (same feedback reposted across channels counts once) and regex-masks phone numbers / emails / ID numbers so PII never leaves for the LLM
- LLM tag node: fill in Kimi / DeepSeek / Qwen key; 8k context is enough; prompt below. Categories must be frozen to complaint/suggestion/bug/praise-don't let the model invent new ones
- IF urgent node: read urgency from the LLM output, P0 goes to the WeCom branch
- Push WeCom node: WeCom group-bot webhook, template carries summary + module + source channel, @ the responsible product owner
- IF is bug node: read type=bug, route to the Issue-creation branch
- Create GitHub Issue node: HTTP Request to the GitHub REST API, title prefixed [反馈], labels
from-feedback+ product module, body holds the original text + urgency + source - Summary table node: Feishu Bitable via HTTP + OpenAPI; Notion via the official node; Postgres via the Postgres node. Every piece of feedback lands here-no drops
- Weekly report node (optional): Schedule every Monday, aggregate last week's feedback by type/module, push to the product weekly meeting
- Test run: manually POST a test feedback (one bug + one complaint), check whether WeCom got the P0 push, whether GitHub created the Issue, and whether both rows are in the summary table
Companion Prompt (LLM Four-Dimension Tagging)
You are a customer feedback analyst. Read the feedback text below and output JSON:
- type: complaint / suggestion / bug / praise (pick one of four, do not invent categories)
- sentiment: positive / neutral / negative
- urgency: P0 (crash / data loss / large-scale outage) / P1 (core flow blocked) / P2 (UX issue) / P3 (nice-to-have)
- module: product module name inferred from text; "unknown" if unclear
- confidence: 0-1, your confidence in the classification
- summary: one sentence within 20 words
Rules: categories must come from the four given; if confidence < 0.7 prefix summary with [需复核]; do not fabricate facts not in the text; judge only from the original text.
Feedback text: {{feedback}}Pitfalls
- Frozen categories or it falls apart: let the LLM "classify freely" and week one gives you seven variants like "complaint / grumble / unhappy"-useless for stats. Hard-pin categories as an enum in the prompt with "do not invent categories" and consistency jumps
- LLM misjudgment + confidence threshold: the model calls "loads slowly" a bug when it's really a P3 UX issue. Add a confidence field; route < 0.7 into a human-review queue so low-confidence items don't auto-create Issues and cause embarrassment
- PII masking is a red line: feedback often carries phone numbers, order IDs, emails-feeding those to an external LLM is a compliance breach. The Code node regex-masks them into [PHONE]/[EMAIL]/[ID] before they leave; follow the "minimum necessary" principle
- Don't dedupe on body text alone: the same rant shows up in support tickets, community, and App Store, rewritten each time. Dedupe on "user ID + module + time window" rather than body hash; or accept hash hits but tag as "duplicate feedback" without dropping it, useful for heat tracking
- Don't break the loop at dispatch: bugs create Issues no one follows up on, P0 pushes land in a group no one replies to-feedback rots. Set a default assignee on the Issue node, @ a person in the WeCom push; the weekly report node should surface "handled / unhandled" to force closure
- App Store review rate limits: Apple's public RSS updates with a delay (1-2 hours at best), don't poll every minute-once an hour is enough; Google Play has no official RSS, so use a third-party scraper or manual export into the webhook
- Version your classification standard: two weeks in, "suggestion" starts mixing with "feature request." When you split categories, record the prompt version in the summary table so you can back-trace and re-classify historical data
This template is a skeleton-the webhook entry, LLM key, GitHub repo, and WeCom bot URL are yours. Once it runs, add two nodes: low-confidence feedback into a Feishu human-review table processed by the morning support shift; after an Issue closes, auto-follow-up with the original user (if you have a channel), closing the "feedback -> handling -> follow-up" loop. Backtest the classifier against labeled history once a month to catch category drift.
References
- n8n Webhook node docs: https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook/
- n8n Code node docs: https://docs.n8n.io/code/builtin/code-node/
- n8n IF node docs: https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.if/
- GitHub REST API create an issue: https://docs.github.com/en/rest/issues/issues#create-an-issue
- WeCom group-bot webhook: https://developer.work.weixin.qq.com/document/path/91770
- Feishu Bitable OpenAPI: https://open.feishu.cn/document/server-docs/docs/bitable-v1/bitable-overview
- n8n official workflow templates: https://n8n.io/workflows