---
title: "Retrieve form drop-off"
method: GET
path: "/forms/{formId}/analytics/drop-off"
tags: ["Forms"]
---

# Retrieve form drop-off

`GET /forms/{formId}/analytics/drop-off`

## Request

- Base URL: `https://api.tally.so`
- URL: `https://api.tally.so/forms/{formId}/analytics/drop-off`
- Auth: HTTP bearer

Returns per-question drop-off statistics for a form.

## Path parameters

- `formId` string, required

## Query parameters

- `period` 'today' | 'yesterday' | '24h' | '7d' | '30d' | '3m' | '6m' | '12m' | 'all', required

## Response `200`

Form drop-off analytics

- object, nullable
  - `stats` object
    - `totalVisitors` number
    - `formStarts` number
    - `formCompletes` number
    - `completionRate` number
    - `completionTimeInSeconds` number
    - `visitDurationInSeconds` number
  - `dataAvailableSince` string, date-time
  - `shouldShowDataCutoffNotice` boolean
  - `data` object[]
    - `blockGroupUuid` string
    - `views` number
    - `startedViews` number
    - `answers` number
    - `drops` number
    - `title` string
    - `type` string
    - `answerRate` number
    - `dropRate` number
    - `isRequired` boolean
  - `hasConditionalLogic` boolean

## Other responses

- `401`: Unauthorized
- `403`: Forbidden
- `404`: Form not found

## Changes

- **2026-09-04** `28b98ea5fb21`: 1 info
  - added the optional property `shouldShowDataCutoffNotice` to the response with the `200` status
- **2026-07-31** `7d82145d3270`: 1 breaking
  - the response's body became nullable

[Operation history](https://skmtc.dev/tally/apis/tally-api/changes/forms/:formId/analytics/drop-off/get.md)

---

[API](https://skmtc.dev/tally/apis/tally-api.md) - [All operations](https://skmtc.dev/tally/apis/tally-api/llms.txt) - [OpenAPI document](https://skmtc.dev/tally/apis/tally-api/revisions/8b37e41e11fa?raw)
