One of the most important distinctions in Watch Changelog is lastUpdatedAt vs. lastFetchedAt.
Imagine you're tracking cloud provider updates for competitive intelligence:
Without the distinction, you'd see "updated 30 minutes ago" (our fetch time) instead of "updated 1 hour ago" (their publish time). That 30-minute gap makes it look like the vendor just shipped—when really they shipped an hour ago and you're catching up.
For sales enablement, that hour matters. Your competitor might already be pitching it.
<pubDate> or <updated> from the feedpublished_at from the GitHub APIIf a vendor doesn't publish dates, lastUpdatedAt is null. We never fake it with fetch time.
On the homepage and catalog, "Recently Updated" sorts by lastUpdatedAt, not lastFetchedAt. This means you see vendors who actually shipped something recently, not vendors we happened to fetch recently.
Degraded sources (failing to fetch) are marked "Being investigated by the team" and deprioritized in the sort.
{
"slug": "vercel.changelog",
"vendor": "Vercel",
"name": "Vercel Changelog",
"lastUpdatedAt": "2026-08-20T09:00:00Z", // Vendor time
"lastFetchedAt": "2026-08-20T09:30:00Z", // Our fetch time
"health": "ok"
}
This field is exposed in:
GET /api/v1/sourceslist_sources toolBrowse sources by recently updated or request a new source.