# Analytics

[`GET /analytics?days=7|30|90`](/api/operations/getanalytics/) summarises posts published in the period and compares them with
the period before.

| Field | What it is |
|---|---|
| `totals`, `previous` | Reach, views, likes, comments, shares, saves, engagement and engagement rate, plus how many posts were measured |
| `daily`, `previousDaily` | Posts, reach and engagement per day in the workspace time zone |
| `accounts` | The same per account |
| `byType` | Averages per content type (Reels vs photos, for example), best first |
| `heat`, `heatDays` | Average engagement per weekday and hour over 90 days: the best times to post |
| `topPosts` | Up to 8 best posts with caption, thumbnail and link |
| `tiktok` | Why TikTok numbers may be missing, when there are TikTok accounts |

## How numbers are collected

PostFlow reads each post's metrics from the platform **24 hours** and **7 days** after it publishes; the latest snapshot counts.
Platforms report different metrics (`available` says how many posts reported each one):

| Platform | Metrics |
|---|---|
| Instagram | Reach, views, likes, comments, shares, saves |
| Facebook | Reach, reactions, comments, shares |
| Threads | Views, likes, replies, reposts, quotes, shares |
| TikTok | Views, likes, comments, shares; reach for Business accounts |
| YouTube | Views, likes, comments |
| Bluesky | Likes, reposts, quotes, replies |
| Telegram | Not available |

`engagement` = likes + comments + shares + saves. `rate` = engagement ÷ reach, when the platform reports reach.

[`GET /analytics/digest`](/api/operations/getdigest/) returns the plain-language weekly summary PostFlow sends on Mondays.