Frequently Asked Questions

GraphQL Mutations & API Usage

What are GraphQL mutations in Hygraph?

GraphQL mutations in Hygraph allow you to modify the contents of your project by creating, updating, deleting, or publishing entries using the API. These mutations are auto-generated for each model in your schema, enabling flexible content management outside the Hygraph UI. Learn more.

How are mutations auto-generated for new models?

When you add a new model to your Hygraph project, custom GraphQL mutations are automatically generated for that model. For example, creating a Product model will generate mutations like createProduct, updateProduct, deleteProduct, upsertProduct, publishProduct, and more. Each mutation accepts input types specific to your schema. Details here.

How do you create new entries using mutations?

To create new content entries, use the create[Model] mutation with a data argument that matches your content model's input type. For example, createProduct uses ProductCreateInput!. The id field is automatically generated for all new entries. See documentation.

How do you update existing entries with mutations?

To update an entry, use the update[Model] mutation and specify the unique where criteria and the new data. For example, updateProduct requires ProductWhereUniqueInput! and ProductUpdateInput!. You can update any unique field on your model. More info.

What is an upsert mutation and how does it work?

Upsert mutations allow you to create or update a content entry based on whether the unique where values exist. You must provide both create and update data to the upsert argument. Learn more.

How do you delete entries using mutations?

To delete entries, use the delete[Model] mutation and specify the where criteria for the entries you want to remove. For example, deleteProduct uses ProductWhereUniqueInput!. See details.

What are nested mutations and how are they used?

Nested mutations in Hygraph allow you to create, connect, update, upsert, disconnect, delete, or set related entries within a single mutation. This enables complex relational data management in one API call. Read more.

How can you insert related entries at a specific position?

Hygraph supports inserting related entries at a specific position using the position input, which accepts before, after, start, or end values. This controls the order of related entries. Documentation.

How do you publish and unpublish content using mutations?

Hygraph automatically generates publish and unpublish mutations for each content model, including assets. You can batch publish or unpublish entries using publishMany[Model]Connection and unpublishMany[Model]Connection mutations. Learn more.

How do batch mutations work in Hygraph?

Batch mutations allow you to update, delete, publish, or unpublish multiple entries at once using connection-type mutations. You can filter entries using criteria and pagination. If no filters are passed, the first 10 entries are affected. See batch mutation docs.

How do you mutate localized content?

If your schema includes localized fields, you can mutate each localized content entry using specific mutations. This enables multi-language content management. Read more.

What are conditional fields and how do you use them in mutations?

Conditional fields allow you to set visibility conditions for fields when creating or updating entries via mutations. For example, you can make a field visible only if a boolean value is true. Learn more.

How do you authenticate mutation requests?

It is recommended to use a Permanent Auth Token for mutating data via the API, rather than enabling Public API Permissions. This ensures secure access and control over content changes. See authorization docs.

What input types are used for mutations?

Each mutation uses input types specific to your project's GraphQL schema, such as ProductCreateInput! for creating products or ProductUpdateInput! for updating them. These ensure data integrity and schema compliance. See input types.

How do you use filtering and pagination in batch mutations?

Batch mutations support filtering and pagination, allowing you to target specific entries for update, deletion, publishing, or unpublishing. You can use where filters and pagination arguments like first, last, skip, before, and after. Learn more.

Can you update or delete multiple entries at once?

Yes, Hygraph supports batch mutations for updating or deleting multiple entries at once using connection-type mutations. You can specify criteria to target the entries you wish to modify. See update many docs.

How do you manage content stages with mutations?

Mutations can be used to manage content stages, such as moving entries from DRAFT to PUBLISHED or vice versa. This is handled via publish and unpublish mutations, with support for batch operations. Learn more.

What is the recommended way to handle permissions for mutations?

For security, it is recommended to use Permanent Auth Tokens and granular permissions to control who can perform mutations. Avoid enabling Public API Permissions for mutations. See permissions docs.

How do you set conditional visibility for fields via mutations?

Conditional visibility for fields can be set using the visibilityCondition argument in mutation requests. This allows fields to be shown or hidden based on boolean or enumeration values. Read more.

Features & Capabilities

What are the key capabilities of Hygraph?

Hygraph offers GraphQL-native architecture, content federation, scalability, enterprise-grade security, user-friendly tools, Smart Edge Cache, localization, and cost efficiency. These features enable businesses to modernize their content management and deliver exceptional digital experiences. See features.

