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:
2026-04-06 08:57:47 -04:00
parent ad8bec29ff
commit 872c82f7ab

View File

@@ -54,35 +54,34 @@ def get_engagement_data():
result['engagementRate'] = float(row.metric_values[5].value) result['engagementRate'] = float(row.metric_values[5].value)
result['screenPageViews'] = int(row.metric_values[6].value) result['screenPageViews'] = int(row.metric_values[6].value)
# Get scroll depth events # Get scroll depth events - query each specific scroll event
scroll_request = RunReportRequest( scroll_events = {}
property=f"properties/{GA_PROPERTY_ID}", for scroll_type in ['scroll_25', 'scroll_50', 'scroll_75']:
dimensions=[Dimension(name="eventName")], scroll_request = RunReportRequest(
metrics=[Metric(name="eventCount")], property=f"properties/{GA_PROPERTY_ID}",
date_ranges=[DateRange(start_date="1daysAgo", end_date="today")], metrics=[Metric(name="eventCount")],
dimension_filter=FilterExpression( date_ranges=[DateRange(start_date="1daysAgo", end_date="today")],
filter=Filter( dimension_filter=FilterExpression(
field_name="eventName", filter=Filter(
string_filter=Filter.StringFilter( field_name="eventName",
match_type=Filter.StringFilter.MatchType.BEGINS_WITH, string_filter=Filter.StringFilter(
value="scroll" match_type=Filter.StringFilter.MatchType.EXACT,
value=scroll_type
)
) )
) )
), )
limit=10
)
scroll_response = client.run_report(scroll_request) scroll_response = client.run_report(scroll_request)
scroll_data = {} count = 0
for row in scroll_response.rows: for row in scroll_response.rows:
event_name = row.dimension_values[0].value count += int(row.metric_values[0].value)
count = int(row.metric_values[0].value) scroll_events[scroll_type] = count
scroll_data[event_name] = count
result['scroll_25'] = scroll_data.get('scroll_25', 0) result['scroll_25'] = scroll_events.get('scroll_25', 0)
result['scroll_50'] = scroll_data.get('scroll_50', 0) result['scroll_50'] = scroll_events.get('scroll_50', 0)
result['scroll_75'] = scroll_data.get('scroll_75', 0) result['scroll_75'] = scroll_events.get('scroll_75', 0)
result['scroll_total'] = sum(scroll_data.values()) result['scroll_total'] = sum(scroll_events.values())
# Get form interactions # Get form interactions
form_request = RunReportRequest( form_request = RunReportRequest(