Shopify has lifted a major limitation for developers building custom data structures. Starting with the 2027-01 version of the GraphQL Admin API, metaobject definitions can be flagged as analytics‑queryable, giving merchants insight into custom content just like they already have for metafields. In this post we break down the change, who needs to care, and the exact steps to start using the new capability.
What changed
The Admin API now exposes a new field, MetaobjectCapabilities.analyticsQueryable, which returns two booleans: eligible (the definition contains at least one analytics‑compatible field) and enabled (whether the capability is turned on). The mutation inputs MetaobjectCapabilityCreateInput.analyticsQueryable and MetaobjectCapabilityUpdateInput.analyticsQueryable let you set the flag when you create or update a definition. The enum MetaobjectCapabilityType gains an ANALYTICS_QUERYABLE value, and a new user error code CAPABILITY_NOT_ELIGIBLE protects against enabling it on ineligible definitions.
Who’s affected
Any app that works with metaobject definitions via the GraphQL Admin API version 2027-01 or later will see the new fields and inputs. Apps still on older API versions won’t see these changes, and existing implementations don’t need to be altered unless they want to take advantage of analytics queryability.
Why it matters
Analytics is a core decision‑making tool for merchants. By making metaobjects queryable, Shopify brings custom objects onto the same analytical playing field as metafields, enabling reporting on things like custom product attributes, loyalty tiers, or content blocks. This consistency reduces the friction of building data‑driven features and gives merchants clearer visibility into the custom data they’ve modeled.
What you need to do
Code example
// Query a metaobject definition’s capabilities
query GetMetaobjectDefinition($id: ID!) {
metaobjectDefinition(id: $id) {
id
name
capabilities {
analyticsQueryable {
eligible
enabled
}
}
}
}
// Create a definition with analytics enabled (only if eligible)
mutation CreateMetaobjectDefinition($input: MetaobjectDefinitionCreateInput!) {
metaobjectDefinitionCreate(input: $input) {
metaobjectDefinition {
id
capabilities {
analyticsQueryable { enabled }
}
}
userErrors {
field
message
code
}
}
}
// Example input fragment
{
"input": {
"name": "CustomBadge",
"fields": [{"key": "badge_name", "type": "single_line_text_field"}],
"capabilities": {
"analyticsQueryable": { "enabled": true }
}
}
}
Conclusion
The analyticsQueryable capability is a small but powerful addition that turns metaobjects into first‑class analytics assets. If you’re building apps that rely on custom data, update to the 2027-01 API, enable the flag where appropriate, and give merchants the reporting power they expect. Need help updating your app or understanding eligibility rules? Reach out to our developer support or drop a comment below—let’s make your custom data count!
