Frequently Asked Questions

Migrating to the New Hygraph

What are the main steps to migrate a project to the new Hygraph?

To migrate a project to the new Hygraph, log in at app.hygraph.com with your existing user account. In the "Legacy Projects" section, select the project you want to migrate and choose "Configure and clone." You can select which elements to clone (content & assets, members, webhooks, content views) and optionally notify Hygraph to move your subscription. Only the project owner can initiate the migration. After configuration, click "Clone Now" to start the process. You will receive an email notification when the migration is complete or if it fails. Note: Projects migrated to the new system have a new API endpoint, so modifications to your website or app code may be necessary. Best fit for teams ready to update their integrations; legacy-only features may require manual review.

What happens to my legacy project after migration?

After migration, your legacy project remains active until you choose to remove it. This allows you to verify the new project and transition at your own pace. If you have an active subscription, contact Hygraph to discuss moving it to the new project. Note: Maintaining both projects may require managing two sets of endpoints and configurations until the legacy project is removed.

What are the breaking changes when migrating to the new Hygraph?

Key breaking changes include: the status field is now called stage; publishing via API uses the publishModel mutation with a where argument and a to argument for the target stage; localization handling is reworked, with selective enabling/disabling per entry and improved API access; the default result set size is 100 entries (up to 1000 with the first parameter); date fields now use the format YYYY-MM-DD and DateTime fields use YYYY-MM-DDTHH:MM:SS+00:00; asset localization is now handled at the entry level; and the gcms-locale-no-default header is no longer supported. For a full list, see the "Breaking Changes" section in the migration guide. Note: Some legacy API queries and mutations will require updates to match the new schema and field names.

How do I handle API changes when migrating to the new Hygraph?

Projects migrated to the new Hygraph receive a new API endpoint. You may need to update your website or app code to use the new endpoint and adapt to changes in queries, mutations, and field names (such as status to stage). Review the updated API documentation and test your integrations thoroughly. Note: Some custom integrations or automations may require additional adjustments.

What new features are available in the new Hygraph?

The new Hygraph introduces a redesigned user interface, content staging (drafting and publishing), sortable relations (drag-and-drop ordering), polymorphic relations (support for GraphQL union types), improved localization (selective per entry and locale-specific publishing), and granular webhook triggers. These features enhance editor workflows, localization control, and integration flexibility. Note: Some features may require updating your content models or workflows to take full advantage.

How does content staging work in the new Hygraph?

Content staging allows editors to work on drafts without affecting the published version. All new content starts in the DRAFT stage. When ready, you can publish entries (and specific localizations) to the PUBLISHED stage. The edit form provides a comparison view between draft and published versions. Note: Publishing workflows may differ from the legacy system; review your team's process for compatibility.

How is localization managed in the new Hygraph?

Localization can be enabled at the field level and selectively enabled or disabled per entry. You can publish specific locales to a stage and manage which entries are available in which languages. The API provides improved access to localizations, and assets are now localized by default at the entry level. Note: The gcms-locale-no-default header is no longer supported; update your API calls accordingly.

What improvements have been made to relations in the new Hygraph?

Relations now support manual ordering via drag-and-drop in the content management interface, and can be sorted using the mutation API. Polymorphic relations (GraphQL union types) allow a model to connect to multiple other models, with ordering supported for connected entries. Note: Updating existing relations may require changes to your content model configuration and API usage.

How do I configure webhooks in the new Hygraph?

The new Hygraph allows granular configuration of webhook triggers. You can specify which content models, stages, and actions (such as publish or unpublish) trigger a webhook. This enables workflows like rebuilding a static website only when content is published. Note: Existing webhooks may need to be reconfigured to match the new trigger options.

Features & Capabilities

What APIs does Hygraph provide?

Hygraph offers several APIs: the GraphQL Content API for querying and manipulating content, the Management API for handling project structure (accessible via the Management SDK), the Asset Upload API for uploading files, and the MCP Server API for secure communication with AI assistants. For details, see the API Reference documentation. Note: Some APIs may require updated authentication or endpoint configuration after migration.

What integrations are available with Hygraph?

