Analytics tracking for featured listings stops working when GA4 promotion events are misconfigured, missing from the dataLayer, or blocked by filters. The 2 events responsible are view_promotion (impressions) and select_promotion (clicks).
What Is Analytics Tracking for Featured Listings?
Google Help explains the official process in [GA4] Automatically collected events.
Analytics tracking for featured listings is the measurement of impressions and clicks on promoted or featured content using GA4's view_promotion and select_promotion standard ecommerce events. Featured listings include promoted products, sponsored items, homepage banners, and highlighted marketplace or real estate entries.
In GA4, featured listings data populates under Reports > Monetization > Promotions. This report surfaces 2 core metrics:
Non-200 Hreflang URLs: What They Are, 5 Causes, and How to Fix Each
Stop Words in Keywords SEO: 5 On-Page Rules, Common Examples, and When Google Uses Them
- Items viewed in promotion (impressions, from
view_promotion) - Items clicked in promotion (clicks, from
select_promotion)
What Are the 2 GA4 Events That Track Featured Listings?
The 2 standard GA4 events for tracking featured listings are:
view_promotionfires when a featured listing is displayed in the user's viewportselect_promotionfires when a user clicks on a featured listing
These are GA4 standard ecommerce event names. Using custom names such as featured_click or promo_impression places data in the Engagement > Events report and excludes it from the Monetization > Promotions report entirely.
Why Is Featured Listings Analytics Tracking Not Working?
Featured listings analytics tracking fails due to 7 causes: missing dataLayer code, stale ecommerce data, incorrect event names, an unpublished GTM container, active internal traffic filters, GA4 processing delays, and missing required parameters.
The table below lists all 7 causes, the symptom each produces, and the corresponding fix.
| # | Cause | Symptom | Fix |
|---|---|---|---|
| 1 | No dataLayer.push for view_promotion or select_promotion | Zero data in Promotions report | Add both events to site code via developer |
| 2 | Missing ecommerce: null before each push | Wrong items appear in events | Push ecommerce: null before every ecommerce event |
| 3 | Custom event names instead of GA4 standard names | Data appears in Events report, not Promotions | Rename to view_promotion and select_promotion |
| 4 | GTM container not published after changes | Tracking works in Preview only, not for live users | Click Submit in GTM to publish the container |
| 5 | Internal traffic filter set to Active | Own test visits are excluded from all data | Check Admin > Data collection > Data filters |
| 6 | GA4 standard report processing delay | Events show in Real-time but not standard reports | Wait 24 to 48 hours; verify in DebugView first |
| 7 | Missing required promotion parameters | Promotions report shows (not set) in dimensions | Include promotion_id, promotion_name, creative_name, creative_slot |
How Do You Set Up Featured Listings Tracking with dataLayer?
Set up featured listings tracking by pushing view_promotion and select_promotion events to the dataLayer, each preceded by ecommerce: null to clear any stale data from the previous push.
Both events require the same 4 parameters:
promotion_id: unique identifier for the featured listing (e.g., "FEAT-001")promotion_name: descriptive name for the promotion (e.g., "Summer Featured")creative_name: the image or banner asset used (e.g., "summer_banner_v2")creative_slot: the position on the page (e.g., "homepage_hero" or "sidebar_slot_1")
What Is the Correct dataLayer Code for Featured Listing Impressions?
Push view_promotion when the featured listing enters the user's viewport on page load:
“javascript dataLayer.push({ ecommerce: null }); dataLayer.push({ event: "view_promotion", ecommerce: { promotion_id: "FEAT-001", promotion_name: "Summer Featured Listing", creative_name: "summer_banner_v2", creative_slot: "homepage_hero", items: [{ item_id: "LISTING-123", item_name: "Featured Property Name" }] } }); “
What Is the Correct dataLayer Code for Featured Listing Clicks?
Push select_promotion when a user clicks on the featured listing:

