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['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_events = {}
|
||||||
|
for scroll_type in ['scroll_25', 'scroll_50', 'scroll_75']:
|
||||||
scroll_request = RunReportRequest(
|
scroll_request = RunReportRequest(
|
||||||
property=f"properties/{GA_PROPERTY_ID}",
|
property=f"properties/{GA_PROPERTY_ID}",
|
||||||
dimensions=[Dimension(name="eventName")],
|
|
||||||
metrics=[Metric(name="eventCount")],
|
metrics=[Metric(name="eventCount")],
|
||||||
date_ranges=[DateRange(start_date="1daysAgo", end_date="today")],
|
date_ranges=[DateRange(start_date="1daysAgo", end_date="today")],
|
||||||
dimension_filter=FilterExpression(
|
dimension_filter=FilterExpression(
|
||||||
filter=Filter(
|
filter=Filter(
|
||||||
field_name="eventName",
|
field_name="eventName",
|
||||||
string_filter=Filter.StringFilter(
|
string_filter=Filter.StringFilter(
|
||||||
match_type=Filter.StringFilter.MatchType.BEGINS_WITH,
|
match_type=Filter.StringFilter.MatchType.EXACT,
|
||||||
value="scroll"
|
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(
|
||||||
|
|||||||
Reference in New Issue
Block a user