Skip to main content

Metaobject

Requires read_metaobjects access scope.

Supported actions: create, update, delete

Subscribe to field-level changes on the Metaobject GraphQL Admin API object.

Each topic corresponds to a commerce resource that can exist independently within its domain. Child entities that depend on a parent within the same domain don't have their own topic. Instead, changes to child entities trigger a delivery on the parent topic. Calculated fields, derived fields, auto-updated timestamps, and cross-domain fields aren't available as triggers.

shopify.app.toml

[events]
api_version = "2026-10"

[[events.subscription]]
handle = "my_metaobject_event"

topic = "Metaobject"
actions = ["update"]
triggers = ["metaobject(type: 'lookbook').displayName"]

uri = "https://your-app.com/events"

query = """
query metaobject_event_payload($metaobjectId: ID!) {
metaobject(id: $metaobjectId) {
id
handle
displayName
}
}
"""

Field-level triggers for Metaobject subscriptions.

All triggers require the read_metaobjects access scope. Those triggers that require additional scopes are documented where relevant. Deprecated triggers are listed last.

Subscriptions can include multiple triggers. Use the shopify-webhook-id header for deduplication when handling duplicate deliveries.

Custom queries aren't limited to Metaobject. They can query the full GraphQL Admin API.

Anchor to list-of-topics-metaobject(type: String!).*
metaobject(type: String!).*

Fires when events involve the Metaobject object.

The "create" and "delete" actions are only relevant within the context of this parent topic. Use fields_changed to follow or replicate impacted data after a delete event. Define a custom query to retrieve specific fields from create events.

metaobject(type: String!).* is a parent trigger. Subscribing with the "update" action receives events for all supported triggers under metaobject(type: String!), including nested triggers. Use a more specific trigger to limit events to the fields you need.

Variables: metaobjectId, metaobjectType

Anchor to list-of-topics-metaobject(type: String!).displayName
metaobject(type: String!).displayName

Fires when the displayName field on the Metaobject object changes.

Subscribe to this trigger with the "update" action and include the field in a custom query to retrieve updated data from the payload. You can trace the field in subsequent requests using fields_changed.

The displayName field represents the preferred display name field value of the metaobject.

Variables: metaobjectId, metaobjectType

Anchor to list-of-topics-metaobject(type: String!).field(key: String!).*
metaobject(type: String!).field(key: String!).*

Fires when the field field on the Metaobject object changes.

metaobject(type: String!).field(key: String!).* is a parent trigger. Subscribing with the "update" action receives events for all supported triggers under metaobject(type: String!).field(key: String!), including nested triggers. Use a more specific trigger to limit events to the fields you need.

Include the field in a custom query to retrieve updated data from the payload. You can trace the field in subsequent requests using fields_changed.

The field field represents the field for an object key, or null if the key has no field definition.

Variables: fieldKey, metaobjectId, metaobjectType

Anchor to list-of-topics-metaobject(type: String!).field(key: String!).value
metaobject(type: String!).field(key: String!).value

Fires when the value field on the MetaobjectField object changes.

Subscribe to this trigger with the "update" action and include the field in a custom query to retrieve updated data from the payload. You can trace the field in subsequent requests using fields_changed.

The value field represents the assigned field value, always stored as a string regardless of the field type.

Variables: fieldKey, metaobjectId, metaobjectType

Anchor to list-of-topics-metaobject(type: String!).handle
metaobject(type: String!).handle

Fires when the handle field on the Metaobject object changes.

Subscribe to this trigger with the "update" action and include the field in a custom query to retrieve updated data from the payload. You can trace the field in subsequent requests using fields_changed.

The handle field represents the unique handle of the object, useful as a custom ID.

Variables: metaobjectId, metaobjectType


Was this page helpful?