WooCommerce · AsyncAPI Specification

WooCommerce Webhook Events

Version v3

The WooCommerce webhook system delivers real-time HTTP POST event notifications to a subscriber-configured endpoint URL whenever specific store events occur. Supported topics cover create, update, delete, and restore actions for orders, products, customers, and coupons, as well as custom action-based topics mapped to any WordPress or WooCommerce action hook. Webhook payloads are JSON-encoded and mirror the corresponding REST API v3 response for the affected resource. Each delivery includes a set of X-WC-Webhook-* headers for identification and an HMAC-SHA256 signature generated from the payload using the webhook's configured secret key. WooCommerce automatically disables a webhook after five consecutive delivery failures.

View Spec View on GitHub eCommerceOpen SourceOrdersProductsWordPressAsyncAPIWebhooksEvents

Channels

/webhook
publish receiveWebhookEvent
Receive a WooCommerce webhook event notification
The endpoint on the subscriber's server that receives webhook event notifications from WooCommerce. WooCommerce sends HTTP POST requests with JSON-encoded payloads and a set of X-WC-Webhook-* headers. The receiver should verify the X-WC-Webhook-Signature header by computing an HMAC-SHA256 hash of the raw request body using the configured webhook secret key and comparing the base64-encoded result to the header value before processing the payload. Return a 2xx HTTP response to acknowledge receipt; any non-2xx or timeout response is treated as a failure.

Messages

OrderCreated
Order Created
Triggered when a new order is placed in the store.
OrderUpdated
Order Updated
Triggered when an existing order is modified.
OrderDeleted
Order Deleted
Triggered when an order is moved to the trash.
OrderRestored
Order Restored
Triggered when an order is recovered from the trash.
ProductCreated
Product Created
Triggered when a new product is published or saved in the store.
ProductUpdated
Product Updated
Triggered when an existing product is modified.
ProductDeleted
Product Deleted
Triggered when a product is moved to the trash.
ProductRestored
Product Restored
Triggered when a product is recovered from the trash.
CustomerCreated
Customer Created
Triggered when a new customer account is registered.
CustomerUpdated
Customer Updated
Triggered when a customer account is modified.
CustomerDeleted
Customer Deleted
Triggered when a customer account is deleted.
CouponCreated
Coupon Created
Triggered when a new coupon is created.
CouponUpdated
Coupon Updated
Triggered when a coupon is modified.
CouponDeleted
Coupon Deleted
Triggered when a coupon is moved to the trash.
CouponRestored
Coupon Restored
Triggered when a coupon is recovered from the trash.
CustomAction
Custom Action
Triggered by a custom WordPress or WooCommerce action hook.

Servers

https
woocommerce https://{store-domain}
WooCommerce sends webhook notifications as HTTP POST requests from the merchant's WordPress installation. The subscriber's registered delivery URL must be a publicly accessible HTTPS endpoint. Webhooks are configured in WooCommerce admin under Settings > Advanced > Webhooks or via the REST API /wc/v3/webhooks endpoints.

AsyncAPI Specification

Raw ↑
asyncapi: 2.6.0
info:
  title: WooCommerce Webhook Events
  description: >-
    The WooCommerce webhook system delivers real-time HTTP POST event
    notifications to a subscriber-configured endpoint URL whenever specific
    store events occur. Supported topics cover create, update, delete, and
    restore actions for orders, products, customers, and coupons, as well as
    custom action-based topics mapped to any WordPress or WooCommerce action
    hook. Webhook payloads are JSON-encoded and mirror the corresponding REST
    API v3 response for the affected resource. Each delivery includes a set of
    X-WC-Webhook-* headers for identification and an HMAC-SHA256 signature
    generated from the payload using the webhook's configured secret key.
    WooCommerce automatically disables a webhook after five consecutive
    delivery failures.
  version: 'v3'
  contact:
    name: WooCommerce Developer Support
    url: https://developer.woocommerce.com/docs/best-practices/urls-and-routing/webhooks/
  termsOfService: https://woocommerce.com/terms-conditions/
externalDocs:
  description: WooCommerce Webhooks Documentation
  url: https://woocommerce.com/document/webhooks/
