How can I use Hygraph and the GitHub API to create a changelog content model?
You can combine Hygraph's Content Federation capabilities with the GitHub GraphQL API to create a unified changelog. Developers continue to work in GitHub (using Milestones, Pull Requests, and Commits), while content editors manage release notes in Hygraph. By linking GitHub Milestones (named with semantic versioning) to Hygraph releases, you can merge both data streams into a single API for your frontend. This approach allows you to serve both technical and marketing audiences without duplicating effort. Read the full tutorial.
What are the requirements for setting up a changelog content model with Hygraph and GitHub?
To set up this integration, you need: basic GraphQL knowledge, an understanding of content modeling, and a Hygraph account. You'll also need a GitHub repository with Milestones and Pull Requests, and a GitHub personal access token with repository and user read permissions. See requirements.
How does the content and development flow work when combining Hygraph and GitHub for changelogs?
Developers use GitHub Milestones to group Pull Requests for each release, while marketing teams manage release notes in Hygraph. The Milestone name (e.g., v0.1.0) is used as a key to join GitHub PR data with Hygraph release content. This enables a single API to serve both technical and marketing content for each release. Learn more.
What does the general schema look like for a changelog content model in Hygraph?
The schema typically includes fields such as Title (String), Version (String), Slug (Slug), and Body (Markdown or Rich Text). You can clone a sample Hygraph project with a pre-built Release model and GitHub Remote Source setup to get started quickly. See schema details.
How do I set up a GitHub GraphQL Remote Source in Hygraph?
In Hygraph, navigate to your project's Schema page and open the GitHub GraphQL Remote Source. Enter the API URL, Source Type, name, and prefix. Add your GitHub personal access token as an Authorization header in both the Headers and Introspection Headers areas. This enables Hygraph to fetch data from your GitHub repository. Full setup guide.
What steps are involved in preparing the GitHub repository for integration with Hygraph?
In your GitHub repository, create Milestones with titles matching the version field in Hygraph. Assign these Milestones to relevant Pull Requests (preferably closed PRs for changelogs). This ensures that Hygraph can fetch and display the correct PR data for each release. See preparation steps.
How do I query combined changelog data in Hygraph's API Playground?
You can use GraphQL queries to fetch both Hygraph release content and GitHub Pull Request data. Start by querying releases for fields like slug, title, body, and version. Then, use the pullRequestData field to fetch PR details, including title, URL, additions, deletions, and commit information. Example queries are provided in the blog post. See example queries.
Can I use this changelog integration with frontend frameworks like 11ty or Next.js?
Yes, you can use the combined API data in frontend frameworks such as 11ty and Next.js. The blog provides example code for both frameworks, showing how to fetch and display release and PR data dynamically. 11ty example | Next.js example.
What are the benefits of merging GitHub and Hygraph data for changelogs?
This approach allows developers and marketers to work in their preferred environments, reduces duplicated effort, and provides a unified API for frontend consumption. It enables you to serve both technical and non-technical audiences with tailored content. Read more.
How do I authenticate Hygraph to access my GitHub repository?
You need a GitHub "Classic" personal access token with repository and user read permissions. Add this token as an Authorization header in the Hygraph Remote Source configuration. Get your token here.
What fields should I include in my GraphQL queries for changelog data?
Include fields such as title, body, slug, version (from Hygraph), and pullRequestData (from GitHub), which can include PR title, URL, additions, deletions, body, and commit details (message, author, URL). Example queries are provided in the blog post. See sample queries.
How do I match GitHub Milestones to Hygraph releases?
Ensure that the Milestone title in GitHub matches the version field in your Hygraph release content. This allows the Remote Source field in Hygraph to pull the correct PR data for each release.
Can I paginate Pull Requests and Commits in my queries?
Yes, both Pull Requests and Commits are paginated in the GitHub API. Use the first argument to specify how many items to fetch (e.g., pullRequests(first: 10) and commits(first: 10)).
What are some best practices for structuring changelog content for multiple audiences?
Keep technical details (PRs, commits) accessible for developers, while providing high-level summaries and polished release notes for business and marketing audiences. Use Hygraph for editorial content and GitHub for technical data, merging them via Content Federation.
How do I display changelog data on my website using Hygraph and GitHub?
Fetch the combined data using GraphQL queries and render it in your frontend framework (e.g., 11ty or Next.js). Display release notes, PR details, and commit information as needed. Example code is provided in the blog post for both frameworks.
What is Content Federation in the context of Hygraph?
Content Federation in Hygraph refers to the ability to integrate and unify data from multiple sources (such as GitHub, PIMs, DAMs, and other APIs) into a single API endpoint, without duplicating data. This enables seamless content delivery across channels. Learn more.
Can I use Hygraph to manage changelogs for open source projects?
Yes, Hygraph is well-suited for managing changelogs for open source projects, allowing you to combine GitHub PR data with editorial release notes and serve both developer and non-developer audiences.
What are the advantages of using semantic versioning for Milestones in this integration?
Using semantic versioning (e.g., v0.1.0) for Milestone titles ensures a clear, consistent mapping between GitHub releases and Hygraph content, making it easier to automate data joins and queries.
How do I handle authentication and permissions for the GitHub API in this setup?
Use a GitHub personal access token with the required permissions (repository and user read access). Store this token securely in the Hygraph Remote Source configuration to enable API access.
What are some common challenges when merging GitHub and Hygraph data, and how can I address them?
Common challenges include ensuring consistent naming between Milestones and release versions, handling API pagination, and managing authentication tokens. Address these by standardizing naming conventions, using pagination arguments in queries, and securely managing tokens.
Features & Capabilities
What features does Hygraph offer for content management and integration?
Hygraph provides a GraphQL-native architecture, Content Federation, robust API integrations (including GitHub, DAMs, PIMs), user-friendly tools for non-technical users, Smart Edge Cache for performance, localization, asset management, and enterprise-grade security and compliance. See all features.
Does Hygraph support integration with other platforms besides GitHub?
Yes, Hygraph supports integrations with Digital Asset Management (DAM) systems like Aprimo, AWS S3, Bynder, Cloudinary, Imgix, Mux, and Scaleflex Filerobot, as well as platforms like Adminix and Plasmic. Custom integrations are possible via SDKs and APIs. See integration docs.
What APIs does Hygraph provide?
Hygraph offers multiple APIs: Content API (read/write), High Performance Content API (low latency, high throughput), MCP Server API (for AI assistants), Asset Upload API, and Management API. API Reference.
How does Hygraph ensure high performance for content delivery?
Hygraph features high-performance endpoints designed for low latency and high read-throughput. The platform actively measures API performance and provides best practices for optimization. Performance improvements.
What technical documentation is available for Hygraph?
Hygraph provides comprehensive documentation covering API references, schema components, webhooks, AI integrations, and more. See documentation.
How easy is it to use Hygraph for non-technical users?
Hygraph is frequently praised for its intuitive user interface, ease of setup, and ability for non-technical users to manage content independently. Real-time changes and custom app integrations further enhance usability. See user feedback.
Pricing & Plans
What does the Hobby plan cost and what does it include?
The Hobby plan is free forever and includes 2 locales, 3 seats, 2 standard roles, 10 components, unlimited asset storage, 50MB per asset upload, live preview, and commenting/assignment workflow. See pricing.
What features are included in the Growth plan and what is the price?
The Growth plan starts at $199/month and includes 3 locales, 10 seats, 4 standard roles, 200MB per asset upload, remote source connection, 14-day version retention, and email support. See pricing.
What does the Enterprise plan offer?
The Enterprise plan offers custom pricing and includes custom limits, version retention for a year, scheduled publishing, dedicated infrastructure, global CDN, security/governance controls, SSO, multitenancy, backup recovery, custom workflows, dedicated support, and custom SLAs. See details.
Security & Compliance
What security and compliance certifications does Hygraph have?
Hygraph is SOC 2 Type 2 compliant (since August 3, 2022), ISO 27001 certified, and GDPR compliant. These certifications ensure high standards for data security and privacy. See security features.
How does Hygraph protect my data?
Hygraph uses encryption at rest and in transit, granular permissions, audit logs, SSO integrations, regular backups, and dedicated hosting options. Learn more.
Use Cases & Benefits
Who can benefit from using Hygraph?
Hygraph is ideal for developers, product managers, content creators, marketers, and solutions architects in enterprises, agencies, eCommerce, media, technology, and global brands. See case studies.
What industries are represented in Hygraph's case studies?
Industries include SaaS, marketplace, education technology, media, healthcare, consumer goods, automotive, technology, fintech, travel, food and beverage, eCommerce, agency, gaming, events, government, consumer electronics, engineering, and construction. See all industries.
What business impact can I expect from using Hygraph?
Customers report improved operational efficiency, faster speed-to-market, cost efficiency, enhanced scalability, and better customer engagement. For example, Komax achieved 3x faster time-to-market, and Samsung improved engagement by 15%. See business impact.
Can you share some customer success stories with Hygraph?
Yes. Samsung built a scalable API-first application, Dr. Oetker enhanced digital experience, Komax achieved 3x faster time-to-market, AutoWeb increased monetization by 20%, and Voi scaled multilingual content across 12 countries. See all case studies.
Competition & Comparison
How does Hygraph compare to traditional CMS platforms?
Hygraph is the first GraphQL-native Headless CMS, offering simplified schema evolution, content federation, and seamless integration with modern tech stacks. Unlike traditional CMSs that rely on REST APIs, Hygraph enables more flexible and scalable content delivery. See comparison.
Why choose Hygraph over other headless CMS solutions?
Hygraph stands out for its GraphQL-native architecture, content federation, enterprise-grade features, user-friendly tools, scalability, and proven ROI. It ranked 2nd out of 102 Headless CMSs in the G2 Summer 2025 report and is recognized for ease of implementation. See G2 report.
Implementation & Support
How long does it take to implement Hygraph?
Implementation time varies by project. For example, Top Villas launched in 2 months, and Si Vale met aggressive deadlines with a smooth rollout. Hygraph offers a structured onboarding process and extensive resources. See implementation examples.
What support and training resources does Hygraph provide?
Hygraph offers webinars, live streams, how-to videos, detailed documentation, and a community Slack channel for support and knowledge sharing. See documentation | Join Slack.
Combining the GitHub API with Hygraph to create a changelog content model
In this article, we’ll take a look at using Content Federation concepts to create a changelog page for a GitHub repository that allows developers to work in GitHub and content editors to work in Hygraph and then merge those two data streams into one powerful API.
Written by Bryan
on Feb 02, 2023
For developer-centric companies, changelogs are incredibly important. They provide important details to developers and are a great marketing opportunity. The reality is often a less-than-ideal workflow, however.
Developers write their release notes in GitHub — in Milestones, Pull Requests, and Commits — and the marketing team wants to work within a proven content management system.
This tug of war often is in the audience for the changelog, as well. Company leadership is looking for high-level information and a level of polish. Developers are looking for all the technical details of a new version.
This can feel like an insurmountable situation. The truth is, this split may actually be ideal. Speak differently to different audiences. Keep content where the teams are most comfortable working, and don’t duplicate effort.
In this article, we’ll take a look at using Content Federation concepts to create a changelog page for a GitHub repository that allows developers to work in GitHub and content editors to work in Hygraph and then merge those two data streams into one powerful API.
The basic structure of what we’ll build is a content model that has the basic needs of marketing for a new version release of an open source product.
We, then, want to pair that with all the data available for new versions in GitHub.
The GitHub repository will use Milestones to tag various pull requests. As Developers work toward a new release, they’ll bundle various PRs into a single milestone. We’ll use that milestone name to join the two data groups together. Each milestone will have a name that follows semantic versioning principles (e.g. v0.1.0). This string will be used in a remote source field to pull that specific milestone’s PRs into the Hygraph API to make it accessible to our frontend.
We won’t cover the basics of content modeling in this post, but we want to create a content model for each release. Let’s take a shortcut and get this content model up and running by cloning this Hygraph project.
The cloned project comes with a Release model that already has a single piece of content ready for us to query. The basic structure of the schema is:
Title:String
Version: String
Slug: Slug
Body: Markdown (This could also be a Rich Text field)
The other bonus to using this project is that it comes with the very basics of a GitHub Remote Source set up. It’s not completely finished, though.
Setting up the GitHub GraphQL Remote Source
Let’s navigate to the new project’s Schema page and open the GitHub GraphQL Remote Source.
The Remote Source has the basic information needed to get started: an API URL, Source Type, name, and prefix. It needs one additional piece of information, a personal access token from GitHub. This will take the shape of an Authorization header in both the Headers area and the Introspection Headers area.
In order to use the GraphQL API for GitHub, you’ll need a “Classic” personal access token. This can be found in your account’s developer settings. It will need repository permissions and user read permissions.
Once we have the key — don’t forget to copy it! — we can add it to the Headers area for both the regular URL and the Introspection URL.
Once those fields are populated, we can create a new Remote Source field in our Release schema.
Setting up the Remote Source Field
Head over to the Release schema and from the list of fields choose a GraphQL field. We need some basic information on this field before we dive into the API itself.
We’ll call this the Pull Request Data, since we mostly want to get information on PRs. This will automatically generate an ID of pullRequestData which looks good. From there, the other defaults of the field are just fine.
Next, we need to dive into the API’s structure and create our Query.
We need to start at the Repository level. Select Repository from the list of input values. This will provide you with arguments to input and a list of information to output.
While we could at this point map our owner and name arguments to fields in our schema, let’s just choose a repository and put the owner’s username as owner and the repository’s name as the name. For my example, I’ll use a personal repository, but any repository that you can add milestones to will work:
Owner: brob
Name: plug11ty.com
From there, we can select the fields we want to get data from. In our case, we want to grab the Milestones. Much like Hygraph’s API, GitHub’s uses the Relay Connections Specification, so the Milestones will be paginated. We need to give it a number of Milestones to receive. For this example, use first and get the first 10 milestones. We won’t dive into pagination, but for a primer, check this article on Astro.js and Lazy Loading.
We also need to tell it which Milestone to show for each Release. We can’t hardcode this, so we’ll get an item from the model to populate this: {{ doc.version }}. This will grab the string that is input into the version field, and use that to query the GitHub API to find the milestone with a matching name.
Then, we can choose to surface a specific field to this query. In this case, choose the Nodes, as this will flatten the structure and get us to the PR data faster.
With that saved, we now have a remote source field. Our single release content already has a version added of 0.1.0 so we can head over to GitHub and add that Milestone to our repository.
Hygraph is only one half of this equation. The GitHub repository needs to be formatted properly as well.
In whatever repository you chose to use, open up Milestones page. This can be found by clicking the “milestones” tab in either Issues or Pull Requests.
We can then add milestones with the New milestone button. The only requirement here is the title and the title should match the version inside Hygraph. If you’re using the demo content, that will be v.0.1.0.
Once the milestone is created, we need to add this milestone as data on a number of Pull Requests. Since this will be for a changelog, these should probably be “closed” PRs. Select a number of PRs and from the Milestones dropdown, bulk add our new milestone to the PRs.
That’s it! Now we can query this directly from our Hygraph API. Let’s head over and make a query in the API playground.
Let’s take a look at what it will take to get to this data.
First, let’s get all the basic data from the Hygraph content.
query Release() {
releases {
slug
title
body
version
}
}
This gives us an array of releases with the data from the marketing team for each one.
Next we need to div into the Pull Requests for each. For that we can use the pullRequestData key we created with our field. This will have all the Milestone data including the PRs, title, and description. We only need the pullRequests. These are using the same pagination method as mentioned before, so we need to grab the first 10 PRs and list out the nodes on those to get the information.
Here we can get any information we want to display. Some good information would be the title, body, and URL. It might also be interesting to show how many lines of code were added or deleted. That information is all available in the API.
pullRequestData {
description
pullRequests(first:10) {
nodes {
url
title
permalink
deletions
additions
body
}
}
}
The last thing to get is inside the PR’s nodes. We also want to get all the commits and display their information. The commits also are paginated, so be sure to provide the number you need and get the nodes. It also might be interesting to display the total number of commits, so grab the totalCount as well.
commits(first:10) {
totalCount
nodes {
url
commit {
messageBody
messageHeadline
author {
name
}
}
}
}
With all this together, the query is rather large, but comprehensive.
query Releases {
releases {
body
slug
title
version
pullRequestData {
description
pullRequests(first:10) {
nodes {
url
title
additions
deletions
body
commits(first:10) {
totalCount
nodes {
url
commit {
messageBody
messageHeadline
author {
name
}
}
}
}
}
}
}
}
}
With that query, you can take this into any frontend framework you want and create amazing hybrids between marketing and developer content. Grab the following example code in Next.js and 11ty to give it a try.
In this post, we combined two powerful APIs: GitHub’s GraphQL API and Hygraph’s Content API. We did that with a Remote Source that allows developers to do their commits and Pull Requests in GitHub and a Marketing team to use Hygraph. We merged those together with a Remote Source field in Hygraph and a Milestone title in GitHub. That Milestone was attached to a set of Pull Requests and those PRs were able to be pulled directly alongside the release notes from Marketing.
The best of both worlds is definitely possible when working toward a unified changelog.
Blog Author
Bryan Robinson
Head of Developer Relations
Bryan is Hygraph's Head of Developer Relations. He has a strong passion for developer education and experience as well as decoupled architectures, frontend development, and clean design.
Share with others
Sign up for our newsletter!
Be the first to know about releases and industry news and insights.