Core Concepts
Projects, entries, subscribers, plans, and how visibility works in Launchly.
Project
A project is a single changelog. It owns its entries, subscribers, settings, and channels.
| Field | Description |
|---|---|
slug | Unique URL segment. Public page lives at /c/<slug>. |
customDomain | Verified custom domain (Pro+). Serves the same changelog over your own host. |
isPublic | Public or private changelog. Private changelogs require an access token. |
accessToken | Token used to read a private changelog (passed as ?token=). |
plan | free, pro, or team. Gates features (see below). |
settings | Widget appearance + branding + custom-domain state (JSON). |
Entry
An entry is one release in the changelog.
| Field | Description |
|---|---|
title | Release title. |
slug | Unique per project. |
version | Optional version string (e.g. v2.1.0). |
bodyMd / bodyHtml | Markdown source and the sanitized HTML rendered from it. |
category | One of feature, fix, improvement, announcement. |
status | draft, published, or scheduled. |
visibility | external (public page + email + channels) or internal (channels only). |
publishedAt | When it went live. |
scheduledFor | When a scheduled entry will auto-publish. |
Entry body HTML is sanitized server-side by Launchly (scripts, event handlers,
and javascript: URLs are stripped) before it is ever served through the widget,
SDK, or feeds.
Subscriber
Email subscribers receive new external releases. Subscriptions use double opt-in (a confirmation email) and every email carries a one-click unsubscribe link.
Plans & entitlements
| Feature | Minimum plan |
|---|---|
| Hosted page + embed widget | Free |
| AI draft generation | Free (3/mo), unlimited on Pro |
| Custom domain | Pro |
| Email subscribers | Pro |
| Distribution channels (Slack/Discord/X/LinkedIn/webhook) | Pro |
| Internal entries | Pro |
| REST API | Pro |
| Private changelog | Team |
| Multi-language | Team |
| Team members & SSO | Team |
Free projects show a "Powered by Launchly" badge; paid plans can remove it.