How drafts are generated
ChangelogPilot turns engineering activity into a changelog your users can actually read. This page explains what happens between "PR merged" and "draft ready".
From pull request to plain English
When a pull request merges into your watched branch, GitHub sends ChangelogPilot a webhook. We read the PR — its title, description, and commits — and write a short entry in plain English, describing the change the way you would explain it to a customer.
Each change is classified as a breaking change, new feature, improvement, or fix, and the entry is organised under those headings. Changes that are internal only — build tweaks, refactors, CI work — are recognised and left out, because your users don't need to hear about them.
If you have chosen a writing voice for the repo, it is applied here, so every entry sounds consistent.
What gets skipped
- Bot PRs. Pull requests authored by bots (Dependabot and friends) are ignored by default. You can change this in the repo's publishing settings.
- Label filters. You can limit drafting to PRs carrying certain labels, or skip PRs carrying certain labels. If a PR matches both, skip wins.
Triggers
Merged pull requests are the default trigger, but a repo can draft from any of these, configured in its publishing settings:
- Merged pull requests — one entry per merged PR (the default), or accumulated into a daily digest (below).
- Pushed tags — one entry covering all the PRs between two tags. Useful if you cut releases by tagging.
- Published GitHub Releases — one entry per release.
- Manual only — nothing drafts automatically; you generate entries on demand.
Daily digests
If you merge many small PRs a day, one entry per PR is noise. With a daily digest, the day's merged PRs accumulate into a single entry that grows as PRs land, and the entry is finalised once its day is over.
One thing to know if you also email your readers: publishing a still-open digest yourself means send now. Each entry only ever sends one reader email, so manually publishing a digest before its day closes emails your subscribers immediately, with the day's changes so far — and it will not be emailed again when the day is finalised. If you want the full day in the email, let the digest close on its own.
Auto-publish
By default every entry waits for a human — the draft, review, publish flow. If you would rather ship without the review step, turn on auto-publish and entries go straight to your public page as they are drafted.
One safety net stays on: if a PR's content looks like it is trying to smuggle instructions or markup into your changelog, the entry is held as a draft for human review instead of being published automatically. The entry shows the hold and its reason, and publishing it yourself resolves the hold.
Drafting on demand
Whatever your trigger settings, there are two more ways to create entries:
- Generate now. The dashboard's generate button drafts an entry from your recently merged pull requests — handy on a manual-only repo, or to pick up anything that was missed.
- Write your own. "New entry" gives you a blank markdown editor and a date of your choosing, for announcements that don't map to a pull request. These publish word-for-word as you wrote them; nothing is generated.
And to launch with history rather than an empty page, see starting with history.