A changelog tool for dev tool and API companies.
The changelog that lives inside your product.
Every published entry lands on a public JSON feed you render in your own UI, or in a two-line widget if you would rather not build one. Drafted from your merged pull requests, held for review.
Free for one repository. No card required.
{
"data": [
{
"id": "66b0c1f2e4a9d1c3b5a70011",
"title": "Saved views on the inbox",
"mdContent": "You can now pin a filter and reuse it.",
"repoFullName": "acme/web",
"category": "feature",
"tags": ["Inbox"],
"learnMoreUrl": "https://acme.example/docs/saved-views",
"publishedAt": "2026-08-06T09:12:44.000Z"
}
],
"nextCursor": null,
"tagColors": { "Inbox": "#4f46e5" }
}
The same response every plan gets. No key, no SDK, no sign-in.
- Public JSON feed on every plan
- Widget embed is two lines
- Drafts wait for review by default
- Free for one repository, no card
Your changelog, rendered by your own code
The feed is a plain public endpoint with CORS open to any origin, so you can read it from a page, a build step or curl. Ten lines of React and your changelog is part of your product instead of a link away from it.
- Filter by repository, page with a cursor, up to 50 entries a call
- Strong ETag and a 60 second Cache-Control, so an unchanged feed answers 304
- A roadmap feed too, in three fixed columns: planned, building, shipped
const ID = 'YOUR_ID';
const API = 'https://api.changeloop.dev';
export function Changelog() {
const [entries, setEntries] = useState([]);
useEffect(() => {
fetch(`${API}/v1/public/${ID}/changelog.json`)
.then((r) => r.json())
.then((feed) => setEntries(feed.data));
}, []);
return entries.map((e) => <Entry key={e.id} {...e} />);
}
Or embed it in two lines
A custom element that renders into a shadow root, so it neither inherits your styles nor leaks into them. It carries three tabs: your updates, your roadmap, and a box your users can write in.
- Two attributes, your feed id and the API origin
- Pin a version and its bytes never change, or take the newest build automatically
- No npm package, no build step, no key to rotate
<script src="https://api.changeloop.dev/widget.js"
defer></script>
<changelogapp-widget
data-public-id="YOUR_ID"
data-api="https://api.changeloop.dev"
></changelogapp-widget>
Drafted on merge, held for a human
A pull request merges into your default branch. Changeloop reads its title and description and writes an entry for the people who use your product. Your source code is never part of that.
- Dependency bumps, CI work and refactors are filtered out before anything is drafted
- Drafts sit in the review inbox, where you edit the wording, approve, or discard
- Auto-publish is there per repository, off until you switch it on
A request arrives as an issue and leaves as an entry
The widget's feedback box opens a labelled issue in your own repository, so it lands in the triage you already do. Merge a pull request that says fixes #12, approve the entry, and we comment on that issue with a link to what shipped.
- Three labels on every issue: bug or feature-request, a priority, and from-widget
- The sender's email address never reaches the issue, or the model that classifies it
- They check the status themselves in the widget. We do not send them an email yet.
Dark mode, please
Filed automatically from the feedback widget.
Shipped: Saved views on the inbox
What every plan includes
Changelog JSON feed
Published entries, newest first, filterable by repository and paged with an opaque cursor.
Roadmap JSON feed
Planned, building and shipped, always in that order, driven by labels on your own issues.
Embeddable widget
A custom element in a shadow root, with updates, roadmap and feedback in three tabs.
A hosted page, as a fallback
A plain page for your feed, for before you have built your own and for the links we leave on issues.
Drafted from merged pull requests
The title and description of a merge become a customer-facing entry. Not the code.
Review inbox
Edit the wording, approve, or discard. A discarded draft can be restored later.
Internal changes filtered out
Dependency bumps, CI changes, refactors and typo fixes never reach the queue.
Feedback in your own repository
Widget submissions open labelled issues in your repo, with the sender's email address stripped out.
Flat team pricing
One price for unlimited repositories on the Team plan. No per-repository tax.
Questions an engineer asks first
Can I render the changelog in my own UI?
Yes, and that is the point. Every published entry is served from a public JSON feed with CORS open to any origin, no key and no sign-in, so ten lines of React is enough to render it in your own components. The developer docs carry every endpoint, field and status code.
What does the widget need from me?
A script tag and one element with two attributes, your feed id and the API origin. It renders into a shadow root, so your CSS and its CSS never meet. It shows updates, roadmap and a feedback box.
What does Changeloop read from my repository?
The title and description of pull requests that merge into your default branch, plus repository metadata. It never asks for your source code, and it works through short-lived GitHub App installation tokens rather than a personal access token.
Does anything publish without me?
Not unless you ask for it. Drafts wait in the review inbox until someone approves them, and auto-publish is a per-repository switch that stays off until you turn it on.
What happens to feedback my users send?
It opens a labelled issue in your own repository, tagged bug or feature-request with a priority and a from-widget label, so it lands in the triage you already do. The sender's email address is stripped before the message reaches that issue or the model that classifies it. When you approve the entry that ships it, we comment on the issue with a link to what shipped, and the sender can see the status in the widget. We do not send them an email, that part is not built yet.
What is free and what is paid?
The free plan covers one repository with 20 AI generations a month, and it includes the changelog feed, the roadmap feed, the widget and the hosted page. The Team plan is one flat price for unlimited repositories.
Put your changelog inside your product.
Create a free account, connect one repository, and point your own UI at the feed.