---
title: >-
  Updates to Events payloads and subscription configuration - Shopify developer
  changelog
description: >-
  Shopify’s developer changelog documents all changes to Shopify’s platform.
  Find the latest news and learn about new platform opportunities.
source_url:
  html: >-
    https://shopify.dev/changelog/updates-to-events-payloads-and-subscription-configuration
  md: >-
    https://shopify.dev/changelog/updates-to-events-payloads-and-subscription-configuration.md
metadata:
  effectiveApiVersion: ''
  affectedApi:
    - displayName: Events & webhooks
      handle: webhook
  primaryTag:
    displayName: API
    handle: api
  secondaryTag:
    displayName: Update
    handle: update
  indicatesActionRequired: true
  createdAt: '2026-09-14T09:46:35-04:00'
  postedAt: '2026-09-16T14:00:00-04:00'
  updatedAt: '2026-09-16T13:46:58-04:00'
  effectiveAt: '2026-09-16T10:00:00-04:00'
---

September 16, 2026

# Updates to Events payloads and subscription configuration

DateSeptember 16, 2026

FlagsUpdate[Action required](https://shopify.dev/changelog?action_required=true)

SurfacesAPI

Affected APIs[Events & webhooks](https://shopify.dev/changelog?api_type=webhook)

Starting today, we're updating [Events](https://shopify.dev/docs/apps/build/events) payloads, trigger syntax, and delivery headers. Classic Webhook subscriptions are unaffected.

## What's changed

### `fields_changed` now describes how each path changed

The flat array becomes an object containing three arrays: `added`, `updated`, and `removed`.

Developers can distinguish a resource or relationship being added, a value being updated, or a resource or relationship being removed without querying just to infer what happened.

Update payload handling to read `fields_changed.added`, `fields_changed.updated`, and `fields_changed.removed`. Adding a variant to a Product, for example, keeps the Product's `action` as `update` and places the variant path in `fields_changed.added`.

Before:

```json
{
   "topic": "Product",
   "action": "update",
   "fields_changed": [
     "product[id: 'gid://shopify/Product/123'].variants[id: 'gid://shopify/ProductVariant/456']"
   ]
}
```

After:

```json
{
   "topic": "Product",
   "action": "update",
   "fields_changed": {
      "added": [
        "product[id: 'gid://shopify/Product/123'].variants[id: 'gid://shopify/ProductVariant/456']"
      ],
      "updated": [],
      "removed": []
   }
}
```

### Parent triggers use an explicit wildcard

To subscribe to all supported fields below a parent path, use a terminal `.*`, such as `triggers = ["product.variants.*"]`.

Leaf triggers such as `product.variants.price` remain unchanged. Existing subscriptions continue to work, but you must update parent triggers to the new syntax the next time you deploy `shopify.app.toml`. The syntax change preserves matching behavior and event volume for equivalent subscriptions.

Before:

```toml
triggers = [
    "product.variants",
    "product.options.optionValues.swatch"
 ]
```

After:

```toml
triggers = [
    "product.variants.*",
    "product.options.optionValues.swatch.*"
]
```

### Two redundant delivery headers are removed

Events deliveries no longer include `shopify-event-id` or `shopify-resource-id`.

Update your Shopify API packages to their latest versions, which handle this change. If your own code reads these headers or requires them for validation, remove that dependency.

### `triggers` are now required

Event subscriptions with the `update` action require at least one trigger to be present. Existing subscriptions will continue to work as expected.

## What to do

Review the [migration steps and examples in the community post](https://community.shopify.dev/t/upcoming-changes-to-events/37537), and share any questions or feedback in the thread.
