Guides

Author release notes

Add changelog and release-note fragments without creating merge conflicts.

Use fragments instead of editing shared changelog files directly.

Internal changelog fragments

Every normal PR should add one internal changelog fragment under changelog/entries/.

---
type: fixed
scope: campaigns
summary: Prevent duplicate recipients in scheduled campaign newsletters.
pr: 1234
date: 2026-10-28
---

Keep the summary to one short sentence. Use type values added, fixed, changed, removed, or internal.

Customer-facing release-note fragments

When customers would care about the change, add a release-note fragment under packages/docs/content/docs/release-notes/entries/.

---
title: Scheduled campaign release notes
category: feature
summary: Release-note fragments can now draft newsletter content automatically.
newsletterBody: Teams can review generated release notes in a scheduled campaign draft before sending them.
slackBody: Release notes now draft newsletter content automatically.
date: 2026-10-28
---

Use category: feature for new or improved capabilities and category: bugfix for notable fixes. The release-note fragment can also satisfy the internal changelog requirement for customer-facing work.

Validate fragments

Run:

yarn changelog:fragments

Do not edit Changelog.md or packages/docs/content/docs/changelog.mdx directly for new entries. Generated changelog outputs are produced from fragments.

When a PR is merged to main, automation generates Changelog.md and the public changelog from the current fragments, deletes the consumed fragment files, and commits those generated outputs back to main.

Configure automation

Main-merge automation needs these GitHub secrets:

  • SLACK_RELEASE_NOTES_WEBHOOK_URL posts feature and bugfix release-note announcements.
  • RELEASE_NOTES_NEWSLETTER_DRAFT_URL points to the protected newsletter draft endpoint.
  • RELEASE_NOTES_AUTOMATION_TOKEN authenticates that endpoint.

The Next.js app also needs:

  • RELEASE_NOTES_AUTOMATION_TOKEN
  • RELEASE_NOTES_NEWSLETTER_ORGANIZATION_ID
  • RELEASE_NOTES_NEWSLETTER_CAMPAIGN_ID

The campaign should be an existing Scheduled Campaign newsletter draft with the desired audience, sender, suppression, and tracking settings. Automation updates the first email step only; it never sends the newsletter.

On this page