PasteSheet icon PasteSheet logo mark — a spreadsheet grid with a curly brace on a green rounded square PasteSheet

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

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
  • 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:

terminal
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

For side projects and trying things out.

$0 /mo
Endpoints
3
Requests / mo
2,000
Row cap
500
  • Fast cache for new entries
  • Notify on new releases
  • Guard your columns

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

Related use cases

Turn your sheet into an API in minutes

Paste a Google Sheet URL and get a live REST API and MCP server — no backend, no code, free to start.