---
title: "Form analytics"
description: "Views, submissions and people added over a window, in buckets, with totals and the conversion rate."
url: "https://openemail.uk/docs/api/forms/analytics"
area: "API"
category: "Mailbox"
---

# Form analytics

Views, submissions and people added over a window, in buckets, with totals and the conversion rate.

`GET /forms/{id}/analytics`

## GET /forms/{id}/analytics

Views, submissions and people added over a window, in buckets, with totals and the conversion rate.

## Example

Needs `forms:read`. `days` defaults to 30, `minutes` wins over it, `grain` is `minute`, `hour` or `day`, and `offsetMinutes` cuts the buckets in your time zone.

**curl**

```
curl "$OE/forms/frm_3b9d2e7a1c4f80d56e2a9b14/analytics?days=7" -H "$AUTH"
```

**Response**

```
{
  "object": "form_analytics",
  "formId": "frm_3b9d2e7a1c4f80d56e2a9b14",
  "since": "2026-09-24T00:00:00.000Z",
  "until": "2026-09-30T17:00:00.000Z",
  "grain": "day",
  "offsetMinutes": 0,
  "totals": {
    "views": 400,
    "submissions": 36,
    "added": 32,
    "pending": 4,
    "lastSubmittedAt": "2026-09-30T16:42:11.000Z",
    "conversion": 0.09
  },
  "series": [{ "bucket": "2026-09-30", "views": 58, "submissions": 6, "added": 5 }]
}
```

> `added` is dated when the person joined, which on a double opt-in form is when they confirmed.

> The series is sparse: a bucket with nothing in it is left out.
