Skip to content
Cloudflare Docs

Changelog

Purpose

The purpose of a changelog is to log or record notable changes, which then appear as part of the Cloudflare changelog and on product-specific changelog pages.

Tone

instructional, straightforward

content_type

pcx_content_type: changelog

For more details, refer to pcx_content_type.

Ownership

Product managers and engineers maintain changelogs manually or via an automated process that their team owns. PCX provides a review but does not own creating or writing changelogs.

Structure

When creating a changelog, you need an MDX page file and a corresponding folder of changelog entries.

The combination of these files allows us to:

Markdown file

Your Markdown file needs to have several special values to pull in the changelog information. These values are highlighted in the sample page.

For more information about the ProductChangelog component, refer to the style guide.

/src/content/docs/dns/changelog.mdx
---
pcx_content_type: changelog
title: Changelog
---
import { ProductChangelog } from "~/components";
{/* <!-- Actual content lives in /src/content/changelog/dns/. --> */}
<ProductChangelog product="dns" />

Changelog entries

Changelog entries live in a different location of our docs, /src/content/changelog/.

Each entry will be its own MDX file, similar to the following.

src/content/changelog/dns/
---
title: Account-level DNS analytics now available via GraphQL Analytics API
description: Authoritative DNS analytics can now be accessed on the account level via the GraphQL Analytics API.
date: 2025-06-19
---
Authoritative DNS analytics are now available on the **account level** via the [Cloudflare GraphQL Analytics API](/analytics/graphql-api/).
This allows users to query DNS analytics across multiple zones in their account, by using the `accounts` filter.
Here is an example to retrieve all DNS queries across all zones in an account that resulted in an `NXDOMAIN` response over a given time frame. Please replace `a30f822fcd7c401984bf85d8f2a5111c` with your actual account ID.
```graphql graphql-api-explorer title="GraphQL example for account-level DNS analytics"
query Viewer {
viewer {
accounts(filter: { accountTag: "a30f822fcd7c401984bf85d8f2a5111c" }) {
dnsAnalyticsAdaptive(
limit: 10
filter: {
date_geq: "2025-06-16"
responseCode: "NXDOMAIN"
date_leq: "2025-06-18"
}
orderBy: [datetime_DESC]
) {
zoneTag
queryName
responseCode
queryType
datetime
}
}
}
}
```
To learn more and get started, refer to the [DNS Analytics documentation](/dns/additional-options/analytics/#analytics).

Properties

Each changelog entries has the following properties:

  • title string required

    • Shown in the title heading and on social media embeds.
  • description string required

    • Shown in social media embeds.
  • date date required

    • This should be a date in YYYY-MM-DD format. For example, 2025-02-04.
  • preview_image string optional

    • Path to an image file
  • products Array<String> (default: current location) optional

    • The products list is case-sensitive. Only use lowercase.

    • This should be an array of strings, each referring to the name of a file in the products collection without the file extension.

    • The folder that your entry is in, such as src/content/changelog/workers/2025-02-13-new-product-feature.mdx, is inferred as part of this property. If you do not want to associate the entry with additional products, you can omit it from the frontmatter entirely.

    • If you wish to reference a product that does not exist in this collection, such as one that resides in the subpath of an existing product, you can create a "metadata only" entry:

      src/content/proucts/workers-observability.yaml
      name: Workers Observability
      product:
      title: Workers Observability
      url: /workers/observability/
      group: Developer platform
      show: false
  • hidden Boolean (default: false) optional

    • If true, this page will be accessible from the direct link, but hidden from the main changelog page and all RSS feeds.
    • If true, will also add a noindex property so the page is not indexed by search crawlers.