fix: Correct GA4 scroll event counting
- Fixed bug where scroll events showed percentage values instead of actual counts - Now queries scroll_25, scroll_50, scroll_75 individually with EXACT match - Properly extracts event counts from GA4 API response - Scroll tracking now shows real engagement numbers
This commit is contained in:
@@ -54,35 +54,34 @@ def get_engagement_data():
|
||||
result['engagementRate'] = float(row.metric_values[5].value)
|
||||
result['screenPageViews'] = int(row.metric_values[6].value)
|
||||
|
||||
# Get scroll depth events
|
||||
scroll_request = RunReportRequest(
|
||||
property=f"properties/{GA_PROPERTY_ID}",
|
||||
dimensions=[Dimension(name="eventName")],
|
||||
metrics=[Metric(name="eventCount")],
|
||||
date_ranges=[DateRange(start_date="1daysAgo", end_date="today")],
|
||||
dimension_filter=FilterExpression(
|
||||
filter=Filter(
|
||||
field_name="eventName",
|
||||
string_filter=Filter.StringFilter(
|
||||
match_type=Filter.StringFilter.MatchType.BEGINS_WITH,
|
||||
value="scroll"
|
||||
# Get scroll depth events - query each specific scroll event
|
||||
scroll_events = {}
|
||||
for scroll_type in ['scroll_25', 'scroll_50', 'scroll_75']:
|
||||
scroll_request = RunReportRequest(
|
||||
property=f"properties/{GA_PROPERTY_ID}",
|
||||
metrics=[Metric(name="eventCount")],
|
||||
date_ranges=[DateRange(start_date="1daysAgo", end_date="today")],
|
||||
dimension_filter=FilterExpression(
|
||||
filter=Filter(
|
||||
field_name="eventName",
|
||||
string_filter=Filter.StringFilter(
|
||||
match_type=Filter.StringFilter.MatchType.EXACT,
|
||||
value=scroll_type
|
||||
)
|
||||
)
|
||||
)
|
||||
),
|
||||
limit=10
|
||||
)
|
||||
)
|
||||
|
||||
scroll_response = client.run_report(scroll_request)
|
||||
scroll_data = {}
|
||||
for row in scroll_response.rows:
|
||||
event_name = row.dimension_values[0].value
|
||||
count = int(row.metric_values[0].value)
|
||||
scroll_data[event_name] = count
|
||||
scroll_response = client.run_report(scroll_request)
|
||||
count = 0
|
||||
for row in scroll_response.rows:
|
||||
count += int(row.metric_values[0].value)
|
||||
scroll_events[scroll_type] = count
|
||||
|
||||
result['scroll_25'] = scroll_data.get('scroll_25', 0)
|
||||
result['scroll_50'] = scroll_data.get('scroll_50', 0)
|
||||
result['scroll_75'] = scroll_data.get('scroll_75', 0)
|
||||
result['scroll_total'] = sum(scroll_data.values())
|
||||
result['scroll_25'] = scroll_events.get('scroll_25', 0)
|
||||
result['scroll_50'] = scroll_events.get('scroll_50', 0)
|
||||
result['scroll_75'] = scroll_events.get('scroll_75', 0)
|
||||
result['scroll_total'] = sum(scroll_events.values())
|
||||
|
||||
# Get form interactions
|
||||
form_request = RunReportRequest(
|
||||
|
||||
Reference in New Issue
Block a user