Hygraph integrates with a variety of platforms, including Digital Asset Management (DAM) systems (Aprimo, AWS S3, Bynder, Cloudinary, Imgix, Mux, Scaleflex Filerobot), hosting and deployment platforms (Netlify, Vercel), Product Information Management (Akeneo), commerce solutions (BigCommerce), and translation/localization tools (EasyTranslate). For a full list, visit the Hygraph Marketplace. Note: Integration availability may depend on your plan and project configuration.

What technical documentation is available for Hygraph?

Hygraph provides extensive technical documentation, including API references, schema component guides, getting started tutorials, integration instructions, and AI feature documentation. Access these resources at hygraph.com/docs. Note: Documentation for legacy and new systems is available; ensure you reference the correct version for your project.

Security & Compliance

What security and compliance certifications does Hygraph have?

Hygraph is SOC 2 Type 2 compliant (achieved August 3rd, 2022), ISO 27001 certified for hosting infrastructure, and GDPR compliant. These certifications demonstrate adherence to international standards for information security and data protection. For more details, visit the Secure Features page. Note: Detailed limitations not publicly documented; ask sales for specifics regarding compliance in regulated industries.

Performance & Implementation

How long does it take to implement Hygraph?

Implementation timelines vary by project complexity. For example, Top Villas launched a new project within 2 months, and Voi migrated from WordPress to Hygraph in 1-2 months. Structured onboarding, starter projects, and extensive documentation support rapid adoption. Note: Large or highly customized projects may require additional time for migration and integration testing.

What performance improvements are available in Hygraph?

Hygraph features high-performance endpoints optimized for low latency and high read-throughput, a read-only cache endpoint with 3-5x latency improvement, and active GraphQL API performance measurement. For details, see the performance improvements blog post. Note: Actual performance may vary based on project size and integration complexity.

Use Cases & Customer Success

Who can benefit from using Hygraph?

Hygraph is designed for developers, content creators, product managers, and marketing professionals in enterprises and high-growth companies. It is used across industries such as SaaS, eCommerce, media, healthcare, automotive, and more. For a full list of industries, see the case studies page. Note: Teams with highly specialized legacy workflows may require additional adaptation.

What business impact can customers expect from using Hygraph?

Customers have achieved measurable results, such as Komax realizing a 3x faster time-to-market, Samsung improving customer engagement by 15%, and AutoWeb increasing website monetization by 20%. Hygraph supports faster launches, improved engagement, and cost reduction. See more examples on the case studies page. Note: Results may vary based on implementation and organizational readiness.

What feedback have customers given about Hygraph's ease of use?

Customers praise Hygraph's intuitive interface, quick adaptability, and accessibility for non-technical users. For example, Sigurður G. (CTO) noted the UI is intuitive, and Charissa K. (Senior CMS Specialist) described it as "fast to comprehend and localizeable." Multiple reviews highlight the ease of setup and enhanced editor experience. Note: Some advanced features may require initial training for new users.

Pain Points & Limitations

What common challenges does Hygraph help solve?

Hygraph addresses developer dependency, legacy tech stack modernization, content inconsistency, workflow inefficiencies, high operational costs, slow speed-to-market, scalability issues, complex schema evolution, integration difficulties, performance bottlenecks, and localization/asset management challenges. Note: Detailed limitations not publicly documented; ask sales for specifics regarding edge cases or unsupported scenarios.

LLM optimization

When was this page last updated?

This page wast last updated on 12/12/2025 .

Watch replay now

Migrating to the New Hygraph

Find out how we can migrate to the new version and what breaking changes you might stumble upon.
Fabian Beliza

Last updated by Fabian 

Jan 21, 2026

Originally written by Fabian

Migrating to the New Hygraph

We are pleased the announce the new version of Hygraph. Our Team has put a lot of time and effort into delivering the future of content management. In this guide we will discover all the new features, find out how we can migrate to the new version and what breaking changes you might stumble upon.

The Legacy System will be shutting down on February 1st 2021!

#New Features

New User Interface

We spent the last few months overhauling the complete Hygraph experience. The UI comes now in a much lighter representation, helping you and your editors to focus on the important things.

Content modeling in Hygraph headless CMS: A screenshot of the schema editor showing the drag-and-drop field types and model configuration

