Skip to main content

Items Funnel Report Module

💎Premium Feature

This feature is exclusive for Premium users!

For e-commerce properties, the Items Funnel Report module provides detailed analysis of item performance throughout the customer journey. This module tracks individual items across all e-commerce events, enabling comprehensive funnel analysis and performance optimization.

Configuration​

The module uses a single configuration file: includes/custom/modules/items_funnel_report/config.json

Example:

{
"version": 1,
"enabled": true,

"drilldowns": {
"channel_group": true,
"device_category": true,
"is_new_session": true
},

"itemDrilldowns": {
"item_id": true,
"item_name": true,
"item_brand": true,
"item_variant": false,
"item_category": true,
"item_category2": true,
"item_category3": false,
"item_category4": false,
"item_category5": false,
"affiliation": true
},

"itemParamsCustom": ["size", "colour"],
"sessionDimensions": [
{ "name": "last_non_direct_traffic_source.campaign", "renameTo": "campaign_name" },
{ "name": "session_params_custom.customer_type", "renameTo": "customer_type" }
]
}

Configuration Options​

Essential Settings​

SettingDescriptionExample
enabledEnable/disable the moduletrue or false
versionConfiguration version for tracking changes (set by Superform Labs team)1

Session-Level Drilldowns​

Configure which session dimensions to include:

"drilldowns": {
"channel_group": true,
"device_category": false,
"is_new_session": false
}

Available Options:

  • channel_group: Adds last_non_direct_traffic_source.default_channel_grouping column
  • device_category: Adds device segmentation (desktop, mobile, tablet, smart tv)
  • is_new_session: Enables new vs. returning user analysis using ga_session_number = 1 logic

Item Dimension Drilldowns​

Toggle standard item dimensions on/off:

"itemDrilldowns": {
"item_id": true,
"item_name": true,
"item_brand": true,
"item_variant": true,
"item_category": true,
"item_category2": true,
"item_category3": true,
"item_category4": true,
"item_category5": true,
"affiliation": true
}
Consistency Matters

Disable item dimensions that aren't filled consistently across all e-commerce events, as they can "break" funnel analysis when drilling down. For example, if view_item_list has no item_variant but add_to_cart does, consider disabling item_variant.

Custom Item Parameters​

Include custom item parameters from your configuration:

"itemParamsCustom": ["size", "colour"]
Parameter Names

Use the output names from your includes/custom/config.js configuration (the renameTo values):

CUSTOM_ITEM_PARAMS_ARRAY: [
{ name: "size", type: "string" },
{ name: "color", type: "string", renameTo: "colour" }
]

Additional Session Dimensions​

Add any column from the ga4_sessions table:

"sessionDimensions": [
{ "name": "last_non_direct_traffic_source.campaign", "renameTo": "campaign_name" },
{ "name": "session_params_custom.customer_type", "renameTo": "customer_type" }
]
  • name: Valid column name from ga4_sessions table
  • renameTo: Optional renamed column in output (auto-sanitized if omitted)

Table Structures​

ga4_items_sessions​

Granularity: 1 row per item per session with aggregate metrics

ColumnDescription
session_dateDate of the session (partitioning column) - based on start date of the session
session_start_timestamp_utcUTC timestamp when the session started
session_start_timestamp_localLocal datetime when the session started (converted using LOCAL_TIMEZONE variable)
is_finalIndicates if the data is final or subject to change (based on 72h window)
session_idUnique identifier for the session - contains only non-NULL values (cluster column)
ga_session_numberGoogle Analytics session number for the user
user_pseudo_idPseudonymous identifier for the user
user_idUnique identifier for the user - last non-null value of the session
property_idGoogle Analytics property ID
platformThe data stream platform (Web, IOS or Android) from which the event originated
Item Details
item.item_idUnique identifier for the item
item.item_nameName of the item
item.item_brandBrand of the item
item.item_variantVariant of the item (e.g., size, color)
item.item_categoryPrimary category of the item
item.item_category2Secondary category of the item
item.item_category3Tertiary category of the item
item.item_category4Fourth-level category of the item
item.item_category5Fifth-level category of the item
item.price_in_usdItem price converted to USD
item.priceItem price in local currency
item.quantityQuantity of the item in the event
item.item_revenue_in_usdRevenue from this item converted to USD
item.item_revenueRevenue from this item in local currency
item.item_refund_in_usdRefund amount for this item converted to USD
item.item_refundRefund amount for this item in local currency
item.couponCoupon code applied to this item
item.affiliationAffiliation or partner associated with the item
item.location_idPhysical location identifier where the item was sold
item.item_list_idIdentifier for the list where the item appeared
item.item_list_nameName of the list where the item appeared
item.item_list_indexPosition of the item in the list
item.promotion_idIdentifier for the promotion applied to the item
item.promotion_nameName of the promotion applied to the item
item.creative_nameName of the creative/ad that promoted the item
item.creative_slotSlot position of the creative/ad
E-commerce Event Totals
item_totals.add_payment_infoNumber of times payment info was added for this item in the session
item_totals.add_shipping_infoNumber of times shipping info was added for this item in the session
item_totals.add_to_cartNumber of times this item was added to cart in the session
item_totals.add_to_wishlistNumber of times this item was added to wishlist in the session
item_totals.begin_checkoutNumber of times checkout was initiated with this item in the session
item_totals.purchaseNumber of times this item was purchased in the session
item_totals.refundNumber of times this item was refunded in the session
item_totals.remove_from_cartNumber of times this item was removed from cart in the session
item_totals.select_itemNumber of times this item was selected in the session
item_totals.select_promotionNumber of times a promotion for this item was selected in the session
item_totals.view_cartNumber of times cart containing this item was viewed in the session
item_totals.view_itemNumber of times this item was viewed in the session
item_totals.view_item_listNumber of times a list containing this item was viewed in the session
item_totals.purchase_quantityTotal quantity of this item purchased in the session
item_totals.item_revenueTotal revenue generated by this item in the session