servers:
  woocommerce:
    url: 'https://{store-domain}'
    protocol: https
    description: >-
      WooCommerce sends webhook notifications as HTTP POST requests from the
      merchant's WordPress installation. The subscriber's registered delivery
      URL must be a publicly accessible HTTPS endpoint. Webhooks are configured
      in WooCommerce admin under Settings > Advanced > Webhooks or via the REST
      API /wc/v3/webhooks endpoints.
    variables:
      store-domain:
        description: The domain of the WooCommerce store (e.g. example.com).
    security:
      - hmacSignature: []
channels:
  /webhook:
    description: >-
      The endpoint on the subscriber's server that receives webhook event
      notifications from WooCommerce. WooCommerce sends HTTP POST requests with
      JSON-encoded payloads and a set of X-WC-Webhook-* headers. The receiver
      should verify the X-WC-Webhook-Signature header by computing an
      HMAC-SHA256 hash of the raw request body using the configured webhook
      secret key and comparing the base64-encoded result to the header value
      before processing the payload. Return a 2xx HTTP response to acknowledge
      receipt; any non-2xx or timeout response is treated as a failure.
    publish:
      operationId: receiveWebhookEvent
      summary: Receive a WooCommerce webhook event notification
      description: >-
        WooCommerce delivers this message to the subscriber's registered
        delivery URL each time a subscribed store event occurs. The message
        type is determined by the X-WC-Webhook-Topic header (e.g.
        order.created). Verify the HMAC-SHA256 signature before processing.
      message:
        oneOf:
          - $ref: '#/components/messages/OrderCreated'
          - $ref: '#/components/messages/OrderUpdated'
          - $ref: '#/components/messages/OrderDeleted'
          - $ref: '#/components/messages/OrderRestored'
          - $ref: '#/components/messages/ProductCreated'
          - $ref: '#/components/messages/ProductUpdated'
          - $ref: '#/components/messages/ProductDeleted'
          - $ref: '#/components/messages/ProductRestored'
          - $ref: '#/components/messages/CustomerCreated'
          - $ref: '#/components/messages/CustomerUpdated'
          - $ref: '#/components/messages/CustomerDeleted'
          - $ref: '#/components/messages/CouponCreated'
          - $ref: '#/components/messages/CouponUpdated'
          - $ref: '#/components/messages/CouponDeleted'
          - $ref: '#/components/messages/CouponRestored'
          - $ref: '#/components/messages/CustomAction'
