---
title: Article
description: Subscribe to field-level changes on the Article GraphQL Admin API object.
api_version: unstable
source_url:
  html: 'https://shopify.dev/docs/api/events/latest/article'
  md: 'https://shopify.dev/docs/api/events/latest/article.md'
api_name: events
---

# Article

**Requires one of the `read_content` or `read_online_store_pages` access scopes.:**

Subscribe to field-level changes on the [`Article`](https://shopify.dev/docs/api/admin-graphql/unstable/objects/Article) GraphQL Admin API object. You can subscribe to create, delete, and update events, as well as changes to specific fields.

Each [topic](https://shopify.dev/docs/api/events/latest#configuration) 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

```toml
[events]
api_version = "unstable"


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


topic = "Article"
actions = ["update"]
triggers = ["article.author"]


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


query = """
query article_event_payload($articleId: ID!) {
  article(id: $articleId) {
    id
    title
    handle
    author {
      __typename
    }
  }
}
"""
```

***

## Supported triggers

Field-level [triggers](https://shopify.dev/docs/api/events/latest#configuration) for `Article` subscriptions.

All triggers require one of the `read_content` or `read_online_store_pages` access scopes. 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 [`Article`](https://shopify.dev/docs/api/admin-graphql/unstable/objects/Article). They can query the full GraphQL Admin API.

### article​.\*

Fires when events involve the [`Article`](https://shopify.dev/docs/api/admin-graphql/unstable/objects/Article) 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.

`article.*` is a parent trigger. Subscribing with the `"update"` action receives events for all supported triggers under `article`, including nested triggers. Use a more specific trigger to limit events to the fields you need.

**Variables:** `articleId`

### article​.author

Fires when the [`author`](https://shopify.dev/docs/api/admin-graphql/unstable/objects/Article#field-Article.fields.author) field on the [`Article`](https://shopify.dev/docs/api/admin-graphql/unstable/objects/Article) 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 `author` field represents the name of the author of the article.

**Variables:** `articleId`

### article​.blog

Fires when the [`blog`](https://shopify.dev/docs/api/admin-graphql/unstable/objects/Article#field-Article.fields.blog) field on the [`Article`](https://shopify.dev/docs/api/admin-graphql/unstable/objects/Article) 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 `blog` field represents the blog containing the article.

**Variables:** `articleId`

### article​.body

Fires when the [`body`](https://shopify.dev/docs/api/admin-graphql/unstable/objects/Article#field-Article.fields.body) field on the [`Article`](https://shopify.dev/docs/api/admin-graphql/unstable/objects/Article) 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 `body` field represents the text of the article's body, complete with HTML markup.

**Variables:** `articleId`

### article​.handle

Fires when the [`handle`](https://shopify.dev/docs/api/admin-graphql/unstable/objects/Article#field-Article.fields.handle) field on the [`Article`](https://shopify.dev/docs/api/admin-graphql/unstable/objects/Article) 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 a unique, human-friendly string for the article that's automatically generated from the article's title.

**Variables:** `articleId`

### article​.isPublished

Fires when the [`isPublished`](https://shopify.dev/docs/api/admin-graphql/unstable/objects/Article#field-Article.fields.isPublished) field on the [`Article`](https://shopify.dev/docs/api/admin-graphql/unstable/objects/Article) 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 `isPublished` field indicates whether or not the article is visible.

**Variables:** `articleId`

### article​.metafield(namespace: String!, key: String!)​.\*

Fires when the [`metafield`](https://shopify.dev/docs/api/admin-graphql/unstable/objects/Article#field-Article.fields.metafield) field on the [`Article`](https://shopify.dev/docs/api/admin-graphql/unstable/objects/Article) object changes.

`article.metafield(namespace: String!, key: String!).*` is a parent trigger. Subscribing with the `"update"` action receives events for all supported triggers under `article.metafield(namespace: String!, 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 `metafield` field represents a custom field, including its `namespace` and `key`, that's associated with a Shopify resource for the purposes of adding and storing additional information.

**Variables:** `articleId`, `metafieldKey`, `metafieldNamespace`

### article​.metafield(namespace: String!)​.\*

Fires when the [`metafield`](https://shopify.dev/docs/api/admin-graphql/unstable/objects/Article#field-Article.fields.metafield) field on the [`Article`](https://shopify.dev/docs/api/admin-graphql/unstable/objects/Article) object changes.

`article.metafield(namespace: String!).*` is a parent trigger. Subscribing with the `"update"` action receives events for all supported triggers under `article.metafield(namespace: 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`.

This subscription omits the optional argument `metafield.key`.

The `metafield` field represents a custom field, including its `namespace` and `key`, that's associated with a Shopify resource for the purposes of adding and storing additional information.

**Variables:** `articleId`, `metafieldKey`, `metafieldNamespace`

### article​.metafield(namespace: String!, key: String!)​.value

Fires when the [`value`](https://shopify.dev/docs/api/admin-graphql/unstable/objects/Metafield#field-Metafield.fields.value) field on the [`Metafield`](https://shopify.dev/docs/api/admin-graphql/unstable/objects/Metafield) 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 data stored in the metafield.

**Variables:** `articleId`, `metafieldKey`, `metafieldNamespace`

### article​.metafield(namespace: String!)​.value

Fires when the [`value`](https://shopify.dev/docs/api/admin-graphql/unstable/objects/Metafield#field-Metafield.fields.value) field on the [`Metafield`](https://shopify.dev/docs/api/admin-graphql/unstable/objects/Metafield) 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`.

This subscription omits the optional argument `metafield.key`.

The `value` field represents the data stored in the metafield.

**Variables:** `articleId`, `metafieldKey`, `metafieldNamespace`

### article​.publishedAt

Fires when the [`publishedAt`](https://shopify.dev/docs/api/admin-graphql/unstable/objects/Article#field-Article.fields.publishedAt) field on the [`Article`](https://shopify.dev/docs/api/admin-graphql/unstable/objects/Article) 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 `publishedAt` field represents the date and time (ISO 8601 format) when the article became or will become visible.

**Variables:** `articleId`

### article​.summary

Fires when the [`summary`](https://shopify.dev/docs/api/admin-graphql/unstable/objects/Article#field-Article.fields.summary) field on the [`Article`](https://shopify.dev/docs/api/admin-graphql/unstable/objects/Article) 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 `summary` field represents a summary of the article, which can include HTML markup.

**Variables:** `articleId`

### article​.tags

Fires when the [`tags`](https://shopify.dev/docs/api/admin-graphql/unstable/objects/Article#field-Article.fields.tags) field on the [`Article`](https://shopify.dev/docs/api/admin-graphql/unstable/objects/Article) 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 `tags` field represents a comma-separated list of tags.

**Variables:** `articleId`

### article​.templateSuffix

Fires when the [`templateSuffix`](https://shopify.dev/docs/api/admin-graphql/unstable/objects/Article#field-Article.fields.templateSuffix) field on the [`Article`](https://shopify.dev/docs/api/admin-graphql/unstable/objects/Article) 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 `templateSuffix` field represents the name of the template an article is using if it's using an alternate template.

**Variables:** `articleId`

### article​.title

Fires when the [`title`](https://shopify.dev/docs/api/admin-graphql/unstable/objects/Article#field-Article.fields.title) field on the [`Article`](https://shopify.dev/docs/api/admin-graphql/unstable/objects/Article) 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 `title` field represents the title of the article.

**Variables:** `articleId`

### Examples

* #### Subscribe via app configuration

  ##### shopify.app.toml

  ```toml
  [events]
  api_version = "unstable"

  [[events.subscription]]
  handle = "article-event"

  topic = "Article"
  actions = ["create","update","delete"]
  triggers = ["article.*"]

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

  query = """
  query article_details($articleId: ID!) {
    article(id: $articleId) {
      id
      title
      handle
    }
  }
  """
  ```

  ##### Payload (added)

  ```json
  {
    "topic": "Article",
    "action": "create",
    "handle": "article-event",
    "data": {
      "article": {
        "id": "gid://shopify/Article/4391931067392",
        "title": "Example article",
        "handle": "example-article"
      }
    },
    "fields_changed": {
      "added": [
        "article[id: 'gid://shopify/Article/4391931067392']"
      ],
      "updated": [],
      "removed": []
    },
    "query_variables": {
      "articleId": "gid://shopify/Article/4391931067392"
    }
  }
  ```

  ##### Payload (updated)

  ```json
  {
    "topic": "Article",
    "action": "update",
    "handle": "article-event",
    "data": {
      "article": {
        "id": "gid://shopify/Article/4391931067392",
        "title": "Example article",
        "handle": "example-article"
      }
    },
    "fields_changed": {
      "added": [],
      "updated": [
        "article[id: 'gid://shopify/Article/4391931067392'].author"
      ],
      "removed": []
    },
    "query_variables": {
      "articleId": "gid://shopify/Article/4391931067392"
    }
  }
  ```

  ##### Payload (removed)

  ```json
  {
    "topic": "Article",
    "action": "delete",
    "handle": "article-event",
    "data": {
      "article": null
    },
    "fields_changed": {
      "added": [],
      "updated": [],
      "removed": [
        "article[id: 'gid://shopify/Article/4391931067392']"
      ]
    },
    "query_variables": {
      "articleId": "gid://shopify/Article/4391931067392"
    }
  }
  ```

  ##### Headers

  ```bash
  shopify-action: update # or create, delete
  shopify-api-version: unstable
  shopify-handle: article-event
  shopify-hmac-sha256: 61lWIGuA2nXdHRjhMU/+EDw2y3Eg0mPKJ+RhR7dKKIM=
  shopify-shop-domain: your-shop.myshopify.com
  shopify-topic: Article
  shopify-triggered-at: 2026-03-23T16:24:35.267Z
  shopify-webhook-id: 7613956a-18a5-332d-b71e-e164bbcacdba
  ```

* #### Subscribe via app configuration

  ##### shopify.app.toml

  ```toml
  [events]
  api_version = "unstable"

  [[events.subscription]]
  handle = "article-event"

  topic = "Article"
  actions = ["update"]
  triggers = ["article.author"]

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

  query = """
  query article_event_payload($articleId: ID!) {
    article(id: $articleId) {
      id
      title
      handle
      author {
        __typename
      }
    }
  }
  """
  ```

  ##### Payload

  ```json
  {
    "topic": "Article",
    "action": "update",
    "handle": "article-event",
    "data": {
      "article": {
        "id": "gid://shopify/Article/4391931067392",
        "title": "Example article",
        "handle": "example-article",
        "author": {
          "__typename": "ArticleAuthor"
        }
      }
    },
    "fields_changed": {
      "added": [],
      "updated": [
        "article[id: 'gid://shopify/Article/4391931067392'].author"
      ],
      "removed": []
    },
    "query_variables": {
      "articleId": "gid://shopify/Article/4391931067392"
    }
  }
  ```

  ##### Headers

  ```bash
  shopify-action: update
  shopify-api-version: unstable
  shopify-handle: article-event
  shopify-hmac-sha256: 61lWIGuA2nXdHRjhMU/+EDw2y3Eg0mPKJ+RhR7dKKIM=
  shopify-shop-domain: your-shop.myshopify.com
  shopify-topic: Article
  shopify-triggered-at: 2026-03-23T16:24:35.267Z
  shopify-webhook-id: 7613956a-18a5-332d-b71e-e164bbcacdba
  ```

* #### Subscribe via app configuration

  ##### shopify.app.toml

  ```toml
  [events]
  api_version = "unstable"

  [[events.subscription]]
  handle = "article-event"

  topic = "Article"
  actions = ["update"]
  triggers = ["article.blog"]

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

  query = """
  query article_event_payload($articleId: ID!) {
    article(id: $articleId) {
      id
      title
      handle
      blog {
        id
      }
    }
  }
  """
  ```

  ##### Payload

  ```json
  {
    "topic": "Article",
    "action": "update",
    "handle": "article-event",
    "data": {
      "article": {
        "id": "gid://shopify/Article/4391931067392",
        "title": "Example article",
        "handle": "example-article",
        "blog": {
          "id": "gid://shopify/Blog/111"
        }
      }
    },
    "fields_changed": {
      "added": [],
      "updated": [
        "article[id: 'gid://shopify/Article/4391931067392'].blog"
      ],
      "removed": []
    },
    "query_variables": {
      "articleId": "gid://shopify/Article/4391931067392"
    }
  }
  ```

  ##### Headers

  ```bash
  shopify-action: update
  shopify-api-version: unstable
  shopify-handle: article-event
  shopify-hmac-sha256: 61lWIGuA2nXdHRjhMU/+EDw2y3Eg0mPKJ+RhR7dKKIM=
  shopify-shop-domain: your-shop.myshopify.com
  shopify-topic: Article
  shopify-triggered-at: 2026-03-23T16:24:35.267Z
  shopify-webhook-id: 7613956a-18a5-332d-b71e-e164bbcacdba
  ```

* #### Subscribe via app configuration

  ##### shopify.app.toml

  ```toml
  [events]
  api_version = "unstable"

  [[events.subscription]]
  handle = "article-event"

  topic = "Article"
  actions = ["update"]
  triggers = ["article.body"]

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

  query = """
  query article_event_payload($articleId: ID!) {
    article(id: $articleId) {
      id
      title
      handle
      body
    }
  }
  """
  ```

  ##### Payload

  ```json
  {
    "topic": "Article",
    "action": "update",
    "handle": "article-event",
    "data": {
      "article": {
        "id": "gid://shopify/Article/4391931067392",
        "title": "Example article",
        "handle": "example-article",
        "body": "…"
      }
    },
    "fields_changed": {
      "added": [],
      "updated": [
        "article[id: 'gid://shopify/Article/4391931067392'].body"
      ],
      "removed": []
    },
    "query_variables": {
      "articleId": "gid://shopify/Article/4391931067392"
    }
  }
  ```

  ##### Headers

  ```bash
  shopify-action: update
  shopify-api-version: unstable
  shopify-handle: article-event
  shopify-hmac-sha256: 61lWIGuA2nXdHRjhMU/+EDw2y3Eg0mPKJ+RhR7dKKIM=
  shopify-shop-domain: your-shop.myshopify.com
  shopify-topic: Article
  shopify-triggered-at: 2026-03-23T16:24:35.267Z
  shopify-webhook-id: 7613956a-18a5-332d-b71e-e164bbcacdba
  ```

* #### Subscribe via app configuration

  ##### shopify.app.toml

  ```toml
  [events]
  api_version = "unstable"

  [[events.subscription]]
  handle = "article-event"

  topic = "Article"
  actions = ["update"]
  triggers = ["article.handle"]

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

  query = """
  query article_event_payload($articleId: ID!) {
    article(id: $articleId) {
      id
      title
      handle
    }
  }
  """
  ```

  ##### Payload

  ```json
  {
    "topic": "Article",
    "action": "update",
    "handle": "article-event",
    "data": {
      "article": {
        "id": "gid://shopify/Article/4391931067392",
        "title": "Example article",
        "handle": "example-article"
      }
    },
    "fields_changed": {
      "added": [],
      "updated": [
        "article[id: 'gid://shopify/Article/4391931067392'].handle"
      ],
      "removed": []
    },
    "query_variables": {
      "articleId": "gid://shopify/Article/4391931067392"
    }
  }
  ```

  ##### Headers

  ```bash
  shopify-action: update
  shopify-api-version: unstable
  shopify-handle: article-event
  shopify-hmac-sha256: 61lWIGuA2nXdHRjhMU/+EDw2y3Eg0mPKJ+RhR7dKKIM=
  shopify-shop-domain: your-shop.myshopify.com
  shopify-topic: Article
  shopify-triggered-at: 2026-03-23T16:24:35.267Z
  shopify-webhook-id: 7613956a-18a5-332d-b71e-e164bbcacdba
  ```

* #### Subscribe via app configuration

  ##### shopify.app.toml

  ```toml
  [events]
  api_version = "unstable"

  [[events.subscription]]
  handle = "article-event"

  topic = "Article"
  actions = ["update"]
  triggers = ["article.isPublished"]

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

  query = """
  query article_event_payload($articleId: ID!) {
    article(id: $articleId) {
      id
      title
      handle
      isPublished
    }
  }
  """
  ```

  ##### Payload

  ```json
  {
    "topic": "Article",
    "action": "update",
    "handle": "article-event",
    "data": {
      "article": {
        "id": "gid://shopify/Article/4391931067392",
        "title": "Example article",
        "handle": "example-article",
        "isPublished": "…"
      }
    },
    "fields_changed": {
      "added": [],
      "updated": [
        "article[id: 'gid://shopify/Article/4391931067392'].isPublished"
      ],
      "removed": []
    },
    "query_variables": {
      "articleId": "gid://shopify/Article/4391931067392"
    }
  }
  ```

  ##### Headers

  ```bash
  shopify-action: update
  shopify-api-version: unstable
  shopify-handle: article-event
  shopify-hmac-sha256: 61lWIGuA2nXdHRjhMU/+EDw2y3Eg0mPKJ+RhR7dKKIM=
  shopify-shop-domain: your-shop.myshopify.com
  shopify-topic: Article
  shopify-triggered-at: 2026-03-23T16:24:35.267Z
  shopify-webhook-id: 7613956a-18a5-332d-b71e-e164bbcacdba
  ```

* #### Subscribe via app configuration

  ##### shopify.app.toml

  ```toml
  [events]
  api_version = "unstable"

  [[events.subscription]]
  handle = "article-event"

  topic = "Article"
  actions = ["update"]
  triggers = ["article.metafield(namespace: 'custom', key: 'rating').*"]

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

  query = """
  query article_event_payload($articleId: ID!, $metafieldNamespace: String!, $metafieldKey: String!) {
    article(id: $articleId) {
      id
      title
      handle
      metafield(namespace: $metafieldNamespace, key: $metafieldKey) {
        namespace
        key
        value
        type
      }
    }
  }
  """
  ```

  ##### Payload (added)

  ```json
  {
    "topic": "Article",
    "action": "update",
    "handle": "article-event",
    "data": {
      "article": {
        "id": "gid://shopify/Article/4391931067392",
        "title": "Example article",
        "handle": "example-article",
        "metafield": {
          "namespace": "custom",
          "key": "rating",
          "value": "Cotton",
          "type": "single_line_text_field"
        }
      }
    },
    "fields_changed": {
      "added": [
        "article[id: 'gid://shopify/Article/4391931067392'].metafield[namespace: 'custom', key: 'rating']"
      ],
      "updated": [],
      "removed": []
    },
    "query_variables": {
      "articleId": "gid://shopify/Article/4391931067392",
      "metafieldKey": "rating",
      "metafieldNamespace": "custom"
    }
  }
  ```

  ##### Payload (removed)

  ```json
  {
    "topic": "Article",
    "action": "update",
    "handle": "article-event",
    "data": {
      "article": {
        "id": "gid://shopify/Article/4391931067392",
        "title": "Example article",
        "handle": "example-article",
        "metafield": {
          "namespace": "custom",
          "key": "rating",
          "value": "Cotton",
          "type": "single_line_text_field"
        }
      }
    },
    "fields_changed": {
      "added": [],
      "updated": [],
      "removed": [
        "article[id: 'gid://shopify/Article/4391931067392'].metafield[namespace: 'custom', key: 'rating']"
      ]
    },
    "query_variables": {
      "articleId": "gid://shopify/Article/4391931067392",
      "metafieldKey": "rating",
      "metafieldNamespace": "custom"
    }
  }
  ```

  ##### Headers

  ```bash
  shopify-action: update
  shopify-api-version: unstable
  shopify-handle: article-event
  shopify-hmac-sha256: 61lWIGuA2nXdHRjhMU/+EDw2y3Eg0mPKJ+RhR7dKKIM=
  shopify-shop-domain: your-shop.myshopify.com
  shopify-topic: Article
  shopify-triggered-at: 2026-03-23T16:24:35.267Z
  shopify-webhook-id: 7613956a-18a5-332d-b71e-e164bbcacdba
  ```

* #### Subscribe via app configuration

  ##### shopify.app.toml

  ```toml
  [events]
  api_version = "unstable"

  [[events.subscription]]
  handle = "article-event"

  topic = "Article"
  actions = ["update"]
  triggers = ["article.metafield(namespace: 'custom').*"]

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

  query = """
  query article_event_payload($articleId: ID!, $metafieldNamespace: String!, $metafieldKey: String!) {
    article(id: $articleId) {
      id
      title
      handle
      metafield(namespace: $metafieldNamespace, key: $metafieldKey) {
        namespace
        key
        value
        type
      }
    }
  }
  """
  ```

  ##### Payload (added)

  ```json
  {
    "topic": "Article",
    "action": "update",
    "handle": "article-event",
    "data": {
      "article": {
        "id": "gid://shopify/Article/4391931067392",
        "title": "Example article",
        "handle": "example-article",
        "metafield": {
          "namespace": "custom",
          "key": "rating",
          "value": "Cotton",
          "type": "single_line_text_field"
        }
      }
    },
    "fields_changed": {
      "added": [
        "article[id: 'gid://shopify/Article/4391931067392'].metafield[namespace: 'custom', key: 'rating']"
      ],
      "updated": [],
      "removed": []
    },
    "query_variables": {
      "articleId": "gid://shopify/Article/4391931067392",
      "metafieldKey": "rating",
      "metafieldNamespace": "custom"
    }
  }
  ```

  ##### Payload (removed)

  ```json
  {
    "topic": "Article",
    "action": "update",
    "handle": "article-event",
    "data": {
      "article": {
        "id": "gid://shopify/Article/4391931067392",
        "title": "Example article",
        "handle": "example-article",
        "metafield": {
          "namespace": "custom",
          "key": "rating",
          "value": "Cotton",
          "type": "single_line_text_field"
        }
      }
    },
    "fields_changed": {
      "added": [],
      "updated": [],
      "removed": [
        "article[id: 'gid://shopify/Article/4391931067392'].metafield[namespace: 'custom', key: 'rating']"
      ]
    },
    "query_variables": {
      "articleId": "gid://shopify/Article/4391931067392",
      "metafieldKey": "rating",
      "metafieldNamespace": "custom"
    }
  }
  ```

  ##### Headers

  ```bash
  shopify-action: update
  shopify-api-version: unstable
  shopify-handle: article-event
  shopify-hmac-sha256: 61lWIGuA2nXdHRjhMU/+EDw2y3Eg0mPKJ+RhR7dKKIM=
  shopify-shop-domain: your-shop.myshopify.com
  shopify-topic: Article
  shopify-triggered-at: 2026-03-23T16:24:35.267Z
  shopify-webhook-id: 7613956a-18a5-332d-b71e-e164bbcacdba
  ```

* #### Subscribe via app configuration

  ##### shopify.app.toml

  ```toml
  [events]
  api_version = "unstable"

  [[events.subscription]]
  handle = "article-event"

  topic = "Article"
  actions = ["update"]
  triggers = ["article.metafield(namespace: 'custom', key: 'rating').value"]

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

  query = """
  query article_event_payload($articleId: ID!, $metafieldNamespace: String!, $metafieldKey: String!) {
    article(id: $articleId) {
      id
      title
      handle
      metafield(namespace: $metafieldNamespace, key: $metafieldKey) {
        namespace
        key
        value
        type
      }
    }
  }
  """
  ```

  ##### Payload

  ```json
  {
    "topic": "Article",
    "action": "update",
    "handle": "article-event",
    "data": {
      "article": {
        "id": "gid://shopify/Article/4391931067392",
        "title": "Example article",
        "handle": "example-article",
        "metafield": {
          "namespace": "custom",
          "key": "rating",
          "value": "Cotton",
          "type": "single_line_text_field"
        }
      }
    },
    "fields_changed": {
      "added": [],
      "updated": [
        "article[id: 'gid://shopify/Article/4391931067392'].metafield[namespace: 'custom', key: 'rating'].value"
      ],
      "removed": []
    },
    "query_variables": {
      "articleId": "gid://shopify/Article/4391931067392",
      "metafieldKey": "rating",
      "metafieldNamespace": "custom"
    }
  }
  ```

  ##### Headers

  ```bash
  shopify-action: update
  shopify-api-version: unstable
  shopify-handle: article-event
  shopify-hmac-sha256: 61lWIGuA2nXdHRjhMU/+EDw2y3Eg0mPKJ+RhR7dKKIM=
  shopify-shop-domain: your-shop.myshopify.com
  shopify-topic: Article
  shopify-triggered-at: 2026-03-23T16:24:35.267Z
  shopify-webhook-id: 7613956a-18a5-332d-b71e-e164bbcacdba
  ```

* #### Subscribe via app configuration

  ##### shopify.app.toml

  ```toml
  [events]
  api_version = "unstable"

  [[events.subscription]]
  handle = "article-event"

  topic = "Article"
  actions = ["update"]
  triggers = ["article.metafield(namespace: 'custom').value"]

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

  query = """
  query article_event_payload($articleId: ID!, $metafieldNamespace: String!, $metafieldKey: String!) {
    article(id: $articleId) {
      id
      title
      handle
      metafield(namespace: $metafieldNamespace, key: $metafieldKey) {
        namespace
        key
        value
        type
      }
    }
  }
  """
  ```

  ##### Payload

  ```json
  {
    "topic": "Article",
    "action": "update",
    "handle": "article-event",
    "data": {
      "article": {
        "id": "gid://shopify/Article/4391931067392",
        "title": "Example article",
        "handle": "example-article",
        "metafield": {
          "namespace": "custom",
          "key": "rating",
          "value": "Cotton",
          "type": "single_line_text_field"
        }
      }
    },
    "fields_changed": {
      "added": [],
      "updated": [
        "article[id: 'gid://shopify/Article/4391931067392'].metafield[namespace: 'custom', key: 'rating'].value"
      ],
      "removed": []
    },
    "query_variables": {
      "articleId": "gid://shopify/Article/4391931067392",
      "metafieldKey": "rating",
      "metafieldNamespace": "custom"
    }
  }
  ```

  ##### Headers

  ```bash
  shopify-action: update
  shopify-api-version: unstable
  shopify-handle: article-event
  shopify-hmac-sha256: 61lWIGuA2nXdHRjhMU/+EDw2y3Eg0mPKJ+RhR7dKKIM=
  shopify-shop-domain: your-shop.myshopify.com
  shopify-topic: Article
  shopify-triggered-at: 2026-03-23T16:24:35.267Z
  shopify-webhook-id: 7613956a-18a5-332d-b71e-e164bbcacdba
  ```

* #### Subscribe via app configuration

  ##### shopify.app.toml

  ```toml
  [events]
  api_version = "unstable"

  [[events.subscription]]
  handle = "article-event"

  topic = "Article"
  actions = ["update"]
  triggers = ["article.publishedAt"]

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

  query = """
  query article_event_payload($articleId: ID!) {
    article(id: $articleId) {
      id
      title
      handle
      publishedAt
    }
  }
  """
  ```

  ##### Payload

  ```json
  {
    "topic": "Article",
    "action": "update",
    "handle": "article-event",
    "data": {
      "article": {
        "id": "gid://shopify/Article/4391931067392",
        "title": "Example article",
        "handle": "example-article",
        "publishedAt": "…"
      }
    },
    "fields_changed": {
      "added": [],
      "updated": [
        "article[id: 'gid://shopify/Article/4391931067392'].publishedAt"
      ],
      "removed": []
    },
    "query_variables": {
      "articleId": "gid://shopify/Article/4391931067392"
    }
  }
  ```

  ##### Headers

  ```bash
  shopify-action: update
  shopify-api-version: unstable
  shopify-handle: article-event
  shopify-hmac-sha256: 61lWIGuA2nXdHRjhMU/+EDw2y3Eg0mPKJ+RhR7dKKIM=
  shopify-shop-domain: your-shop.myshopify.com
  shopify-topic: Article
  shopify-triggered-at: 2026-03-23T16:24:35.267Z
  shopify-webhook-id: 7613956a-18a5-332d-b71e-e164bbcacdba
  ```

* #### Subscribe via app configuration

  ##### shopify.app.toml

  ```toml
  [events]
  api_version = "unstable"

  [[events.subscription]]
  handle = "article-event"

  topic = "Article"
  actions = ["update"]
  triggers = ["article.summary"]

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

  query = """
  query article_event_payload($articleId: ID!) {
    article(id: $articleId) {
      id
      title
      handle
      summary
    }
  }
  """
  ```

  ##### Payload

  ```json
  {
    "topic": "Article",
    "action": "update",
    "handle": "article-event",
    "data": {
      "article": {
        "id": "gid://shopify/Article/4391931067392",
        "title": "Example article",
        "handle": "example-article",
        "summary": "…"
      }
    },
    "fields_changed": {
      "added": [],
      "updated": [
        "article[id: 'gid://shopify/Article/4391931067392'].summary"
      ],
      "removed": []
    },
    "query_variables": {
      "articleId": "gid://shopify/Article/4391931067392"
    }
  }
  ```

  ##### Headers

  ```bash
  shopify-action: update
  shopify-api-version: unstable
  shopify-handle: article-event
  shopify-hmac-sha256: 61lWIGuA2nXdHRjhMU/+EDw2y3Eg0mPKJ+RhR7dKKIM=
  shopify-shop-domain: your-shop.myshopify.com
  shopify-topic: Article
  shopify-triggered-at: 2026-03-23T16:24:35.267Z
  shopify-webhook-id: 7613956a-18a5-332d-b71e-e164bbcacdba
  ```

* #### Subscribe via app configuration

  ##### shopify.app.toml

  ```toml
  [events]
  api_version = "unstable"

  [[events.subscription]]
  handle = "article-event"

  topic = "Article"
  actions = ["update"]
  triggers = ["article.tags"]

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

  query = """
  query article_event_payload($articleId: ID!) {
    article(id: $articleId) {
      id
      title
      handle
      tags
    }
  }
  """
  ```

  ##### Payload

  ```json
  {
    "topic": "Article",
    "action": "update",
    "handle": "article-event",
    "data": {
      "article": {
        "id": "gid://shopify/Article/4391931067392",
        "title": "Example article",
        "handle": "example-article",
        "tags": [
          "…"
        ]
      }
    },
    "fields_changed": {
      "added": [],
      "updated": [
        "article[id: 'gid://shopify/Article/4391931067392'].tags"
      ],
      "removed": []
    },
    "query_variables": {
      "articleId": "gid://shopify/Article/4391931067392"
    }
  }
  ```

  ##### Headers

  ```bash
  shopify-action: update
  shopify-api-version: unstable
  shopify-handle: article-event
  shopify-hmac-sha256: 61lWIGuA2nXdHRjhMU/+EDw2y3Eg0mPKJ+RhR7dKKIM=
  shopify-shop-domain: your-shop.myshopify.com
  shopify-topic: Article
  shopify-triggered-at: 2026-03-23T16:24:35.267Z
  shopify-webhook-id: 7613956a-18a5-332d-b71e-e164bbcacdba
  ```

* #### Subscribe via app configuration

  ##### shopify.app.toml

  ```toml
  [events]
  api_version = "unstable"

  [[events.subscription]]
  handle = "article-event"

  topic = "Article"
  actions = ["update"]
  triggers = ["article.templateSuffix"]

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

  query = """
  query article_event_payload($articleId: ID!) {
    article(id: $articleId) {
      id
      title
      handle
      templateSuffix
    }
  }
  """
  ```

  ##### Payload

  ```json
  {
    "topic": "Article",
    "action": "update",
    "handle": "article-event",
    "data": {
      "article": {
        "id": "gid://shopify/Article/4391931067392",
        "title": "Example article",
        "handle": "example-article",
        "templateSuffix": "…"
      }
    },
    "fields_changed": {
      "added": [],
      "updated": [
        "article[id: 'gid://shopify/Article/4391931067392'].templateSuffix"
      ],
      "removed": []
    },
    "query_variables": {
      "articleId": "gid://shopify/Article/4391931067392"
    }
  }
  ```

  ##### Headers

  ```bash
  shopify-action: update
  shopify-api-version: unstable
  shopify-handle: article-event
  shopify-hmac-sha256: 61lWIGuA2nXdHRjhMU/+EDw2y3Eg0mPKJ+RhR7dKKIM=
  shopify-shop-domain: your-shop.myshopify.com
  shopify-topic: Article
  shopify-triggered-at: 2026-03-23T16:24:35.267Z
  shopify-webhook-id: 7613956a-18a5-332d-b71e-e164bbcacdba
  ```

* #### Subscribe via app configuration

  ##### shopify.app.toml

  ```toml
  [events]
  api_version = "unstable"

  [[events.subscription]]
  handle = "article-event"

  topic = "Article"
  actions = ["update"]
  triggers = ["article.title"]

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

  query = """
  query article_event_payload($articleId: ID!) {
    article(id: $articleId) {
      id
      title
      handle
    }
  }
  """
  ```

  ##### Payload

  ```json
  {
    "topic": "Article",
    "action": "update",
    "handle": "article-event",
    "data": {
      "article": {
        "id": "gid://shopify/Article/4391931067392",
        "title": "Example article",
        "handle": "example-article"
      }
    },
    "fields_changed": {
      "added": [],
      "updated": [
        "article[id: 'gid://shopify/Article/4391931067392'].title"
      ],
      "removed": []
    },
    "query_variables": {
      "articleId": "gid://shopify/Article/4391931067392"
    }
  }
  ```

  ##### Headers

  ```bash
  shopify-action: update
  shopify-api-version: unstable
  shopify-handle: article-event
  shopify-hmac-sha256: 61lWIGuA2nXdHRjhMU/+EDw2y3Eg0mPKJ+RhR7dKKIM=
  shopify-shop-domain: your-shop.myshopify.com
  shopify-topic: Article
  shopify-triggered-at: 2026-03-23T16:24:35.267Z
  shopify-webhook-id: 7613956a-18a5-332d-b71e-e164bbcacdba
  ```

***
