Feedjoltdocs
Integrations

GitHub changelog drafts

Connect a GitHub repository so Feedjolt can AI-draft one changelog entry from recent commits and merged pull requests. You edit and publish. Nothing auto-publishes.

Connect a GitHub repo so Feedjolt can turn last week's merges into one customer-facing changelog draft. You still edit. You still publish.

GitHub changelog drafts are on Startup and Scale (not Growth) - the same gate as Slack.

This is not GitHub Issues sync. Issues stay on the public roadmap.

What it does

  • Connect one repository per workspace via GitHub OAuth.
  • Draft from a window - since the last published changelog, or a date range you pick (max 90 days).
  • One draft entry - a proposed title and customer-friendly bullets. Not a dump of commit subjects.
  • Optional board links - if a pull request or commit title clearly matches a feedback post, Feedjolt links it. It does not create one post per commit.
  • You publish - emails and webhooks fire only when you publish, same as any other changelog entry.
  • Staff source list - the editor shows which commits and pull requests shaped the draft. Customers never see that list.

Feedjolt does not auto-publish.

Install

  1. Open Dashboard -> Integrations (/en/dashboard/integrations).
  2. On the GitHub card, click Connect GitHub. Growth workspaces see a lock and an upgrade prompt instead.
  3. Approve the GitHub OAuth prompt. GitHub asks for repo access so Feedjolt can read private repositories. Feedjolt only reads commits and pull requests.
  4. Pick the repository that ships the product your customers use.
  5. Click Save repository.

The page after OAuth is Dashboard -> Integrations -> GitHub.

Create the GitHub OAuth App (local or self-hosted)

Hosted Feedjolt already has an app. You only create one if you run Feedjolt yourself.

Use a classic OAuth App, not a GitHub App. Feedjolt talks to https://github.com/login/oauth/authorize.

  1. Sign in to GitHub. Open Developer settings → OAuth Apps (or your org's Settings → Developer settings → OAuth Apps).
  2. Click New OAuth App.
  3. Fill in:
    • Application name — e.g. Feedjolt local.
    • Homepage URL — your frontend origin. Local default: http://localhost:3000. Production: your FRONTEND_URL / NEXT_PUBLIC_APP_URL.
    • Authorization callback URL{that origin}/auth/github/callback. Local: http://localhost:3000/auth/github/callback. Production Feedjolt: https://www.feedjolt.com/auth/github/callback. Must match the browser origin exactly (localhost, not 127.0.0.1; www.feedjolt.com, not the apex or api.feedjolt.com).
  4. Register the application. Copy Client ID.
  5. Click Generate a new client secret. Copy the secret once. GitHub will not show it again.

Put the values in env (same Client ID in both files; secret only on the backend):

# backend/.env
GITHUB_CLIENT_ID="Iv1...."
GITHUB_CLIENT_SECRET="...."

# frontend/.env.local  (baked in at next build / next dev start)
NEXT_PUBLIC_GITHUB_CLIENT_ID="Iv1...."

Restart the backend. Restart or rebuild the frontend after changing NEXT_PUBLIC_*. Then connect from Dashboard → Integrations → GitHub.

The app asks users for the repo scope so Feedjolt can read private repositories. Feedjolt only reads commits and pull requests. It never writes to the repo. Device Flow is not required.

Rotate the secret by generating a new one in the same GitHub OAuth App and updating GITHUB_CLIENT_SECRET. Existing workspace tokens keep working until they expire or someone disconnects.

Draft an entry

  1. Dashboard -> Changelog -> Draft from GitHub (or New entry, then Draft from GitHub).
  2. Choose Since last published changelog or a custom date range.
  3. Stay on the page. Drafting can take a minute or two. Feedjolt opens the Draft when it is ready. It does not publish.
  4. Edit the title and body. Flip Preview to check the Markdown. Check the linked posts. Review the staff-only GitHub source list.
  5. Click Publish when the copy is ready.

If there is no published changelog yet, pick a custom range. An empty window (no merged pull requests or commits) creates nothing.

Changing the repository

You do not have to disconnect to switch repos.

  1. Dashboard -> Integrations -> GitHub.
  2. Pick another repository.
  3. Click Save repository.

The next Draft from GitHub reads the new repo. Older drafts keep their source list.

Disconnect and connect again if you need a different GitHub account, or if the token expired. Disconnect stops new drafts. Existing changelog entries stay.

When Feedjolt reads git

Never on a schedule. There is no webhook, no nightly job, and no auto-draft when you merge.

Feedjolt reads commits and merged pull requests only when an admin clicks Draft from GitHub. Typical cadence: after a release, or once a week.

  • Since last published changelog - everything merged after that publish time.
  • Custom date range - the dates you pick (max 90 days).

If nothing merged in that window, no draft is created.

Permissions GitHub requests

ScopeWhy
repoRead commits and pull requests, including private repos. GitHub's classic OAuth App does not offer a read-only repo scope. Feedjolt never writes to your repository.

Disconnect anytime at Dashboard -> Integrations -> GitHub -> Disconnect. Existing changelog drafts stay. The source list on those drafts stays.

What customers see

The public changelog, RSS, emails, and webhooks stay on the existing publish path. GitHub hashes, PR numbers, and the staff source list do not appear on the portal.

Limitations

  • One repo per workspace for drafts.
  • GitHub only. Other version control is out of scope.
  • No auto-publish. A human has to click Publish.
  • Not Issues sync. Linking Feedjolt posts to GitHub Issues is a separate, unshipped tracker.

See changelog for writing, scheduling, and RSS.

On this page