---
title: "Get analytics traffic tables"
method: GET
path: "/analytics/traffic"
tags: ["Analytics"]
---

# Get analytics traffic tables

`GET /analytics/traffic`

## Request

- Base URL: `https://api.cavuno.com/v1`
- URL: `https://api.cavuno.com/v1/analytics/traffic`
- Auth: HTTP bearer

Typed Board homepage traffic breakdowns: top pages, sources, locations, devices, and first-touch UTM campaigns with apply-click attribution. Sources are normalized referrers (never full URLs). Campaigns are tagged inbound sessions only (utm_campaign / utm_source / utm_medium parsed from the first-touch href), one row per triple; `campaignGroupBy=content` also splits them by utm_content / utm_term. Inclusive UTC date-only range; defaults to the last 30 completed UTC days ending yesterday. Max range 366 days. `limit` caps each table (1–10, default 10).

## Query parameters

- `start` string: Inclusive range start (UTC date-only YYYY-MM-DD).
- `end` string: Inclusive range end (UTC date-only YYYY-MM-DD).
- `limit` integer: Max rows per traffic table (1–10). Defaults to 10.
- `campaignGroupBy` 'campaign' | 'content': Grouping for the `campaigns` table. `campaign` (default) groups by utm_campaign, utm_source and utm_medium. `content` also groups by utm_content and utm_term, for per-post attribution, and adds `content` and `term` to each row. Visits and apply clicks are matched on the same values.

## Response `200`

Analytics traffic tables for the requested range.

- AnalyticsTraffic
  - `object` 'analytics_traffic', required
  - `range` AnalyticsTrafficDateRange, required
    - `start` string, required: UTC date-only YYYY-MM-DD.
    - `end` string, required: UTC date-only YYYY-MM-DD.
  - `pages` AnalyticsTrafficPage[], required
    - `pathname` string, required
    - `visits` number, required
    - `visitsChangePercentage` number, nullable, required
  - `sources` AnalyticsTrafficSource[], required
    - `source` string, required: Normalized referrer source (never a full URL).
    - `visits` number, required
    - `visitsChangePercentage` number, nullable, required
    - `applyClicks` number, required
  - `locations` AnalyticsTrafficLocation[], required
    - `countryCode` string, required
    - `visits` number, required
    - `visitsChangePercentage` number, nullable, required
    - `applyClicks` number, required
  - `devices` AnalyticsTrafficDevice[], required
    - `device` string, required
    - `visits` number, required
    - `visitsChangePercentage` number, nullable, required
    - `applyClicks` number, required
  - `campaigns` AnalyticsTrafficCampaign[], required
    - `campaign` string, required: utm_campaign from the session first-touch href.
    - `source` string, required: utm_source from the session first-touch href.
    - `medium` string, required: utm_medium from the session first-touch href.
    - `content` string: utm_content from the session first-touch href, '' when untagged. Only with `campaignGroupBy=content`.
    - `term` string: utm_term from the session first-touch href, '' when untagged. Only with `campaignGroupBy=content`.
    - `visits` number, required
    - `visitsChangePercentage` number, nullable, required
    - `applyClicks` number, required

## Other responses

- `default`: An error. Every non-2xx response uses the same envelope; see the Errors section of the introduction.

## Changes

- **2026-10-19** `c34152c38176`: 1 info
  - added the optional property `error/upgrade` to the response with the `default` status

[Operation history](https://skmtc.dev/cavuno/apis/cavuno-v1-rest-api/changes/analytics/traffic/get.md)

---

[API](https://skmtc.dev/cavuno/apis/cavuno-v1-rest-api.md) · [All operations](https://skmtc.dev/cavuno/apis/cavuno-v1-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/cavuno/apis/cavuno-v1-rest-api/revisions/d5974dabff14?raw)
