← Back to Events

Product View

Also known as: PDP View, Item View, Product Detail View, view_item

EngagementeventE-commerce: Product Discovery & Merchandising (Search/Filters/PDP)E-commerce

Fires when a shopper renders a Product Detail Page, capturing the full item payload (identifier, name, category, brand, variant and price) as the primary signal of interest in a specific product. It anchors product-level engagement analysis and is the entry event for the PDP-to-cart funnel.

Event Serialization

always

Business Use Case

1️⃣ Merchandising: in the weekly demand review, ranks products by Product View volume per item_group_id and item_category against on-hand inventory from the PIM/ERP feed (variant-level demand is read from add_to_cart, because the view carries only the preselected variant); high-view products with thin cover are escalated to buying for replenishment, and high-view items with healthy stock are nominated for homepage and category promotional slots. 2️⃣ E-commerce UX team: when a product (item_group_id) sits in the top view quartile of its category but its Item View-to-Cart Rate, computed at item_group_id (product page) level, falls below the category median for two consecutive weeks, the PDP is queued for a content, imagery, size-guidance or price test. 3️⃣ Performance Marketing: builds a rolling 7-day audience of users who fired a Product View without a matching add_to_cart on the same item_group_id (views and carts are matched at product level, since the shopper may add a different variant than the one preselected) and syncs it to dynamic product remarketing campaigns, whose feed can still be keyed on the viewed item_id. 4️⃣ Merchandising and Inventory Planning: reviews views on items with stock_status = out_of_stock each week to size lost demand, bring forward purchase orders on the top offenders and enable back-in-stock notifications on those PDPs.

Business Criticality

High

Journey / Navigation Area

Discovery

Owning Function

Merchandising

Scope

Event

Calculation Notes

1️⃣ Fire once per Product Detail Page render, including client-side route changes in single-page storefronts; do not fire for quick-view modals or list impressions (those are view_item_list / select_item). 2️⃣ Send exactly ONE item per fire: the viewed product at quantity 1, or on bundle and kit pages the single parent bundle item (never its component SKUs). The item object carries item_id (variant-level SKU), item_group_id (parent style ID), item_name, price, quantity 1, item_brand, item_category, item_category2, item_variant, item_list_name and stock_status; event-level value = price × quantity, which equals the displayed unit price, and event-level currency (ISO 4217) is mandatory whenever value is sent, otherwise GA4 discards the monetary value and PIM price joins become unreliable. 3️⃣ Do not fire on browser back-forward cache restores or on tab re-focus; a reload is a new view. 4️⃣ Pre-render and prefetch requests must not fire the event at collection; in GA4, internal traffic is excluded via traffic_type (internal traffic rule), developer traffic via debug_mode, and known bots are removed automatically at collection; in AEP, internal, developer and bot traffic are excluded via event-level _tenant.trafficType. 5️⃣ Repeat views of the same item in the same session each count as separate events; uniqueness (distinct sessions or users) is applied downstream in the Product View metric (product-view) and Item View-to-Cart Rate. 6️⃣ Out-of-stock, low-stock and pre-order pages still fire, with stock_status captured as an item-scoped parameter so suppressed demand on unavailable items remains measurable. 7️⃣ Swatch, size or configurator changes on an already rendered PDP do not fire a new view; the selected variant is carried on the subsequent add_to_cart.

Platform Events

PlatformEvent
Google Analytics 4view_item
AdobeprodView

Data Mappings

