## Introduction
Product teams in startups and growing companies often face challenges prioritizing features and initiatives for their product roadmap. Collecting and organizing feedback from stakeholders—such as customers, sales teams, and internal staff—is essential for data-driven decision-making. However, manual collection of votes on roadmap items via spreadsheets, emails, or meetings is time-consuming and error-prone.
Automation solves this problem by streamlining the voting process: collecting inputs, tallying votes, notifying relevant parties, and updating live documentation with minimal manual intervention. This article provides a step-by-step tutorial on building an automated roadmap voting system using n8n, an open-source workflow automation tool.
The workflow integrates popular tools such as Typeform (for voting forms), Google Sheets (to track votes), Slack (for notifications), and Airtable or Notion (for updating the roadmap documentation). Product managers, operations specialists, and automation engineers will benefit from this detailed guide.
—
## Automation Use Case
– **Problem Addressed:** Manual voting on roadmap items is inefficient and prone to lost data.
– **Who Benefits:** Product teams, Customer Success/Product Support teams, and executive leadership.
– **Automated Workflow Goal:** From vote submission to scoreboard update, plus stakeholder notification.
—
## Tools Integrated
– **n8n:** Workflow automation platform.
– **Typeform:** To create the voting form for stakeholders.
– **Google Sheets:** To accumulate and tabulate votes.
– **Slack:** To notify product teams when voting targets are met or deadlines approach.
– **Airtable/Notion (optional):** To maintain an up-to-date, shareable roadmap view.
—
## Step-by-Step Tutorial
### 1. Setting Up the Voting Form in Typeform
– Create a Typeform with a list of roadmap items as multiple-choice or ranking questions.
– Include fields for voter identification (email or name) to prevent duplicate votes.
– Once the form is ready, note the Typeform API credentials for connecting to n8n.
### 2. Creating the Google Sheet for Vote Tracking
– Create a Google Sheet with columns for:
  – Voter Email
  – Timestamp
  – Selected Feature(s)
  – Voting Weight (if applicable)
– Set proper sharing and API access credentials.
### 3. Building the n8n Workflow
Open your n8n instance and create a new workflow.
#### Node 1: Typeform Trigger
– Use the “Typeform Trigger” node in n8n.
– Configure it with your Typeform API key and select the form.
– This node will trigger whenever a new form submission happens.
#### Node 2: Extract Submission Data
– Use the “Set” or “Function” node to parse and map the submission data:
  – Extract voter email
  – Extract selected roadmap item(s)
  – Extract timestamp
#### Node 3: Google Sheets Append Row
– Use the “Google Sheets” node configured for the ‘Append’ operation.
– Append the extracted data as a new row in your vote tracking sheet.
– Ensure that OAuth credentials for Google API access are set.
#### Node 4: Vote Counting Logic
– Use a “Google Sheets” or “Airtable” node to read all votes aggregated.
– Alternatively, in a “Function” node, pull all existing votes from Google Sheets and count votes per feature.
– Calculate totals and identify if any roadmap item has reached a threshold (e.g., 20 votes).
#### Node 5: Slack Notification
– Use a “Slack” node to send a message to your product team or specific channel.
– Conditions:
  – Send notifications when a feature crosses voting thresholds.
  – Send reminders as voting deadline approaches.
#### Node 6 (Optional): Update Roadmap in Airtable or Notion
– If you maintain your roadmap in Airtable or Notion, use their respective n8n nodes.
– Update or create records to reflect current vote counts and priority status.
—
## Detailed Breakdown of Each Node
### Typeform Trigger Node
– Connect using your Typeform API key.
– Select the specific form.
– This node automatically receives form submissions in real-time.
### Data Extraction Node (Function)
– Use JavaScript within the Function node to parse JSON form response:
“`javascript
return items.map(item => {
  const data = item.json;
  return {
    json: {
      voterEmail: data.hidden ? data.hidden.email : “unknown”,
      selectedFeatures: data.answers.filter(ans => ans.type === “choice”).map(ans => ans.choice.label),
      timestamp: data.submitted_at
    }
  };
});
“`
– Adjust based on your exact Typeform question structure.
### Google Sheets Append Node
– Select the spreadsheet and worksheet.
– Map data fields correctly.
– For vote weights or tie-breaking criteria, add additional columns.
### Vote Counting Node
– Use Google Sheets node with “Read Rows” operation to fetch all votes.
– Use a Function node to count votes per feature:
“`javascript
const votes = {};
items.forEach(({json}) => {
  json.selectedFeatures.forEach(feature => {
    votes[feature] = (votes[feature] || 0) + 1;
  });
});
return [{ json: { votes } }];
“`
### Slack Notification Node
– Set the channel or user ID.
– Craft message templates, e.g.,
  “🚀 Feature *{{feature}}* has received {{count}} votes! Consider prioritizing.”
– Use the expression editor to create dynamic messages.
### Airtable/Notion Update Nodes (Optional)
– Map the aggregated vote counts to the corresponding records.
– Useful for real-time public roadmap updates.
—
## Common Pitfalls and Tips for Robustness
– **Duplicate Voting:** Use voter email and timestamp checks to identify and prevent duplicate votes.
– **API Limits:** Google Sheets and Slack have API limits; use caching or batch updates if expecting heavy load.
– **Error Handling:** Add error trigger nodes or the n8n error workflow feature to handle failed API calls.
– **Security:** Hide sensitive credentials and use environment variables where possible.
– **Form Changes:** If the Typeform questions change, update the parsing logic in the Function node accordingly.
—
## Scaling the Workflow
– For larger organizations, replace Google Sheets with a database like PostgreSQL for better scalability.
– Add multi-language support in voting forms for global teams.
– Implement weighted voting (e.g., executives have more influence).
– Incorporate sentiment analysis on free-text feedback using AI tools.
– Build dashboards with Power BI or Google Data Studio consuming the Google Sheets or database data.
—
## Summary
Automating the roadmap voting process with n8n drastically reduces manual work and enables more objective product planning. This tutorial illustrated integrating Typeform, Google Sheets, and Slack through n8n to capture votes, aggregate results, notify teams, and update roadmaps efficiently.
By following these steps, product teams can:
– Collect stakeholder input reliably
– Gain immediate insights into popular features
– Respond faster with real-time notifications
**Bonus Tip:** Integrate calendar trigger nodes in n8n to automatically close voting and generate summary reports at a planned date/time, ensuring deadlines are respected without manual follow-up.
This approach empowers product managers and automation engineers to build and iterate flexible voting systems tailored to their company’s unique needs.