Product Groups
Product groups let you manage a set of related products as one catalog unit. You can use them to control contract windows, activation state, publishing windows, and booking expiry settings across multiple products.
In practice, a product group helps you organise products that should follow the same commercial rules. This is useful when you want consistent configuration for a cohort of products instead of updating each product one by one.
Key Concepts
Contract windows
Each product group has contract date boundaries:
contractEarliestStartDatecontractLatestStartDatecontractEarliestEndDatecontractLatestEndDate
These dates define the range of contract dates that products in the group can use.
State and publishing
A product group has two related controls:
Activation state (
ACTIVE,INACTIVE)Publishing window (
startDate,endDate) with a publishing state
You can update activation state for one or more product groups in a single mutation.
Product membership
A product group contains a connection of products. This lets you inspect the products that belong to the group and paginate through them.
GraphQL API
Type
ProductGroup
ProductGroupid
ID!
Product group identifier
internalReference
String!
Internal reference string for the group
workspaceId
Integer!
Workspace identifier
contractEarliestStartDate
String!
Earliest contract start date
contractLatestStartDate
String!
Latest contract start date
contractEarliestEndDate
String!
Earliest contract end date
contractLatestEndDate
String!
Latest contract end date
defaultExpiryDurationInSeconds
Integer
Default booking expiry duration
allowBookingExpiryTimer
Boolean
Whether booking expiry timer is enabled
academicYear
String
Academic year in YYYY/YYYY format
state
CatalogProductGroupStateEnum!
Activation state
publishing
Publishing!
Publishing window and lifecycle state
contractTemplateExternalId
String
External contract template identifier
createdAt
ISO8601DateTime!
Creation timestamp
updatedAt
ISO8601DateTime!
Last update timestamp
CatalogProductGroupStateEnum
CatalogProductGroupStateEnumACTIVE
Product group is active
INACTIVE
Product group is inactive
CatalogPublishStateEnum
CatalogPublishStateEnumSCHEDULED
Publishing has not started yet
ONGOING
Publishing is currently active
FINISHED
Publishing window has ended
Queries
Get a product group
List product groups
Tip:
productGroupsfollows the standard connection pattern. Use cursors for pagination when iterating through large catalogs.
Mutations
Create a product group
Required fields for productGroup in create:
internalReference
String!
contractEarliestStartDate
ISO8601Date!
contractLatestStartDate
ISO8601Date!
contractEarliestEndDate
ISO8601Date!
contractLatestEndDate
ISO8601Date!
workspaceId
ID!
academicYear
String!
Update a product group
Required fields for update input:
productGroupId
ID!
productGroup
ProductGroupUpdateInput!
Update product group state in bulk
MCP Tools
If you use MCP, these tools are relevant:
See Tools for setup and full coverage.
Relationships
A product group belongs to a Workspaces
A product group has many Product
Product groups work alongside Pricing to control what can be sold and when
Last updated