Google connection activity (feed + KPIs)
Overview
Google Business Profile connection-activity report for the caller's account tree. Returns the event feed (sign-ins, failures, connects, disconnects) newest first, plus funnel KPI totals for the same filter window. Reads gbp_connection_events scoped by partner_id to the caller's partner company.
Prerequisites
- A bearer token in the
Authorizationheader.
Base URL
| Environment | URL |
|---|---|
| Production | https://production-api.shoutaboutus.com |
| Development | https://development-api.shoutaboutus.com |
Endpoint
GET /api/v1/partner/gbp-connection-events
Authentication
-
Requires a bearer token in the
Authorization: Bearer <bearer-token>header. -
Bearer — partner role. The caller MUST be a partner-level user (
company.bundle_id = 1), re-asserted in the controller. 403 (with anAUTHZ_DENIEDaudit event) for any non-partner caller; 401 if unauthenticated.
Rate limit
- No rate limit.
Query parameters
| Field | Type | Required | Description |
|---|---|---|---|
from | date | Optional | Include events on/after this day (start of day). |
to | date | Optional | Include events up to/including this day; must be >= from. |
event | string | Optional | Single event type, e.g. connection.connected, oauth.started, token.exchange_failed. |
source | string | Optional | Portal section: invite_link, connect_google_page, registration, settings, debugger, app, system, unknown. |
company_id | integer | Optional | Filter to one account — includes every location under it. |
store_id | integer | Optional | Filter to a single location. |
search | string | Optional | Match the connected Google account email (like). Max 255. |
page | integer | Optional | Page number, min 1. |
limit | integer | Optional | Page size 10–100, values below 10 are raised to 10 (default 10). |
How it works
- 200 with
{ kpis, events }.eventsis a length-aware paginator; each row is a transformed shape (id, event, source,store_id, store_name, google_email, error_code, message, details, user_email, created_at).detailsis a human-readable summary synthesised from the event type + metadata. - 401 unauthenticated · 403 caller is not partner-level.
Response
200 OK · 200
200{
"data": {
"kpis": {
"logins_started": 42,
"connections": 30,
"failed_logins": 7,
"no_locations_found": 3,
"disconnects": 2
},
"events": {
"current_page": 1,
"data": [
{
"id": 101,
"event": "connection.connected",
"source": "invite_link",
"store_id": 26,
"store_name": "Board & Brew",
"google_email": "[email protected]",
"error_code": null,
"message": null,
"details": "Location connected successfully",
"user_email": "[email protected]",
"created_at": "2026-07-07T09:15:00+00:00"
},
{
"id": 100,
"event": "token.exchange_failed",
"source": "connect_google_page",
"store_id": 27,
"store_name": "Sunrise Cafe",
"google_email": null,
"error_code": "invalid_grant",
"message": "Auth code expired",
"details": "invalid_grant — Auth code expired",
"user_email": null,
"created_at": "2026-07-07T08:02:11+00:00"
}
],
"first_page_url": "https://development-api.shoutaboutus.com/api/v1/partner/gbp-connection-events?page=1",
"from": 1,
"last_page": 9,
"last_page_url": "https://development-api.shoutaboutus.com/api/v1/partner/gbp-connection-events?page=9",
"next_page_url": "https://development-api.shoutaboutus.com/api/v1/partner/gbp-connection-events?page=2",
"path": "https://development-api.shoutaboutus.com/api/v1/partner/gbp-connection-events",
"per_page": 10,
"prev_page_url": null,
"to": 10,
"total": 84
}
}
}403 Forbidden · 403
403{
"message": "Only partner-level users can view Google connection activity.",
"status": "error",
"errors": {}
}Errors
| Status | Meaning |
|---|---|
401 | Returned if unauthenticated |
403 | Forbidden |
422 | The request failed validation — the response names the fields |
500 | Unexpected server error |
Example request
curl --request GET \
--url "https://production-api.shoutaboutus.com/api/v1/partner/gbp-connection-events?from=2026-06-01&to=2026-06-30&page=1&limit=10" \
--header 'Authorization: Bearer <bearer-token>' \
--header 'Accept: application/json'Updated 8 days ago
Did this page help you?