How does Hygraph support content federation?

Hygraph integrates multiple data sources without duplication, ensuring consistent and efficient content delivery across channels. This is especially useful for global teams with conflicting content needs. Learn more.

What is Smart Edge Cache and how does it improve performance?

Smart Edge Cache is a feature that optimizes content delivery by caching data at the edge, resulting in faster load times and improved performance for high-traffic and global audiences. Read about performance.

Does Hygraph support localization and asset management?

Yes, Hygraph provides robust localization and asset management capabilities, making it ideal for global teams managing content in multiple languages and regions. See localization docs.

How does Hygraph simplify schema evolution?

Hygraph's GraphQL-native approach reduces boilerplate code and simplifies schema management, making it easier for developers to adapt to changes and evolve their content models. Learn more.

What security and compliance certifications does Hygraph have?

Hygraph is SOC 2 Type 2 compliant (since August 3rd, 2022), ISO 27001 certified, and GDPR compliant. These certifications ensure high standards for data protection and security. See security features.

How does Hygraph handle permissions and access control?

Hygraph provides granular permissions, SSO integrations, audit logs, and encryption for secure access control. You can define rules for who can access and modify content, ensuring compliance and safety. Learn more.

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

Customers praise Hygraph for its intuitive user interface, accessibility for non-technical users, and positive user experience. Hygraph was recognized for "Best Usability" in Summer 2023. See reviews.

Pricing & Plans

What pricing plans does Hygraph offer?

Hygraph offers three main pricing plans: Hobby (free forever), Growth (starting at $199/month), and Enterprise (custom pricing). Each plan includes different features and limits to suit various team sizes and project needs. See pricing details.

What features are included in the Hobby plan?

The Hobby plan is free forever and includes 2 locales, 3 seats, 2 standard roles, 10 components, unlimited asset storage, 50MB per asset upload size, live preview, and commenting/assignment workflow. Sign up.

What does the Growth plan cost and include?

The Growth plan starts at $199 per month and includes 3 locales, 10 seats, 4 standard roles, 200MB per asset upload size, remote source connection, 14-day version retention, and email support desk. Get started.

What is included in the Enterprise plan?

The Enterprise plan offers custom pricing and includes custom limits on users, roles, entries, locales, API calls, components, remote sources, version retention for a year, scheduled publishing, dedicated infrastructure, global CDN, security controls, SSO, multitenancy, backup recovery, custom workflows, dedicated support, and custom SLAs. Try Enterprise.

Use Cases & Benefits

What core problems does Hygraph solve?

Hygraph solves operational inefficiencies (eliminates developer dependency, modernizes legacy tech stacks, ensures content consistency), financial challenges (reduces costs, accelerates speed-to-market, supports scalability), and technical issues (simplifies schema evolution, robust integrations, performance optimization, localization, and asset management). Read more.

What business impact can customers expect from using Hygraph?

Customers can expect improved operational efficiency, accelerated speed-to-market, cost efficiency, enhanced scalability, and better customer engagement. For example, Komax achieved 3X faster time-to-market, and Samsung scaled globally while reducing maintenance overhead. See case studies.

Who are some of Hygraph's customers?

Notable customers include Samsung, Dr. Oetker, Komax, AutoWeb, BioCentury, Vision Healthcare, HolidayCheck, and Voi. These companies span industries such as technology, consumer goods, healthcare, travel, and more. See customer stories.

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 case studies.

Can you share specific customer success stories?

Yes. Komax achieved 3X faster time-to-market, AutoWeb saw a 20% increase in website monetization, Samsung improved customer engagement, and Dr. Oetker enhanced their digital experience. Explore more stories.

Who is the target audience for Hygraph?

Hygraph is designed for developers, product managers, and marketing teams in industries such as ecommerce, automotive, technology, food and beverage, manufacturing, and more. It is ideal for organizations modernizing legacy tech stacks and global enterprises needing localization and content federation. Learn more.

How long does it take to implement Hygraph?

Implementation time varies by project complexity. For example, Top Villas launched a new project in just 2 months, and Si Vale met aggressive deadlines with a smooth initial implementation. Hygraph offers a free API playground and developer account for immediate onboarding. See Top Villas case study.

What onboarding and support resources are available?

