# Analytics

Flomailr reports on sending in two places: the Overview for your whole workspace, and a separate page for each sent campaign. Both read the same open, click, bounce and unsubscribe records.

## The Overview

Open `Overview` in the sidebar (`/dashboard`). The period switch at the top right sets the window: **7d**, **30d** or **90d**. It lives in the address as `?period=7`, `?period=30` or `?period=90`. Anything else falls back to 30 days. The old `/dashboard/analytics` address redirects here and keeps the period.

The top strip shows three totals:

- **Subscribers**: contacts with status Subscribed, all time. The hint shows how many more are awaiting confirmation.
- **Campaigns sent**: campaigns with status Sent, all time.
- **Emails delivered**: emails sent by campaigns whose send date falls inside the period.

Four rate cards cover campaigns sent inside the period. Each divides by emails sent in that window:

| Card             | What it counts                                                                                                                                     |
| ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| Open rate        | Opens recorded, one per person per campaign. This includes automated opens (see below).                                                            |
| Click rate       | People who clicked at least one link, counted once per campaign. Total clicks are not used, so a link scanner or a double click cannot push it up. |
| Bounce rate      | Messages that bounced.                                                                                                                             |
| Unsubscribe rate | The unsubscribes counted against those campaigns. See the note below.                                                                              |

Each card also shows the change against the previous window of the same length, in percentage points, and a small daily trend line. A dash means nothing was sent in the period. For bounces and unsubscribes, down is the good direction.

Three charts follow:

- **Opens Over Time**: opens and clicks per day. These are counted on the day the event happened, not the day the campaign went out, so the totals can differ from the rate cards.
- **Campaign Performance**: open rate and click rate for your six most recent sent campaigns.
- **Engagement Heatmap**: opens by day of the week and hour, in local time.

Days and hours use your workspace time zone, set at `Settings > Guardrails` under **Default time zone**. It falls back to UTC if the zone is not recognised.

Below the charts, **Recent campaigns** lists your five newest. Sent campaigns link to their analytics, and the others link to the editor. Until an AI app or an API key is connected, the Overview also shows a **Connect your AI** prompt.

## Campaign analytics

Go to `Campaigns > All campaigns` and click **Analytics** on a sent campaign. The page is at `/dashboard/campaigns/ID/analytics`. The header shows when it was sent and to which list or segment, and **Export CSV** downloads the data.

| Card            | Meaning                                                                                                                                                                                                         |
| --------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Sent            | Recipients delivered.                                                                                                                                                                                           |
| Human open rate | Opens with evidence of a person, divided by sent. The hint gives the rate including machine and Apple MPP opens.                                                                                                |
| Click rate      | Unique clickers divided by sent. The hint also shows total clicks.                                                                                                                                              |
| Bounce rate     | Bounced divided by sent.                                                                                                                                                                                        |
| Unsubscribed    | Unsubscribes divided by sent. See the note below.                                                                                                                                                               |
| Revenue         | Appears only when there is revenue. Purchase events that carry a value are credited to the last campaign the buyer clicked or opened in the 7 days before buying. A click wins over an open at the same moment. |

Further down the page:

- **A/B test results**: for an A/B campaign, sent, human open rate and click rate per variant. Once it is sent you can **Declare winner**.
- **Engagement Timeline**: opens and clicks over time. Pick a range (24h, 7d, 30d, All) and Hourly or Daily.
- **Top links**: up to 20 most clicked links, with clicks and share of all clicks.
- **Recent activity**: the latest opens and clicks, up to 30, with the address and how long ago.

The CSV has three parts: a one-row summary, the link breakdown, and every open and click with email, link and timestamp. Its `open_rate` column uses all recorded opens, not only human ones.

Note on unsubscribes: an unsubscribe link identifies the contact, not the campaign, and nothing currently adds to a campaign's unsubscribe count. These figures can read 0 even when people have opted out. To see opt-outs, filter `Audience > Contacts` by the Unsubscribed status, or open `Settings > Suppressions`.

## Open tracking and Apple Mail Privacy Protection

An open is recorded when the tiny tracking image in an email is loaded. Not every load means a person read the message. Apple Mail Privacy Protection loads images for every message it delivers, and some security scanners and link previewers do the same. Flomailr sorts each open by the software that made the request:

| Kind                                        | Counts as human                              |
| ------------------------------------------- | -------------------------------------------- |
| Human                                       | Yes                                          |
| Proxy cache (Gmail and Yahoo image proxies) | Yes, they load when the message is displayed |
| Unknown (no software identified)            | Yes                                          |
| Likely MPP (matches Apple's pre-fetch)      | No                                           |
| Machine (bots, scanners, link previewers)   | No                                           |

The match for Apple is a pattern, not proof. A background job re-checks Likely MPP opens: if one arrived more than 24 hours after the send, it is relabelled as human, because Apple fetches when a message is delivered, not when it is read.

What this means for the numbers:

- **Overview open rate** and the CSV count every recorded open, machine and MPP included.
- **Human open rate** on the campaign page leaves out Likely MPP and Machine opens, so it reads lower.
- Click rate is the number to trust most, since a click means someone followed a link addressed to them.
- Contact engagement and the segment filters on it use human opens and clicks only. See [Contacts](/docs/platform/contacts).

See [Tracking](/docs/concepts/tracking) for how links and the tracking image work, and [Campaigns](/docs/platform/campaigns) for sending.
