# Publish a changelog page from a Google Sheet

A changelog is a log: one row per release, each with a version, a date, a type, and a note. PasteSheet turns that Google Sheet into a live JSON API, so your release-notes page sorts newest-first and filters by version or type — and shipping an entry is a new row, not a deploy.

*Last updated: 2026-07-11 · Source: <https://pastesheet.com/use-cases/google-sheets-changelog>*

## Key facts

- A Google Sheet is capped at **10 million cells** (or 18,278 columns), which is the real ceiling on using one as a database. ([source](https://support.google.com/drive/answer/37603))
- The history is capped by plan: **500 entries on Free**, **5,000 on Starter ($9/mo)**, uncapped on **Pro ($19/mo)** — years of releases either way.
- Free serves a fixed **5-minute cache**; paid plans set a custom TTL from **30 seconds to 1 hour**, so a new entry lands on the page as fast as you want it to.
- Webhooks that ping Slack or rebuild your site when a release row is added are a **Pro ($19/mo)** feature.

## Ship a changelog entry without a deploy

A public changelog is one of the highest-leverage pages you can run — and one of the most annoying to maintain if every entry means a pull request and a deploy. Keep the entries in a Google Sheet instead: one row per release, columns for version, date, type, and the note itself.

PasteSheet serves the sheet as typed JSON, so your release-notes page fetches the rows, sorts them newest-first, and renders them. Adding an entry is adding a row — anyone on the team can announce a fix without touching the codebase.

## How the page reads the sheet

A few columns and the queries that build the page:

- `?sort=-date` — show the newest releases first.
- `?type=feature` — filter to features, fixes, or breaking changes.
- `?version=2.4.0` — deep-link to a single release.
- `?per_page=20` — page through a long history instead of loading it all.

## Fetch the release notes as JSON

Point your changelog page at the endpoint and read the releases, newest first:

```bash
curl "https://pastesheet.com/your-endpoint/Releases?type=feature&sort=-date"

{
  "data": [
    {
      "version": "2.4.0",
      "date": "2026-07-09",
      "type": "feature",
      "title": "Aggregation endpoints",
      "body": "group_by, count, sum, and avg are live on Pro."
    }
  ]
}
```

## Safe to publish, nothing to wire up

Because the endpoint is **read-only by design**, it is safe to expose publicly or hand to a teammate: consumers can read and query the data but can never change the sheet. And there is **no Google Cloud project, OAuth screen, or service account** to set up — you paste a share URL and get a live API.

## What it costs

**Free — $0/month.** For side projects and trying things out.

- Endpoints: 3
- Requests: 2,000 / month
- Rows per endpoint: 500
- Tabs per endpoint: 1
- Rate limit: 60 / minute

**Start free.** A single endpoint and a 5-minute cache run a full changelog page. Paid plans add a custom cache TTL so a new entry appears fast, plus webhooks to notify your site or Slack the moment a release row lands.

## Frequently asked questions

### How do I add a changelog entry?

Add a row to the sheet. The API picks it up after the cache TTL — 5 minutes on Free, tunable on paid plans, or immediately after a manual refresh. No pull request, no deploy.

### Can I sort newest-first and filter by type?

Yes. Use ?sort=-date to order newest-first and ?type=feature (or fix, breaking) to filter. Both are plain URL parameters, so the page can offer tabs and ordering without extra data.

### Can I notify people when a release ships?

On a paid plan, webhooks fire when the sheet changes, so you can trigger a rebuild, ping Slack, or refresh a cache the moment a new release row is added.

### Can visitors edit the changelog through the API?

No. PasteSheet is read-only by design. The endpoint only serves data, so it is safe to expose on a public release-notes page.

## Sources

- [Files you can store in Google Drive (size limits)](https://support.google.com/drive/answer/37603) — Google

## Related use cases

- [Build a Public Roadmap from Google Sheets](https://pastesheet.com/use-cases/google-sheets-roadmap) — Ship a public product roadmap from a Google Sheet — items grouped by status: planned, in progress, shipped. Update a cell to move a card, no deploy required.
- [Google Sheets Feature Flags & Remote Config](https://pastesheet.com/use-cases/google-sheets-feature-flags) — Ship feature flags from a Google Sheet. Toggles are served as a live, read-only JSON API your app reads on launch — no deploy, no app-store review, no backend.
- [Run a Blog with Google Sheets as the CMS](https://pastesheet.com/use-cases/google-sheets-blog-cms) — Publish a blog from a Google Sheet — posts, slugs, dates, tags, and body text. Filter to published rows and sort by date over a fast, read-only JSON API.
- [Use Google Sheets as a Free Headless CMS](https://pastesheet.com/use-cases/google-sheets-cms) — Run your website's content from a Google Sheet. PasteSheet publishes it as a live, read-only JSON API — no database, no backend, no Google Cloud setup.

---

[PasteSheet](https://pastesheet.com) turns any Google Sheet into a live REST API and MCP server for AI agents — no backend, no code. Canonical HTML version of this page: <https://pastesheet.com/use-cases/google-sheets-changelog>
