Skip to content
Docs
Browse Analytics

Products explore

The Products explore has one row for every item of an ecommerce action, with the product it is. What it covers, what to know when reading it, and every dimension and metric in it.

The Products explore has one row for every item of an ecommerce action: a product listed, selected, viewed, added to the cart or taken out of it, checked out, bought or refunded, each with the product it is. It reads your organisation's own item lists and, for a store that captures purchases, Kontala's Shopify pixel's lines, so you have it whenever you have the Items explore. It comes with the Products: what sells? dashboard.

Good to know

  • An item's Action is what its row says. A pushed event counts by its name, as GA4, Universal Analytics, Segment and the Meta Pixel name theirs; a page's own list by its page type, so a Product detail page is a view of its first item and a Cart page a view in the cart; and a Shopify line by the list the pixel reported it in.
  • A purchase's lines count once. An order is named by its Order transaction ID, a Shopify order's own id, or else its page view, and only its first report counts (Counted), so a reloaded thank-you page, or an order reported by two tools, adds nothing where the order has an id. Every refund counts.
  • A product's attributes, such as Brand, Category and Latest price, are what its items last carried.

Used on dashboards

Charts on these dashboards are built on the Products explore:

  • Products: what sells?: Products and Categories and lists

Dimensions

The Products explore has 47 dimensions.

The product

DimensionTypeDescription
ProductStringThe product's name as the store calls it: the title Kontala's Shopify pixel last reported for it, which is the store's own, untranslated, else the latest name any of its items carried, else its Product key. Products of one name are one row here, as a Shopify product's variants are: Product key tells them apart.
Product keyStringWhat the product is known by: its standard Item ID, else its Item SKU, else the id its list names, else its name, written name: and in lower case. Items with the same key are one product in every list and every tool, so a product a data layer lists by its variant's id is the line Kontala's Shopify pixel reports by that id.
Known byStringWhich of Product key's sources the product's latest item was known by: Item ID, SKU, List ID, the id its list names, or Name, an item that named no id at all.
Item IDStringThe standard field Item ID the product's items last carried: for a Shopify line, its variant's id.
SKUStringThe standard field Item SKU the product's items last carried.
Product group IDStringThe standard field Item group ID the product's items last carried: the product a variant is of, for a Shopify line Shopify's own product id, which groups a product's sizes and colours.
BrandStringThe brand the product's items last carried: the standard field Item brand, for a Shopify line its vendor.
CategoryStringThe category the product's items last carried: the standard field Item category, for a Shopify line its product type.
Category 2StringThe standard field Item category 2 the product's items last carried: the level of a category tree below Category.
Category 3StringThe standard field Item category 3 the product's items last carried: the level below Category 2.
Category 4StringThe standard field Item category 4 the product's items last carried: the level below Category 3.
Category 5StringThe standard field Item category 5 the product's items last carried: the level below Category 4.
VariantStringThe variant the product's items last carried: the standard field Item variant, for a Shopify line its variant's title.
ColourStringThe colour the product's items last carried.
SizeStringThe size the product's items last carried.
Latest priceNumberThe unit price the product's items last carried in a currency something states, else the last they carried at all, in Latest price currency.
Latest price currencyStringThe currency of Latest price.
First seenTimestampWhen the product's first item was, in the window of events kept: a product seen before it was first seen when its oldest item kept was. Time intervals: Day, Week, Month.
Last seenTimestampWhen the product's latest item was. Time intervals: Day, Week, Month.

The item

