Reports: statistics and analytics in one screen
AlterCPA used to have two statistics screens, and it annoyed everyone. "Статистика" showed one flat grouped table with a graph. "Аналитика" could drill down through levels, but it lived apart, with its own buttons and its own mood. Open the wrong one — start over.
We married them. The «Reports» screen is your cockpit: one table, one set of filters, one mode switch. Want it flat — flat it is. Want a tree — expand the tree. The engine underneath is the same one the classic screens used, so the figures match to the cent — QA ran 30 days and got exactly the same 10,028 clicks, 194 leads, 5,602.08 in money and ROI 17 as the old tracker/stats. No new magic, just a new face.
What the screen shows
Up top — the control bar (dates, grouping, mode, filters, columns, currency, graph, export, scope). Below it — a graph if you want one. Below that — a table with a sticky header and sticky first column, and nailed to the bottom, the ИТОГО (TOTAL) row — the grand total for the whole query.
Tour of the control bar
Left to right, each button by its label.
- Date presets:
Сегодня(Today) ·Вчера(Yesterday) ·7 дней(7 days) ·Месяц(Month). Default — the last 7 days. Alongside, from–to fields for a custom range. Rules are simple:tono later than today,fromno later thanto. The tracker won't let you pick the future. - Grouping (
Группировка ▾) — a dropdown of roughly 20 dimensions: Date · Hour · Campaign · Stream · Landing · Filter · Geo · Device · OS · Browser · IP · Domain · SubID · Customer · UTM source · UTM campaign · UTM content · UTM term · UTM medium, plus Member in a team. Default — Date. This is what the table's rows are built from. - Mode — the
Flat | Treetoggle. Flat — one grouping, one table. Tree — an expandable hierarchy (below). Both modes share filters, columns, dates and currency — switching resets nothing except open branches. - + Filter (
+ Фильтр (n)) — the extra-search panel. Add a condition — a chip appears under the bar; each chip has an ✕ to remove it. Many fields carry an "empty value" checkbox — to select rows where a dimension is blank. - Columns (
Столбцы ▾) — a popover where you tick columns on and off. The set is remembered per screen. - Currency (
Валюта ▾) — which currency money is shown in. - Graph (
График ⌄) — a collapsible graph block. Collapsed by default. - Export — dumps the current table to CSV.
- Scope — Mine / Team. In team mode the report covers the whole team.
- ↻ and Auto — manual refresh and auto-refresh (off / 30s / 60s). Off by default.
Columns: what all those letters mean
Columns come in groups, exactly like the classic column builder. The important ones.
Visits
| Column | Code | Meaning |
|---|---|---|
| Clicks | click | All clicks |
| Unique | unique | Unique clicks |
| — | ur · next · per | Unique share, click-throughs, depth |
Conversion
| Column | Code | Meaning |
|---|---|---|
| CR | cr | Conversion rate, % of clicks that became a lead |
| EPC | epc | Earnings per click |
| Approval % | appr | Approval share |
| — | crt · epl · app | Extra conversion metrics |
Leads
By status, always by the numeric status code — never the text, which changes with UI language.
| Column | Code | Colour |
|---|---|---|
| Total | total | All leads |
| New | cn · st 1 | Blue |
| Hold | ch · st 2 | Amber |
| Approve | ca · st 3 | Green |
| Cancel | cc · st 4 | Red |
| Trash | ct · st 5 | Grey |
| — | cv | Extra lead metric |
Money
| Column | Code | Meaning |
|---|---|---|
| — | mt | Total money |
| — | mh | Money on hold |
| — | ma | Approved money |
| — | mct/mch/mca · mmt/mmh/mma | Sums and averages by status |
ROI
| Column | Code | Meaning |
|---|---|---|
| Spend | spend | Traffic cost — set on the «Sources» screen or pulled by a connector |
| Profit | profit | Profit |
| ROI | roi | Return, % |
| — | cpc/cpl/cpv/cpa | Cost per click / lead / visit / approve |
Goals and Events — one group per configured goal (goal1..5) and event (event1..5): total / cr / share.
Visible by default: Clicks, Unique, CR, EPC, Approval %, Total, New, Hold, Approve, Cancel, Trash, mt, mh, ma. The rest live in the «Columns» popover.
The table
- Sticky header and sticky first column — scroll right and down, the row names and column headers stay put.
- Sorting — click a column header. It's honest, server-side sorting: the tracker recomputes and returns a freshly sorted page.
- TOTAL (ИТОГО) row — pinned to the bottom, the grand total for the whole query (the engine's
grandtotal, not the sum of the visible page). - Paged — large dimensions (IP, SubID) are sliced into pages on the server. QA saw 5,093 SubIDs served 50 to a page — the table doesn't choke on a million rows.
Flat mode (the classic "Статистика")
One grouping, one table. Pick a dimension in Группировка ▾, get rows by that dimension plus a TOTAL row. That's it — the everyday case: "show me the breakdown by geo / by campaign / by source".
Workflow 1 — group a flat report
- Make sure Mode is on «Flat».
- Pick a date range: a preset (
7 days,Month) or the from–to fields. - Open Группировка ▾ and pick a dimension, e.g. Geo.
- The table rebuilds: rows by country, ИТОГО at the bottom.
- Click a column header (e.g. click) to sort.
- Need other metrics — open Столбцы ▾ and tick them on.
Tree mode (the classic "Аналитика")
Here you don't just group by one dimension — you build a hierarchy and drill in right inside the same table by expanding rows. This is the screen's biggest upgrade.
The grouping-order editor. In Tree mode the "Grouping" pill becomes a chain of levels — a horizontal strip of chips, "Level 1 → Level 2 → …".
- Chips are draggable (and move with arrow keys), an ✕ removes a level.
- + Add level — a dropdown of the remaining dimensions (the same catalogue as flat mode).
- The order is remembered (
pref.ui.reportHier) and filled in next time. Default — Campaign → Geo → OS → Browser. Minimum one level. - Member as a level appears only in a team.
Expanding. Every row that has a next level shows a disclosure caret (▸). Clicking it lazy-loads that value's children and inserts them indented right below the parent, in the same table.
- Any number of branches can be open at once.
- Children sum exactly to the parent — QA checked: India 148 = 42 + 42 + 16 + 48.
- Open paths are written to the URL (
expand=), so an expanded tree is bookmarkable and shareable — it reopens identically. - The TOTAL row is the grand total of the Level-1 query; which branches are open doesn't touch it.
Workflow 2 — build the tree and expand branches
- Switch Mode to «Tree».
- Assemble the order in the level chain. Drag chips to get, say, Campaign → Geo → OS. Remove extras with ✕, add missing ones via + Add level.
- The table shows Level 1 (campaigns) with a TOTAL row.
- Click the caret ▸ on a campaign — its geos open, indented, beneath it.
- Click ▸ on a country — its OSes open. Expand as many branches as you like.
- Copy the finished tree from the address bar (
expand=lives in the URL) and pass it on.
Falling into conversions (deep-link)
Every numeric cell in the table is a link. Clicking it opens the «Conversions» screen, already filtered by the row's value and by that metric's status. Click the number in the Approve column on the Geo = US row — you land in the list of approved leads from the US. Nothing to set up.
In Tree mode the link carries the whole accumulated path: click approve on the branch Campaign → Geo = US → OS = Android — Conversions open filtered by all three conditions at once.
Workflow 3 — filter and drill into leads
- Set your conditions via + Filter — e.g. Geo = US. A
Гео: USchip appears under the bar. Remove it with the chip's ✕. - Group however suits you (flat by campaign, or a tree).
- Find the row with the interesting numbers.
- Click the number in the status column you care about — say Hold.
- «Conversions» open already filtered to that row and the Hold status.
The graph
A block above the table, collapsed by default — a multi-series time chart. It's meaningful for time groupings: Date and Hour.
- Opens with График ⌄; the open/closed state is remembered.
- Series picker — a metric multiselect. Default is the classic set: unique, app, total,
ca,mt,ma; add any numeric column. The chosen series are remembered too. - Respects the current dates, filters, currency and scope — the same params as the table.
Workflow 4 — export to CSV
- Set the table the way you want it (grouping, filters, columns, dates).
- Hit Export.
- A CSV downloads: with a UTF-8 BOM (so Excel doesn't mangle Cyrillic), a header row, data rows and a TOTAL row at the end.
- Statuses in the file are the machine code (
cn/ch/ca/cc/ct), not text — so the export isn't broken by the UI language.
Gotchas (from QA)
- Switching currency looks like nothing happened. Money in usd/eur/rub/jpy comes out identical. This is not a frontend bug: the tracker honestly refetches with the new currency, but if the install has no FX rates configured, the engine returns the same numbers — and the classic screen behaves the same. Configure rates and you'll see the difference.
- Large dimensions are paged. IP and SubID come back in pages (QA: 50 SubIDs of 5,093). It's protection against a million-row table, not lost data — the TOTAL is the full figure.
- Tree sorting is per-branch. See Workflow 2: siblings sort, not the whole tree.
- The Team scope builds the report across the whole team via team proxies (
scope=gang). On a single-member stand the data matches your own — as it should.