API de User Activity

La API de User Activity permite que el propietario de una propiedad de Google Analytics recupere todos los datos de medición de estadísticas asociados con un solo usuario. Específicamente, la API recupera todos los datos de medición asociados con un ID de usuario o de cliente en particular.

Cómo realizar una solicitud de actividad del usuario

Para realizar una solicitud de actividad del usuario, crea un objeto de solicitud con los siguientes campos:

  1. El ID de cliente o ID de usuario asociado con el usuario

  2. Un ID de vista de Analytics que contiene los datos asociados con el usuario.

  3. Si bien no es obligatorio, es probable que necesites un período para los datos que te interesan. De forma predeterminada, la API muestra la actividad del usuario durante la última semana.

Solicitud de muestra

POST https://analyticsreporting.googleapis.com/v4/userActivity:search

{
    "viewId": "9999999",
    "user": {
        "type": "CLIENT_ID",
        "userId": "1034600000.76425000000"
    },
    "dateRange": {
        "startDate": "2018-01-01",
        "endDate": "2018-12-31",
    }
}

Respuesta de ejemplo

{
    "sessions": [{
        "sessionId": "1539184430",
        "deviceCategory": "desktop",
        "platform": "Windows",
        "dataSource": "web",
        "sessionDate": "2018-10-10"
        "activities": [{
            "activityTime": "2018-10-10T08:13:50.555105Z",
            "source": "(direct)",
            "medium": "(none)",
            "channelGrouping": "Direct",
            "campaign": "(not set)",
            "keyword": "(not set)",
            "hostname": "shop.googlemerchandisestore.com",
            "landingPagePath": "/gpsmap",
            "activityType": "PAGEVIEW",
            "customDimension": [{
                "index": 1,
                "value": "(not set)"
            }, ...]
        }, ...]
    }, ...]
    "totalRows": 1000,
    "nextPageToken": "A6JGY3",
    "sampleRate": 1
}

Sesiones y actividades

Los datos de actividad del usuario se agrupan por sesión. Cada sesión contiene información general sobre la sesión, como el ID y la fecha, así como una lista de actividades del usuario para esa sesión. Las actividades del usuario en una sesión consisten en cada "hit" que reveló el usuario. Esto incluye las vistas de página, los eventos de comercio electrónico y los eventos personalizados enviados a través de gtag(...) o ga(...).

Paginación

La API de User Activity usa la paginación para dividir grandes conjuntos de datos en varias solicitudes y respuestas. Sin embargo, debido a que los datos que muestra la API están estructurados de manera jerárquica, el desarrollador debe tener en cuenta algunas consideraciones especiales para recopilar los datos correctamente.

El tipo de "fila" básico con el propósito de paginación es la actividad. Como los datos del usuario se agrupan por sesión, el límite de una página puede ocurrir dentro de una sesión, y esa sesión puede tener actividades que abarcan varias páginas.

Datos de muestra

Para la demostración, usaremos los siguientes datos de muestra. En este ejemplo, el usuario interactuó con el sitio en 6 sesiones a lo largo de 3 días.

Fecha ID de sesión Etiqueta del evento Tiempo
2018-11-23 1 A 10:26
2018-11-23 1 B 10:32
2018-11-23 1 C 10:39
2018-11-23 2 A 18:04
2018-11-23 2 B 18:11
2018-11-23 2 C 18:26
2018-11-24 3 A 11:26
2018-11-24 3 B 11:29
2018-11-24 3 C 11:39
2018-11-24 3 D 11:42
2018-11-24 4 A 23:50
2018-11-24 4 B 23:54
2018-11-25 5 C 00:02
2018-11-25 5 D 00:13
2018-11-25 6 A 13:01
2018-11-25 6 B 13:09
2018-11-25 6 C 13:12
2018-11-25 6 D 13:23

Página única

Si realizas una solicitud de actividad del usuario con un pageSize de al menos 18, todos los datos se entregarán en una sola página y tendrán un aspecto similar al siguiente:

POST https://analyticsreporting.googleapis.com/v4/userActivity:search