DimensionTypeDescription
ActionStringWhat the visitor did with the product: Viewed in a list, Selected from a list, Viewed, Added to wishlist, Added to cart, Removed from cart, Viewed in cart, Checked out, Shipping chosen, Payment chosen, Purchased or Refunded. A pushed event says it by its name, a page's own list by its page type, and a Shopify line by the list Kontala's Shopify pixel reported it in.
Action stepNumberWhere the action falls on the way from a list to an order, from 1 for Viewed in a list to 12 for Refunded, to sort Action by.
Item listStringWhich of the organisation's item lists the item came from, by the name it was given when the list was mapped, or which of a Shopify store's lists Kontala's Shopify pixel reported it in.
PositionNumberThe item's position in its list, counting from 0.
List nameStringThe list the site showed the product in, such as Related products or Search results: the standard field Item list name where the item names one, else the standard field List name of the event or page it came in, as GA4 gives an event's list to every item that names none of its own.
CouponStringThe standard field Item coupon: a coupon applied to the item itself.
PriceNumberThe unit price the item stated, the standard field Item price where the list fills it, in Currency.
QuantityNumberThe quantity the item stated, the standard field Item quantity where the list fills it. Empty where it states none, which the metrics count as one.
CurrencyStringThe currency the item's price is in: its own standard field Item currency where its list fills it, else the cart's, checkout's or order's as Kontala's Shopify pixel reported it, else the standard field Order currency on the row the item came from. Group by it before reading a sum: amounts in two currencies do not add up.
CountedBooleanWhether the item counts toward its action's totals: every item does but a purchase's, whose lines count in its first report alone, so a reloaded thank-you page, or an order reported by two tools, adds nothing where the order is named by an id; one named by its page view alone counts again when the page is reloaded, as in the Visits explore.

Time

DimensionTypeDescription
Event timeTimestampWhen the event happened, by the visitor's device, kept between 30 days before and 24 hours after Kontala received it. The default time axis. Time intervals: Raw, Hour, Day, Week, Month, Quarter, Year, Hour of day (number), Day of the week (index), Day of the week (name).

Page

DimensionTypeDescription
HostnameStringThe host the page was served from. One visitor can move between subdomains, so use Site, not Hostname, to tell your properties apart.
PathStringDecoded and redacted. High-signal segments are replaced with , so the segment count survives and paths still group.
SectionStringThe path's first segment, such as /blog or /products; / for the home page.
SubsectionStringThe path's first two segments, such as /blog/2026. Empty for a path with fewer than two.

Attribution carried across the visit

DimensionTypeDescription
ChannelStringHow this visit arrived, from its first page view: the click id, the campaign medium and the referrer, in that order of trust. Every page view of a visit reads the same channel. Organic Search is a link from the host a search engine serves its results on, such as www.google.co.uk, so a link from Gmail, Google's sign-in or Google's other products reads as any other site's does. A click id says which network, not that the visit was paid: Meta adds fbclid to organic posts and shares as well as ads, so a Meta ad reads Paid Social only when its link carries a paid utm_medium such as cpc or paid_social, and Google's srsltid, on free product listings and organic results, reads Organic Search. Other Campaign is a tagged visit no other rule places, display ads' dclid included. AI Assistants is a visit an AI assistant sent: a link from ChatGPT, Perplexity, Gemini, Copilot, Claude, DeepSeek or Grok, known by its referrer or by ChatGPT's own utm_source=chatgpt.com, its shopping cards included, or any link tagged utm_medium=ai-assistant. An ad shown in an assistant stays paid, a ChatGPT ad by the oppref OpenAI appends to it, which reads Paid Search, and a link an assistant's app opens with no referrer and no tag reads Direct. Direct means no referrer at all, which covers an app and an https-to-http hop rather than only a typed URL. Internal is a visit that began from a page on this same site. Empty for a visit with no page view.
Session campaign sourceStringThe campaign source that started this visit, carried onto every page view in it. This is the dimension to group by for acquisition; Campaign source answers the narrower question of which page view physically carried the parameter.
Session campaign mediumStringThe campaign medium that started this visit, carried onto every page view in it.
Session campaignStringThe campaign that started this visit, carried onto every page view in it.

Geo