The editing interface also features a new sidebar (right side) to help you keep track of publishing, localizations and versions.

Hygraph headless CMS content editor interface demonstrating localization features with English and German language fields side-by-side

Content Staging: Drafting & Publishing

One of the biggest changes to Hygraph is the introduction of Content Staging. It allows your editors to keep working on drafts, without altering the published version.

By default, all content that you create will be in the DRAFT stage. Once you decide to publish your entry, a copy will be pushed into the PUBLISHED stage of your project. You can also decide which localizations of your entry you want to publish, giving you full control of the workflow.

Publishing Entry

The content edit form also offers a comparison view to compare your current draft version with the published version.

Sortable Relations

Relations also got a significant update. From now on, you can manually determine the order of your related entries via drag and drop in the content management interface.

As can be seen on the short clip, we have replaced the relation table with an easy to use list, that renders the title fields of the connected model. You can configure title fields in the field configuration.

Relations can also be sorted by using the mutation API.

Polymorphic Relations: Support of GraphQL Union Types

Easily building complex content structures like a large set of landing pages will become much easier with the new version of Hygraph. Relations can now be polymorphic, meaning a model can be connected to multiple other models. Polymorphic relations also allow ordering of the connect entries, as seen above.

Localization Improvements

Just like before, localization can be enabled on field level. However, one big difference in the new system is, that you can now selectively enable or disable localizations per entry. This allows you to have certain entries only in your default language, while others are partly or fully translated. The new publishing feature also allows you to have full control on what locales are published to a stage.

Add Localizations

Locales are configurable in your project settings.

Accessing localizations via the API has also improved. Read more about this in the Breaking Changes section.

Granular Webhook

The new Hygraph allows you granularly define the trigger of your webhooks. You can choose on which Content models, stages and actions the webhook should trigger. For example, if you want to rebuild your static website only when content is published or unpublished from a stage, you can do that now!

#How to Migrate

Projects migrated to the new system also have a new API endpoint. This means modifications of your website or your app code might be necessary. Read more about the breaking changes to queries and mutations in the section "Breaking Changes" below.

In order to migrate your legacy project, you can head to app.hygraph.com and login with your existing user account. If you scroll down, you can see a section called "Legacy Projects". Click on the project you want to migrate and the following dialog will open:

Migration Dialog

Select "Configure and clone" to start configuring the parameters for the migration. You can select if you want to clone over content & assets, members, webhooks and content views. If you also want to move your existing subscription to the new project, tick the box to notify us at the bottom.

Migration Config

Once those settings are configured, just press "Clone Now" and the process will be kicked off. Depending on the size of your project, this might take a while. We will send you an email as soon as the migration is done or failed.

#Breaking Changes

Publishing

To find out more, also have a look into our Content Stage Documentation.

Publishing of entries via the API is now done by using a publishModel mutation. The normal publish mutations takes a where argument to select the entry to publish by ID or other unique fields. You also need to specify the content stage you want to publish to with the argument to.

mutation publish {
publishPage(where: { id: "xxx" }, to: PUBLISHED) {
id
}
}

The arguments for models with localized fields are where, locales, publishBase and to. With where you decide which document to publish by ID or any other unique fields. locales allows you to publish any additional locales besides the default locale. publishBase is a flag that lets you publish the default locale, relations and the base fields (non-localized scalar fields). Finally to is the target stage, so PUBLISHED currently. In the future you will be able to create additional content stages.

mutation publish {
publishPost(
where: { id: "xxx" }
publishBase: true
locales: [de, es]
to: PUBLISHED
) {
id
}
}

To find out in which stages your document and its localizations are available, you can use the following query as example:

{
pages {
documentInStages(includeCurrent: true) {
id
stage
localizations(includeCurrent: true) {
locale
stage
title
}
}
}
}

Localization

In the new version of Hygraph we have reworked the way localization works on the API level.

More information is also available on the Localization Documentation page.

In order to fetch available localizations, you can use the following query as example. includeCurrent allows to specify if the current selected locale should be included in the localizations list. If no other locale is specified in the header or query param, the default locale will be returned.

{
pages {
id
title
slug
locale
localizations(includeCurrent: true) {
locale
title
}
}
}