{
    "viewId": "9999999",
    "user": {
        "type": "CLIENT_ID",
        "userId": "1034600000.76425000000",
    },
    "dateRange": {
        "startDate": "2018-11-20",
        "endDate": "2018-11-30",
    },
    "pageSize": 100,
}
{
    "totalRows": 18,
    "sessions": [{
            "sessionId": "1",
            "sessionDate": "2018-11-23",
            "activities": [{
                    "activityTime": "2018-11-23T10:26:00",
                    "event": {"eventLabel": "A"}
                }, {
                    "activityTime": "2018-11-23T10:32:00",
                    "event": {"eventLabel": "B"}
                }, {
                    "activityTime": "2018-11-23T10:39:00",
                    "event": {"eventLabel": "C"}
                }]
        }, {
            "sessionId": "2",
            "sessionDate": "2018-11-23",
            "activities": [{
                    "activityTime": "2018-11-23T18:04:00",
                    "event": {"eventLabel": "A"}
                }, {
                    "activityTime": "2018-11-23T18:11:00",
                    "event": {"eventLabel": "B"}
                }, {
                    "activityTime": "2018-11-23T18:26:00",
                    "event": {"eventLabel": "C"}
                }]
        }, {
            "sessionId": "3",
            "sessionDate": "2018-11-24",
            "activities": [{
                    "activityTime": "2018-11-24T11:26:00",
                    "event": {"eventLabel": "A"}
                }, {
                    "activityTime": "2018-11-24T11:29:00",
                    "event": {"eventLabel": "B"}
                }, {
                    "activityTime": "2018-11-24T11:39:00",
                    "event": {"eventLabel": "C"}
                }, {
                    "activityTime": "2018-11-24T11:42:00",
                    "event": {"eventLabel": "D"}
                }]
        }, {
            "sessionId": "4",
            "sessionDate": "2018-11-24",
            "activities": [{
                    "activityTime": "2018-11-24T23:50:00",
                    "event": {"eventLabel": "A"}
                }, {
                    "activityTime": "2018-11-24T23:54:00",
                    "event": {"eventLabel": "B"}
                }]
        }, {
            "sessionId": "5",
            "sessionDate": "2018-11-25",
            "activities": [{
                    "activityTime": "2018-11-25T00:01:00",
                    "event": {"eventLabel": "C"}
                }, {
                    "activityTime": "2018-11-25T00:13:00",
                    "event": {"eventLabel": "D"}
                }]
        }, {
            "sessionId": "6",
            "sessionDate": "2018-11-25",
            "activities": [{
                    "activityTime": "2018-11-25T13:01:00",
                    "event": {"eventLabel": "A"}
                }, {
                    "activityTime": "2018-11-25T13:09:00",
                    "event": {"eventLabel": "B"}
                }, {
                    "activityTime": "2018-11-25T10:12:00",
                    "event": {"eventLabel": "C"}
                }, {
                    "activityTime": "2018-11-25T10:23:00",
                    "event": {"eventLabel": "D"}
                }]
        }]
}

Varias páginas

Sin embargo, si el tamaño de tu página es 5, estos datos se dividirán en 4 páginas de respuesta:

FechaID de sesiónEtiqueta del eventoTiempo
Página 1:
2018-11-231A10:26
2018-11-231B10:32
2018-11-231C10:39
2018-11-232A18:04
2018-11-232B18:11
Página 2:
2018-11-232C18:26
2018-11-243A11:26
2018-11-243B11:29
2018-11-243C11:39
2018-11-243D11:42
Página 3:
2018-11-244A23:50
2018-11-244B23:54
2018-11-255C00:02
2018-11-255D00:13
2018-11-256A13:01
Página 4:
2018-11-256B13:09
2018-11-256C13:12
2018-11-256D13:23

Ten en cuenta que la sesión 2 está dividida en la primera y segunda página, y que las 2 sesiones del 24 de noviembre se dividen en la segunda y la tercera página. Las respuestas se verán más o menos de la siguiente manera:

