How to Automate Release Notes from GitHub Commits
A step-by-step guide to generating release notes automatically from GitHub commits and pull requests using AI. Covers GitHub App setup, webhook automation, and CI/CD integration.
If you have ever spent a Friday afternoon trying to reconstruct what your team shipped this week by scrolling through Git logs and merged pull requests, you already understand the problem. GitHub commits contain all the information needed to write a changelog, but extracting that information and turning it into something a customer or stakeholder can read is tedious, repetitive work.
This article walks through the practical steps of automating release notes from GitHub commits, from connecting your repositories to generating AI-powered summaries that update every time code is merged.
Why GitHub commits are the right source of truth
Your Git history is the most complete record of what changed in your software. Every bug fix, feature addition, and refactor is captured as a commit. Pull requests group related commits into logical units of work and attach context: titles, descriptions, labels, linked issues, and reviewer comments.
The problem is not a lack of data. It is that the data is in a format designed for developers, not for the people who need to know what shipped. A commit message like "fix: handle null pointer in user service when org is deleted" is meaningful to the engineer who wrote it but useless to a product manager or customer. Automated release notes solve this translation problem by using AI to rewrite commit and PR data into clear, audience-appropriate language.
The three approaches to automation
There are three main ways to automate release notes from GitHub, and each has different tradeoffs depending on your team's workflow.
Webhook-based automation is the most hands-off approach. A GitHub App listens for pull request merge events via webhooks. When a PR is merged, the webhook fires, the automation reads the PR data, and a release note is generated immediately. This gives you real-time coverage: every merge produces a note within seconds, with zero manual intervention.
CI/CD pipeline integration runs release note generation as a step in your deployment process. You add a GitHub Action or script to your workflow that collects commits since the last release and generates notes as part of the build. This approach ties release notes to deployments rather than individual merges, which works well for teams that batch changes into versioned releases.
Tag-based generation uses Git tags as boundaries. When you tag a release (e.g., v2.3.0), the automation collects all PRs merged since the previous tag and compiles them into a single versioned changelog entry. This is the right approach for libraries, APIs, and any software that follows semantic versioning.
Most teams benefit from combining webhook-based automation for real-time internal notes with tag-based generation for customer-facing versioned changelogs.
Step 1: Connect your GitHub repositories
The first step is connecting GitHub to whatever tool handles the generation. If you are using a dedicated release notes tool, this typically means installing a GitHub App on your organization or account. The app requests read access to your repositories so it can access PR data, commit messages, and labels.
With Engammo, this takes about 60 seconds: you sign in with GitHub, select which repositories to monitor, and the GitHub App is installed. From that point forward, the tool receives webhook events for every PR merge in the selected repos.
If you prefer a CI/CD approach, you would add a GitHub Action to your workflow file. The action runs after your tests pass and generates notes from the commits included in the current push or release event.
Step 2: Configure what gets included
Not every commit or PR should appear in customer-facing release notes. Dependency bumps, CI configuration changes, and internal refactors are typically noise. Good automation tools let you filter based on PR labels, file paths, or commit message patterns.
A common configuration is to include PRs labeled feature, bug, improvement, or breaking-change, and exclude PRs labeled internal, chore, or dependencies. The automation handles the categorization: features go under "Added," bugs under "Fixed," and breaking changes get highlighted with a warning.
If your team does not use labels consistently, AI-powered tools can infer the category from the PR content itself. A PR that fixes a null pointer exception and references a bug report will be categorized as a bug fix even without an explicit label.
Step 3: Let AI handle the rewriting
The core value of AI in this workflow is translation. Raw commit data is technical. Release notes should be accessible. AI models analyze the PR title, description, commit messages, and sometimes the diff itself to understand what changed, then generate a summary written for the target audience.
For example, a PR titled "Migrate payment webhook handler to async queue with retry logic" might produce the release note: "Payment processing is now more reliable with automatic retry for failed transactions." The technical detail is preserved in the PR for engineers who want it, but the customer-facing note describes the user impact.
AI summarization also handles the compression problem. A PR that touches 30 files across 8 commits needs a 1-2 sentence summary, not a line-by-line description. The AI identifies the primary intent of the change and leads with that, mentioning secondary changes only if they are significant.
Step 4: Review and publish
Fully automated does not mean unreviewed. The best workflow generates notes automatically and lets a human scan them before publishing. In practice, this review takes 30 seconds per note: skim the generated text, confirm it accurately describes the change, and move on.
Most tools provide a dashboard where you can see all generated notes, edit individual entries, and publish them to a changelog page or notification channel. Some teams review daily, others weekly. The important thing is that the review is editing an existing draft, not writing from scratch.
For teams that want zero-touch automation, you can skip the review step and publish notes automatically. This works well for internal changelogs where occasional imperfections are acceptable. For customer-facing changelogs, a brief review pass is worth the few minutes it takes.
Step 5: Distribute the notes
Generating release notes is only useful if people see them. There are several distribution channels depending on your audience:
A public changelog page gives customers a permanent, searchable record of all changes. This is the most common distribution method for SaaS products and developer tools.
An embeddable widget lets you surface release notes directly in your application. Users see what changed without leaving the product, which improves feature discovery and reduces support tickets about already-fixed bugs.
Slack and email notifications push release notes to internal teams. Product managers, support teams, and leadership can see what shipped without checking a dashboard.
Webhook integrations let you pipe release notes into any system: Notion databases, Confluence pages, internal wikis, or custom dashboards.
What a fully automated workflow looks like
Here is the end-to-end flow once everything is configured:
- A developer opens a pull request on GitHub
- The PR is reviewed, approved, and merged
- GitHub sends a webhook event to the automation tool
- The tool reads the PR title, description, commit messages, labels, and linked issues
- AI generates a clear, categorized release note from the PR data
- The note appears in the dashboard for review (or is published automatically)
- When a Git tag is created, all notes since the last tag are compiled into a versioned changelog
- The changelog is published to the public page and pushed to Slack
The entire process adds zero work to the developer's workflow. They merge PRs exactly as they always have. The release notes are a byproduct of the existing process, not an additional task.
Common questions
What if the AI generates something inaccurate? Edit it. The generated note is a first draft. Editing a draft takes seconds; writing from scratch takes minutes. Over time, as your team writes better PR descriptions (because they know the descriptions feed into notes), the generated quality improves.
Does this work with monorepos? Yes. Good automation tools let you scope release notes by repository path, so changes to /packages/api produce separate notes from changes to /packages/web.
What about private repositories? The GitHub App only accesses repositories you explicitly authorize. Release notes are generated and stored in your account, not shared publicly unless you publish them.
Can I generate notes in multiple languages? Some tools, including Engammo, support multi-language generation. The AI generates English notes and then translates them into configured languages, so your changelog can serve an international audience.
If you want to try this with your own repositories, see how Engammo automates the process or jump into the docs to set up your first repository in under 2 minutes.