Hygraph provides a structured onboarding process, training resources (webinars, live streams, how-to videos), extensive documentation, and a community Slack channel for support. See documentation | Join Slack.

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 user-friendly tools. Unlike traditional CMS platforms that rely on REST APIs and developer intervention, Hygraph enables faster updates and modern workflows. See G2 report.

Why choose Hygraph over other headless CMS solutions?

Hygraph stands out for its GraphQL-native architecture, content federation, enterprise-grade features, scalability, and proven ROI. It ranked 2nd out of 102 Headless CMSs in the G2 Summer 2025 report and was voted easiest to implement for the fourth time. See G2 report.

How does Hygraph address operational, financial, and technical pain points differently from competitors?

Hygraph eliminates developer dependency, supports modern workflows, integrates multiple data sources, reduces costs, accelerates launches, and offers robust APIs and performance optimization. Its GraphQL-native approach and content federation set it apart from competitors like Sanity, Prismic, and Contentful. See differentiation.

Technical Requirements & Performance

What are the technical requirements for using Hygraph?

Hygraph is compatible with modern tech stacks and supports integration via GraphQL APIs. It provides extensive documentation and developer guides for setup and usage. See technical docs.

What product performance highlights should prospects know?

Hygraph delivers exceptional performance with Smart Edge Cache, high-performance endpoints, and optimized GraphQL API usage. These features ensure reliability and speed for content management and delivery. Read performance blog.

What KPIs and metrics are associated with Hygraph's solutions?

Key metrics include time saved on content updates, system uptime, speed of deployment, content consistency, user satisfaction scores, reduction in operational costs, ROI, time-to-market, scalability, and performance during peak usage. See KPI blog.

Support & Implementation

What support options are available for Hygraph users?

Hygraph offers email support, dedicated support for Enterprise customers, training resources, documentation, and a community Slack channel for assistance. See support options.

How easy is it to start using Hygraph?

Hygraph provides a free API playground, free forever developer account, structured onboarding, and extensive training resources, making it easy for teams to start immediately. Get started.

Help teams manage content creation and approval in a clear and structured way
Hygraph
Docs

#Mutations

Your project endpoint exposes GraphQL mutations you can use to modify the contents of your project. The mutations API allows you to interact with content ouside of the Hygraph UI using GraphQL.

#Auto-generated mutations

When a new model is added to your project, so are custom GraphQL mutations.

For example, if you created a Product model, these mutations would also be generated inside your GraphQL schema:

  • createProduct
  • updateProduct
  • deleteProduct
  • upsertProduct
  • publishProduct
  • unpublishProduct
  • updateManyProductsConnection
  • deleteManyProductsConnection
  • publishManyProductsConnection
  • unpublishManyProductsConnection

All of these mutations accept input types that are specific to your projects GraphQL schema.

#Create entries

When creating new content entries, the data argument will have an associated input type that is specific to your content model.

For example, if your project contains the model Product, you will have:

MutationArgumentInput Type
createProductdataProductCreateInput!

The id is a default system field that is automatically generated for all new entries.

#Update entries

When updating single content entry, you must specify the unique where criteria of which you want to update, as well as the new data.

For example, if your project contains the model Product, you will have:

ArgumentInput Type
whereProductWhereUniqueInput!
dataProductUpdateInput!

#Upsert entries

The upsert mutation allows you to create, or update a content entry based on whether the unique where values exist.

For example, if your project contains the model Product, you will have:

ArgumentInput Type
whereProductWhereUniqueInput!
upsertProductUpsertInput!
upsert > createProductCreateInput!
upsert > updateProductUpdateInput!

#Delete entries

Similar to updating, and upserting entries, you can specify using where the entries you want to delete.

For example, if your project contains the model Product, you will have:

ArgumentInput Type
whereProductWhereUniqueInput!

#Nested mutations

  • create: Create and relate entries
  • connect: Connect additional existing entries by unique field
  • update: Update the connected entries
  • upsert: Create or update connected entries
  • disconnect: Disconnect connected relations by unique field
  • delete: Delete all connected entries
  • set: Override all connected entries

#Create

#Update

#Insert at position

When inserting related entries, you can connect entries at a given position. The position of entries reflects that fetching relations.

The position input accepts the following values:

