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:fragmentsDo 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_URLposts feature and bugfix release-note announcements.RELEASE_NOTES_NEWSLETTER_DRAFT_URLpoints to the protected newsletter draft endpoint.RELEASE_NOTES_AUTOMATION_TOKENauthenticates that endpoint.
The Next.js app also needs:
RELEASE_NOTES_AUTOMATION_TOKENRELEASE_NOTES_NEWSLETTER_ORGANIZATION_IDRELEASE_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.
Publish content to Sanity from a workflow
Generate a Sanity document in a workflow, validate it against a schema, and publish it safely.
Fill your content calendar with the Content Agent
Save reusable content agents, assign them to ideas, library content, or calendar days, or run them from a workflow on a schedule.