{
    "totalRows": 18,
    "nextPageToken": "UGMGQS",
    "sessions": [{
            "sessionId": "1",
            "sessionDate": "2018-11-23",
            "activities": [{
                    "activityTime": "2018-11-23T10:26:00",
                    "event": {"eventLabel": "A"}
                }, {
                    "activityTime": "2018-11-23T10:32:00",
                    "event": {"eventLabel": "B"}
                }, {
                    "activityTime": "2018-11-23T10:39:00",
                    "event": {"eventLabel": "C"}
                }]
        }, {
            "sessionId": "2",
            "sessionDate": "2018-11-23",
            "activities": [{
                    "activityTime": "2018-11-23T18:04:00",
                    "event": {"eventLabel": "A"}
                }, {
                    "activityTime": "2018-11-23T18:11:00",
                    "event": {"eventLabel": "B"}
                }]
        }]
}
{
    "totalRows": 18,
    "nextPageToken": "1FKOME",
    "sessions": [{
            "sessionId": "2",
            "sessionDate": "2018-11-23",
            "activities": [{
                    "activityTime": "2018-11-23T18:26:00",
                    "event": {"eventLabel": "C"}
                }]
        }, {
            "sessionId": "3",
            "sessionDate": "2018-11-24",
            "activities": [{
                    "activityTime": "2018-11-24T11:26:00",
                    "event": {"eventLabel": "A"}
                }, {
                    "activityTime": "2018-11-24T11:29:00",
                    "event": {"eventLabel": "B"}
                }, {
                    "activityTime": "2018-11-24T11:39:00",
                    "event": {"eventLabel": "C"}
                }, {
                    "activityTime": "2018-11-24T11:42:00",
                    "event": {"eventLabel": "D"}
                }]
        }]
}
{
    "totalRows": 18,
    "nextPageToken": "7S77H6",
    "sessions": [{
            "sessionId": "4",
            "sessionDate": "2018-11-24",
            "activities": [{
                    "activityTime": "2018-11-24T23:50:00",
                    "event": {"eventLabel": "A"}
                }, {
                    "activityTime": "2018-11-24T23:54:00",
                    "event": {"eventLabel": "B"}
                }]
        }, {
            "sessionId": "5",
            "sessionDate": "2018-11-25",
            "activities": [{
                    "activityTime": "2018-11-25T00:01:00",
                    "event": {"eventLabel": "C"}
                }, {
                    "activityTime": "2018-11-25T00:13:00",
                    "event": {"eventLabel": "D"}
                }]
        }, {
            "sessionId": "6",
            "sessionDate": "2018-11-25",
            "activities": [{
                    "activityTime": "2018-11-25T13:01:00",
                    "event": {"eventLabel": "A"}
                }]
        }]
}
{
    "totalRows": 18,
    "sessions": [{
            "sessionId": "6",
            "sessionDate": "2018-11-25",
            "activities": [{
                    "activityTime": "2018-11-25T13:09:00",
                    "event": {"eventLabel": "B"}
                }, {
                    "activityTime": "2018-11-25T10:12:00",
                    "event": {"eventLabel": "C"}
                }, {
                    "activityTime": "2018-11-25T10:23:00",
                    "event": {"eventLabel": "D"}
                }]
        }]
}

Muestreo de datos

Si un cliente acumuló una gran cantidad de datos para el período solicitado, es posible que la API muestre solo un subconjunto de actividades muestreadas. Cuando esto suceda, el campo sampleRate indicará qué fracción de las actividades del usuario se mostraron.

Cómo se muestrean los datos

Los datos del usuario se muestrean a nivel de la actividad. Por ejemplo, con una tasa de muestreo del 50% (0.5), la mitad de las actividades del usuario estará presente en la respuesta.

Estas actividades de muestra se seleccionan de manera arbitraria. La API no proporciona ninguna garantía sobre el muestreo aleatorio, ni que el muestreo es proporcional para todas las actividades del período determinado.

Evita el muestreo de datos

Debido a que esta API trata una sesión como una simple colección de actividades, las sesiones para las que no aparezcan actividades en el conjunto de muestra no aparecerán en la respuesta. Si necesitas una lista completa de sesiones o actividades, realiza solicitudes de seguimiento con períodos más pequeños.

Por ejemplo, si solicitas datos de 2018-01-01 a 2018-12-31 y la respuesta indica una tasa de muestreo de 0.25, divide el período solicitado en 4 partes, de modo que cada parte contenga aproximadamente un cuarto de los datos originales:

  • De 2018-01-01 a 2018-03-31
  • De 2018-04-01 a 2018-06-30
  • De 2018-07-01 a 2018-09-30
  • De 2018-10-01 a 2018-12-31