Slack/Discord Keyword Monitoring
Monitor Slack and Discord communities for keyword matches and route alerts to an engagement queue
Instructions
Slack/Discord Keyword Monitoring
Set up automated keyword monitoring across Slack workspaces and Discord servers to detect engagement opportunities in real time. When a community member asks a question, mentions a competitor, or describes a pain point your product solves, an alert fires to your engagement queue.
Architecture
Slack/Discord communities
-> Polling or webhook ingestion
-> Keyword matching + filtering
-> Priority classification
-> Alert delivery (Slack/email)
Method 1: n8n Polling (Free, works everywhere)
Slack Polling Workflow
Using the n8n-workflow-basics and n8n-scheduling fundamentals:
Schedule Trigger (every 30 minutes)
-> Slack Node (conversations.history):
Channel: {CHANNEL_ID}
Limit: 50
Oldest: {{$now.minus(30, 'minutes').toUnixTimestamp()}}
-> (Repeat for each monitored channel, run in parallel)
-> Merge Node (combine all results)
-> Function Node (keyword match):
For each message:
Check message.text against keyword lists:
pain_keywords: ["struggling with", "anyone know how to", "frustrated", "looking for a tool"]
buying_keywords: ["recommend", "alternative to", "best tool for", "anyone use"]
competitor_keywords: ["{competitor1}", "{competitor2}", "switching from"]
If match found, include: {channel, message_ts, text, user, matched_keywords, keyword_group}
-> IF Node (filter):
- message.user != your_user_id (skip your own messages)
- message has text (skip file-only or join messages)
-> Switch Node (classify priority):
- buying_keywords match -> "high"
- pain_keywords match -> "medium"
- competitor_keywords match -> "low"
-> Slack Node (alert to internal channel):
Channel: #community-engagement-queue
Message:
[{priority}] {keyword_group} in #{channel_name}
> {message_text_preview}
Keywords: {matched_keywords}
Link: {slack_message_permalink}
Respond within: {2h for high / 6h for medium / 24h for low}
Discord Polling Workflow
Same structure, but use HTTP Request nodes to call Discord API:
Schedule Trigger (every 30 minutes)
-> HTTP Request Node:
GET https://discord.com/api/v10/channels/{CHANNEL_ID}/messages?limit=50&after={LAST_MESSAGE_ID}
Headers: Authorization: Bot {DISCORD_BOT_TOKEN}
-> (Repeat for each monitored channel)
-> Merge + Keyword Match + Filter + Classify + Alert (same as Slack flow)
Store LAST_MESSAGE_ID in n8n static data to avoid processing duplicates.
Method 2: Common Room (Paid, multi-platform)
Common Room aggregates activity across Slack, Discord, GitHub, Twitter, and forums into a single feed.
- Connect sources: In Common Room settings, add your Slack workspaces and Discord servers.
- Create keyword alerts:
- Navigate to Signals > Keyword Alerts
- Add keyword groups: pain points, buying intent, competitor mentions
- Set notification destination: Slack webhook or email
- Configure member enrichment: Common Room auto-enriches community members with LinkedIn, GitHub, and company data. This helps prioritize responses to ICP-matching members.
Pricing: Common Room offers a free tier for small communities. Paid plans start at $500/mo for larger deployments (https://www.commonroom.io/pricing).
Method 3: Syften (Paid, real-time alerts)
Syften monitors Slack, Discord, Reddit, Hacker News, and forums for keyword mentions.
- Create a Syften account at https://syften.com
- Add keyword filters for each keyword group
- Select platforms: Slack, Discord
- Add specific workspace/server names
- Configure webhook delivery to n8n or email
Pricing: Plans start at $19/mo for basic monitoring (https://syften.com/pricing).
Keyword List Design
Pain-point keywords
Phrases people use when describing a problem you solve:
- "how do I [problem verb]"
- "anyone else struggling with [problem]"
- "is there a way to [desired outcome]"
- "tired of [manual process]"
- "can't figure out [task]"
Buying-intent keywords
Signals that someone is actively evaluating tools:
- "looking for a [category] tool"
- "recommend a [category]"
- "best [category] for [use case]"
- "alternative to [competitor]"
- "anyone use [competitor]"
- "switching from [competitor]"
- "what do you use for [workflow]"
Competitor keywords
Direct mentions of competitors:
- Competitor product names
- "[competitor] vs"
- "[competitor] pricing"
- "[competitor] review"
Output
- Alerting pipeline that fires within 30 minutes of a keyword match
- Alerts classified by priority (high/medium/low) and keyword group
- Each alert includes: message text, community, channel, author, link, and recommended response time
Error Handling
- Token expiry: Slack user tokens can expire. Set up a weekly token validation check.
- Channel access lost: If you are removed from a channel or workspace, the poll will return errors. Log and alert on non-200 responses.
- Keyword false positives: Review alert quality weekly. Add negative keywords to reduce noise (e.g., exclude messages containing "hiring" or "job" if those trigger false matches).
- Duplicate alerts: Use message timestamps or IDs as deduplication keys. Store the last processed ID per channel.