How to Automate Creating GitHub Issues from Product Forms with n8n

admin1234 Avatar

## Introduction

In product teams, collecting and managing user feedback or feature requests efficiently is crucial for agile development and rapid iteration. Often, product managers rely on forms to gather input from users, but manually transferring this data into GitHub issues can be tedious and error-prone. Automating this workflow reduces manual entry, ensures that all requests are tracked consistently in GitHub, and helps development teams respond faster.

This tutorial guides you step-by-step on how to automate creating GitHub issues directly from product feedback forms using the powerful, low-code automation tool n8n. This workflow benefits product managers, automation engineers, and operations specialists by streamlining issue creation, improving communication, and reducing administrative overhead.

## Prerequisites

– An n8n instance (cloud-hosted or self-hosted)
– Access to the product form data source (e.g., a form tool like Typeform, Google Forms with responses in Google Sheets, or any REST API endpoint)
– A GitHub account with repo access and a personal access token with “repo” scopes to create issues
– Basic knowledge of GitHub and n8n interfaces

## Overview of the Workflow

**Problem:** Manual transfer of product form feedback to GitHub issues is inefficient.

**Solution:** Automate the creation of GitHub issues when new form responses are submitted.

**Tools/Services:**
– Product form platform (example uses Google Sheets as response repository)
– n8n as the automation orchestrator
– GitHub to host issues

**Workflow Steps:**
1. Trigger on new form submission (watch new rows in Google Sheets)
2. Parse and extract form responses (e.g., user feedback, priority, product area)
3. Create a new issue in GitHub repo with extracted data
4. (Optional) Notify team via Slack or email about the new issue

## Step-by-Step Tutorial

### Step 1: Setting up the Trigger Node (Google Sheets Trigger)

– **Purpose:** Detect new form submissions.
– **Details:** If you use Google Forms, responses are saved to Google Sheets. Configure n8n’s Google Sheets “Watch Rows” node to trigger when a new row is added.

**Instructions:**
– In n8n, add the Google Sheets node.
– Set the resource to “Spreadsheet” and operation to “Watch Rows”.
– Authenticate using OAuth credentials connected to your Google account.
– Specify the spreadsheet ID and worksheet name containing form responses.
– Define the polling interval (e.g., every 1 minute) or webhook trigger if supported.

**Tip:** Use unique IDs or timestamps in your form responses to avoid duplicates.

### Step 2: Extract and Map Form Data

– **Purpose:** Prepare the data that will be used to create the GitHub issue.

**Typical Data Fields:**
– Feature Request Title
– Description / Details
– Requester Name and Email
– Priority
– Product Area

**Instructions:**
– Use the “Set” node if you want to rename or add specific fields.
– Extract data using expressions referencing the Google Sheets output, e.g., `{{$json[“Feature Request Title”]}}`.
– Optionally, add tags or labels mapping based on priority or category.

### Step 3: Create GitHub Issue Node

– **Purpose:** Automatically create a GitHub issue using the form data.

**Setup:**
– Add the GitHub node.
– Select “Issue” as the resource.
– Choose the “Create” operation.
– Authenticate with a personal access token (PAT) with repo access.
– Provide the repository owner and repo name.
– Map the title and body fields from form data, for example:
– Title: Form “Feature Request Title”
– Body: Concatenate “Description”, “Requester”, “Priority”, etc., for full context.
– Add labels dynamically depending on priority or product area.

**Example Body Template:**
“`
**Feature Request:** {{$json[“Feature Request Title”]}}

**Description:** {{$json[“Description”]}}

**Submitted by:** {{$json[“Requester Name”]}} ({{$json[“Requester Email”]}})

**Priority:** {{$json[“Priority”]}}

**Product Area:** {{$json[“Product Area”]}}
“`

### Step 4 (Optional): Notify Team via Slack

– Add a Slack node to send a message to a channel with the issue details and URL.
– This lets product and development teams immediately see new requests.

## Common Pitfalls and Tips

– **Authentication Issues:** Ensure OAuth credentials/tokens are updated and have proper permissions.
– **Rate Limits:** GitHub API limits requests; batch processing or delays might be necessary for large volumes.
– **Duplicate Issues:** Implement deduplication logic by tracking form submission IDs or request hashes.
– **Error Handling:** Use n8n’s error workflow to catch failures and alert admins.
– **Dynamic Labels:** Use switch or IF nodes to assign GitHub labels based on form input for better categorization.

## Scaling and Adaptation

– **Multiple Forms:** Add multiple triggers or enable webhook-based triggers for various input sources.
– **Additional Integrations:** Add Jira, Trello, or Asana nodes to create tasks in other tools.
– **Data Enrichment:** Integrate with CRM or Analytics tools to append user metadata.
– **Bidirectional Sync:** Update GitHub issues statuses back to product tools or dashboards.

## Summary

Automating GitHub issue creation from product feedback forms streamlines the feedback loop, saving valuable development and product management time. Using n8n’s low-code platform enables flexible, maintainable workflows that can grow with your team’s needs. This tutorial covered connecting Google Sheets as a form data source to GitHub, breaking down each step to build, test, and enhance the automation workflow.

### Bonus Tip

For more real-time processing, consider combining webhook-based triggers (from form services that support webhooks) instead of polling tables, reducing delays and improving responsiveness. Additionally, enriching issues with metadata like customer segment or app version can be added via simple API calls within the workflow.

Start automating your feedback pipeline today with n8n and turn user input directly into actionable development tasks!