GA4 Item List, Promotion & Search Term Attribution with JENTIS
Google Analytics 4 does not, by default, provide a predefined out-of-the-box tracking solution, not even in the basic GA4 client-side implementation. Instead, it allows clients to send parameters independently, and then Google works on the data, filling the reports.
For example, the user clicks on a promotion, goes down the purchase funnel, and purchases that product. In this case, the purchased product can be attributed to the clicked Promotion as an assumption that the Promotion leads the user to purchase the product. This seamless attribution is not something GA4 offers at the moment.
To help with the correct attribution of events in these reports, JENTIS created this step-by-step guide on how to configure your GA4 tracking in our Server-side Tracking Platform.
What are Promotions and Item Lists in GA4?
In Google Analytics 4 (GA4), Promotions and Item Lists are reports related to e-commerce tracking that help businesses monitor and optimize their online marketing and product displays.
Promotions
Promotions in GA4 refer to any special offers, deals, or marketing campaigns designed to increase sales or conversions. With it, you can track how your promotions (e.g., banners, and special offer sections on your site) are performing.
Some Metrics available are:
Promotion Views: The number of times users saw a promotion.
Promotion Clicks: The number of times a user clicks on a promotion.
CTR (Click-Through Rate): This shows the effectiveness of your promotion by dividing clicks by views.
Use Case: Track how a homepage banner promoting a seasonal sale impacts user behavior and sales.
Item Lists
Item lists in GA4 are collections or categories of products or services that you display on your site, such as product categories, search results, or recommended product sections. In this report, you have an Item List Name that identifies the context or category in which the products are shown (e.g., “Summer Collection,” “Trending Products,” or “Related Items”).
Some Metrics available are:
Item List Views: The number of times an item in the list was seen.
Item Clicks: The number of times a product in the list was clicked.
View-to-Click Ratio: Measures the interaction rate of items in the list.
Use Case: Analyze how products displayed under “Best Sellers” perform compared to those shown under “New Arrivals.”
Key Differences:
Promotions focus on marketing activities aimed at driving conversions or engagement (like special offers or discount banners).
Item Lists focus on tracking user interactions with product groupings and how different display contexts affect user behavior.
How do the attribution properties in GA4 work?
Attribution properties in GA4 are tracked on two levels simultaneously:
Event Level: In GA4, attribution properties can be applied to an entire event without linking them to specific items. When this happens, the attribution applies to all items within that event. This is useful in a promotion click event that doesn’t include specific products. Another case is a search event: a search term can be linked to a later purchase, even though the search event itself doesn’t contain any items.
For example, a user clicks on a promotion banner on your homepage that advertises a site-wide discount. This click triggers an event called promotion_click, but the event does not specify any particular products. The promotion is for the entire site, so the attribution is applied to the whole event.
Item Level: You can also assign attribution properties to individual items within an event. GA4 prioritizes item-level properties over event-level ones because they provide more detailed, specific information, leading to more accurate attribution. If a user adds multiple items to their cart after interacting with several different promotions or item lists, using only event-level attribution would mask the true performance of each promotion or item list. Item-level attribution reveals how each interaction contributes to the final purchase.
For example, a user visits a product page after clicking on a specific product recommendation in a "You May Also Like" section and then adds the product to their cart. Later, they do the same for another product from a different recommendation list or promotion. Each click event can be attributed to the individual items they interacted with.
Key Difference:
Event Level: Attribution applies broadly to all items in the event, useful when the promotion or action isn't tied to a specific product.
Item Level: Attribution applies to individual items, giving detailed insights when users interact with multiple promotions or item lists.
Step-by-step guide on how to do your Promotion, Item List, and Search Term attribution with JENTIS
If a search_result (Search), select_promotion (Promotion click), or select_item (Product list click) event is sent to JENTIS without any associated products but includes event-level attribution properties, those properties won’t be linked to any products later in the purchase process.
However, if a select_promotion or select_item event is sent with products, and the attribution properties are only applied at the event level, JENTIS will automatically assign those properties to all products in the event. These properties can be accessed at any point if the product appears in a later eCommerce event (e.g., Purchase).
JENTIS provides three types of variables to manage attribution properties throughout the user journey:
Collectors: Used in select_promotion and select_item events to collect attribution properties.
Readers: Used in any eCommerce event where you want to retrieve these properties.
Cleaners: Triggered in events (by default, the Purchase event) to clear the stored attribution properties.
Item-level Collectors, Readers, and Cleaners perform CRUD (Create, Read, Update, Delete) operations on the product collection object, which is stored for each user separately, based on their journey.
Example:
Create: A user views Product A, and this action is recorded in their product collection.
Read: Later, you can retrieve information about Product A when analyzing their activity or when they interact with related promotions.
Update: If the user adds Product A to their cart, the Product A status in the collection is updated to reflect this action.
Delete: When the user completes a purchase, the product data for Product A might be deleted from the collection if it’s no longer needed for attribution or analysis.
This step-by-step guide outlines configuring and managing these attribution properties, variables, and supplementary settings for promotions and item lists tracking with JENTIS:
1. Create the variables
Attributes Overview
These properties must be sent to Google for accurate attribution for promotions and item list reports:
Item List ID
Item List Name
Promotion ID
Promotion Name
Creative Name
Creative Slot
You must create variables for each of these properties following the steps below.
Attributor Variables
For each attribution property, there are six different types of variables, categorized into two levels and one particular “Search term” Collector.
For example, for the Promotion ID attribution property, you must create all three Item Level variables (collector, reader, and cleaner) and all three Event Level variables (collector, reader, and cleaner).
In addition, you must create the Search Term Collector variable specifically for the Item List Name property.
In the code snippets below, you will find comments with values for all properties. You must edit the next code line according to the property for which the variable is being created.
For example, if you’re creating the Item Level Collector variable for the Creative Name property, the ItemPropertyToStore should be edited to contain the value “promotion_creative”, and the eventLevelPropertyVariable should contain the value “promotionclick_creative”:
All Promotion and Item List specific parameters must be added as Event Scoped Custom Dimensions at the event level for the following GA4 tags to submit the Event Level attributes:
view_item
add_to_cart
begin_checkout
add_payment_info
add_shipping_info
view_cart
purchase
The parameters to include are:
promotion_id
promotion_name
creative_name
creative_slot
item_list_id
item_list_name
Here’s an example:
3. Update the Promotion Type variable
The promotion_type variable, used to filter promotion and product arrays in View Promotion and Select Promotion events, must be updated. This change will allow it to read both promotion and product data from the JENTIS Data Layer, ensuring backward compatibility with the promotion objects. Without this update, there is no way to submit promotions along with products.
Click to open the promotion_type code snippet
JS
function() {
var property = "type";
var arrItemData = [];
var items = [];
var promotions = window.jentis.tracker.getDatalayer(true, "promotion") || [];
var products = window.jentis.tracker.getDatalayer(true, "product") || [];
if (typeof promotions !== "undefined" && promotions.length > 0) {
items = promotions;
}else if(typeof products !== "undefined" && products.length > 0){
items = products;
}
for (var i = 0; i < items.length; i++) {
if (typeof items[i][property] !== "undefined") {
arrItemData.push(items[i][property]);
} else {
arrItemData.push("");
}
}
return arrItemData;
}
4. Create new Product Promotion variables
Four new Product Promotion variables must be added to read promotion attributes from product objects in array lists. These include:
Promotion ID
Click to open the Product Promotion ID code snippet
JS
function() {
var prodProperty = "promotion_id";
var arrProdData = [];
var prodz = window.jentis.tracker.getDatalayer(true, "product");
if (typeof prodz !== "undefined") {
for (var i = 0; i < prodz.length; i++) {
if (typeof prodz[i][prodProperty] !== "undefined") {
arrProdData.push(prodz[i][prodProperty]);
} else {
arrProdData.push("");
}
}
}
return arrProdData;
}
Promotion Name
Click to open the Product Name code snippet
JS
function() {
var prodProperty = "promotion_name";
var arrProdData = [];
var prodz = window.jentis.tracker.getDatalayer(true, "product");
if (typeof prodz !== "undefined") {
for (var i = 0; i < prodz.length; i++) {
if (typeof prodz[i][prodProperty] !== "undefined") {
arrProdData.push(prodz[i][prodProperty]);
} else {
arrProdData.push("");
}
}
}
return arrProdData;
}
Creative Name
Click to open the Creative Name code snippet
JS
function() {
var prodProperty = "promotion_creative";
var arrProdData = [];
var prodz = window.jentis.tracker.getDatalayer(true, "product");
if (typeof prodz !== "undefined") {
for (var i = 0; i < prodz.length; i++) {
if (typeof prodz[i][prodProperty] !== "undefined") {
arrProdData.push(prodz[i][prodProperty]);
} else {
arrProdData.push("");
}
}
}
return arrProdData;
}
Creative Slot
Click to open the Creative Slot code snippet
JS
function() {
var prodProperty = "promotion_creativeslot";
var arrProdData = [];
var prodz = window.jentis.tracker.getDatalayer(true, "product");
if (typeof prodz !== "undefined") {
for (var i = 0; i < prodz.length; i++) {
if (typeof prodz[i][prodProperty] !== "undefined") {
arrProdData.push(prodz[i][prodProperty]);
} else {
arrProdData.push("");
}
}
}
return arrProdData;
}
If the setup has promotion events that sometimes submit only promotion attributes but other times submit promotion attributes with product properties, the previous four variables (Promotion ID, Promotion Name, Creative, Creative Slot) must be added to the Promotion Impression tag next to the original Promotion object-based variables.
As shown in the image below, both Promotion ID Arraylist and Product Promotion ID can be submitted:
EITHER promotion objects are pushed with a Promotion impression event OR product objects.
5. Create new Product Objects variable
A supplementary variable is needed to retrieve all products pushed to the system, which can then be used in Collector variables:
Click to open the Product objects code snippet
JS
function() {
var prodz = window.jentis.tracker.getDatalayer(true, "product");
return prodz;
}
6. Configure new tool constants to control attribution
In your JENTIS platform, go to the Advanced Settings of your GA4 tools and configure new constants to control attribution behavior: