Skip to content

Why Uniform Changelogs

Vendors publish product updates in different formats: RSS feeds, Atom feeds, HTML changelog pages, and GitHub releases. Every source has its own date format, link structure, and field names.

Watch Changelog normalizes all of these into a uniform JSON schema we call ChangeEvent. Same fields for AWS, Vercel, Shopify, GitHub, React, and 5000+ other sources.

If you want to track AWS What’s New, Vercel changelogs, and Shopify API updates, you need to:

  • Parse three different feed formats (RSS, Atom, HTML)
  • Handle three different date formats
  • Extract titles, URLs, and summaries with per-vendor logic
  • Store vendor published time separately from your fetch time
  • Maintain this as vendors change their page structure

We fetch from the vendor’s official feed or page, extract the structured data, and normalize it to the ChangeEvent schema. You get:

  • title: The vendor’s update title
  • url: Link to the full update on the vendor site
  • publishedAt: The vendor’s own timestamp (not our fetch time)
  • summary: Cleaned description text
  • tags: Categorization tags (when available)
  • isImportant: Breaking changes, security, GA, deprecations, major versions

We keep publishedAt (vendor time) and lastFetchedAt (our fetch time) distinct.

When Vercel publishes a changelog entry at 9:00 AM and we fetch it at 9:30 AM, publishedAt is 9:00 AM. This matters for competitive intelligence: you see when the vendor shipped, not when we fetched.

The homepage sorts by publishedAt, so you see vendors who actually shipped recently, not vendors we happened to fetch recently.

Beyond the uniform base, we support optional typed fields when vendors publish them:

  • changeKind: feature, fix, deprecation, security, preview, ga, breaking, version, other
  • effectiveAt: When the change takes effect (preview launch, GA date)
  • sunsetAt: Hard deadline for deprecations (e.g., “stops running March 1, 2027”)

These are nullable. We do not invent values. If the vendor does not publish an effective date, the field is null.

See ChangeEvent Schema for the full shape.

  • We do not invent dates or listen counts.
  • We do not scrape marketing blogs (official changelogs only).
  • We do not backfill changeKind with a model in this pass (schema exists, values come later).
  • We do not expose feedUrl on the customer API (internal only).

Read about the ChangeEvent Schema to see the full JSON shape with real examples.