Engagement
Site engagement of the period from GA4: sessions, engaged sessions and bounce rate per day, in total and per device. The bounce rate is derived, not read: (1 - engaged sessions / sessions) * 100, computed over the summed counts of each day, device or period (never an average of daily rates). Reads google_analytics_customers, which has no page dimension, so sessions are not multiplied by the pages they touched. Aggregates only. Engagement time is not available. A day without GA4 rows is not in daily; a period without data answers 200 with zeroed totals, bounceRate: null and empty lists. Both dates are required; the period spans at most 366 days. Cached for 30 minutes.
ClientIdAuthClientSecretAuthx-client-id<token>Client ID
x-client-secret<token>Client secret
organizationId*stringOrganization identifier (UUID, required)
uuidstartDate*stringFirst day of the period, inclusive (YYYY-MM-DD, UTC). Required.
dateendDate*stringLast day of the period, inclusive (YYYY-MM-DD, UTC). Required. At most 366 days from startDate.
dateSuccessful response
application/json- response
period*totals*daily*array<>One item per day with GA4 rows, ascending.
byDevice*array<>Period total per GA4 device category (lowercase; unknown when the source has none), most sessions first.
curl -X GET "https://example.com/v1/google-analytics/engagement?organizationId=11111111-1111-4111-8111-111111111111&startDate=2026-10-01&endDate=2026-10-02"{ "period": { "startDate": "2026-10-01", "endDate": "2026-10-02" }, "totals": { "sessions": 1000, "engagedSessions": 580, "bounceRate": 42 }, "daily": [ { "date": "2026-10-01", "sessions": 700, "engagedSessions": 430, "bounceRate": 38.57 }, { "date": "2026-10-02", "sessions": 300, "engagedSessions": 150, "bounceRate": 50 } ], "byDevice": [ { "device": "mobile", "sessions": 800, "engagedSessions": 400, "bounceRate": 50 }, { "device": "desktop", "sessions": 200, "engagedSessions": 180, "bounceRate": 10 } ]}