Items Funnel Report Module
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​
Setting | Description | Example |
---|---|---|
enabled | Enable/disable the module | true or false |
version | Configuration 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
: Addslast_non_direct_traffic_source.default_channel_grouping
columndevice_category
: Adds device segmentation (desktop, mobile, tablet, smart tv)is_new_session
: Enables new vs. returning user analysis usingga_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
}
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"]
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 fromga4_sessions
tablerenameTo
: Optional renamed column in output (auto-sanitized if omitted)
Table Structures​
ga4_items_sessions
​
Granularity: 1 row per item per session with aggregate metrics
Column | Description |
---|---|
session_date | Date of the session (partitioning column) - based on start date of the session |
session_start_timestamp_utc | UTC timestamp when the session started |
session_start_timestamp_local | Local datetime when the session started (converted using LOCAL_TIMEZONE variable) |
is_final | Indicates if the data is final or subject to change (based on 72h window) |
session_id | Unique identifier for the session - contains only non-NULL values (cluster column) |
ga_session_number | Google Analytics session number for the user |
user_pseudo_id | Pseudonymous identifier for the user |
user_id | Unique identifier for the user - last non-null value of the session |
property_id | Google Analytics property ID |
platform | The data stream platform (Web, IOS or Android) from which the event originated |
Item Details | |
item.item_id | Unique identifier for the item |
item.item_name | Name of the item |
item.item_brand | Brand of the item |
item.item_variant | Variant of the item (e.g., size, color) |
item.item_category | Primary category of the item |
item.item_category2 | Secondary category of the item |
item.item_category3 | Tertiary category of the item |
item.item_category4 | Fourth-level category of the item |
item.item_category5 | Fifth-level category of the item |
item.price_in_usd | Item price converted to USD |
item.price | Item price in local currency |
item.quantity | Quantity of the item in the event |
item.item_revenue_in_usd | Revenue from this item converted to USD |
item.item_revenue | Revenue from this item in local currency |
item.item_refund_in_usd | Refund amount for this item converted to USD |
item.item_refund | Refund amount for this item in local currency |
item.coupon | Coupon code applied to this item |
item.affiliation | Affiliation or partner associated with the item |
item.location_id | Physical location identifier where the item was sold |
item.item_list_id | Identifier for the list where the item appeared |
item.item_list_name | Name of the list where the item appeared |
item.item_list_index | Position of the item in the list |
item.promotion_id | Identifier for the promotion applied to the item |
item.promotion_name | Name of the promotion applied to the item |
item.creative_name | Name of the creative/ad that promoted the item |
item.creative_slot | Slot position of the creative/ad |
E-commerce Event Totals | |
item_totals.add_payment_info | Number of times payment info was added for this item in the session |
item_totals.add_shipping_info | Number of times shipping info was added for this item in the session |
item_totals.add_to_cart | Number of times this item was added to cart in the session |
item_totals.add_to_wishlist | Number of times this item was added to wishlist in the session |
item_totals.begin_checkout | Number of times checkout was initiated with this item in the session |
item_totals.purchase | Number of times this item was purchased in the session |
item_totals.refund | Number of times this item was refunded in the session |
item_totals.remove_from_cart | Number of times this item was removed from cart in the session |
item_totals.select_item | Number of times this item was selected in the session |
item_totals.select_promotion | Number of times a promotion for this item was selected in the session |
item_totals.view_cart | Number of times cart containing this item was viewed in the session |
item_totals.view_item | Number of times this item was viewed in the session |
item_totals.view_item_list | Number of times a list containing this item was viewed in the session |
item_totals.purchase_quantity | Total quantity of this item purchased in the session |
item_totals.item_revenue | Total revenue generated by this item in the session |
report_items_funnel
​
Granularity: Daily aggregates by item and configured dimensions
Column | Description |
---|---|
session_date | Date of the session used for aggregation (partitioning column for performance optimization) |
property_id | Google Analytics property ID |
platform | The data stream platform (Web, IOS or Android) from which the events originated |
is_final | Indicates if the data is final or subject to change (based on 72h window) |
Dynamic Item Dimensions (conditionally included) | |
item.item_id | Unique identifier for the item (included if itemDrilldowns.item_id = true ) |
item.item_name | Name of the item (included if itemDrilldowns.item_name = true ) |
item.item_brand | Brand of the item (included if itemDrilldowns.item_brand = true ) |
item.item_variant | Variant of the item (included if itemDrilldowns.item_variant = true ) |
item.item_category | Primary category of the item (included if itemDrilldowns.item_category = true ) |
item.item_category2 | Secondary category of the item (included if itemDrilldowns.item_category2 = true ) |
item.item_category3 | Tertiary category of the item (included if itemDrilldowns.item_category3 = true ) |
item.item_category4 | Fourth-level category of the item (included if itemDrilldowns.item_category4 = true ) |
item.item_category5 | Fifth-level category of the item (included if itemDrilldowns.item_category5 = true ) |
item.affiliation | Affiliation 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_grouping | Default channel grouping for traffic attribution (included if drilldowns.channel_group = true ) |
device_category | Device category (Desktop, Mobile, Tablet, Smart TV) (included if drilldowns.device_category = true ) |
is_new_session | Boolean 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_quantity | Total quantity of this item purchased across all purchase events |
item_totals.item_revenue | Total revenue generated by this item across all purchase events |
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​
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 itemsum(item_totals.events.purchase)
: Total purchase events for item
Session-Based Metrics​
sum(item_totals.sessions.purchase)
: Sessions where item was purchasedsum(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 ratesum(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 revenuesum(item_totals.purchase_quantity)
: Total units soldsum(item_totals.item_revenue) / sum(item_totals.purchase_quantity)
: Average selling price
Common Use Cases​
- Product Performance Analysis: Identify top and bottom-performing items across the funnel
- Category Optimization: Compare performance across product categories
- Channel Attribution: Understand which channels drive the best item performance
- Inventory Planning: Use purchase quantities and revenue data for demand forecasting
- Personalization Insights: Analyze item performance by user segments
- A/B Testing: Compare item performance across different user experiences