“javascript dataLayer.push({ ecommerce: null }); dataLayer.push({ event: "select_promotion", ecommerce: { promotion_id: "FEAT-001", promotion_name: "Summer Featured Listing", creative_name: "summer_banner_v2", creative_slot: "homepage_hero", items: [{ item_id: "LISTING-123", item_name: "Featured Property Name" }] } }); “
How Do You Fix Stale Data Breaking Featured Listings Tracking?
Fix stale data by pushing { ecommerce: null } as a separate dataLayer entry immediately before every ecommerce event. Without it, GTM's recursive merge retains item data from the previous push and assigns it to the next event.
This error is most common on Single Page Applications (SPAs). SPAs include frameworks such as React, Vue, and Angular. These apps do not reload the page between route changes. The dataLayer is never automatically cleared, so every event push carries forward items from all previous pushes until explicitly reset.
Per GA4 ecommerce implementation documentation, skipping ecommerce: null is the leading cause of events inheriting stale items. The fix applies to all 13 GA4 ecommerce events, not just view_promotion and select_promotion.
How Do You Debug Featured Listings Tracking in GA4?
Debug featured listings tracking using 3 tools in sequence: GTM Preview mode, GA4 DebugView, and GA4 Real-time reports.
- GTM Preview mode: Activate at tagmanager.google.com. Interact with the featured listing on the live site. Confirm view_promotion and select_promotion appear in the GTM console with all 4 promotion parameters populated.
- GA4 DebugView: Navigate to Admin > Data display > DebugView. Events appear within seconds of firing. Verify that promotion_id, promotion_name, creative_name, and creative_slot each contain the correct values.
- GA4 Real-time report: Go to Reports > Real-time. Trigger the featured listing interaction and confirm both events appear in the event list immediately.
Note: DebugView shows data only from sessions in debug mode. Enable debug mode by activating GTM Preview mode or installing the Google Analytics Debugger Chrome extension and clicking its icon to set it to ON.
If events appear in DebugView but not in standard reports after 48 hours, check data filters. Navigate to Admin > Data collection and modification > Data filters. An Active Internal or Developer traffic filter excludes all events from that traffic source, including promotion events.
Where Do You Find Featured Listings Data in GA4?
Featured listings data appears under Reports > Monetization > Promotions in GA4. This report populates exclusively from view_promotion and select_promotion events.
The Promotions report shows 5 metrics:
- Items viewed in promotion (from view_promotion events)
- Items clicked in promotion (from select_promotion events)
- Items added to cart (from add_to_cart after a select_promotion)
- Items checked out (from begin_checkout)
- Item revenue (from purchase)
For custom analysis, build a Free Form Exploration. Go to Explore > Free Form. Add Event name as a dimension and Event count as a metric. Filter by event name equals view_promotion or select_promotion. This method bypasses standard report data thresholding on low-traffic properties.
How Do You Fix Featured Listings Tracking Not Appearing After Correct Setup?
If featured listings tracking does not appear in reports after correct setup, check 4 remaining causes: an unpublished GTM container, a wrong GA4 Measurement ID, data thresholding, and Shopify Pixel limitations.
Fix each in sequence:
- Unpublished GTM container: Confirm the container version is published by clicking Submit in GTM. GTM Preview mode tracks only the tester's session. All other users see the previously published container version.
- Wrong GA4 Measurement ID: Confirm the GA4 configuration tag in GTM uses the correct G- Measurement ID. Navigate to GA4 Admin > Data Streams to verify the ID against the one in GTM.
- Data thresholding: Low-traffic properties trigger GA4 thresholding, which hides event-level data to protect user privacy. A triangle warning icon appears at the top of the report when thresholding is active. Use Free Form Explorations instead, which apply lower privacy thresholds than standard reports.
- Shopify Pixel limitations: Shopify's Customer Events Pixel does not support standard GTM click tracking outside of checkout pages. Implement view_promotion and select_promotion directly via gtag.js in the Shopify theme code as a bypass.
After resolving each cause, retest using GTM Preview mode and GA4 DebugView before checking standard reports.

Waleed Qamar holds a BSc in Computer Science from Purdue University and has spent the years since turning that technical foundation into something the curriculum never covered: figuring out why websites rank, why they fall, and why most businesses never find out until it is too late.
Pakistan-born and based between the United States and South Asia, he has managed search visibility for e-commerce stores, local service businesses, and SaaS startups across two continents. He started in SEO when guest posting still worked, survived the Penguin update, and has rebuilt client sites from scratch after algorithm hits more than once.
He has watched good businesses get sold packages that looked like progress and delivered nothing lasting. He has also seen the right approach quietly double a site’s traffic without a single press release about it.
His writing on SEO By Highsoftware99 covers Google algorithm updates, autocomplete optimization, semantic SEO structure, and the widening gap between what agencies promise and what Google actually rewards in 2026.
He knows what a traffic cliff looks like in Search Console on the morning you discover it.
