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.
The Problem
Section titled “The Problem”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
Our Solution
Section titled “Our Solution”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
Vendor Time vs. Fetch Time
Section titled “Vendor Time vs. Fetch Time”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.
Typed Event Fields (Optional)
Section titled “Typed Event Fields (Optional)”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.
What We Do Not Do
Section titled “What We Do Not Do”- 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.