DimensionTypeDescription
CountryStringThe visitor's country as a two-letter code, such as GB, from their IP address. IP Geolocation by DB-IP (https://db-ip.com/), CC-BY 4.0. A dashboard showing this must display that attribution.
Country nameStringThe country's name in English, as the Unicode CLDR gives it, read from Country's code; a code CLDR does not name reads as itself. IP Geolocation by DB-IP (https://db-ip.com/), CC-BY 4.0. A dashboard showing this must display that attribution.
ContinentStringOne of seven continents, read from Country by the UN's regions: North America includes Central America and the Caribbean. Russia is Europe; Turkey, Cyprus, Georgia, Armenia and Azerbaijan are Asia, as the UN files them. IP Geolocation by DB-IP (https://db-ip.com/), CC-BY 4.0. A dashboard showing this must display that attribution.

Browser environment

DimensionTypeDescription
Device classStringBucketed from window width, not from the User-Agent. A narrow desktop window reads as mobile, which is the honest answer for a layout question; Device type answers the hardware one.

Browser, operating system and device

DimensionTypeDescription
Device typeStringDesktop, mobile, tablet or smart tv, from the User-Agent header, and unknown where it names no platform: the hardware, where Device class is the layout the window's width gives. A tablet asking for desktop sites, as Safari on iPad does by default, reads as desktop.
BrowserStringThe browser, from the User-Agent header. A browser built on Chromium that does not name itself there, such as Brave, Arc or a desktop app, reads as Chrome. A page opened inside an app reads as the app where it names itself, such as Instagram or the Google app, and as In-app browser where it does not. An app's own screens, from Kontala's SDK, read as App.
Operating systemStringThe operating system, from the User-Agent header; iOS includes iPadOS. There is no version beside it, because browsers freeze theirs: Windows 11 reports Windows 10 and every Mac reports macOS 10.15. An iPad asking for desktop sites, as Safari on iPad does by default, reads as macOS, and many Android tablets read as Linux the same way.

Data source and quality

DimensionTypeDescription
SiteStringThe property the event was sent to, read from the key it was sent with.
Allowed originBooleanWhether the page's origin is one its property allows. False marks a development server, a staging copy or another site carrying the snippet, so filter on true for real traffic. A property that lists no allowed origins allows every one.

Metrics

The Products explore has 19 metrics.

MetricCalculationDescription
ProductsCount distinctDistinct products the items were, by Product key.
Item list viewsCountItems shown in a list: GA4's view_item_list and its kin, a listing page's own list, or a search results page's.
Item list clicksCountItems selected from a list: GA4's select_item and its kin.
Item list click-through rateRatio (%)Item list clicks per item list view, as GA4 counts it: a list that shows a product often and sends few visitors to it reads low.
Item viewsCountItems viewed on their own page: GA4's view_item and its kin, or a Product detail page's own list.
Units added to cartSumUnits added to the cart: each item's quantity, or one where it states none, as GA4 counts items added to cart, and 0 for a product none were added of.
Units removed from cartSumUnits taken out of the cart, counted as Units added to cart is.
Units checked outSumUnits in a checkout opened, counted as Units added to cart is.
Units purchasedSumUnits bought: each line of an order's first report, its quantity, or one where it states none, so an order reported twice counts once, and 0 for a product none were bought of.
Item revenueSumWhat the units bought came to: each line's price times its quantity, as GA4 counts item revenue, in Currency. Before the order's own discounts and without its shipping and taxes, so it need not add up to the Visits explore's Revenue, which is what each order came to.
OrdersCount distinctOrders with the product among their lines, each once.
Average price paidRatioItem revenue per unit purchased, over the units whose line states its price, since a unit of no price adds nothing to Item revenue.
Units refundedSumUnits refunded: each line of every refund, its quantity, or one where it states none; a second refund of one order is another refund, a partial refund's, as GA4 counts it.
Item refund amountSumWhat the units refunded came to, each line's price times its quantity, as Item revenue is counted.
ViewersCount distinctDistinct visitors who viewed the product on its own page: today each is a device, as the Visits explore counts one.
Visitors who added to cartCount distinctDistinct visitors who added the product to their cart.
BuyersCount distinctDistinct visitors who bought the product.
Cart-to-view rateRatio (%)Visitors who added the product to their cart per visitor who viewed it, as GA4 counts it. A visitor can add a product from a list without viewing its page, so it can pass 100%.
Purchase-to-view rateRatio (%)Visitors who bought the product per visitor who viewed it, as GA4 counts it, both in the date range: a visitor who viewed it last month and bought it this one counts in this month's buyers alone.

Was this helpful?