Sync User Feedback from Discord and Intercom to a Notion Database with n8n
The Challenge: Fragmented Product Feedback
For any product-led team, user feedback is gold. But it rarely arrives in a neat, organized package. It's scattered across multiple platforms: a feature request in a Discord community channel, a bug report in an Intercom chat, a suggestion in a support ticket.
Product managers and builders spend hours manually collecting, collating, and categorizing this feedback. Important insights get lost, valuable suggestions are overlooked, and the process is slow and prone to error. Without a single source of truth, it's nearly impossible to spot trends, prioritize features, and build a truly user-centric roadmap.
This guide solves that problem. We'll build a practical, automated workflow using n8n to capture feedback from two common sources—Discord and Intercom—and centralize it into a structured Notion database. This creates a unified product feedback inbox, saving you time and ensuring no insight falls through the cracks.
Why Automate Your Product Feedback Pipeline?
Before we build, let's look at the benefits of this automation:
- Single Source of Truth: All feedback lives in one Notion database, making it easy to search, filter, and analyze.
- Save Manual Effort: Eliminate the tedious task of copy-pasting feedback from different apps. Your team can focus on analysis and action, not data entry.
- Real-Time Insights: Feedback is captured and organized as it happens, giving you an up-to-the-minute view of user sentiment.
- Improved Prioritization: With structured data, you can easily tag, categorize, and count requests to make data-driven decisions about your product roadmap.
Prerequisites
To build this workflow, you'll need the following:
-
An active n8n instance (cloud or self-hosted).
-
Credentials for Discord, Intercom, and Notion with the necessary API permissions.
-
A Discord server where you have admin rights to add bots.
-
An Intercom workspace where you can create webhooks and tags.
-
A Notion database set up to receive the feedback. Create one with properties like
Feedback(Title),Source(Select: Discord/Intercom),User(Text),Status(Select: New/Under Review),Reported On(Date), andURL to Source(URL).
Example n8n Workflow: Building the Feedback Engine
Our workflow will have two starting points (triggers) that merge into a common path to add data to Notion. This ensures we handle feedback from both Discord and Intercom without duplicating logic.
Workflow Overview:
-
Trigger A (Discord): A new message is posted in a designated
#feedbackchannel. -
Trigger B (Intercom): A conversation in Intercom is tagged with
feedback. -
Data Normalization: A
Setnode standardizes the data from both sources into a consistent format. -
Action (Notion): A
Notionnode creates a new page in your feedback database with the normalized data.
Step 1: Capture Feedback from a Discord Channel
First, we'll set up the trigger for community feedback.
-
Add the Discord Trigger Node: In your n8n canvas, add a
Discordnode. Select it as a trigger. -
Configure Credentials: Connect your Discord account.
-
Set Trigger Event: Choose
On Messageas the event. -
Specify Channel: In the
Channel IDfield, enter the ID of your feedback channel (e.g.,#product-feedback). This tells the workflow to only listen for messages in that specific channel.
When a new message is posted, this node will trigger and pass the message content, author, and a link to the message to the next step.
Step 2: Capture Feedback from Intercom Tags
Next, we'll create a trigger for feedback captured by your support or success team in Intercom.
-
Add the Intercom Trigger Node: Add an
Intercom Triggernode to your canvas. It will run in parallel with the Discord trigger. -
Configure Credentials: Connect your Intercom account.
-
Set Trigger Event: In the
Subscribe to Eventslist, selectconversation.tag.created. -
Filter by Tag: We only want to fire the workflow for a specific tag. Add an
Ifnode immediately after the Intercom trigger. Configure it to check if the tag name from the Intercom datacontainsthe wordfeedback. This ensures only relevant conversations proceed.
Now, whenever a team member adds the 'feedback' tag to a conversation, this branch of the workflow will activate.
Step 3: Normalize Data from Both Sources
This is the most critical step. Discord and Intercom provide data in different structures. We need to map them to a common format before sending them to Notion.
-
Connect Both Triggers to a
SetNode: Drag the outputs from both theDiscord Triggerand theIfnode (after the Intercom Trigger) to a single newSetnode. n8n will automatically merge these paths. -
Configure the
SetNode: Our goal is to create a clean set of variables for Notion. Add the following values, using expressions to pull data from the incoming nodes:
-
Name:
source -
Value (Expression):
{{ $trigger.source === 'intercom' ? 'Intercom' : 'Discord' }}(This checks which trigger ran and sets the source accordingly). -
Name:
feedback_text -
Value (Expression):
{{ $trigger.source === 'intercom' ? $json.body.data.item.conversation_parts.conversation_parts[0].body : $json.content }}(This pulls the conversation text from Intercom or the message content from Discord). -
Name:
user_id -
Value (Expression):
{{ $trigger.source === 'intercom' ? $json.body.data.item.user.email : $json.author.username }}(Gets the user's email from Intercom or username from Discord). -
Name:
source_url -
Value (Expression):
{{ $trigger.source === 'intercom' ? 'https://app.intercom.com/a/apps/YOUR_APP_ID/inbox/inbox/all/conversations/' + $json.body.data.item.id : 'https://discord.com/channels/' + $json.guildId + '/' + $json.channelId + '/' + $json.id }}(Constructs a direct link back to the source conversation or message. ReplaceYOUR_APP_IDwith your Intercom app ID).
This step ensures that no matter where the feedback came from, it's perfectly formatted for our Notion database.
Step 4: Add the Feedback to Your Notion Database
Finally, we'll send our clean data to Notion.
-
Add the Notion Node: Connect the
Setnode to aNotionnode. -
Configure Credentials: Connect your Notion account and give it access to your feedback database.
-
Set Resource and Operation: Choose
Database/Pageas the resource andCreateas the operation. -
Select Database: Choose your Product Feedback database from the dropdown.
-
Map Properties: Now, map the data from the
Setnode to your Notion properties. Click 'Add Property' and map them as follows:
-
Feedback(Title):{{ $('Set').item.json.feedback_text }} -
Source(Select):{{ $('Set').item.json.source }} -
User(Text):{{ $('Set').item.json.user_id }} -
URL to Source(URL):{{ $('Set').item.json.source_url }} -
Status(Select): Set a default value, likeNew.
Activate your workflow, and you're done! Now, any new message in your Discord feedback channel or any Intercom conversation tagged as 'feedback' will automatically appear as a new, cleanly formatted entry in your Notion database.
Taking It Further: Advanced Automation
Once you have the basic pipeline, you can enhance it further:
- AI Summarization: Add an
OpenAInode after theSetnode to summarize long conversations or feedback threads before sending them to Notion. - Sentiment Analysis: Use an AI node to analyze the feedback text and automatically tag the Notion entry as
Positive,Negative, orNeutral. - Smart Routing: Add a
Routernode to check for keywords likebugorurgentand send a notification to a Slack channel or create a Jira ticket in addition to logging it in Notion.
By automating your feedback collection, you create a powerful, scalable system that ensures the voice of the customer is always at the center of your product development process.
Enjoyed this article?
Share it with others who might find it useful