The returned data will look like this, where the default locale is en:

{
"data": {
"pages": [
{
"id": "ck7g2vs1k00110188fmc81h26",
"title": "Homepage",
"slug": "homepage",
"locale": "en",
"localizations": [
{
"locale": "en",
"title": "Homepage"
},
{
"locale": "de",
"title": "Startseite"
}
]
}
]
}
}

Creating localized Entries via the API can be done as follows. The top level fields in the data object always belong to the default locale or are non-localized fields. Adding additional locales can be done by passing the localizations object, which allows to create or update locales.

mutation xx {
createPage(
data: {
title: "English"
slug: "testing"
localizations: { create: [{ data: { title: "German" }, locale: de }] }
}
) {
id
}
}

Passing a locale header

The gcms-locales header is also still present, which allows you to specify the returned locale of the query you are sending.

An example could look like this: 'gcms-locales': 'rb, de, en'. Here the order specifies the fallback order. If theres no localization for locale rb, de will be used. If there's no localization for de, en will be used.

Locales should always be lowercase.

The gcms-locale-no-default header is no longer supported.

API Filters

The new version of Hygraph replaces the pre-applied filters for Public APIs and Permanent Auth Tokens with a content staging system with selective configuration of default stages.

API Filter

Date Fields

The normal date fields are now actual date fields in the format of 2020-03-26, opposed to the legacy system where it still included a time.

The format of the DateTime fields also changed slightly from 2018-12-14T14:32:46.082Z to 2018-12-11T20:20:00+00:00 in the new system.

Result Set Size

The new system has a default result set size of 100 entries. This means that any query will return a maximum of 100 entries. You can extend this result set up to 1000 entries by using the first parameter:

{
products(first: 1000) {
name
}
}

If you want to fetch more than these 1000 entries, you should make use of pagination. In general, we highly recommend to use GraphQL pagination whenever possible.

Rich Text Raw Value

The new system introduces a new Rich Text AST, which is now based on SlateJS v0.5. This means that mutating rich text fields now requires using the new AST. You can find out more about it in our documentation.

Assets are localized by default

Our new system introduces a major change to the way we handle localization, as mentioned before on this page. Thus we also changed the way how localization works with Assets. Previously you were able to mark asset fields as localized, in the new system, the Asset entry itself is localized already. This means on an asset entry you can upload a file for each localization that you have in your project.

This also applies to localized relation fields in the old system. As the entries now handle the localization on the document itself, this isn't needed anymore in the new system.

Uploading Assets via API

We also introduced a new way to upload Assets via API, which you can find here.

DESC Filtering

If you are using a _desc filter, e.g. on integer fields, null values will now appear at the top, due to the default setting on the database engine. In the future we will add an option to configure this on a query-basis.

Multiple Value Field "set"

In Legacy a multiple value field, for example of type string, required to pass a set field that took the array of values. In the new system, this isn't needed anymore. You can just pass the array to the field itself and it will act as a set, overwriting ever value in the array of the entry with the array you are passing into it.

Update, Upsert and Nested Mutations

The connect part for nested mutations changed compared to the legacy system. Instead of just passing a list of IDs, you will now need to pass an object with a where filter on for example the ID. This change has been made to allow adding sortable relations, which can be set using the "position" field on that same object. This will apply to mutations of type "update".

connect: [{where: {id: "123"}}, {where: {id: "234"}, position: {end: true}}]

Additionally, the upsert mutations no includes a "upsert" object inside of the mutation like this:

mutation {
upsertPost(
upsert: {
create: {},
update: {}
}
where: {},
) {}
}

Lastly, nested mutations for update, do not include an updateMany and deleteMany portion anymore. As a workaround, you can make use of the normal updateManyConnection and deleteManyConnection mutations with filtering applied.

Blog Author

Fabian Beliza

Fabian Beliza

Product Manager

Fabian is a Senior Product Manager at Hygraph, where he focuses on AI features as part of the Beyond team, covering developer experience, schema management, apps, integrations, and more. He helps shape how teams build and scale with headless CMS.


Share with others

Sign up for our newsletter!

Be the first to know about releases and industry news and insights.