---
title: "Get apply clicks by job and first-touch channel"
method: GET
path: "/analytics/apply-clicks"
tags: ["Analytics"]
---

# Get apply clicks by job and first-touch channel

`GET /analytics/apply-clicks`

## Request

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

Paginated apply-click counts grouped by job and first-touch channel (ADR-0029). Each apply click is attributed to the session’s first pageview: UTM medium/source when present, otherwise the referrer. This is apply clicks, not confirmed applications, and not last-click. LinkedIn and other in-app browsers often bucket as `direct`. Inclusive UTC `start`/`end` (YYYY-MM-DD) so scheduled pulls can be incremental; defaults to the last 30 completed UTC days ending yesterday. Max range 366 days. Page with `limit` (1–1000, default 100) and `cursor`. Join `jobId` to `GET /v1/jobs/export` `id`, or `companySlug` + `jobSlug` to export `company_slug` + `slug`. Job-detail visitor counts use `GET /v1/analytics/job-visitors` (slug join). Requires `analytics.read`.

## 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: Page size (1–1000). Defaults to 100. Not a board-wide top-N cap.
- `cursor` string: Opaque page cursor from the previous `nextCursor`.

## Response `200`

Apply clicks by job and first-touch channel.

- object
  - `object` 'list', required
  - `url` string, required
  - `hasMore` boolean, required
  - `nextCursor` string, nullable, required
  - `data` AnalyticsJobApplyClick[], required
    - `object` 'analytics_job_apply_click', required
    - `jobId` string, required: Job document id (`job_apply_click.job_id`). Join to jobs export `id`.
    - `companySlug` string, required: Company slug from the apply-click payload. Empty if absent.
    - `jobSlug` string, required: Job slug at click time (`job_apply_click.job_slug`), or the current slug from the one-shot historical map. Empty when neither is known. Join to jobs export `slug` with `companySlug`.
    - `channel` string, required: First-touch channel for the session (same keys as Home Channel).
    - `applyClicks` integer, required: Apply-click events for this job × channel in the range.
  - `count` integer: Total number of results matching the query.
  - `limit` integer: The page size used for this response.
  - `offset` integer: The number of results skipped before this page.
  - `gatedCount` integer: Jobs hidden behind the candidate paywall for the current viewer; absent or 0 for an entitled viewer.

## 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/apply-clicks/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)
