← Back to Metrics

Product View

EngagementRetailE-commerce

Counts the number of times a product is viewed either as a widget across the site/app or on product detail view. This metric is foundational for understanding product interest, merchandising effectiveness, and the top of the commerce conversion funnel. It helps teams evaluate product discovery and the relationship between product exposure and downstream actions such as add-to-cart, checkout, and purchase.

Business Use Case

Merchandising teams use this metric to identify high-interest products and optimize assortment placement. UX and product teams use it to assess PDP traffic and navigation effectiveness. Marketing teams compare product views by campaign, channel, and audience to evaluate traffic quality. Analysts use it as the denominator for add-to-cart rate, product conversion rate, and purchase funnel diagnostics.

Business Criticality

High

Journey / Navigation Area

Digital Analytics

Scope

Event

Formula

Product View = COUNT of product view events

Calculation Notes

1️⃣ Count each qualifying product detail view as one product view. 2️⃣ Count multiple items as separate views only if implementation supports it; otherwise, count one per viewed product. 3️⃣ Exclude non-product pages, quick-view overlays (unless defined), bot/internal traffic, QA environments, and duplicate events. 4️⃣ Ensure product_id is populated and stable across platforms. 5️⃣ Count multiple views of the same product in a session unless a unique product views metric is required.

Technical Details

Measure TypeCounter
Aggregation WindowEvent, User, Session, Daily, Monthly, Weekly, Yearly

Events

PlatformEvent
Google Analytics 4view_item
AdobeprodView

Data Mappings

W3 Data Layer
{
  "event": "product_view",
  "ecommerce": {
    "currency": "USD",
    "value": 129.99,
    "items": [
      {
        "item_id": "SKU-12345",
        "item_name": "Classic Running Shoe",
        "item_brand": "Acme",
        "item_category": "Footwear",
        "item_category2": "Running",
        "item_variant": "Blue / 10",
        "price": 129.99,
        "quantity": 1
      }
    ]
  },
  "page": {
    "pageType": "product",
    "pageName": "Classic Running Shoe"
  },
  "product": {
    "productId": "SKU-12345",
    "productName": "Classic Running Shoe"
  }
}
GA4 Data Layer
{
  "event": "view_item",
  "ecommerce": {
    "currency": "USD",
    "value": 129.99,
    "items": [
      {
        "item_id": "SKU-12345",
        "item_name": "Classic Running Shoe",
        "item_brand": "Acme",
        "item_category": "Footwear",
        "item_category2": "Running",
        "item_variant": "Blue / 10",
        "price": 129.99,
        "quantity": 1
      }
    ]
  }
}
Adobe Client Data Layer
{
  "event": "product-view",
  "product": {
    "productInfo": {
      "sku": "SKU-12345",
      "name": "Classic Running Shoe",
      "brand": "Acme",
      "price": 129.99
    },
    "category": {
      "primaryCategory": "Footwear",
      "subCategory1": "Running"
    },
    "attributes": {
      "variant": "Blue / 10"
    }
  },
  "page": {
    "pageInfo": {
      "pageType": "product",
      "pageName": "Classic Running Shoe"
    }
  }
}
XDM Mapping
{
  "eventType": "commerce.productViews",
  "timestamp": "timestamp",
  "web": {
    "webPageDetails": {
      "name": "page.pageName",
      "URL": "page.url"
    }
  },
  "productListItems": [
    {
      "SKU": "ecommerce.items[].item_id",
      "name": "ecommerce.items[].item_name",
      "brand": "ecommerce.items[].item_brand",
      "priceTotal": "ecommerce.items[].price",
      "quantity": "ecommerce.items[].quantity",
      "categories": [
        {
          "category": "ecommerce.items[].item_category"
        },
        {
          "category": "ecommerce.items[].item_category2"
        }
      ]
    }
  ],
  "commerce": {
    "productViews": {
      "value": 1
    }
  }
}

SQL Queries

Google Analytics 4 (BigQuery)
SELECT DATE(TIMESTAMP_MICROS(event_timestamp)) AS event_date, COUNT(*) AS product_view FROM `your_project.your_dataset.raw_digital_events`, UNNEST(event_params) AS params WHERE event_name IN ('view_item', 'product_view', 'prodView') AND COALESCE((SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'product_id'), (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'ecommerce.items[0].item_id')) IS NOT NULL GROUP BY event_date ORDER BY event_date;
Adobe Experience Platform (AEP Query Service)
SELECT DATE(eventTimestamp) AS event_date, COUNT(*) AS product_view FROM your_dataset.raw_digital_events WHERE eventType IN ('commerce.productView', 'commerce.viewItem') AND COALESCE(productListItems[0].SKU, _experience.analytics.customDimensions.eVars.eVar1) IS NOT NULL GROUP BY event_date ORDER BY event_date;

Source Data

Digital Analytics

Dependencies

Prerequisite: List the dependencies required for this Metric

Events:

product_detail_view

Dimensions:

Product Name

Report Attributes

product_id, product_name, item_brand, item_category, item_variant, page_type, device_category, platform, source, medium, campaign, channel_group, country, region, session_id, user_id

Recommended Reporting Views

Views
E-commerce Executive DashboardProduct Performance DashboardMerchandising DashboardConversion Funnel DashboardCampaign Landing Performance Dashboard

Segment Eligibility

True

Governance

Data SensitivityInternal

Derived KPIs

Governance

Created byswapnamagantius
Created on4/30/2026
Last modified bydevyendarm
Last modified on5/30/2026
StatusPUBLISHED

GitHub

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

Community Discussion