DEV Community

Cover image for How to integrate WhatShipped into your project
WhatShipped
WhatShipped

Posted on

How to integrate WhatShipped into your project

You shipped something. Your users have no idea what changed.

WhatShipped turns your git history into a readable changelog — but the real question is: how do you actually get that changelog into your product?

Here's every way you can do it today, and what's coming.


The simplest path: Markdown export

Every changelog you generate on WhatShipped can be exported as a .md file.

Drop it in your repo, your docs folder, your Notion workspace — wherever your users look for updates.

/your-project
  ├── CHANGELOG.md   ← just paste it here
  ├── src/
  └── ...
Enter fullscreen mode Exit fullscreen mode

Zero friction. Works with any stack, any deployment, any workflow. If you just want something out the door, this is your path.


One step up: the WhatShipped API

Generate your changelog programmatically. Hit the API, get structured output, render it however you want.

Your design system, your components, your branding. WhatShipped handles the content — you own the presentation.

A minimal example:

const res = await fetch('https://whatshipped.dev/api/v1/release-notes/generate', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
     "provider": "github",
     "repoFullName": "owner/repo-name",
     "fromRef": "v1.0.0",
     "toRef": "v1.1.0",
     "versionTag": "v1.1.0",
     "productName": "My App",
     "tone": "professional"
  }),
});

const { changelog } = await res.json();
Enter fullscreen mode Exit fullscreen mode

You get back structured content you can render anywhere — a /changelog route, a modal, a sidebar widget. Whatever fits your product.


A pattern I like for Next.js projects

Here's a concrete integration that works well:

  1. Call the WhatShipped API at build time
  2. Store the response as a static JSON file
  3. Render a /changelog route from it
// scripts/fetch-changelog.js
import fs from 'fs';

const res = await fetch('https://whatshipped.dev/api/v1/release-notes/generate', { ... });
const data = await res.json();

fs.writeFileSync('./public/changelog.json', JSON.stringify(data));
Enter fullscreen mode Exit fullscreen mode
// app/changelog/page.jsx
import changelog from '@/public/changelog.json';

export default function ChangelogPage() {
  return (
    <main>
      {changelog.entries.map(entry => (
        <article key={entry.version}>
          <h2>{entry.version}</h2>
          <p>{entry.date}</p>
          <ul>
            {entry.changes.map((change, i) => (
              <li key={i}>{change}</li>
            ))}
          </ul>
        </article>
      ))}
    </main>
  );
}
Enter fullscreen mode Exit fullscreen mode

Your changelog is always in sync with your latest release. No manual work, no copy-pasting.


Coming next: webhooks

The goal is full automation — push to main, changelog gets generated and delivered wherever you need it.

The planned webhook flow looks like this:

git push → WhatShipped webhook → your endpoint
                                      ↓
                          update your changelog page
                          post to Slack
                          update your docs site
                          ...
Enter fullscreen mode Exit fullscreen mode

No human in the loop. The changelog becomes a side effect of shipping, not a task on your to-do list.

If this would unblock your workflow, let me know — real demand shapes the roadmap.


Try it

👉 whatshipped.dev — 1 free generation on signup, no credit card required.

Connect your GitHub repo, point it at a date range or set of commits, and you'll have a changelog in under a minute.

What integration would unblock you the most? Drop a comment — I read everything and it directly influences what I build next.

Top comments (0)