W3 Data Layer
{
  "page": {
    "category": {
      "pageType": "pdp"
    }
  },
  "product": [
    {
      "productInfo": {
        "productID": "SKU-99812-B",
        "sku": "SKU-99812-B",
        "productName": "ZenFlow Eco-Mat",
        "manufacturer": "ZenFlow",
        "color": "Sage Green"
      },
      "category": {
        "primaryCategory": "Fitness",
        "subCategory1": "Yoga"
      },
      "price": {
        "basePrice": 85,
        "currency": "USD"
      },
      "quantity": 1,
      "attributes": {
        "itemGroupId": "ZF-ECOMAT",
        "brand": "ZenFlow",
        "variant": "Sage Green",
        "stockStatus": "in_stock",
        "listName": "Search Results"
      }
    }
  ],
  "event": [
    {
      "eventInfo": {
        "eventName": "view_item",
        "eventAction": "product:view"
      },
      "attributes": {
        "currency": "USD",
        "value": 85
      }
    }
  ]
}
GA4 Data Layer
{
  "event": "view_item",
  "ecommerce": {
    "currency": "USD",
    "value": 85,
    "items": [
      {
        "item_id": "SKU-99812-B",
        "item_group_id": "ZF-ECOMAT",
        "item_name": "ZenFlow Eco-Mat",
        "item_brand": "ZenFlow",
        "item_category": "Fitness",
        "item_category2": "Yoga",
        "item_variant": "Sage Green",
        "price": 85,
        "quantity": 1,
        "item_list_name": "Search Results",
        "stock_status": "in_stock"
      }
    ]
  }
}
Adobe Client Data Layer
{
  "event": "product:view",
  "eventInfo": {
    "adobeEvent": "prodView",
    "currencyCode": "USD",
    "value": 85,
    "trafficType": "external"
  },
  "page": {
    "pageName": "product:zenflow-eco-mat",
    "pageType": "pdp"
  },
  "product": [
    {
      "sku": "SKU-99812-B",
      "itemGroupId": "ZF-ECOMAT",
      "name": "ZenFlow Eco-Mat",
      "brand": "ZenFlow",
      "variant": "Sage Green",
      "category": "Fitness",
      "category2": "Yoga",
      "categoryPath": "Fitness:Yoga",
      "price": 85,
      "currencyCode": "USD",
      "quantity": 1,
      "listName": "Search Results",
      "stockStatus": "in_stock"
    }
  ]
}
XDM Mapping
{
  "xdm": {
    "eventType": "commerce.productViews",
    "_tenant": {
      "trafficType": "external"
    },
    "commerce": {
      "productViews": {
        "value": 1
      }
    },
    "productListItems": [
      {
        "SKU": "SKU-99812-B",
        "name": "ZenFlow Eco-Mat",
        "priceTotal": 85,
        "currencyCode": "USD",
        "quantity": 1,
        "productCategories": [
          {
            "name": "Fitness"
          }
        ],
        "selectedOptions": [
          {
            "attribute": "color",
            "value": "Sage Green"
          }
        ],
        "_tenant": {
          "itemGroupId": "ZF-ECOMAT",
          "itemBrand": "ZenFlow",
          "itemVariant": "Sage Green",
          "itemCategory2": "Yoga",
          "itemListName": "Search Results",
          "stockStatus": "in_stock"
        }
      }
    ]
  }
}
Parameters
{
  "items": "array - exactly one item object: the viewed product on a standard PDP, or the single parent bundle item on bundle and kit pages (never component SKUs)",
  "price": "number - displayed unit selling price after item-level markdowns, excluding tax and shipping",
  "value": "number - monetary value of the event = price × quantity of the single rendered item (quantity 1), i.e. the displayed unit price, excluding tax and shipping",
  "item_id": "string - variant-level SKU matching the product feed ID; required when item_name is absent",
  "currency": "string - ISO 4217 code of the displayed price (e.g. USD); mandatory whenever value is sent",
  "quantity": "integer - fixed at 1 for a product view",
  "item_name": "string - product display name as mastered in the PIM",
  "item_brand": "string - brand or manufacturer name from the PIM",
  "item_variant": "string - default or pre-selected variant at render (colour, size, pack); later swatch changes do not refire",
  "stock_status": "string - item-scoped availability at render: in_stock, low_stock, out_of_stock, pre_order or backorder",
  "traffic_type": "string - not pushed in the GA4 dataLayer: GA4 sets the traffic_type event parameter through the internal traffic rule (internal), flags developer traffic via debug_mode and removes known bots automatically at collection; Adobe carries it as event-level trafficType in the ACDL and _tenant.trafficType in XDM (external, internal, developer, bot)",
  "item_category": "string - top-level merchandise category from the PIM taxonomy",
  "item_group_id": "string - parent style / product group ID shared by all variants of the product, matching the product feed item_group_id",
  "item_category2": "string - second-level merchandise category from the PIM taxonomy",
  "item_list_name": "string - list or placement the shopper arrived from (e.g. Search Results, Category Grid, Recommendations), inherited from the preceding select_item; (not set) on direct landings"
}

Source Data

Digital Analytics (GA4) + PIM

Dependencies

Prerequisite: List the dependencies required for this Event

Report Attributes

Product ID Product Name Item Category Product Brand Product Variant Stock Status Item List Name Device Category Traffic Source

Segment Eligibility

true

Governance

Data SensitivityInternal

Dimensions

Derived Entities

Derived Metrics

Governance & Metadata

Created bydevyendarm
Created on3/17/2026
Last modified bydevyendarm
Last modified on9/15/2026
StatusPUBLISHED

GitHub

View related Pull Requestcatalog/events/product-view.yml

Community Discussion