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

# Customer

**Requires `read_customers` access scope.:**

Supported [actions](https://shopify.dev/docs/apps/build/events/subscribe#actions): `create`, `update`, `delete`

Subscribe to field-level changes on the [`Customer`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Customer) GraphQL Admin API object.

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 = "2026-10"


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


topic = "Customer"
actions = ["update"]
triggers = ["customer.addressesV2.*"]


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


query = """
query customer_event_payload($customerId: ID!) {
  customer(id: $customerId) {
    id
    displayName
    email
    state
    addressesV2(first: 10) {
      nodes {
        id
      }
    }
  }
}
"""
```

***

## Supported triggers

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

All triggers require the `read_customers` 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 [`Customer`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Customer). They can query the full GraphQL Admin API.

### customer​.\*[](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Customer)

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

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

**Variables:** `customerId`

### customer​.addressesV2​.\*[](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Customer#field-Customer.fields.addressesV2)

Fires when the [`addressesV2`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Customer#field-Customer.fields.addressesV2) field on the [`Customer`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Customer) object changes.

`customer.addressesV2.*` is a parent trigger. Subscribing with the `"update"` action receives events for all supported triggers under `customer.addressesV2`, 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 `addressesV2` field represents the addresses associated with the customer.

**Variables:** `addressesV2Id`, `customerId`

### customer​.addressesV2​.address1[](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/MailingAddress#field-MailingAddress.fields.address1)

Fires when the [`address1`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/MailingAddress#field-MailingAddress.fields.address1) field on the [`MailingAddress`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/MailingAddress) 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 `address1` field represents the first line of the address.

**Variables:** `addressesV2Id`, `customerId`

### customer​.addressesV2​.address2[](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/MailingAddress#field-MailingAddress.fields.address2)

Fires when the [`address2`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/MailingAddress#field-MailingAddress.fields.address2) field on the [`MailingAddress`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/MailingAddress) 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 `address2` field represents the second line of the address.

**Variables:** `addressesV2Id`, `customerId`

### customer​.addressesV2​.city[](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/MailingAddress#field-MailingAddress.fields.city)

Fires when the [`city`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/MailingAddress#field-MailingAddress.fields.city) field on the [`MailingAddress`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/MailingAddress) 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 `city` field represents the name of the city, district, village, or town.

**Variables:** `addressesV2Id`, `customerId`

### customer​.addressesV2​.company[](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/MailingAddress#field-MailingAddress.fields.company)

Fires when the [`company`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/MailingAddress#field-MailingAddress.fields.company) field on the [`MailingAddress`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/MailingAddress) 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 `company` field represents the name of the customer's company or organization.

**Variables:** `addressesV2Id`, `customerId`

### customer​.addressesV2​.countryCodeV2[](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/MailingAddress#field-MailingAddress.fields.countryCodeV2)

Fires when the [`countryCodeV2`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/MailingAddress#field-MailingAddress.fields.countryCodeV2) field on the [`MailingAddress`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/MailingAddress) 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 `countryCodeV2` field represents the two-letter code for the country of the address.

**Variables:** `addressesV2Id`, `customerId`

### customer​.addressesV2​.firstName[](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/MailingAddress#field-MailingAddress.fields.firstName)

Fires when the [`firstName`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/MailingAddress#field-MailingAddress.fields.firstName) field on the [`MailingAddress`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/MailingAddress) 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 `firstName` field represents the first name of the customer.

**Variables:** `addressesV2Id`, `customerId`

### customer​.addressesV2​.lastName[](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/MailingAddress#field-MailingAddress.fields.lastName)

Fires when the [`lastName`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/MailingAddress#field-MailingAddress.fields.lastName) field on the [`MailingAddress`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/MailingAddress) 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 `lastName` field represents the last name of the customer.

**Variables:** `addressesV2Id`, `customerId`

### customer​.addressesV2​.latitude[](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/MailingAddress#field-MailingAddress.fields.latitude)

Fires when the [`latitude`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/MailingAddress#field-MailingAddress.fields.latitude) field on the [`MailingAddress`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/MailingAddress) 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 `latitude` field represents the latitude coordinate of the customer address.

**Variables:** `addressesV2Id`, `customerId`

### customer​.addressesV2​.longitude[](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/MailingAddress#field-MailingAddress.fields.longitude)

Fires when the [`longitude`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/MailingAddress#field-MailingAddress.fields.longitude) field on the [`MailingAddress`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/MailingAddress) 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 `longitude` field represents the longitude coordinate of the customer address.

**Variables:** `addressesV2Id`, `customerId`

### customer​.addressesV2​.phone[](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/MailingAddress#field-MailingAddress.fields.phone)

Fires when the [`phone`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/MailingAddress#field-MailingAddress.fields.phone) field on the [`MailingAddress`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/MailingAddress) 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 `phone` field represents a unique phone number for the customer.

**Variables:** `addressesV2Id`, `customerId`

### customer​.addressesV2​.provinceCode[](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/MailingAddress#field-MailingAddress.fields.provinceCode)

Fires when the [`provinceCode`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/MailingAddress#field-MailingAddress.fields.provinceCode) field on the [`MailingAddress`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/MailingAddress) 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 `provinceCode` field represents the alphanumeric code for the region.

**Variables:** `addressesV2Id`, `customerId`

### customer​.addressesV2​.zip[](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/MailingAddress#field-MailingAddress.fields.zip)

Fires when the [`zip`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/MailingAddress#field-MailingAddress.fields.zip) field on the [`MailingAddress`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/MailingAddress) 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 `zip` field represents the zip or postal code of the address.

**Variables:** `addressesV2Id`, `customerId`

### customer​.amountSpent[](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Customer#field-Customer.fields.amountSpent)

Fires when the [`amountSpent`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Customer#field-Customer.fields.amountSpent) field on the [`Customer`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Customer) 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 `amountSpent` field represents the total amount that the customer has spent on orders in their lifetime.

**Variables:** `customerId`

### customer​.dataSaleOptOut[](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Customer#field-Customer.fields.dataSaleOptOut)

Fires when the [`dataSaleOptOut`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Customer#field-Customer.fields.dataSaleOptOut) field on the [`Customer`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Customer) 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 `dataSaleOptOut` field indicates whether the customer has opted out of having their data sold.

**Variables:** `customerId`

### customer​.defaultAddress[](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Customer#field-Customer.fields.defaultAddress)

Fires when the [`defaultAddress`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Customer#field-Customer.fields.defaultAddress) field on the [`Customer`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Customer) 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 `defaultAddress` field represents the default address associated with the customer.

**Variables:** `customerId`

### customer​.defaultEmailAddress​.\*[](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Customer#field-Customer.fields.defaultEmailAddress)

Fires when the [`defaultEmailAddress`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Customer#field-Customer.fields.defaultEmailAddress) field on the [`Customer`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Customer) object changes.

`customer.defaultEmailAddress.*` is a parent trigger. Subscribing with the `"update"` action receives events for all supported triggers under `customer.defaultEmailAddress`, 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 `defaultEmailAddress` field represents the customer's default email address.

**Variables:** `customerId`

### customer​.defaultEmailAddress​.marketingOptInLevel[](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/CustomerEmailAddress#field-CustomerEmailAddress.fields.marketingOptInLevel)

Fires when the [`marketingOptInLevel`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/CustomerEmailAddress#field-CustomerEmailAddress.fields.marketingOptInLevel) field on the [`CustomerEmailAddress`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/CustomerEmailAddress) 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 `marketingOptInLevel` field represents the marketing subscription opt-in level, as described by the M3AAWG best practices guidelines, received when the marketing consent was updated.

**Variables:** `customerId`

### customer​.defaultEmailAddress​.marketingState[](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/CustomerEmailAddress#field-CustomerEmailAddress.fields.marketingState)

Fires when the [`marketingState`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/CustomerEmailAddress#field-CustomerEmailAddress.fields.marketingState) field on the [`CustomerEmailAddress`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/CustomerEmailAddress) 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 `marketingState` field indicates whether the customer has subscribed to email marketing.

**Variables:** `customerId`

### customer​.defaultEmailAddress​.marketingUpdatedAt[](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/CustomerEmailAddress#field-CustomerEmailAddress.fields.marketingUpdatedAt)

Fires when the [`marketingUpdatedAt`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/CustomerEmailAddress#field-CustomerEmailAddress.fields.marketingUpdatedAt) field on the [`CustomerEmailAddress`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/CustomerEmailAddress) 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 `marketingUpdatedAt` field represents the date and time at which the marketing consent was updated.

**Variables:** `customerId`

### customer​.defaultEmailAddress​.openTrackingLevel[](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/CustomerEmailAddress#field-CustomerEmailAddress.fields.openTrackingLevel)

Fires when the [`openTrackingLevel`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/CustomerEmailAddress#field-CustomerEmailAddress.fields.openTrackingLevel) field on the [`CustomerEmailAddress`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/CustomerEmailAddress) 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 `openTrackingLevel` field indicates whether the customer has opted in to having their opened emails tracked.

**Variables:** `customerId`

### customer​.defaultEmailAddress​.sourceLocation[](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/CustomerEmailAddress#field-CustomerEmailAddress.fields.sourceLocation)

Fires when the [`sourceLocation`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/CustomerEmailAddress#field-CustomerEmailAddress.fields.sourceLocation) field on the [`CustomerEmailAddress`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/CustomerEmailAddress) 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 `sourceLocation` field represents the location where the customer consented to receive marketing material by email.

**Variables:** `customerId`

### customer​.defaultPhoneNumber​.\*[](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Customer#field-Customer.fields.defaultPhoneNumber)

Fires when the [`defaultPhoneNumber`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Customer#field-Customer.fields.defaultPhoneNumber) field on the [`Customer`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Customer) object changes.

`customer.defaultPhoneNumber.*` is a parent trigger. Subscribing with the `"update"` action receives events for all supported triggers under `customer.defaultPhoneNumber`, 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 `defaultPhoneNumber` field represents the customer's default phone number.

**Variables:** `customerId`

### customer​.defaultPhoneNumber​.smsMarketingConsent​.\*[](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/CustomerPhoneNumber#field-CustomerPhoneNumber.fields.smsMarketingConsent)

Fires when the [`smsMarketingConsent`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/CustomerPhoneNumber#field-CustomerPhoneNumber.fields.smsMarketingConsent) field on the [`CustomerPhoneNumber`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/CustomerPhoneNumber) object changes.

`customer.defaultPhoneNumber.smsMarketingConsent.*` is a parent trigger. Subscribing with the `"update"` action receives events for all supported triggers under `customer.defaultPhoneNumber.smsMarketingConsent`, 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 `smsMarketingConsent` field represents the SMS marketing consent information for the customer's phone number.

**Variables:** `customerId`

### customer​.defaultPhoneNumber​.smsMarketingConsent​.optInLevel[](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/CustomerSmsMarketingConsent#field-CustomerSmsMarketingConsent.fields.optInLevel)

Fires when the [`optInLevel`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/CustomerSmsMarketingConsent#field-CustomerSmsMarketingConsent.fields.optInLevel) field on the [`CustomerSmsMarketingConsent`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/CustomerSmsMarketingConsent) 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 `optInLevel` field represents the marketing subscription opt-in level that was set when the customer's marketing consent was last updated.

**Variables:** `customerId`

### customer​.defaultPhoneNumber​.smsMarketingConsent​.sourceLocation[](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/CustomerSmsMarketingConsent#field-CustomerSmsMarketingConsent.fields.sourceLocation)

Fires when the [`sourceLocation`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/CustomerSmsMarketingConsent#field-CustomerSmsMarketingConsent.fields.sourceLocation) field on the [`CustomerSmsMarketingConsent`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/CustomerSmsMarketingConsent) 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 `sourceLocation` field represents the location where the customer consented to receive marketing material.

**Variables:** `customerId`

### customer​.defaultPhoneNumber​.smsMarketingConsent​.state[](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/CustomerSmsMarketingConsent#field-CustomerSmsMarketingConsent.fields.state)

Fires when the [`state`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/CustomerSmsMarketingConsent#field-CustomerSmsMarketingConsent.fields.state) field on the [`CustomerSmsMarketingConsent`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/CustomerSmsMarketingConsent) 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 `state` field represents the customer's current marketing consent state for this channel.

**Variables:** `customerId`

### customer​.defaultPhoneNumber​.smsMarketingConsent​.updatedAt[](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/CustomerSmsMarketingConsent#field-CustomerSmsMarketingConsent.fields.updatedAt)

Fires when the [`updatedAt`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/CustomerSmsMarketingConsent#field-CustomerSmsMarketingConsent.fields.updatedAt) field on the [`CustomerSmsMarketingConsent`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/CustomerSmsMarketingConsent) 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 `updatedAt` field represents the date and time when the marketing consent was updated.

**Variables:** `customerId`

### customer​.firstName[](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Customer#field-Customer.fields.firstName)

Fires when the [`firstName`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Customer#field-Customer.fields.firstName) field on the [`Customer`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Customer) 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 `firstName` field represents the customer's first name.

**Variables:** `customerId`

### customer​.image[](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Customer#field-Customer.fields.image)

Fires when the [`image`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Customer#field-Customer.fields.image) field on the [`Customer`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Customer) 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 `image` field represents the image associated with the customer.

**Variables:** `customerId`

### customer​.lastName[](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Customer#field-Customer.fields.lastName)

Fires when the [`lastName`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Customer#field-Customer.fields.lastName) field on the [`Customer`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Customer) 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 `lastName` field represents the customer's last name.

**Variables:** `customerId`

### customer​.lastOrder[](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Customer#field-Customer.fields.lastOrder)

Fires when the [`lastOrder`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Customer#field-Customer.fields.lastOrder) field on the [`Customer`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Customer) 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 `lastOrder` field represents the customer's last order.

**Variables:** `customerId`

### customer​.locale[](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Customer#field-Customer.fields.locale)

Fires when the [`locale`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Customer#field-Customer.fields.locale) field on the [`Customer`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Customer) 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 `locale` field represents the customer's locale.

**Variables:** `customerId`

### customer​.metafield(namespace: String!, key: String!)​.\*[](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Customer#field-Customer.fields.metafield)

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

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

### customer​.metafield(namespace: String!)​.\*[](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Customer#field-Customer.fields.metafield)

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

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

### customer​.metafield(namespace: String!, key: String!)​.value[](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Metafield#field-Metafield.fields.value)

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

### customer​.metafield(namespace: String!)​.value[](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Metafield#field-Metafield.fields.value)

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

### customer​.multipassIdentifier[](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Customer#field-Customer.fields.multipassIdentifier)

Fires when the [`multipassIdentifier`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Customer#field-Customer.fields.multipassIdentifier) field on the [`Customer`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Customer) 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 `multipassIdentifier` field represents a unique identifier for the customer that's used with Multipass login.

**Variables:** `customerId`

### customer​.note[](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Customer#field-Customer.fields.note)

Fires when the [`note`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Customer#field-Customer.fields.note) field on the [`Customer`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Customer) 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 `note` field represents a note about the customer.

**Variables:** `customerId`

### customer​.numberOfOrders[](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Customer#field-Customer.fields.numberOfOrders)

Fires when the [`numberOfOrders`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Customer#field-Customer.fields.numberOfOrders) field on the [`Customer`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Customer) 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 `numberOfOrders` field represents the number of orders that the customer has made at the store in their lifetime.

**Variables:** `customerId`

### customer​.productSubscriberStatus[](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Customer#field-Customer.fields.productSubscriberStatus)

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

Possible subscriber states of a customer defined by their subscription contracts.

**Variables:** `customerId`

### customer​.state[](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Customer#field-Customer.fields.state)

Fires when the [`state`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Customer#field-Customer.fields.state) field on the [`Customer`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Customer) 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 `state` field represents the state of the customer's account with the shop.

**Variables:** `customerId`

### customer​.tags[](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Customer#field-Customer.fields.tags)

Fires when the [`tags`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Customer#field-Customer.fields.tags) field on the [`Customer`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Customer) 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 that have been added to the customer.

**Variables:** `customerId`

### customer​.taxExempt[](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Customer#field-Customer.fields.taxExempt)

Fires when the [`taxExempt`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Customer#field-Customer.fields.taxExempt) field on the [`Customer`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Customer) 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 `taxExempt` field indicates whether the customer is exempt from being charged taxes on their orders.

**Variables:** `customerId`

### customer​.taxExemptions[](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Customer#field-Customer.fields.taxExemptions)

Fires when the [`taxExemptions`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Customer#field-Customer.fields.taxExemptions) field on the [`Customer`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Customer) 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 `taxExemptions` field represents the list of tax exemptions applied to the customer.

**Variables:** `customerId`

### customer​.verifiedEmail[](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Customer#field-Customer.fields.verifiedEmail)

Fires when the [`verifiedEmail`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Customer#field-Customer.fields.verifiedEmail) field on the [`Customer`](https://shopify.dev/docs/api/admin-graphql/2026-10/objects/Customer) 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 `verifiedEmail` field indicates whether the customer has verified their email address.

**Variables:** `customerId`

### Examples

* #### Subscribe via app configuration

  ##### shopify.app.toml

  ```toml
  [events]
  api_version = "2026-10"

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

  topic = "Customer"
  actions = ["create","update","delete"]
  triggers = ["customer.*"]

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

  query = """
  query customer_details($customerId: ID!) {
    customer(id: $customerId) {
      id
      displayName
      email
      state
    }
  }
  """
  ```

  ##### Payload (added)

  ```json
  {
    "topic": "Customer",
    "action": "create",
    "handle": "customer-event",
    "data": {
      "customer": {
        "id": "gid://shopify/Customer/5723780017102",
        "displayName": "Example customer",
        "email": "customer@example.com",
        "state": "ENABLED"
      }
    },
    "fields_changed": {
      "added": [
        "customer[id: 'gid://shopify/Customer/5723780017102']"
      ],
      "updated": [],
      "removed": []
    },
    "query_variables": {
      "customerId": "gid://shopify/Customer/5723780017102"
    }
  }
  ```

  ##### Payload (updated)

  ```json
  {
    "topic": "Customer",
    "action": "update",
    "handle": "customer-event",
    "data": {
      "customer": {
        "id": "gid://shopify/Customer/5723780017102",
        "displayName": "Example customer",
        "email": "customer@example.com",
        "state": "ENABLED"
      }
    },
    "fields_changed": {
      "added": [],
      "updated": [
        "customer[id: 'gid://shopify/Customer/5723780017102'].addressesV2[id: 'gid://shopify/MailingAddress/7039999190835'].address1"
      ],
      "removed": []
    },
    "query_variables": {
      "customerId": "gid://shopify/Customer/5723780017102"
    }
  }
  ```

  ##### Payload (removed)

  ```json
  {
    "topic": "Customer",
    "action": "delete",
    "handle": "customer-event",
    "data": {
      "customer": null
    },
    "fields_changed": {
      "added": [],
      "updated": [],
      "removed": [
        "customer[id: 'gid://shopify/Customer/5723780017102']"
      ]
    },
    "query_variables": {
      "customerId": "gid://shopify/Customer/5723780017102"
    }
  }
  ```

  ##### Headers

  ```bash
  shopify-action: update # or create, delete
  shopify-api-version: 2026-10
  shopify-handle: customer-event
  shopify-hmac-sha256: 61lWIGuA2nXdHRjhMU/+EDw2y3Eg0mPKJ+RhR7dKKIM=
  shopify-shop-domain: your-shop.myshopify.com
  shopify-topic: Customer
  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 = "2026-10"

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

  topic = "Customer"
  actions = ["update"]
  triggers = ["customer.addressesV2.*"]

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

  query = """
  query customer_event_payload($customerId: ID!) {
    customer(id: $customerId) {
      id
      displayName
      email
      state
      addressesV2(first: 10) {
        nodes {
          id
        }
      }
    }
  }
  """

  # Optional
  query_filter = "customer.state:'ENABLED'"
  ```

  ##### Payload (added)

  ```json
  {
    "topic": "Customer",
    "action": "update",
    "handle": "customer-event",
    "data": {
      "customer": {
        "id": "gid://shopify/Customer/5723780017102",
        "displayName": "Example customer",
        "email": "customer@example.com",
        "state": "ENABLED",
        "addressesV2": {
          "nodes": [
            {
              "id": "gid://shopify/MailingAddress/7039999190835"
            }
          ]
        }
      }
    },
    "fields_changed": {
      "added": [
        "customer[id: 'gid://shopify/Customer/5723780017102'].addressesV2[id: 'gid://shopify/MailingAddress/7039999190835']"
      ],
      "updated": [],
      "removed": []
    },
    "query_variables": {
      "addressesV2Id": "gid://shopify/MailingAddress/7039999190835",
      "customerId": "gid://shopify/Customer/5723780017102"
    }
  }
  ```

  ##### Payload (removed)

  ```json
  {
    "topic": "Customer",
    "action": "update",
    "handle": "customer-event",
    "data": {
      "customer": {
        "id": "gid://shopify/Customer/5723780017102",
        "displayName": "Example customer",
        "email": "customer@example.com",
        "state": "ENABLED",
        "addressesV2": {
          "nodes": [
            {
              "id": "gid://shopify/MailingAddress/111"
            }
          ]
        }
      }
    },
    "fields_changed": {
      "added": [],
      "updated": [],
      "removed": [
        "customer[id: 'gid://shopify/Customer/5723780017102'].addressesV2[id: 'gid://shopify/MailingAddress/7039999190835']"
      ]
    },
    "query_variables": {
      "addressesV2Id": "gid://shopify/MailingAddress/7039999190835",
      "customerId": "gid://shopify/Customer/5723780017102"
    }
  }
  ```

  ##### Headers

  ```bash
  shopify-action: update
  shopify-api-version: 2026-10
  shopify-handle: customer-event
  shopify-hmac-sha256: 61lWIGuA2nXdHRjhMU/+EDw2y3Eg0mPKJ+RhR7dKKIM=
  shopify-shop-domain: your-shop.myshopify.com
  shopify-topic: Customer
  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 = "2026-10"

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

  topic = "Customer"
  actions = ["update"]
  triggers = ["customer.addressesV2.address1"]

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

  query = """
  query customer_event_payload($customerId: ID!) {
    customer(id: $customerId) {
      id
      displayName
      email
      state
      addressesV2(first: 10) {
        nodes {
          address1
        }
      }
    }
  }
  """

  # Optional
  query_filter = "customer.state:'ENABLED'"
  ```

  ##### Payload

  ```json
  {
    "topic": "Customer",
    "action": "update",
    "handle": "customer-event",
    "data": {
      "customer": {
        "id": "gid://shopify/Customer/5723780017102",
        "displayName": "Example customer",
        "email": "customer@example.com",
        "state": "ENABLED",
        "addressesV2": {
          "nodes": [
            {
              "address1": "…"
            }
          ]
        }
      }
    },
    "fields_changed": {
      "added": [],
      "updated": [
        "customer[id: 'gid://shopify/Customer/5723780017102'].addressesV2[id: 'gid://shopify/MailingAddress/7039999190835'].address1"
      ],
      "removed": []
    },
    "query_variables": {
      "addressesV2Id": "gid://shopify/MailingAddress/7039999190835",
      "customerId": "gid://shopify/Customer/5723780017102"
    }
  }
  ```

  ##### Headers

  ```bash
  shopify-action: update
  shopify-api-version: 2026-10
  shopify-handle: customer-event
  shopify-hmac-sha256: 61lWIGuA2nXdHRjhMU/+EDw2y3Eg0mPKJ+RhR7dKKIM=
  shopify-shop-domain: your-shop.myshopify.com
  shopify-topic: Customer
  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 = "2026-10"

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

  topic = "Customer"
  actions = ["update"]
  triggers = ["customer.addressesV2.address2"]

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

  query = """
  query customer_event_payload($customerId: ID!) {
    customer(id: $customerId) {
      id
      displayName
      email
      state
      addressesV2(first: 10) {
        nodes {
          address2
        }
      }
    }
  }
  """

  # Optional
  query_filter = "customer.state:'ENABLED'"
  ```

  ##### Payload

  ```json
  {
    "topic": "Customer",
    "action": "update",
    "handle": "customer-event",
    "data": {
      "customer": {
        "id": "gid://shopify/Customer/5723780017102",
        "displayName": "Example customer",
        "email": "customer@example.com",
        "state": "ENABLED",
        "addressesV2": {
          "nodes": [
            {
              "address2": "…"
            }
          ]
        }
      }
    },
    "fields_changed": {
      "added": [],
      "updated": [
        "customer[id: 'gid://shopify/Customer/5723780017102'].addressesV2[id: 'gid://shopify/MailingAddress/7039999190835'].address2"
      ],
      "removed": []
    },
    "query_variables": {
      "addressesV2Id": "gid://shopify/MailingAddress/7039999190835",
      "customerId": "gid://shopify/Customer/5723780017102"
    }
  }
  ```

  ##### Headers

  ```bash
  shopify-action: update
  shopify-api-version: 2026-10
  shopify-handle: customer-event
  shopify-hmac-sha256: 61lWIGuA2nXdHRjhMU/+EDw2y3Eg0mPKJ+RhR7dKKIM=
  shopify-shop-domain: your-shop.myshopify.com
  shopify-topic: Customer
  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 = "2026-10"

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

  topic = "Customer"
  actions = ["update"]
  triggers = ["customer.addressesV2.city"]

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

  query = """
  query customer_event_payload($customerId: ID!) {
    customer(id: $customerId) {
      id
      displayName
      email
      state
      addressesV2(first: 10) {
        nodes {
          city
        }
      }
    }
  }
  """

  # Optional
  query_filter = "customer.state:'ENABLED'"
  ```

  ##### Payload

  ```json
  {
    "topic": "Customer",
    "action": "update",
    "handle": "customer-event",
    "data": {
      "customer": {
        "id": "gid://shopify/Customer/5723780017102",
        "displayName": "Example customer",
        "email": "customer@example.com",
        "state": "ENABLED",
        "addressesV2": {
          "nodes": [
            {
              "city": "…"
            }
          ]
        }
      }
    },
    "fields_changed": {
      "added": [],
      "updated": [
        "customer[id: 'gid://shopify/Customer/5723780017102'].addressesV2[id: 'gid://shopify/MailingAddress/7039999190835'].city"
      ],
      "removed": []
    },
    "query_variables": {
      "addressesV2Id": "gid://shopify/MailingAddress/7039999190835",
      "customerId": "gid://shopify/Customer/5723780017102"
    }
  }
  ```

  ##### Headers

  ```bash
  shopify-action: update
  shopify-api-version: 2026-10
  shopify-handle: customer-event
  shopify-hmac-sha256: 61lWIGuA2nXdHRjhMU/+EDw2y3Eg0mPKJ+RhR7dKKIM=
  shopify-shop-domain: your-shop.myshopify.com
  shopify-topic: Customer
  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 = "2026-10"

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

  topic = "Customer"
  actions = ["update"]
  triggers = ["customer.addressesV2.company"]

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

  query = """
  query customer_event_payload($customerId: ID!) {
    customer(id: $customerId) {
      id
      displayName
      email
      state
      addressesV2(first: 10) {
        nodes {
          company
        }
      }
    }
  }
  """

  # Optional
  query_filter = "customer.state:'ENABLED'"
  ```

  ##### Payload

  ```json
  {
    "topic": "Customer",
    "action": "update",
    "handle": "customer-event",
    "data": {
      "customer": {
        "id": "gid://shopify/Customer/5723780017102",
        "displayName": "Example customer",
        "email": "customer@example.com",
        "state": "ENABLED",
        "addressesV2": {
          "nodes": [
            {
              "company": "…"
            }
          ]
        }
      }
    },
    "fields_changed": {
      "added": [],
      "updated": [
        "customer[id: 'gid://shopify/Customer/5723780017102'].addressesV2[id: 'gid://shopify/MailingAddress/7039999190835'].company"
      ],
      "removed": []
    },
    "query_variables": {
      "addressesV2Id": "gid://shopify/MailingAddress/7039999190835",
      "customerId": "gid://shopify/Customer/5723780017102"
    }
  }
  ```

  ##### Headers

  ```bash
  shopify-action: update
  shopify-api-version: 2026-10
  shopify-handle: customer-event
  shopify-hmac-sha256: 61lWIGuA2nXdHRjhMU/+EDw2y3Eg0mPKJ+RhR7dKKIM=
  shopify-shop-domain: your-shop.myshopify.com
  shopify-topic: Customer
  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 = "2026-10"

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

  topic = "Customer"
  actions = ["update"]
  triggers = ["customer.addressesV2.countryCodeV2"]

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

  query = """
  query customer_event_payload($customerId: ID!) {
    customer(id: $customerId) {
      id
      displayName
      email
      state
      addressesV2(first: 10) {
        nodes {
          countryCodeV2
        }
      }
    }
  }
  """

  # Optional
  query_filter = "customer.state:'ENABLED'"
  ```

  ##### Payload

  ```json
  {
    "topic": "Customer",
    "action": "update",
    "handle": "customer-event",
    "data": {
      "customer": {
        "id": "gid://shopify/Customer/5723780017102",
        "displayName": "Example customer",
        "email": "customer@example.com",
        "state": "ENABLED",
        "addressesV2": {
          "nodes": [
            {
              "countryCodeV2": "…"
            }
          ]
        }
      }
    },
    "fields_changed": {
      "added": [],
      "updated": [
        "customer[id: 'gid://shopify/Customer/5723780017102'].addressesV2[id: 'gid://shopify/MailingAddress/7039999190835'].countryCodeV2"
      ],
      "removed": []
    },
    "query_variables": {
      "addressesV2Id": "gid://shopify/MailingAddress/7039999190835",
      "customerId": "gid://shopify/Customer/5723780017102"
    }
  }
  ```

  ##### Headers

  ```bash
  shopify-action: update
  shopify-api-version: 2026-10
  shopify-handle: customer-event
  shopify-hmac-sha256: 61lWIGuA2nXdHRjhMU/+EDw2y3Eg0mPKJ+RhR7dKKIM=
  shopify-shop-domain: your-shop.myshopify.com
  shopify-topic: Customer
  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 = "2026-10"

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

  topic = "Customer"
  actions = ["update"]
  triggers = ["customer.addressesV2.firstName"]

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

  query = """
  query customer_event_payload($customerId: ID!) {
    customer(id: $customerId) {
      id
      displayName
      email
      state
      addressesV2(first: 10) {
        nodes {
          firstName
        }
      }
    }
  }
  """

  # Optional
  query_filter = "customer.state:'ENABLED'"
  ```

  ##### Payload

  ```json
  {
    "topic": "Customer",
    "action": "update",
    "handle": "customer-event",
    "data": {
      "customer": {
        "id": "gid://shopify/Customer/5723780017102",
        "displayName": "Example customer",
        "email": "customer@example.com",
        "state": "ENABLED",
        "addressesV2": {
          "nodes": [
            {
              "firstName": "…"
            }
          ]
        }
      }
    },
    "fields_changed": {
      "added": [],
      "updated": [
        "customer[id: 'gid://shopify/Customer/5723780017102'].addressesV2[id: 'gid://shopify/MailingAddress/7039999190835'].firstName"
      ],
      "removed": []
    },
    "query_variables": {
      "addressesV2Id": "gid://shopify/MailingAddress/7039999190835",
      "customerId": "gid://shopify/Customer/5723780017102"
    }
  }
  ```

  ##### Headers

  ```bash
  shopify-action: update
  shopify-api-version: 2026-10
  shopify-handle: customer-event
  shopify-hmac-sha256: 61lWIGuA2nXdHRjhMU/+EDw2y3Eg0mPKJ+RhR7dKKIM=
  shopify-shop-domain: your-shop.myshopify.com
  shopify-topic: Customer
  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 = "2026-10"

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

  topic = "Customer"
  actions = ["update"]
  triggers = ["customer.addressesV2.lastName"]

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

  query = """
  query customer_event_payload($customerId: ID!) {
    customer(id: $customerId) {
      id
      displayName
      email
      state
      addressesV2(first: 10) {
        nodes {
          lastName
        }
      }
    }
  }
  """

  # Optional
  query_filter = "customer.state:'ENABLED'"
  ```

  ##### Payload

  ```json
  {
    "topic": "Customer",
    "action": "update",
    "handle": "customer-event",
    "data": {
      "customer": {
        "id": "gid://shopify/Customer/5723780017102",
        "displayName": "Example customer",
        "email": "customer@example.com",
        "state": "ENABLED",
        "addressesV2": {
          "nodes": [
            {
              "lastName": "…"
            }
          ]
        }
      }
    },
    "fields_changed": {
      "added": [],
      "updated": [
        "customer[id: 'gid://shopify/Customer/5723780017102'].addressesV2[id: 'gid://shopify/MailingAddress/7039999190835'].lastName"
      ],
      "removed": []
    },
    "query_variables": {
      "addressesV2Id": "gid://shopify/MailingAddress/7039999190835",
      "customerId": "gid://shopify/Customer/5723780017102"
    }
  }
  ```

  ##### Headers

  ```bash
  shopify-action: update
  shopify-api-version: 2026-10
  shopify-handle: customer-event
  shopify-hmac-sha256: 61lWIGuA2nXdHRjhMU/+EDw2y3Eg0mPKJ+RhR7dKKIM=
  shopify-shop-domain: your-shop.myshopify.com
  shopify-topic: Customer
  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 = "2026-10"

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

  topic = "Customer"
  actions = ["update"]
  triggers = ["customer.addressesV2.latitude"]

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

  query = """
  query customer_event_payload($customerId: ID!) {
    customer(id: $customerId) {
      id
      displayName
      email
      state
      addressesV2(first: 10) {
        nodes {
          latitude
        }
      }
    }
  }
  """

  # Optional
  query_filter = "customer.state:'ENABLED'"
  ```

  ##### Payload

  ```json
  {
    "topic": "Customer",
    "action": "update",
    "handle": "customer-event",
    "data": {
      "customer": {
        "id": "gid://shopify/Customer/5723780017102",
        "displayName": "Example customer",
        "email": "customer@example.com",
        "state": "ENABLED",
        "addressesV2": {
          "nodes": [
            {
              "latitude": "…"
            }
          ]
        }
      }
    },
    "fields_changed": {
      "added": [],
      "updated": [
        "customer[id: 'gid://shopify/Customer/5723780017102'].addressesV2[id: 'gid://shopify/MailingAddress/7039999190835'].latitude"
      ],
      "removed": []
    },
    "query_variables": {
      "addressesV2Id": "gid://shopify/MailingAddress/7039999190835",
      "customerId": "gid://shopify/Customer/5723780017102"
    }
  }
  ```

  ##### Headers

  ```bash
  shopify-action: update
  shopify-api-version: 2026-10
  shopify-handle: customer-event
  shopify-hmac-sha256: 61lWIGuA2nXdHRjhMU/+EDw2y3Eg0mPKJ+RhR7dKKIM=
  shopify-shop-domain: your-shop.myshopify.com
  shopify-topic: Customer
  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 = "2026-10"

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

  topic = "Customer"
  actions = ["update"]
  triggers = ["customer.addressesV2.longitude"]

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

  query = """
  query customer_event_payload($customerId: ID!) {
    customer(id: $customerId) {
      id
      displayName
      email
      state
      addressesV2(first: 10) {
        nodes {
          longitude
        }
      }
    }
  }
  """

  # Optional
  query_filter = "customer.state:'ENABLED'"
  ```

  ##### Payload

  ```json
  {
    "topic": "Customer",
    "action": "update",
    "handle": "customer-event",
    "data": {
      "customer": {
        "id": "gid://shopify/Customer/5723780017102",
        "displayName": "Example customer",
        "email": "customer@example.com",
        "state": "ENABLED",
        "addressesV2": {
          "nodes": [
            {
              "longitude": "…"
            }
          ]
        }
      }
    },
    "fields_changed": {
      "added": [],
      "updated": [
        "customer[id: 'gid://shopify/Customer/5723780017102'].addressesV2[id: 'gid://shopify/MailingAddress/7039999190835'].longitude"
      ],
      "removed": []
    },
    "query_variables": {
      "addressesV2Id": "gid://shopify/MailingAddress/7039999190835",
      "customerId": "gid://shopify/Customer/5723780017102"
    }
  }
  ```

  ##### Headers

  ```bash
  shopify-action: update
  shopify-api-version: 2026-10
  shopify-handle: customer-event
  shopify-hmac-sha256: 61lWIGuA2nXdHRjhMU/+EDw2y3Eg0mPKJ+RhR7dKKIM=
  shopify-shop-domain: your-shop.myshopify.com
  shopify-topic: Customer
  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 = "2026-10"

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

  topic = "Customer"
  actions = ["update"]
  triggers = ["customer.addressesV2.phone"]

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

  query = """
  query customer_event_payload($customerId: ID!) {
    customer(id: $customerId) {
      id
      displayName
      email
      state
      addressesV2(first: 10) {
        nodes {
          phone
        }
      }
    }
  }
  """

  # Optional
  query_filter = "customer.state:'ENABLED'"
  ```

  ##### Payload

  ```json
  {
    "topic": "Customer",
    "action": "update",
    "handle": "customer-event",
    "data": {
      "customer": {
        "id": "gid://shopify/Customer/5723780017102",
        "displayName": "Example customer",
        "email": "customer@example.com",
        "state": "ENABLED",
        "addressesV2": {
          "nodes": [
            {
              "phone": "…"
            }
          ]
        }
      }
    },
    "fields_changed": {
      "added": [],
      "updated": [
        "customer[id: 'gid://shopify/Customer/5723780017102'].addressesV2[id: 'gid://shopify/MailingAddress/7039999190835'].phone"
      ],
      "removed": []
    },
    "query_variables": {
      "addressesV2Id": "gid://shopify/MailingAddress/7039999190835",
      "customerId": "gid://shopify/Customer/5723780017102"
    }
  }
  ```

  ##### Headers

  ```bash
  shopify-action: update
  shopify-api-version: 2026-10
  shopify-handle: customer-event
  shopify-hmac-sha256: 61lWIGuA2nXdHRjhMU/+EDw2y3Eg0mPKJ+RhR7dKKIM=
  shopify-shop-domain: your-shop.myshopify.com
  shopify-topic: Customer
  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 = "2026-10"

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

  topic = "Customer"
  actions = ["update"]
  triggers = ["customer.addressesV2.provinceCode"]

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

  query = """
  query customer_event_payload($customerId: ID!) {
    customer(id: $customerId) {
      id
      displayName
      email
      state
      addressesV2(first: 10) {
        nodes {
          provinceCode
        }
      }
    }
  }
  """

  # Optional
  query_filter = "customer.state:'ENABLED'"
  ```

  ##### Payload

  ```json
  {
    "topic": "Customer",
    "action": "update",
    "handle": "customer-event",
    "data": {
      "customer": {
        "id": "gid://shopify/Customer/5723780017102",
        "displayName": "Example customer",
        "email": "customer@example.com",
        "state": "ENABLED",
        "addressesV2": {
          "nodes": [
            {
              "provinceCode": "…"
            }
          ]
        }
      }
    },
    "fields_changed": {
      "added": [],
      "updated": [
        "customer[id: 'gid://shopify/Customer/5723780017102'].addressesV2[id: 'gid://shopify/MailingAddress/7039999190835'].provinceCode"
      ],
      "removed": []
    },
    "query_variables": {
      "addressesV2Id": "gid://shopify/MailingAddress/7039999190835",
      "customerId": "gid://shopify/Customer/5723780017102"
    }
  }
  ```

  ##### Headers

  ```bash
  shopify-action: update
  shopify-api-version: 2026-10
  shopify-handle: customer-event
  shopify-hmac-sha256: 61lWIGuA2nXdHRjhMU/+EDw2y3Eg0mPKJ+RhR7dKKIM=
  shopify-shop-domain: your-shop.myshopify.com
  shopify-topic: Customer
  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 = "2026-10"

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

  topic = "Customer"
  actions = ["update"]
  triggers = ["customer.addressesV2.zip"]

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

  query = """
  query customer_event_payload($customerId: ID!) {
    customer(id: $customerId) {
      id
      displayName
      email
      state
      addressesV2(first: 10) {
        nodes {
          zip
        }
      }
    }
  }
  """

  # Optional
  query_filter = "customer.state:'ENABLED'"
  ```

  ##### Payload

  ```json
  {
    "topic": "Customer",
    "action": "update",
    "handle": "customer-event",
    "data": {
      "customer": {
        "id": "gid://shopify/Customer/5723780017102",
        "displayName": "Example customer",
        "email": "customer@example.com",
        "state": "ENABLED",
        "addressesV2": {
          "nodes": [
            {
              "zip": "…"
            }
          ]
        }
      }
    },
    "fields_changed": {
      "added": [],
      "updated": [
        "customer[id: 'gid://shopify/Customer/5723780017102'].addressesV2[id: 'gid://shopify/MailingAddress/7039999190835'].zip"
      ],
      "removed": []
    },
    "query_variables": {
      "addressesV2Id": "gid://shopify/MailingAddress/7039999190835",
      "customerId": "gid://shopify/Customer/5723780017102"
    }
  }
  ```

  ##### Headers

  ```bash
  shopify-action: update
  shopify-api-version: 2026-10
  shopify-handle: customer-event
  shopify-hmac-sha256: 61lWIGuA2nXdHRjhMU/+EDw2y3Eg0mPKJ+RhR7dKKIM=
  shopify-shop-domain: your-shop.myshopify.com
  shopify-topic: Customer
  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 = "2026-10"

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

  topic = "Customer"
  actions = ["update"]
  triggers = ["customer.amountSpent"]

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

  query = """
  query customer_event_payload($customerId: ID!) {
    customer(id: $customerId) {
      id
      displayName
      email
      state
      amountSpent {
        __typename
      }
    }
  }
  """

  # Optional
  query_filter = "customer.state:'ENABLED'"
  ```

  ##### Payload

  ```json
  {
    "topic": "Customer",
    "action": "update",
    "handle": "customer-event",
    "data": {
      "customer": {
        "id": "gid://shopify/Customer/5723780017102",
        "displayName": "Example customer",
        "email": "customer@example.com",
        "state": "ENABLED",
        "amountSpent": {
          "__typename": "MoneyV2"
        }
      }
    },
    "fields_changed": {
      "added": [],
      "updated": [
        "customer[id: 'gid://shopify/Customer/5723780017102'].amountSpent"
      ],
      "removed": []
    },
    "query_variables": {
      "customerId": "gid://shopify/Customer/5723780017102"
    }
  }
  ```

  ##### Headers

  ```bash
  shopify-action: update
  shopify-api-version: 2026-10
  shopify-handle: customer-event
  shopify-hmac-sha256: 61lWIGuA2nXdHRjhMU/+EDw2y3Eg0mPKJ+RhR7dKKIM=
  shopify-shop-domain: your-shop.myshopify.com
  shopify-topic: Customer
  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 = "2026-10"

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

  topic = "Customer"
  actions = ["update"]
  triggers = ["customer.dataSaleOptOut"]

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

  query = """
  query customer_event_payload($customerId: ID!) {
    customer(id: $customerId) {
      id
      displayName
      email
      state
      dataSaleOptOut
    }
  }
  """

  # Optional
  query_filter = "customer.state:'ENABLED'"
  ```

  ##### Payload

  ```json
  {
    "topic": "Customer",
    "action": "update",
    "handle": "customer-event",
    "data": {
      "customer": {
        "id": "gid://shopify/Customer/5723780017102",
        "displayName": "Example customer",
        "email": "customer@example.com",
        "state": "ENABLED",
        "dataSaleOptOut": "…"
      }
    },
    "fields_changed": {
      "added": [],
      "updated": [
        "customer[id: 'gid://shopify/Customer/5723780017102'].dataSaleOptOut"
      ],
      "removed": []
    },
    "query_variables": {
      "customerId": "gid://shopify/Customer/5723780017102"
    }
  }
  ```

  ##### Headers

  ```bash
  shopify-action: update
  shopify-api-version: 2026-10
  shopify-handle: customer-event
  shopify-hmac-sha256: 61lWIGuA2nXdHRjhMU/+EDw2y3Eg0mPKJ+RhR7dKKIM=
  shopify-shop-domain: your-shop.myshopify.com
  shopify-topic: Customer
  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 = "2026-10"

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

  topic = "Customer"
  actions = ["update"]
  triggers = ["customer.defaultAddress"]

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

  query = """
  query customer_event_payload($customerId: ID!) {
    customer(id: $customerId) {
      id
      displayName
      email
      state
      defaultAddress {
        id
      }
    }
  }
  """

  # Optional
  query_filter = "customer.state:'ENABLED'"
  ```

  ##### Payload

  ```json
  {
    "topic": "Customer",
    "action": "update",
    "handle": "customer-event",
    "data": {
      "customer": {
        "id": "gid://shopify/Customer/5723780017102",
        "displayName": "Example customer",
        "email": "customer@example.com",
        "state": "ENABLED",
        "defaultAddress": {
          "id": "gid://shopify/MailingAddress/111"
        }
      }
    },
    "fields_changed": {
      "added": [],
      "updated": [
        "customer[id: 'gid://shopify/Customer/5723780017102'].defaultAddress"
      ],
      "removed": []
    },
    "query_variables": {
      "customerId": "gid://shopify/Customer/5723780017102"
    }
  }
  ```

  ##### Headers

  ```bash
  shopify-action: update
  shopify-api-version: 2026-10
  shopify-handle: customer-event
  shopify-hmac-sha256: 61lWIGuA2nXdHRjhMU/+EDw2y3Eg0mPKJ+RhR7dKKIM=
  shopify-shop-domain: your-shop.myshopify.com
  shopify-topic: Customer
  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 = "2026-10"

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

  topic = "Customer"
  actions = ["update"]
  triggers = ["customer.defaultEmailAddress.*"]

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

  query = """
  query customer_event_payload($customerId: ID!) {
    customer(id: $customerId) {
      id
      displayName
      email
      state
      defaultEmailAddress {
        __typename
      }
    }
  }
  """

  # Optional
  query_filter = "customer.state:'ENABLED'"
  ```

  ##### Payload

  ```json
  {
    "topic": "Customer",
    "action": "update",
    "handle": "customer-event",
    "data": {
      "customer": {
        "id": "gid://shopify/Customer/5723780017102",
        "displayName": "Example customer",
        "email": "customer@example.com",
        "state": "ENABLED",
        "defaultEmailAddress": {
          "__typename": "CustomerEmailAddress"
        }
      }
    },
    "fields_changed": {
      "added": [],
      "updated": [
        "customer[id: 'gid://shopify/Customer/5723780017102'].defaultEmailAddress"
      ],
      "removed": []
    },
    "query_variables": {
      "customerId": "gid://shopify/Customer/5723780017102"
    }
  }
  ```

  ##### Headers

  ```bash
  shopify-action: update
  shopify-api-version: 2026-10
  shopify-handle: customer-event
  shopify-hmac-sha256: 61lWIGuA2nXdHRjhMU/+EDw2y3Eg0mPKJ+RhR7dKKIM=
  shopify-shop-domain: your-shop.myshopify.com
  shopify-topic: Customer
  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 = "2026-10"

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

  topic = "Customer"
  actions = ["update"]
  triggers = ["customer.defaultEmailAddress.marketingOptInLevel"]

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

  query = """
  query customer_event_payload($customerId: ID!) {
    customer(id: $customerId) {
      id
      displayName
      email
      state
      defaultEmailAddress {
        marketingOptInLevel
      }
    }
  }
  """

  # Optional
  query_filter = "customer.state:'ENABLED'"
  ```

  ##### Payload

  ```json
  {
    "topic": "Customer",
    "action": "update",
    "handle": "customer-event",
    "data": {
      "customer": {
        "id": "gid://shopify/Customer/5723780017102",
        "displayName": "Example customer",
        "email": "customer@example.com",
        "state": "ENABLED",
        "defaultEmailAddress": {
          "marketingOptInLevel": "…"
        }
      }
    },
    "fields_changed": {
      "added": [],
      "updated": [
        "customer[id: 'gid://shopify/Customer/5723780017102'].defaultEmailAddress.marketingOptInLevel"
      ],
      "removed": []
    },
    "query_variables": {
      "customerId": "gid://shopify/Customer/5723780017102"
    }
  }
  ```

  ##### Headers

  ```bash
  shopify-action: update
  shopify-api-version: 2026-10
  shopify-handle: customer-event
  shopify-hmac-sha256: 61lWIGuA2nXdHRjhMU/+EDw2y3Eg0mPKJ+RhR7dKKIM=
  shopify-shop-domain: your-shop.myshopify.com
  shopify-topic: Customer
  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 = "2026-10"

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

  topic = "Customer"
  actions = ["update"]
  triggers = ["customer.defaultEmailAddress.marketingState"]

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

  query = """
  query customer_event_payload($customerId: ID!) {
    customer(id: $customerId) {
      id
      displayName
      email
      state
      defaultEmailAddress {
        marketingState
      }
    }
  }
  """

  # Optional
  query_filter = "customer.state:'ENABLED'"
  ```

  ##### Payload

  ```json
  {
    "topic": "Customer",
    "action": "update",
    "handle": "customer-event",
    "data": {
      "customer": {
        "id": "gid://shopify/Customer/5723780017102",
        "displayName": "Example customer",
        "email": "customer@example.com",
        "state": "ENABLED",
        "defaultEmailAddress": {
          "marketingState": "…"
        }
      }
    },
    "fields_changed": {
      "added": [],
      "updated": [
        "customer[id: 'gid://shopify/Customer/5723780017102'].defaultEmailAddress.marketingState"
      ],
      "removed": []
    },
    "query_variables": {
      "customerId": "gid://shopify/Customer/5723780017102"
    }
  }
  ```

  ##### Headers

  ```bash
  shopify-action: update
  shopify-api-version: 2026-10
  shopify-handle: customer-event
  shopify-hmac-sha256: 61lWIGuA2nXdHRjhMU/+EDw2y3Eg0mPKJ+RhR7dKKIM=
  shopify-shop-domain: your-shop.myshopify.com
  shopify-topic: Customer
  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 = "2026-10"

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

  topic = "Customer"
  actions = ["update"]
  triggers = ["customer.defaultEmailAddress.marketingUpdatedAt"]

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

  query = """
  query customer_event_payload($customerId: ID!) {
    customer(id: $customerId) {
      id
      displayName
      email
      state
      defaultEmailAddress {
        marketingUpdatedAt
      }
    }
  }
  """

  # Optional
  query_filter = "customer.state:'ENABLED'"
  ```

  ##### Payload

  ```json
  {
    "topic": "Customer",
    "action": "update",
    "handle": "customer-event",
    "data": {
      "customer": {
        "id": "gid://shopify/Customer/5723780017102",
        "displayName": "Example customer",
        "email": "customer@example.com",
        "state": "ENABLED",
        "defaultEmailAddress": {
          "marketingUpdatedAt": "…"
        }
      }
    },
    "fields_changed": {
      "added": [],
      "updated": [
        "customer[id: 'gid://shopify/Customer/5723780017102'].defaultEmailAddress.marketingUpdatedAt"
      ],
      "removed": []
    },
    "query_variables": {
      "customerId": "gid://shopify/Customer/5723780017102"
    }
  }
  ```

  ##### Headers

  ```bash
  shopify-action: update
  shopify-api-version: 2026-10
  shopify-handle: customer-event
  shopify-hmac-sha256: 61lWIGuA2nXdHRjhMU/+EDw2y3Eg0mPKJ+RhR7dKKIM=
  shopify-shop-domain: your-shop.myshopify.com
  shopify-topic: Customer
  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 = "2026-10"

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

  topic = "Customer"
  actions = ["update"]
  triggers = ["customer.defaultEmailAddress.openTrackingLevel"]

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

  query = """
  query customer_event_payload($customerId: ID!) {
    customer(id: $customerId) {
      id
      displayName
      email
      state
      defaultEmailAddress {
        openTrackingLevel
      }
    }
  }
  """

  # Optional
  query_filter = "customer.state:'ENABLED'"
  ```

  ##### Payload

  ```json
  {
    "topic": "Customer",
    "action": "update",
    "handle": "customer-event",
    "data": {
      "customer": {
        "id": "gid://shopify/Customer/5723780017102",
        "displayName": "Example customer",
        "email": "customer@example.com",
        "state": "ENABLED",
        "defaultEmailAddress": {
          "openTrackingLevel": "…"
        }
      }
    },
    "fields_changed": {
      "added": [],
      "updated": [
        "customer[id: 'gid://shopify/Customer/5723780017102'].defaultEmailAddress.openTrackingLevel"
      ],
      "removed": []
    },
    "query_variables": {
      "customerId": "gid://shopify/Customer/5723780017102"
    }
  }
  ```

  ##### Headers

  ```bash
  shopify-action: update
  shopify-api-version: 2026-10
  shopify-handle: customer-event
  shopify-hmac-sha256: 61lWIGuA2nXdHRjhMU/+EDw2y3Eg0mPKJ+RhR7dKKIM=
  shopify-shop-domain: your-shop.myshopify.com
  shopify-topic: Customer
  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 = "2026-10"

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

  topic = "Customer"
  actions = ["update"]
  triggers = ["customer.defaultEmailAddress.sourceLocation"]

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

  query = """
  query customer_event_payload($customerId: ID!) {
    customer(id: $customerId) {
      id
      displayName
      email
      state
      defaultEmailAddress {
        sourceLocation {
          id
        }
      }
    }
  }
  """

  # Optional
  query_filter = "customer.state:'ENABLED'"
  ```

  ##### Payload

  ```json
  {
    "topic": "Customer",
    "action": "update",
    "handle": "customer-event",
    "data": {
      "customer": {
        "id": "gid://shopify/Customer/5723780017102",
        "displayName": "Example customer",
        "email": "customer@example.com",
        "state": "ENABLED",
        "defaultEmailAddress": {
          "sourceLocation": {
            "id": "gid://shopify/Location/111"
          }
        }
      }
    },
    "fields_changed": {
      "added": [],
      "updated": [
        "customer[id: 'gid://shopify/Customer/5723780017102'].defaultEmailAddress.sourceLocation"
      ],
      "removed": []
    },
    "query_variables": {
      "customerId": "gid://shopify/Customer/5723780017102"
    }
  }
  ```

  ##### Headers

  ```bash
  shopify-action: update
  shopify-api-version: 2026-10
  shopify-handle: customer-event
  shopify-hmac-sha256: 61lWIGuA2nXdHRjhMU/+EDw2y3Eg0mPKJ+RhR7dKKIM=
  shopify-shop-domain: your-shop.myshopify.com
  shopify-topic: Customer
  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 = "2026-10"

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

  topic = "Customer"
  actions = ["update"]
  triggers = ["customer.defaultPhoneNumber.*"]

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

  query = """
  query customer_event_payload($customerId: ID!) {
    customer(id: $customerId) {
      id
      displayName
      email
      state
      defaultPhoneNumber {
        __typename
      }
    }
  }
  """

  # Optional
  query_filter = "customer.state:'ENABLED'"
  ```

  ##### Payload

  ```json
  {
    "topic": "Customer",
    "action": "update",
    "handle": "customer-event",
    "data": {
      "customer": {
        "id": "gid://shopify/Customer/5723780017102",
        "displayName": "Example customer",
        "email": "customer@example.com",
        "state": "ENABLED",
        "defaultPhoneNumber": {
          "__typename": "CustomerPhoneNumber"
        }
      }
    },
    "fields_changed": {
      "added": [],
      "updated": [
        "customer[id: 'gid://shopify/Customer/5723780017102'].defaultPhoneNumber"
      ],
      "removed": []
    },
    "query_variables": {
      "customerId": "gid://shopify/Customer/5723780017102"
    }
  }
  ```

  ##### Headers

  ```bash
  shopify-action: update
  shopify-api-version: 2026-10
  shopify-handle: customer-event
  shopify-hmac-sha256: 61lWIGuA2nXdHRjhMU/+EDw2y3Eg0mPKJ+RhR7dKKIM=
  shopify-shop-domain: your-shop.myshopify.com
  shopify-topic: Customer
  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 = "2026-10"

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

  topic = "Customer"
  actions = ["update"]
  triggers = ["customer.defaultPhoneNumber.smsMarketingConsent.*"]

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

  query = """
  query customer_event_payload($customerId: ID!) {
    customer(id: $customerId) {
      id
      displayName
      email
      state
      defaultPhoneNumber {
        smsMarketingConsent {
          __typename
        }
      }
    }
  }
  """

  # Optional
  query_filter = "customer.state:'ENABLED'"
  ```

  ##### Payload

  ```json
  {
    "topic": "Customer",
    "action": "update",
    "handle": "customer-event",
    "data": {
      "customer": {
        "id": "gid://shopify/Customer/5723780017102",
        "displayName": "Example customer",
        "email": "customer@example.com",
        "state": "ENABLED",
        "defaultPhoneNumber": {
          "smsMarketingConsent": {
            "__typename": "CustomerSmsMarketingConsent"
          }
        }
      }
    },
    "fields_changed": {
      "added": [],
      "updated": [
        "customer[id: 'gid://shopify/Customer/5723780017102'].defaultPhoneNumber.smsMarketingConsent.optInLevel"
      ],
      "removed": []
    },
    "query_variables": {
      "customerId": "gid://shopify/Customer/5723780017102"
    }
  }
  ```

  ##### Headers

  ```bash
  shopify-action: update
  shopify-api-version: 2026-10
  shopify-handle: customer-event
  shopify-hmac-sha256: 61lWIGuA2nXdHRjhMU/+EDw2y3Eg0mPKJ+RhR7dKKIM=
  shopify-shop-domain: your-shop.myshopify.com
  shopify-topic: Customer
  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 = "2026-10"

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

  topic = "Customer"
  actions = ["update"]
  triggers = ["customer.defaultPhoneNumber.smsMarketingConsent.optInLevel"]

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

  query = """
  query customer_event_payload($customerId: ID!) {
    customer(id: $customerId) {
      id
      displayName
      email
      state
      defaultPhoneNumber {
        smsMarketingConsent {
          optInLevel
        }
      }
    }
  }
  """

  # Optional
  query_filter = "customer.state:'ENABLED'"
  ```

  ##### Payload

  ```json
  {
    "topic": "Customer",
    "action": "update",
    "handle": "customer-event",
    "data": {
      "customer": {
        "id": "gid://shopify/Customer/5723780017102",
        "displayName": "Example customer",
        "email": "customer@example.com",
        "state": "ENABLED",
        "defaultPhoneNumber": {
          "smsMarketingConsent": {
            "optInLevel": "…"
          }
        }
      }
    },
    "fields_changed": {
      "added": [],
      "updated": [
        "customer[id: 'gid://shopify/Customer/5723780017102'].defaultPhoneNumber.smsMarketingConsent.optInLevel"
      ],
      "removed": []
    },
    "query_variables": {
      "customerId": "gid://shopify/Customer/5723780017102"
    }
  }
  ```

  ##### Headers

  ```bash
  shopify-action: update
  shopify-api-version: 2026-10
  shopify-handle: customer-event
  shopify-hmac-sha256: 61lWIGuA2nXdHRjhMU/+EDw2y3Eg0mPKJ+RhR7dKKIM=
  shopify-shop-domain: your-shop.myshopify.com
  shopify-topic: Customer
  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 = "2026-10"

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

  topic = "Customer"
  actions = ["update"]
  triggers = ["customer.defaultPhoneNumber.smsMarketingConsent.sourceLocation"]

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

  query = """
  query customer_event_payload($customerId: ID!) {
    customer(id: $customerId) {
      id
      displayName
      email
      state
      defaultPhoneNumber {
        smsMarketingConsent {
          sourceLocation {
            id
          }
        }
      }
    }
  }
  """

  # Optional
  query_filter = "customer.state:'ENABLED'"
  ```

  ##### Payload

  ```json
  {
    "topic": "Customer",
    "action": "update",
    "handle": "customer-event",
    "data": {
      "customer": {
        "id": "gid://shopify/Customer/5723780017102",
        "displayName": "Example customer",
        "email": "customer@example.com",
        "state": "ENABLED",
        "defaultPhoneNumber": {
          "smsMarketingConsent": {
            "sourceLocation": {
              "id": "gid://shopify/Location/111"
            }
          }
        }
      }
    },
    "fields_changed": {
      "added": [],
      "updated": [
        "customer[id: 'gid://shopify/Customer/5723780017102'].defaultPhoneNumber.smsMarketingConsent.sourceLocation"
      ],
      "removed": []
    },
    "query_variables": {
      "customerId": "gid://shopify/Customer/5723780017102"
    }
  }
  ```

  ##### Headers

  ```bash
  shopify-action: update
  shopify-api-version: 2026-10
  shopify-handle: customer-event
  shopify-hmac-sha256: 61lWIGuA2nXdHRjhMU/+EDw2y3Eg0mPKJ+RhR7dKKIM=
  shopify-shop-domain: your-shop.myshopify.com
  shopify-topic: Customer
  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 = "2026-10"

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

  topic = "Customer"
  actions = ["update"]
  triggers = ["customer.defaultPhoneNumber.smsMarketingConsent.state"]

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

  query = """
  query customer_event_payload($customerId: ID!) {
    customer(id: $customerId) {
      id
      displayName
      email
      state
      defaultPhoneNumber {
        smsMarketingConsent {
          state
        }
      }
    }
  }
  """

  # Optional
  query_filter = "customer.state:'ENABLED'"
  ```

  ##### Payload

  ```json
  {
    "topic": "Customer",
    "action": "update",
    "handle": "customer-event",
    "data": {
      "customer": {
        "id": "gid://shopify/Customer/5723780017102",
        "displayName": "Example customer",
        "email": "customer@example.com",
        "state": "ENABLED",
        "defaultPhoneNumber": {
          "smsMarketingConsent": {
            "state": "…"
          }
        }
      }
    },
    "fields_changed": {
      "added": [],
      "updated": [
        "customer[id: 'gid://shopify/Customer/5723780017102'].defaultPhoneNumber.smsMarketingConsent.state"
      ],
      "removed": []
    },
    "query_variables": {
      "customerId": "gid://shopify/Customer/5723780017102"
    }
  }
  ```

  ##### Headers

  ```bash
  shopify-action: update
  shopify-api-version: 2026-10
  shopify-handle: customer-event
  shopify-hmac-sha256: 61lWIGuA2nXdHRjhMU/+EDw2y3Eg0mPKJ+RhR7dKKIM=
  shopify-shop-domain: your-shop.myshopify.com
  shopify-topic: Customer
  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 = "2026-10"

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

  topic = "Customer"
  actions = ["update"]
  triggers = ["customer.defaultPhoneNumber.smsMarketingConsent.updatedAt"]

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

  query = """
  query customer_event_payload($customerId: ID!) {
    customer(id: $customerId) {
      id
      displayName
      email
      state
      defaultPhoneNumber {
        smsMarketingConsent {
          updatedAt
        }
      }
    }
  }
  """

  # Optional
  query_filter = "customer.state:'ENABLED'"
  ```

  ##### Payload

  ```json
  {
    "topic": "Customer",
    "action": "update",
    "handle": "customer-event",
    "data": {
      "customer": {
        "id": "gid://shopify/Customer/5723780017102",
        "displayName": "Example customer",
        "email": "customer@example.com",
        "state": "ENABLED",
        "defaultPhoneNumber": {
          "smsMarketingConsent": {
            "updatedAt": "…"
          }
        }
      }
    },
    "fields_changed": {
      "added": [],
      "updated": [
        "customer[id: 'gid://shopify/Customer/5723780017102'].defaultPhoneNumber.smsMarketingConsent.updatedAt"
      ],
      "removed": []
    },
    "query_variables": {
      "customerId": "gid://shopify/Customer/5723780017102"
    }
  }
  ```

  ##### Headers

  ```bash
  shopify-action: update
  shopify-api-version: 2026-10
  shopify-handle: customer-event
  shopify-hmac-sha256: 61lWIGuA2nXdHRjhMU/+EDw2y3Eg0mPKJ+RhR7dKKIM=
  shopify-shop-domain: your-shop.myshopify.com
  shopify-topic: Customer
  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 = "2026-10"

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

  topic = "Customer"
  actions = ["update"]
  triggers = ["customer.firstName"]

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

  query = """
  query customer_event_payload($customerId: ID!) {
    customer(id: $customerId) {
      id
      displayName
      email
      state
      firstName
    }
  }
  """

  # Optional
  query_filter = "customer.state:'ENABLED'"
  ```

  ##### Payload

  ```json
  {
    "topic": "Customer",
    "action": "update",
    "handle": "customer-event",
    "data": {
      "customer": {
        "id": "gid://shopify/Customer/5723780017102",
        "displayName": "Example customer",
        "email": "customer@example.com",
        "state": "ENABLED",
        "firstName": "…"
      }
    },
    "fields_changed": {
      "added": [],
      "updated": [
        "customer[id: 'gid://shopify/Customer/5723780017102'].firstName"
      ],
      "removed": []
    },
    "query_variables": {
      "customerId": "gid://shopify/Customer/5723780017102"
    }
  }
  ```

  ##### Headers

  ```bash
  shopify-action: update
  shopify-api-version: 2026-10
  shopify-handle: customer-event
  shopify-hmac-sha256: 61lWIGuA2nXdHRjhMU/+EDw2y3Eg0mPKJ+RhR7dKKIM=
  shopify-shop-domain: your-shop.myshopify.com
  shopify-topic: Customer
  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 = "2026-10"

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

  topic = "Customer"
  actions = ["update"]
  triggers = ["customer.image"]

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

  query = """
  query customer_event_payload($customerId: ID!) {
    customer(id: $customerId) {
      id
      displayName
      email
      state
      image {
        id
      }
    }
  }
  """

  # Optional
  query_filter = "customer.state:'ENABLED'"
  ```

  ##### Payload

  ```json
  {
    "topic": "Customer",
    "action": "update",
    "handle": "customer-event",
    "data": {
      "customer": {
        "id": "gid://shopify/Customer/5723780017102",
        "displayName": "Example customer",
        "email": "customer@example.com",
        "state": "ENABLED",
        "image": {
          "id": "gid://shopify/Image/111"
        }
      }
    },
    "fields_changed": {
      "added": [],
      "updated": [
        "customer[id: 'gid://shopify/Customer/5723780017102'].image"
      ],
      "removed": []
    },
    "query_variables": {
      "customerId": "gid://shopify/Customer/5723780017102"
    }
  }
  ```

  ##### Headers

  ```bash
  shopify-action: update
  shopify-api-version: 2026-10
  shopify-handle: customer-event
  shopify-hmac-sha256: 61lWIGuA2nXdHRjhMU/+EDw2y3Eg0mPKJ+RhR7dKKIM=
  shopify-shop-domain: your-shop.myshopify.com
  shopify-topic: Customer
  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 = "2026-10"

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

  topic = "Customer"
  actions = ["update"]
  triggers = ["customer.lastName"]

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

  query = """
  query customer_event_payload($customerId: ID!) {
    customer(id: $customerId) {
      id
      displayName
      email
      state
      lastName
    }
  }
  """

  # Optional
  query_filter = "customer.state:'ENABLED'"
  ```

  ##### Payload

  ```json
  {
    "topic": "Customer",
    "action": "update",
    "handle": "customer-event",
    "data": {
      "customer": {
        "id": "gid://shopify/Customer/5723780017102",
        "displayName": "Example customer",
        "email": "customer@example.com",
        "state": "ENABLED",
        "lastName": "…"
      }
    },
    "fields_changed": {
      "added": [],
      "updated": [
        "customer[id: 'gid://shopify/Customer/5723780017102'].lastName"
      ],
      "removed": []
    },
    "query_variables": {
      "customerId": "gid://shopify/Customer/5723780017102"
    }
  }
  ```

  ##### Headers

  ```bash
  shopify-action: update
  shopify-api-version: 2026-10
  shopify-handle: customer-event
  shopify-hmac-sha256: 61lWIGuA2nXdHRjhMU/+EDw2y3Eg0mPKJ+RhR7dKKIM=
  shopify-shop-domain: your-shop.myshopify.com
  shopify-topic: Customer
  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 = "2026-10"

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

  topic = "Customer"
  actions = ["update"]
  triggers = ["customer.lastOrder"]

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

  query = """
  query customer_event_payload($customerId: ID!) {
    customer(id: $customerId) {
      id
      displayName
      email
      state
      lastOrder {
        id
      }
    }
  }
  """

  # Optional
  query_filter = "customer.state:'ENABLED'"
  ```

  ##### Payload

  ```json
  {
    "topic": "Customer",
    "action": "update",
    "handle": "customer-event",
    "data": {
      "customer": {
        "id": "gid://shopify/Customer/5723780017102",
        "displayName": "Example customer",
        "email": "customer@example.com",
        "state": "ENABLED",
        "lastOrder": {
          "id": "gid://shopify/Order/111"
        }
      }
    },
    "fields_changed": {
      "added": [],
      "updated": [
        "customer[id: 'gid://shopify/Customer/5723780017102'].lastOrder"
      ],
      "removed": []
    },
    "query_variables": {
      "customerId": "gid://shopify/Customer/5723780017102"
    }
  }
  ```

  ##### Headers

  ```bash
  shopify-action: update
  shopify-api-version: 2026-10
  shopify-handle: customer-event
  shopify-hmac-sha256: 61lWIGuA2nXdHRjhMU/+EDw2y3Eg0mPKJ+RhR7dKKIM=
  shopify-shop-domain: your-shop.myshopify.com
  shopify-topic: Customer
  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 = "2026-10"

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

  topic = "Customer"
  actions = ["update"]
  triggers = ["customer.locale"]

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

  query = """
  query customer_event_payload($customerId: ID!) {
    customer(id: $customerId) {
      id
      displayName
      email
      state
      locale
    }
  }
  """

  # Optional
  query_filter = "customer.state:'ENABLED'"
  ```

  ##### Payload

  ```json
  {
    "topic": "Customer",
    "action": "update",
    "handle": "customer-event",
    "data": {
      "customer": {
        "id": "gid://shopify/Customer/5723780017102",
        "displayName": "Example customer",
        "email": "customer@example.com",
        "state": "ENABLED",
        "locale": "…"
      }
    },
    "fields_changed": {
      "added": [],
      "updated": [
        "customer[id: 'gid://shopify/Customer/5723780017102'].locale"
      ],
      "removed": []
    },
    "query_variables": {
      "customerId": "gid://shopify/Customer/5723780017102"
    }
  }
  ```

  ##### Headers

  ```bash
  shopify-action: update
  shopify-api-version: 2026-10
  shopify-handle: customer-event
  shopify-hmac-sha256: 61lWIGuA2nXdHRjhMU/+EDw2y3Eg0mPKJ+RhR7dKKIM=
  shopify-shop-domain: your-shop.myshopify.com
  shopify-topic: Customer
  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 = "2026-10"

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

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

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

  query = """
  query customer_event_payload($customerId: ID!, $metafieldNamespace: String!, $metafieldKey: String!) {
    customer(id: $customerId) {
      id
      displayName
      email
      state
      metafield(namespace: $metafieldNamespace, key: $metafieldKey) {
        namespace
        key
        value
        type
      }
    }
  }
  """
  ```

  ##### Payload (added)

  ```json
  {
    "topic": "Customer",
    "action": "update",
    "handle": "customer-event",
    "data": {
      "customer": {
        "id": "gid://shopify/Customer/5723780017102",
        "displayName": "Example customer",
        "email": "customer@example.com",
        "state": "ENABLED",
        "metafield": {
          "namespace": "custom",
          "key": "rating",
          "value": "Cotton",
          "type": "single_line_text_field"
        }
      }
    },
    "fields_changed": {
      "added": [
        "customer[id: 'gid://shopify/Customer/5723780017102'].metafield[namespace: 'custom', key: 'rating']"
      ],
      "updated": [],
      "removed": []
    },
    "query_variables": {
      "customerId": "gid://shopify/Customer/5723780017102",
      "metafieldKey": "rating",
      "metafieldNamespace": "custom"
    }
  }
  ```

  ##### Payload (removed)

  ```json
  {
    "topic": "Customer",
    "action": "update",
    "handle": "customer-event",
    "data": {
      "customer": {
        "id": "gid://shopify/Customer/5723780017102",
        "displayName": "Example customer",
        "email": "customer@example.com",
        "state": "ENABLED",
        "metafield": {
          "namespace": "custom",
          "key": "rating",
          "value": "Cotton",
          "type": "single_line_text_field"
        }
      }
    },
    "fields_changed": {
      "added": [],
      "updated": [],
      "removed": [
        "customer[id: 'gid://shopify/Customer/5723780017102'].metafield[namespace: 'custom', key: 'rating']"
      ]
    },
    "query_variables": {
      "customerId": "gid://shopify/Customer/5723780017102",
      "metafieldKey": "rating",
      "metafieldNamespace": "custom"
    }
  }
  ```

  ##### Headers

  ```bash
  shopify-action: update
  shopify-api-version: 2026-10
  shopify-handle: customer-event
  shopify-hmac-sha256: 61lWIGuA2nXdHRjhMU/+EDw2y3Eg0mPKJ+RhR7dKKIM=
  shopify-shop-domain: your-shop.myshopify.com
  shopify-topic: Customer
  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 = "2026-10"

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

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

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

  query = """
  query customer_event_payload($customerId: ID!, $metafieldNamespace: String!, $metafieldKey: String!) {
    customer(id: $customerId) {
      id
      displayName
      email
      state
      metafield(namespace: $metafieldNamespace, key: $metafieldKey) {
        namespace
        key
        value
        type
      }
    }
  }
  """
  ```

  ##### Payload (added)

  ```json
  {
    "topic": "Customer",
    "action": "update",
    "handle": "customer-event",
    "data": {
      "customer": {
        "id": "gid://shopify/Customer/5723780017102",
        "displayName": "Example customer",
        "email": "customer@example.com",
        "state": "ENABLED",
        "metafield": {
          "namespace": "custom",
          "key": "rating",
          "value": "Cotton",
          "type": "single_line_text_field"
        }
      }
    },
    "fields_changed": {
      "added": [
        "customer[id: 'gid://shopify/Customer/5723780017102'].metafield[namespace: 'custom', key: 'rating']"
      ],
      "updated": [],
      "removed": []
    },
    "query_variables": {
      "customerId": "gid://shopify/Customer/5723780017102",
      "metafieldKey": "rating",
      "metafieldNamespace": "custom"
    }
  }
  ```

  ##### Payload (removed)

  ```json
  {
    "topic": "Customer",
    "action": "update",
    "handle": "customer-event",
    "data": {
      "customer": {
        "id": "gid://shopify/Customer/5723780017102",
        "displayName": "Example customer",
        "email": "customer@example.com",
        "state": "ENABLED",
        "metafield": {
          "namespace": "custom",
          "key": "rating",
          "value": "Cotton",
          "type": "single_line_text_field"
        }
      }
    },
    "fields_changed": {
      "added": [],
      "updated": [],
      "removed": [
        "customer[id: 'gid://shopify/Customer/5723780017102'].metafield[namespace: 'custom', key: 'rating']"
      ]
    },
    "query_variables": {
      "customerId": "gid://shopify/Customer/5723780017102",
      "metafieldKey": "rating",
      "metafieldNamespace": "custom"
    }
  }
  ```

  ##### Headers

  ```bash
  shopify-action: update
  shopify-api-version: 2026-10
  shopify-handle: customer-event
  shopify-hmac-sha256: 61lWIGuA2nXdHRjhMU/+EDw2y3Eg0mPKJ+RhR7dKKIM=
  shopify-shop-domain: your-shop.myshopify.com
  shopify-topic: Customer
  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 = "2026-10"

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

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

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

  query = """
  query customer_event_payload($customerId: ID!, $metafieldNamespace: String!, $metafieldKey: String!) {
    customer(id: $customerId) {
      id
      displayName
      email
      state
      metafield(namespace: $metafieldNamespace, key: $metafieldKey) {
        namespace
        key
        value
        type
      }
    }
  }
  """
  ```

  ##### Payload

  ```json
  {
    "topic": "Customer",
    "action": "update",
    "handle": "customer-event",
    "data": {
      "customer": {
        "id": "gid://shopify/Customer/5723780017102",
        "displayName": "Example customer",
        "email": "customer@example.com",
        "state": "ENABLED",
        "metafield": {
          "namespace": "custom",
          "key": "rating",
          "value": "Cotton",
          "type": "single_line_text_field"
        }
      }
    },
    "fields_changed": {
      "added": [],
      "updated": [
        "customer[id: 'gid://shopify/Customer/5723780017102'].metafield[namespace: 'custom', key: 'rating'].value"
      ],
      "removed": []
    },
    "query_variables": {
      "customerId": "gid://shopify/Customer/5723780017102",
      "metafieldKey": "rating",
      "metafieldNamespace": "custom"
    }
  }
  ```

  ##### Headers

  ```bash
  shopify-action: update
  shopify-api-version: 2026-10
  shopify-handle: customer-event
  shopify-hmac-sha256: 61lWIGuA2nXdHRjhMU/+EDw2y3Eg0mPKJ+RhR7dKKIM=
  shopify-shop-domain: your-shop.myshopify.com
  shopify-topic: Customer
  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 = "2026-10"

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

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

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

  query = """
  query customer_event_payload($customerId: ID!, $metafieldNamespace: String!, $metafieldKey: String!) {
    customer(id: $customerId) {
      id
      displayName
      email
      state
      metafield(namespace: $metafieldNamespace, key: $metafieldKey) {
        namespace
        key
        value
        type
      }
    }
  }
  """
  ```

  ##### Payload

  ```json
  {
    "topic": "Customer",
    "action": "update",
    "handle": "customer-event",
    "data": {
      "customer": {
        "id": "gid://shopify/Customer/5723780017102",
        "displayName": "Example customer",
        "email": "customer@example.com",
        "state": "ENABLED",
        "metafield": {
          "namespace": "custom",
          "key": "rating",
          "value": "Cotton",
          "type": "single_line_text_field"
        }
      }
    },
    "fields_changed": {
      "added": [],
      "updated": [
        "customer[id: 'gid://shopify/Customer/5723780017102'].metafield[namespace: 'custom', key: 'rating'].value"
      ],
      "removed": []
    },
    "query_variables": {
      "customerId": "gid://shopify/Customer/5723780017102",
      "metafieldKey": "rating",
      "metafieldNamespace": "custom"
    }
  }
  ```

  ##### Headers

  ```bash
  shopify-action: update
  shopify-api-version: 2026-10
  shopify-handle: customer-event
  shopify-hmac-sha256: 61lWIGuA2nXdHRjhMU/+EDw2y3Eg0mPKJ+RhR7dKKIM=
  shopify-shop-domain: your-shop.myshopify.com
  shopify-topic: Customer
  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 = "2026-10"

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

  topic = "Customer"
  actions = ["update"]
  triggers = ["customer.multipassIdentifier"]

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

  query = """
  query customer_event_payload($customerId: ID!) {
    customer(id: $customerId) {
      id
      displayName
      email
      state
      multipassIdentifier
    }
  }
  """

  # Optional
  query_filter = "customer.state:'ENABLED'"
  ```

  ##### Payload

  ```json
  {
    "topic": "Customer",
    "action": "update",
    "handle": "customer-event",
    "data": {
      "customer": {
        "id": "gid://shopify/Customer/5723780017102",
        "displayName": "Example customer",
        "email": "customer@example.com",
        "state": "ENABLED",
        "multipassIdentifier": "…"
      }
    },
    "fields_changed": {
      "added": [],
      "updated": [
        "customer[id: 'gid://shopify/Customer/5723780017102'].multipassIdentifier"
      ],
      "removed": []
    },
    "query_variables": {
      "customerId": "gid://shopify/Customer/5723780017102"
    }
  }
  ```

  ##### Headers

  ```bash
  shopify-action: update
  shopify-api-version: 2026-10
  shopify-handle: customer-event
  shopify-hmac-sha256: 61lWIGuA2nXdHRjhMU/+EDw2y3Eg0mPKJ+RhR7dKKIM=
  shopify-shop-domain: your-shop.myshopify.com
  shopify-topic: Customer
  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 = "2026-10"

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

  topic = "Customer"
  actions = ["update"]
  triggers = ["customer.note"]

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

  query = """
  query customer_event_payload($customerId: ID!) {
    customer(id: $customerId) {
      id
      displayName
      email
      state
      note
    }
  }
  """

  # Optional
  query_filter = "customer.state:'ENABLED'"
  ```

  ##### Payload

  ```json
  {
    "topic": "Customer",
    "action": "update",
    "handle": "customer-event",
    "data": {
      "customer": {
        "id": "gid://shopify/Customer/5723780017102",
        "displayName": "Example customer",
        "email": "customer@example.com",
        "state": "ENABLED",
        "note": "…"
      }
    },
    "fields_changed": {
      "added": [],
      "updated": [
        "customer[id: 'gid://shopify/Customer/5723780017102'].note"
      ],
      "removed": []
    },
    "query_variables": {
      "customerId": "gid://shopify/Customer/5723780017102"
    }
  }
  ```

  ##### Headers

  ```bash
  shopify-action: update
  shopify-api-version: 2026-10
  shopify-handle: customer-event
  shopify-hmac-sha256: 61lWIGuA2nXdHRjhMU/+EDw2y3Eg0mPKJ+RhR7dKKIM=
  shopify-shop-domain: your-shop.myshopify.com
  shopify-topic: Customer
  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 = "2026-10"

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

  topic = "Customer"
  actions = ["update"]
  triggers = ["customer.numberOfOrders"]

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

  query = """
  query customer_event_payload($customerId: ID!) {
    customer(id: $customerId) {
      id
      displayName
      email
      state
      numberOfOrders
    }
  }
  """

  # Optional
  query_filter = "customer.state:'ENABLED'"
  ```

  ##### Payload

  ```json
  {
    "topic": "Customer",
    "action": "update",
    "handle": "customer-event",
    "data": {
      "customer": {
        "id": "gid://shopify/Customer/5723780017102",
        "displayName": "Example customer",
        "email": "customer@example.com",
        "state": "ENABLED",
        "numberOfOrders": "…"
      }
    },
    "fields_changed": {
      "added": [],
      "updated": [
        "customer[id: 'gid://shopify/Customer/5723780017102'].numberOfOrders"
      ],
      "removed": []
    },
    "query_variables": {
      "customerId": "gid://shopify/Customer/5723780017102"
    }
  }
  ```

  ##### Headers

  ```bash
  shopify-action: update
  shopify-api-version: 2026-10
  shopify-handle: customer-event
  shopify-hmac-sha256: 61lWIGuA2nXdHRjhMU/+EDw2y3Eg0mPKJ+RhR7dKKIM=
  shopify-shop-domain: your-shop.myshopify.com
  shopify-topic: Customer
  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 = "2026-10"

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

  topic = "Customer"
  actions = ["update"]
  triggers = ["customer.productSubscriberStatus"]

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

  query = """
  query customer_event_payload($customerId: ID!) {
    customer(id: $customerId) {
      id
      displayName
      email
      state
      productSubscriberStatus
    }
  }
  """

  # Optional
  query_filter = "customer.state:'ENABLED'"
  ```

  ##### Payload

  ```json
  {
    "topic": "Customer",
    "action": "update",
    "handle": "customer-event",
    "data": {
      "customer": {
        "id": "gid://shopify/Customer/5723780017102",
        "displayName": "Example customer",
        "email": "customer@example.com",
        "state": "ENABLED",
        "productSubscriberStatus": "…"
      }
    },
    "fields_changed": {
      "added": [],
      "updated": [
        "customer[id: 'gid://shopify/Customer/5723780017102'].productSubscriberStatus"
      ],
      "removed": []
    },
    "query_variables": {
      "customerId": "gid://shopify/Customer/5723780017102"
    }
  }
  ```

  ##### Headers

  ```bash
  shopify-action: update
  shopify-api-version: 2026-10
  shopify-handle: customer-event
  shopify-hmac-sha256: 61lWIGuA2nXdHRjhMU/+EDw2y3Eg0mPKJ+RhR7dKKIM=
  shopify-shop-domain: your-shop.myshopify.com
  shopify-topic: Customer
  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 = "2026-10"

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

  topic = "Customer"
  actions = ["update"]
  triggers = ["customer.state"]

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

  query = """
  query customer_event_payload($customerId: ID!) {
    customer(id: $customerId) {
      id
      displayName
      email
      state
    }
  }
  """

  # Optional
  query_filter = "customer.state:'ENABLED'"
  ```

  ##### Payload

  ```json
  {
    "topic": "Customer",
    "action": "update",
    "handle": "customer-event",
    "data": {
      "customer": {
        "id": "gid://shopify/Customer/5723780017102",
        "displayName": "Example customer",
        "email": "customer@example.com",
        "state": "ENABLED"
      }
    },
    "fields_changed": {
      "added": [],
      "updated": [
        "customer[id: 'gid://shopify/Customer/5723780017102'].state"
      ],
      "removed": []
    },
    "query_variables": {
      "customerId": "gid://shopify/Customer/5723780017102"
    }
  }
  ```

  ##### Headers

  ```bash
  shopify-action: update
  shopify-api-version: 2026-10
  shopify-handle: customer-event
  shopify-hmac-sha256: 61lWIGuA2nXdHRjhMU/+EDw2y3Eg0mPKJ+RhR7dKKIM=
  shopify-shop-domain: your-shop.myshopify.com
  shopify-topic: Customer
  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 = "2026-10"

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

  topic = "Customer"
  actions = ["update"]
  triggers = ["customer.tags"]

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

  query = """
  query customer_event_payload($customerId: ID!) {
    customer(id: $customerId) {
      id
      displayName
      email
      state
      tags
    }
  }
  """

  # Optional
  query_filter = "customer.state:'ENABLED'"
  ```

  ##### Payload

  ```json
  {
    "topic": "Customer",
    "action": "update",
    "handle": "customer-event",
    "data": {
      "customer": {
        "id": "gid://shopify/Customer/5723780017102",
        "displayName": "Example customer",
        "email": "customer@example.com",
        "state": "ENABLED",
        "tags": [
          "…"
        ]
      }
    },
    "fields_changed": {
      "added": [],
      "updated": [
        "customer[id: 'gid://shopify/Customer/5723780017102'].tags"
      ],
      "removed": []
    },
    "query_variables": {
      "customerId": "gid://shopify/Customer/5723780017102"
    }
  }
  ```

  ##### Headers

  ```bash
  shopify-action: update
  shopify-api-version: 2026-10
  shopify-handle: customer-event
  shopify-hmac-sha256: 61lWIGuA2nXdHRjhMU/+EDw2y3Eg0mPKJ+RhR7dKKIM=
  shopify-shop-domain: your-shop.myshopify.com
  shopify-topic: Customer
  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 = "2026-10"

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

  topic = "Customer"
  actions = ["update"]
  triggers = ["customer.taxExempt"]

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

  query = """
  query customer_event_payload($customerId: ID!) {
    customer(id: $customerId) {
      id
      displayName
      email
      state
      taxExempt
    }
  }
  """

  # Optional
  query_filter = "customer.state:'ENABLED'"
  ```

  ##### Payload

  ```json
  {
    "topic": "Customer",
    "action": "update",
    "handle": "customer-event",
    "data": {
      "customer": {
        "id": "gid://shopify/Customer/5723780017102",
        "displayName": "Example customer",
        "email": "customer@example.com",
        "state": "ENABLED",
        "taxExempt": "…"
      }
    },
    "fields_changed": {
      "added": [],
      "updated": [
        "customer[id: 'gid://shopify/Customer/5723780017102'].taxExempt"
      ],
      "removed": []
    },
    "query_variables": {
      "customerId": "gid://shopify/Customer/5723780017102"
    }
  }
  ```

  ##### Headers

  ```bash
  shopify-action: update
  shopify-api-version: 2026-10
  shopify-handle: customer-event
  shopify-hmac-sha256: 61lWIGuA2nXdHRjhMU/+EDw2y3Eg0mPKJ+RhR7dKKIM=
  shopify-shop-domain: your-shop.myshopify.com
  shopify-topic: Customer
  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 = "2026-10"

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

  topic = "Customer"
  actions = ["update"]
  triggers = ["customer.taxExemptions"]

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

  query = """
  query customer_event_payload($customerId: ID!) {
    customer(id: $customerId) {
      id
      displayName
      email
      state
      taxExemptions
    }
  }
  """

  # Optional
  query_filter = "customer.state:'ENABLED'"
  ```

  ##### Payload

  ```json
  {
    "topic": "Customer",
    "action": "update",
    "handle": "customer-event",
    "data": {
      "customer": {
        "id": "gid://shopify/Customer/5723780017102",
        "displayName": "Example customer",
        "email": "customer@example.com",
        "state": "ENABLED",
        "taxExemptions": [
          "…"
        ]
      }
    },
    "fields_changed": {
      "added": [],
      "updated": [
        "customer[id: 'gid://shopify/Customer/5723780017102'].taxExemptions"
      ],
      "removed": []
    },
    "query_variables": {
      "customerId": "gid://shopify/Customer/5723780017102"
    }
  }
  ```

  ##### Headers

  ```bash
  shopify-action: update
  shopify-api-version: 2026-10
  shopify-handle: customer-event
  shopify-hmac-sha256: 61lWIGuA2nXdHRjhMU/+EDw2y3Eg0mPKJ+RhR7dKKIM=
  shopify-shop-domain: your-shop.myshopify.com
  shopify-topic: Customer
  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 = "2026-10"

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

  topic = "Customer"
  actions = ["update"]
  triggers = ["customer.verifiedEmail"]

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

  query = """
  query customer_event_payload($customerId: ID!) {
    customer(id: $customerId) {
      id
      displayName
      email
      state
      verifiedEmail
    }
  }
  """

  # Optional
  query_filter = "customer.state:'ENABLED'"
  ```

  ##### Payload

  ```json
  {
    "topic": "Customer",
    "action": "update",
    "handle": "customer-event",
    "data": {
      "customer": {
        "id": "gid://shopify/Customer/5723780017102",
        "displayName": "Example customer",
        "email": "customer@example.com",
        "state": "ENABLED",
        "verifiedEmail": "customer@example.com"
      }
    },
    "fields_changed": {
      "added": [],
      "updated": [
        "customer[id: 'gid://shopify/Customer/5723780017102'].verifiedEmail"
      ],
      "removed": []
    },
    "query_variables": {
      "customerId": "gid://shopify/Customer/5723780017102"
    }
  }
  ```

  ##### Headers

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

***