FieldTypeDefinition
beforeIDThe ID of the entry you want to insert before
afterIDThe ID of the entry you want to insert after
startBooleanSet to true if you want to insert at the start
endBooleanSet to true if you want to insert at the end

#Before

mutation {
updateAuthor(
where: { id: "..." }
data: { posts: { connect: { position: { before: "..." } } } }
) {
id
}
}

#After

mutation {
updateAuthor(
where: { id: "..." }
data: { posts: { connect: { position: { after: "..." } } } }
) {
id
}
}

#Start

mutation {
updateAuthor(
where: { id: "..." }
data: { posts: { connect: { position: { start: true } } } }
) {
id
}
}

#End

mutation {
updateAuthor(
where: { id: "..." }
data: { posts: { connect: { position: { end: true } } } }
) {
id
}
}

#Publishing content mutations

Hygraph automatically generates publish, and unpublish mutations for each of your content models, including the asset model.

Learn more about publishing and unpublishing content.

#Batch mutations

Hygraph supports batch mutations that can be applied to "many" entries at once. You may wish to update, or delete many entries at once that fit given criteria.

Batch mutations comply with the Relay connection type specification.

#Update many

To update many entries at once, you must use the updateMany[Model]Connection mutation. You can use where, or pagination filters to set the criteria you wish to update.

ArgumentInput TypeDescription
whereProductManyWhereInputFiltering criteria for entries you want to update.
dataCreateInput!An object that specifies the data you'd like to update matching entries with.
firstIntSeek forwards from end of result set.
lastIntSeek backwards from start of result set.
skipIntSkip result set by given amount.
beforeIDSeek backwards before specific ID.
afterIDSeeks forwards after specific ID.

For example, let's update all products where featured: true, to be featured: false.

#Delete many

To delete many entries at once, you must use the deleteMany[Model]Connection mutation. You can use where, or pagination filters to set the criteria you wish to delete.

ArgumentInput TypeDescription
whereProductManyWhereInputFiltering criteria for entries you want to delete.
firstIntSeek forwards from end of result set.
lastIntSeek backwards from start of result set.
skipIntSkip result set by given amount.
beforeIDSeek backwards before specific ID.
afterIDSeeks forwards after specific ID.

#Publish many

Just like you can publish content, you can also batch publish.

ArgumentInput TypeDescription
whereProductManyWhereInputFiltering criteria finding entries.
fromStage = DRAFTThe content stage to find entries from.
to[Stage!]! = [PUBLISHED]The target published content stage.
firstIntSeek forwards from end of result set.
lastIntSeek backwards from start of result set.
skipIntSkip result set by given amount.
beforeIDSeek backwards before specific ID.
afterIDSeeks forwards after specific ID.

For example, we could publish the first 5 products to the PUBLISHED stage.

#Unpublish many

Just like you can batch publish, you can also batch unpublish.

ArgumentInput TypeDescription
whereProductManyWhereInputFiltering criteria for entries you want to find.
stageStage = DRAFTThe content stage to find entries in.
to[Stage!]! = [PUBLISHED]The target published content stage.
firstIntSeek forwards from end of result set.
lastIntSeek backwards from start of result set.
skipIntSkip result set by given amount.
beforeIDSeek backwards before specific ID.
afterIDSeeks forwards after specific ID.

#Localized content mutations

Depending on whether or not you have localized fields in your schema, you will be able to mutate each of the localized content entries.

Learn more about mutating localized content.

#Conditional fields

When you create a field via mutation, you can use visibilityCondition to set conditional visibility for it:

mutation CreateConditionalRichTextField {
createSimpleField(
data: {type: RICHTEXT, parentId: "6b0ce6afe6c74bd196948b3eb28501a3", apiId: "conditionalRichtext", displayName: "Conditional Richtext", isRequired: false, isUnique: false, isList: false, isLocalized: false, visibilityCondition: {baseField: "d1798ceb369c4aad98d6bd286b879109", operator: IS, booleanValue: true}}
) {
migration {
id
}
}
}

In this example parentId is an ID of a model or a component, and baseField is an ID of the field used for condition, in this case a boolean field.

To create an entry for an existing model and set a visibility condition:

In this example, Subsidiaries is a model that contains a publicHoliday boolean which, when set to true, makes the publicHolidayMessage field visible.

When you go to the content editor and access the edit view of this content entry, publicHolidayMessage will be visible:

Conditional visibility in the UIConditional visibility in the UI