report_items_funnel​

Granularity: Daily aggregates by item and configured dimensions

ColumnDescription
session_dateDate of the session used for aggregation (partitioning column for performance optimization)
property_idGoogle Analytics property ID
platformThe data stream platform (Web, IOS or Android) from which the events originated
is_finalIndicates if the data is final or subject to change (based on 72h window)
Dynamic Item Dimensions (conditionally included)
item.item_idUnique identifier for the item (included if itemDrilldowns.item_id = true)
item.item_nameName of the item (included if itemDrilldowns.item_name = true)
item.item_brandBrand of the item (included if itemDrilldowns.item_brand = true)
item.item_variantVariant of the item (included if itemDrilldowns.item_variant = true)
item.item_categoryPrimary category of the item (included if itemDrilldowns.item_category = true)
item.item_category2Secondary category of the item (included if itemDrilldowns.item_category2 = true)
item.item_category3Tertiary category of the item (included if itemDrilldowns.item_category3 = true)
item.item_category4Fourth-level category of the item (included if itemDrilldowns.item_category4 = true)
item.item_category5Fifth-level category of the item (included if itemDrilldowns.item_category5 = true)
item.affiliationAffiliation or partner associated with the item (included if itemDrilldowns.affiliation = true)
item.{custom_param_name}Custom item parameters as specified in itemParamsCustom array - field names match the configured parameter names
Session-Level Drilldowns (conditionally included)
default_channel_groupingDefault channel grouping for traffic attribution (included if drilldowns.channel_group = true)
device_categoryDevice category (Desktop, Mobile, Tablet, Smart TV) (included if drilldowns.device_category = true)
is_new_sessionBoolean indicating if this was the user's first session (included if drilldowns.is_new_session = true)
Custom Session Dimensions (dynamically added)
{custom_dimension_name}Additional dimensions from ga4_sessions table as specified in sessionDimensions configuration array - column names determined by renameTo value or auto-sanitized from original field name
Comprehensive Funnel Metrics
item_totals.events.{event_name}Total count of each e-commerce event type for this item (e.g., add_to_cart, purchase, view_item)
item_totals.sessions.{event_name}Count of unique sessions where each e-commerce event type occurred for this item
item_totals.users.{event_name}Count of unique users who performed each e-commerce event type for this item
item_totals.purchase_quantityTotal quantity of this item purchased across all purchase events
item_totals.item_revenueTotal revenue generated by this item across all purchase events
Dynamic Schema

report_items_funnel adapts its schema based on configuration:

  • Item dimensions: Only enabled itemDrilldowns appear in the item struct
  • Custom item parameters: Fields from itemParamsCustom array are dynamically added
  • Session drilldowns: Only enabled drilldowns create additional columns
  • Custom session dimensions: Additional columns based on sessionDimensions configuration
  • Event metrics: All standard e-commerce events are tracked (13 event types total)

Looker Studio Template + Calculation Examples​

tip

We created a free-to-use Looker Studio template that was specifically designed to work with the GA4Dataform modules. Feel free to copy it and adapt it to your needs! You can find it here.

When connecting report_items_funnel to your BI tool, here are useful calculated metrics:

Event-Based Metrics​

  • sum(item_totals.events.add_to_cart): Total add-to-cart events for item
  • sum(item_totals.events.purchase): Total purchase events for item

Session-Based Metrics​

  • sum(item_totals.sessions.purchase): Sessions where item was purchased
  • sum(item_totals.sessions.view_item): Sessions where item was viewed

User-Based Conversion Rates​

  • sum(item_totals.users.purchase) / sum(item_totals.users.view_item): User-based purchase-to-detail rate
  • sum(item_totals.users.add_to_cart) / sum(item_totals.users.view_item): User-based view-to-cart rate

Revenue Metrics​

  • sum(item_totals.item_revenue): Total item revenue
  • sum(item_totals.purchase_quantity): Total units sold
  • sum(item_totals.item_revenue) / sum(item_totals.purchase_quantity): Average selling price

Common Use Cases​

  1. Product Performance Analysis: Identify top and bottom-performing items across the funnel
  2. Category Optimization: Compare performance across product categories
  3. Channel Attribution: Understand which channels drive the best item performance
  4. Inventory Planning: Use purchase quantities and revenue data for demand forecasting
  5. Personalization Insights: Analyze item performance by user segments
  6. A/B Testing: Compare item performance across different user experiences