components:
  securitySchemes:
    hmacSignature:
      type: httpApiKey
      name: X-WC-Webhook-Signature
      in: header
      description: >-
        Base64-encoded HMAC-SHA256 signature of the raw JSON request body.
        The signature is generated using the webhook's configured secret key.
        Subscribers must compute HMAC-SHA256(secret, raw_body), base64-encode
        the result, and compare it to this header value to verify the
        notification originated from WooCommerce and has not been tampered with.
  messages:
    OrderCreated:
      name: OrderCreated
      title: Order Created
      summary: Triggered when a new order is placed in the store.
      description: >-
        WooCommerce delivers this event when a new order is created, regardless
        of whether the order was placed by a customer, created via the admin, or
        submitted through the REST API. The payload mirrors the REST API v3
        order resource.
      headers:
        type: object
        properties:
          X-WC-Webhook-Topic:
            type: string
            description: The webhook topic identifier.
            const: order.created
          X-WC-Webhook-Resource:
            type: string
            description: The resource type.
            const: order
          X-WC-Webhook-Event:
            type: string
            description: The event action.
            const: created
          X-WC-Webhook-Signature:
            type: string
            description: Base64-encoded HMAC-SHA256 payload signature.
          X-WC-Webhook-ID:
            type: string
            description: The webhook's numeric post ID.
          X-WC-Webhook-Delivery-ID:
            type: string
            description: Unique delivery log identifier.
      payload:
        $ref: '#/components/schemas/OrderPayload'
    OrderUpdated:
      name: OrderUpdated
      title: Order Updated
      summary: Triggered when an existing order is modified.
      description: >-
        Delivered when any order property changes including status transitions,
        address updates, payment information, and line item modifications. The
        payload mirrors the REST API v3 order resource.
      headers:
        type: object
        properties:
          X-WC-Webhook-Topic:
            type: string
            description: The webhook topic identifier.
            const: order.updated
          X-WC-Webhook-Resource:
            type: string
            description: The resource type.
            const: order
          X-WC-Webhook-Event:
            type: string
            description: The event action.
            const: updated
          X-WC-Webhook-Signature:
            type: string
            description: Base64-encoded HMAC-SHA256 payload signature.
          X-WC-Webhook-ID:
            type: string
            description: Webhook numeric post ID.
          X-WC-Webhook-Delivery-ID:
            type: string
            description: Unique delivery log identifier.
      payload:
        $ref: '#/components/schemas/OrderPayload'
    OrderDeleted:
      name: OrderDeleted
      title: Order Deleted
      summary: Triggered when an order is moved to the trash.
      description: >-
        Delivered when an order is trashed from the WooCommerce admin or deleted
        via the REST API. The payload mirrors the REST API v3 order resource at
        the time of deletion.
      headers:
        type: object
        properties:
          X-WC-Webhook-Topic:
            type: string
            description: The webhook topic identifier.
            const: order.deleted
          X-WC-Webhook-Resource:
            type: string
            description: The resource type.
            const: order
          X-WC-Webhook-Event:
            type: string
            description: The event action.
            const: deleted
          X-WC-Webhook-Signature:
            type: string
            description: Base64-encoded HMAC-SHA256 payload signature.
          X-WC-Webhook-ID:
            type: string
            description: Webhook numeric post ID.
          X-WC-Webhook-Delivery-ID:
            type: string
            description: Unique delivery log identifier.
      payload:
        $ref: '#/components/schemas/OrderPayload'
    OrderRestored:
      name: OrderRestored
      title: Order Restored
      summary: Triggered when an order is recovered from the trash.
      description: >-
        Delivered when a previously trashed order is restored. The payload
        mirrors the REST API v3 order resource.
      headers:
        type: object
        properties:
          X-WC-Webhook-Topic:
            type: string
            description: The webhook topic identifier.
            const: order.restored
          X-WC-Webhook-Resource:
            type: string
            description: The resource type.
            const: order
          X-WC-Webhook-Event:
            type: string
            description: The event action.
            const: restored
          X-WC-Webhook-Signature:
            type: string
            description: Base64-encoded HMAC-SHA256 payload signature.
          X-WC-Webhook-ID:
            type: string
            description: Webhook numeric post ID.
          X-WC-Webhook-Delivery-ID:
            type: string
            description: Unique delivery log identifier.
      payload:
        $ref: '#/components/schemas/OrderPayload'
    ProductCreated:
      name: ProductCreated
      title: Product Created
      summary: Triggered when a new product is published or saved in the store.
      description: >-
        Delivered when a new product is created via the WooCommerce admin, REST
        API, or import. The payload mirrors the REST API v3 product resource.
      headers:
        type: object
        properties:
          X-WC-Webhook-Topic:
            type: string
            description: The webhook topic identifier.
            const: product.created
          X-WC-Webhook-Resource:
            type: string
            description: The resource type.
            const: product
          X-WC-Webhook-Event:
            type: string
            description: The event action.
            const: created
          X-WC-Webhook-Signature:
            type: string
            description: Base64-encoded HMAC-SHA256 payload signature.
          X-WC-Webhook-ID:
            type: string
            description: Webhook numeric post ID.
          X-WC-Webhook-Delivery-ID:
            type: string
            description: Unique delivery log identifier.
      payload:
        $ref: '#/components/schemas/ProductPayload'
    ProductUpdated:
      name: ProductUpdated
      title: Product Updated
      summary: Triggered when an existing product is modified.
      description: >-
        Delivered when any product property changes including price, stock,
        description, images, categories, or status. The payload mirrors the
        REST API v3 product resource.
      headers:
        type: object
        properties:
          X-WC-Webhook-Topic:
            type: string
            description: The webhook topic identifier.
            const: product.updated
          X-WC-Webhook-Resource:
            type: string
            description: The resource type.
            const: product
          X-WC-Webhook-Event:
            type: string
            description: The event action.
            const: updated
          X-WC-Webhook-Signature:
            type: string
            description: Base64-encoded HMAC-SHA256 payload signature.
          X-WC-Webhook-ID:
            type: string
            description: Webhook numeric post ID.
          X-WC-Webhook-Delivery-ID:
            type: string
            description: Unique delivery log identifier.
      payload:
        $ref: '#/components/schemas/ProductPayload'
    ProductDeleted:
      name: ProductDeleted
      title: Product Deleted
      summary: Triggered when a product is moved to the trash.
      description: >-
        Delivered when a product is trashed. The payload mirrors the REST API
        v3 product resource at the time of deletion.
      headers:
        type: object
        properties:
          X-WC-Webhook-Topic:
            type: string
            description: The webhook topic identifier.
            const: product.deleted
          X-WC-Webhook-Resource:
            type: string
            description: The resource type.
            const: product
          X-WC-Webhook-Event:
            type: string
            description: The event action.
            const: deleted
          X-WC-Webhook-Signature:
            type: string
            description: Base64-encoded HMAC-SHA256 payload signature.
          X-WC-Webhook-ID:
            type: string
            description: Webhook numeric post ID.
          X-WC-Webhook-Delivery-ID:
            type: string
            description: Unique delivery log identifier.
      payload:
        $ref: '#/components/schemas/ProductPayload'
    ProductRestored:
      name: ProductRestored
      title: Product Restored
      summary: Triggered when a product is recovered from the trash.
      description: >-
        Delivered when a previously trashed product is restored. The payload
        mirrors the REST API v3 product resource.
      headers:
        type: object
        properties:
          X-WC-Webhook-Topic:
            type: string
            description: The webhook topic identifier.
            const: product.restored
          X-WC-Webhook-Resource:
            type: string
            description: The resource type.
            const: product
          X-WC-Webhook-Event:
            type: string
            description: The event action.
            const: restored
          X-WC-Webhook-Signature:
            type: string
            description: Base64-encoded HMAC-SHA256 payload signature.
          X-WC-Webhook-ID:
            type: string
            description: Webhook numeric post ID.
          X-WC-Webhook-Delivery-ID:
            type: string
            description: Unique delivery log identifier.
      payload:
        $ref: '#/components/schemas/ProductPayload'
    CustomerCreated:
      name: CustomerCreated
      title: Customer Created
      summary: Triggered when a new customer account is registered.
      description: >-
        Delivered when a new WordPress user with the customer role is created,
        whether via storefront registration, checkout account creation, admin
        creation, or REST API. The payload mirrors the REST API v3 customer
        resource.
      headers:
        type: object
        properties:
          X-WC-Webhook-Topic:
            type: string
            description: The webhook topic identifier.
            const: customer.created
          X-WC-Webhook-Resource:
            type: string
            description: The resource type.
            const: customer
          X-WC-Webhook-Event:
            type: string
            description: The event action.
            const: created
          X-WC-Webhook-Signature:
            type: string
            description: Base64-encoded HMAC-SHA256 payload signature.
          X-WC-Webhook-ID:
            type: string
            description: Webhook numeric post ID.
          X-WC-Webhook-Delivery-ID:
            type: string
            description: Unique delivery log identifier.
      payload:
        $ref: '#/components/schemas/CustomerPayload'
    CustomerUpdated:
      name: CustomerUpdated
      title: Customer Updated
      summary: Triggered when a customer account is modified.
      description: >-
        Delivered when customer profile data changes including billing/shipping
        addresses, email address, password, or custom meta fields. The payload
        mirrors the REST API v3 customer resource.
      headers:
        type: object
        properties:
          X-WC-Webhook-Topic:
            type: string
            description: The webhook topic identifier.
            const: customer.updated
          X-WC-Webhook-Resource:
            type: string
            description: The resource type.
            const: customer
          X-WC-Webhook-Event:
            type: string
            description: The event action.
            const: updated
          X-WC-Webhook-Signature:
            type: string
            description: Base64-encoded HMAC-SHA256 payload signature.
          X-WC-Webhook-ID:
            type: string
            description: Webhook numeric post ID.
          X-WC-Webhook-Delivery-ID:
            type: string
            description: Unique delivery log identifier.
      payload:
        $ref: '#/components/schemas/CustomerPayload'
    CustomerDeleted:
      name: CustomerDeleted
      title: Customer Deleted
      summary: Triggered when a customer account is deleted.
      description: >-
        Delivered when a customer's WordPress user account is permanently
        deleted. The payload mirrors the REST API v3 customer resource at the
        time of deletion.
      headers:
        type: object
        properties:
          X-WC-Webhook-Topic:
            type: string
            description: The webhook topic identifier.
            const: customer.deleted
          X-WC-Webhook-Resource:
            type: string
            description: The resource type.
            const: customer
          X-WC-Webhook-Event:
            type: string
            description: The event action.
            const: deleted
          X-WC-Webhook-Signature:
            type: string
            description: Base64-encoded HMAC-SHA256 payload signature.
          X-WC-Webhook-ID:
            type: string
            description: Webhook numeric post ID.
          X-WC-Webhook-Delivery-ID:
            type: string
            description: Unique delivery log identifier.
      payload:
        $ref: '#/components/schemas/CustomerPayload'
    CouponCreated:
      name: CouponCreated
      title: Coupon Created
      summary: Triggered when a new coupon is created.
      description: >-
        Delivered when a new discount coupon is saved. The payload mirrors the
        REST API v3 coupon resource.
      headers:
        type: object
        properties:
          X-WC-Webhook-Topic:
            type: string
            description: The webhook topic identifier.
            const: coupon.created
          X-WC-Webhook-Resource:
            type: string
            description: The resource type.
            const: coupon
          X-WC-Webhook-Event:
            type: string
            description: The event action.
            const: created
          X-WC-Webhook-Signature:
            type: string
            description: Base64-encoded HMAC-SHA256 payload signature.
          X-WC-Webhook-ID:
            type: string
            description: Webhook numeric post ID.
          X-WC-Webhook-Delivery-ID:
            type: string
            description: Unique delivery log identifier.
      payload:
        $ref: '#/components/schemas/CouponPayload'
    CouponUpdated:
      name: CouponUpdated
      title: Coupon Updated
      summary: Triggered when a coupon is modified.
      description: >-
        Delivered when a coupon's properties change including amount, expiry,
        usage limits, or restriction settings. The payload mirrors the REST API
        v3 coupon resource.
      headers:
        type: object
        properties:
          X-WC-Webhook-Topic:
            type: string
            description: The webhook topic identifier.
            const: coupon.updated
          X-WC-Webhook-Resource:
            type: string
            description: The resource type.
            const: coupon
          X-WC-Webhook-Event:
            type: string
            description: The event action.
            const: updated
          X-WC-Webhook-Signature:
            type: string
            description: Base64-encoded HMAC-SHA256 payload signature.
          X-WC-Webhook-ID:
            type: string
            description: Webhook numeric post ID.
          X-WC-Webhook-Delivery-ID:
            type: string
            description: Unique delivery log identifier.
      payload:
        $ref: '#/components/schemas/CouponPayload'
    CouponDeleted:
      name: CouponDeleted
      title: Coupon Deleted
      summary: Triggered when a coupon is moved to the trash.
      description: >-
        Delivered when a coupon is trashed. The payload mirrors the REST API
        v3 coupon resource at the time of deletion.
      headers:
        type: object
        properties:
          X-WC-Webhook-Topic:
            type: string
            description: The webhook topic identifier.
            const: coupon.deleted
          X-WC-Webhook-Resource:
            type: string
            description: The resource type.
            const: coupon
          X-WC-Webhook-Event:
            type: string
            description: The event action.
            const: deleted
          X-WC-Webhook-Signature:
            type: string
            description: Base64-encoded HMAC-SHA256 payload signature.
          X-WC-Webhook-ID:
            type: string
            description: Webhook numeric post ID.
          X-WC-Webhook-Delivery-ID:
            type: string
            description: Unique delivery log identifier.
      payload:
        $ref: '#/components/schemas/CouponPayload'
    CouponRestored:
      name: CouponRestored
      title: Coupon Restored
      summary: Triggered when a coupon is recovered from the trash.
      description: >-
        Delivered when a previously trashed coupon is restored to active status.
        The payload mirrors the REST API v3 coupon resource.
      headers:
        type: object
        properties:
          X-WC-Webhook-Topic:
            type: string
            description: The webhook topic identifier.
            const: coupon.restored
          X-WC-Webhook-Resource:
            type: string
            description: The resource type.
            const: coupon
          X-WC-Webhook-Event:
            type: string
            description: The event action.
            const: restored
          X-WC-Webhook-Signature:
            type: string
            description: Base64-encoded HMAC-SHA256 payload signature.
          X-WC-Webhook-ID:
            type: string
            description: Webhook numeric post ID.
          X-WC-Webhook-Delivery-ID:
            type: string
            description: Unique delivery log identifier.
      payload:
        $ref: '#/components/schemas/CouponPayload'
    CustomAction:
      name: CustomAction
      title: Custom Action
      summary: Triggered by a custom WordPress or WooCommerce action hook.
      description: >-
        Delivered when the specified WordPress/WooCommerce action hook fires.
        The topic is prefixed with action. (e.g. action.woocommerce_add_to_cart).
        The payload for custom action webhooks is the array of arguments passed
        to the hook. Custom action topics are configured in the WooCommerce
        admin or via the REST API webhook resource.
      headers:
        type: object
        properties:
          X-WC-Webhook-Topic:
            type: string
            description: >-
              The full custom topic name in the format action.{hook_name}
              (e.g. action.woocommerce_add_to_cart).
            pattern: '^action\..+'
          X-WC-Webhook-Resource:
            type: string
            description: Set to action for custom action topics.
            const: action
          X-WC-Webhook-Event:
            type: string
            description: The action hook name without the action. prefix.
          X-WC-Webhook-Signature:
            type: string
            description: Base64-encoded HMAC-SHA256 payload signature.
          X-WC-Webhook-ID:
            type: string
            description: Webhook numeric post ID.
          X-WC-Webhook-Delivery-ID:
            type: string
            description: Unique delivery log identifier.
      payload:
        type: object
        description: >-
          The hook arguments array serialized as a JSON object. Structure varies
          by the specific action hook.
        additionalProperties: true
  schemas:
    Address:
      type: object
      description: Billing or shipping address.
      properties:
        first_name:
          type: string
          description: First name.
        last_name:
          type: string
          description: Last name.
        company:
          type: string
          description: Company name.
        address_1:
          type: string
          description: Address line 1.
        address_2:
          type: string
          description: Address line 2.
        city:
          type: string
          description: City.
        state:
          type: string
          description: State code.
        postcode:
          type: string
          description: Postal code.
        country:
          type: string
          description: ISO 3166-1 alpha-2 country code.
        email:
          type: string
          description: Email address (billing).
        phone:
          type: string
          description: Phone number (billing).
    MetaData:
      type: object
      description: Custom metadata key-value entry.
      properties:
        id:
          type: integer
          description: Metadata ID.
        key:
          type: string
          description: Metadata key.
        value:
          type: string
          description: Metadata value.
    OrderPayload:
      type: object
      description: >-
        Order webhook payload mirroring the WooCommerce REST API v3 order
        resource.
      properties:
        id:
          type: integer
          description: Order unique identifier.
        parent_id:
          type: integer
          description: Parent order ID.
        number:
          type: string
          description: Order number displayed to customers.
        order_key:
          type: string
          description: Order key for ownership verification.
        status:
          type: string
          description: >-
            Order status (pending, processing, on-hold, completed, cancelled,
            refunded, failed).
        currency:
          type: string
          description: ISO 4217 currency code.
        date_created:
          type: string
          description: Date the order was created (ISO8601).
        date_modified:
          type: string
          description: Date the order was last modified (ISO8601).
        discount_total:
          type: string
          description: Total discount as a decimal string.
        shipping_total:
          type: string
          description: Total shipping cost as a decimal string.
        total:
          type: string
          description: Grand total as a decimal string.
        total_tax:
          type: string
          description: Total tax as a decimal string.
        customer_id:
          type: integer
          description: Customer ID (0 for guest orders).
        customer_note:
          type: string
          description: Note from the customer.
        billing:
          $ref: '#/components/schemas/Address'
        shipping:
          $ref: '#/components/schemas/Address'
        payment_method:
          type: string
          description: Payment method ID.
        payment_method_title:
          type: string
          description: Human-readable payment method name.
        transaction_id:
          type: string
          description: Payment gateway transaction ID.
        line_items:
          type: array
          description: Products purchased in the order.
          items:
            type: object
            properties:
              id:
                type: integer
                description: Line item ID.
              name:
                type: string
                description: Product name.
              product_id:
                type: integer
                description: Product ID.
              variation_id:
                type: integer
                description: Variation ID.
              quantity:
                type: integer
                description: Quantity.
              subtotal:
                type: string
                description: Line subtotal.
              total:
                type: string
                description: Line total.
              sku:
                type: string
                description: Product SKU.
        meta_data:
          type: array
          description: Custom metadata.
          items:
            $ref: '#/components/schemas/MetaData'
    ProductPayload:
      type: object
      description: >-
        Product webhook payload mirroring the WooCommerce REST API v3 product
        resource.
      properties:
        id:
          type: integer
          description: Product unique identifier.
        name:
          type: string
          description: Product name.
        slug:
          type: string
          description: Product slug.
        type:
          type: string
          description: Product type (simple, variable, grouped, external).
        status:
          type: string
          description: Product status.
        featured:
          type: boolean
          description: Whether the product is featured.
        description:
          type: string
          description: Product description.
        sku:
          type: string
          description: Product SKU.
        price:
          type: string
          description: Current price.
        regular_price:
          type: string
          description: Regular price.
        sale_price:
          type: string
          description: Sale price.
        on_sale:
          type: boolean
          description: Whether on sale.
        stock_status:
          type: string
          description: Stock status.
        stock_quantity:
          type: integer
          description: Stock quantity.
          nullable: true
        categories:
          type: array
          description: Assigned categories.
          items:
            type: object
            properties:
              id:
                type: integer
              name:
                type: string
              slug:
                type: string
        date_created:
          type: string
          description: Date created (ISO8601).
        date_modified:
          type: string
          description: Date modified (ISO8601).
        meta_data:
          type: array
          description: Custom metadata.
          items:
            $ref: '#/components/schemas/MetaData'
    CustomerPayload:
      type: object
      description: >-
        Customer webhook payload mirroring the WooCommerce REST API v3 customer
        resource.
      properties:
        id:
          type: integer
          description: Customer unique identifier.
        date_created:
          type: string
          description: Date account was created (ISO8601).
        date_modified:
          type: string
          description: Date account was last modified (ISO8601).
        email:
          type: string
          description: Customer email address.
        first_name:
          type: string
          description: First name.
        last_name:
          type: string
          description: Last name.
        role:
          type: string
          description: WordPress user role.
        username:
          type: string
          description: WordPress username.
        billing:
          $ref: '#/components/schemas/Address'
        shipping:
          $ref: '#/components/schemas/Address'
        is_paying_customer:
          type: boolean
          description: Whether the customer has completed at least one order.
        orders_count:
          type: integer
          description: Total number of orders.
        total_spent:
          type: string
          description: Total amount spent.
        meta_data:
          type: array
          description: Custom metadata.
          items:
            $ref: '#/components/schemas/MetaData'
    CouponPayload:
      type: object
      description: >-
        Coupon webhook payload mirroring the WooCommerce REST API v3 coupon
        resource.
      properties:
        id:
          type: integer
          description: Coupon unique identifier.
        code:
          type: string
          description: Coupon code.
        amount:
          type: string
          description: Discount amount.
        discount_type:
          type: string
          description: Discount type (percent, fixed_cart, fixed_product).
        description:
          type: string
          description: Admin description.
        date_expires:
          type: string
          description: Expiry date (ISO8601).
          nullable: true
        usage_count:
          type

# --- truncated at 32 KB (33 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/woocommerce/refs/heads/main/asyncapi/woocommerce-webhooks-asyncapi.yml