> ## Documentation Index
> Fetch the complete documentation index at: https://faq.exode.biz/llms.txt
> Use this file to discover all available pages before exploring further.

# How metrics are calculated

> The exact calculation rules for the cards and charts of the Home section: what goes into revenue, sales, students and completion rate, and why the numbers can differ from the tables.

This article is a reference for the **Home** section. It describes which data goes into each card and each chart, and what is left out. How to use the section, choose the period and read the comparison with the previous period is covered in [Home analytics](https://faq.exode.biz/en/general/analytics/main-analytics.md).

## General rules

Before looking at individual metrics, keep in mind a few rules that apply to all analytics.

* **Sales are counted by seller, not by buyer (commercial schools only).** School revenue and sales include invoices for your courses and products, wherever the buyer is registered. Payment for the Exode platform tariff is not part of the school revenue.
* **Dates are calculated in the browser's time zone.** The start and end of a day, week and month are based on the time on the staff member's device.
* **Some conditions are checked at the current moment.** Whether a user is deleted, whether access is active, whether a course is on sale — the platform looks at the state now, not the state in the past. That is why the numbers for a period that has already ended can change.
* **Data arrives with a delay.** Cards lag behind events by no more than 2 minutes, charts by no more than 5 minutes.

## Cards

### Users

The number of your school's accounts created no later than the end of the selected period.

* All accounts are counted: students without courses, school staff and service users of API keys.
* Deleted users are not counted — both those deleted by an administrator and those who deleted their account themselves.
* If a user was deleted today, they disappear from the card for past periods too.

### Students

The number of distinct users who have active access to at least one course or product of the school. The access must have been granted no later than the end of the period.

* Access is considered active by the same rules the platform uses to open a course for a student: it is on, not deleted, and either has no end date, or its term has not expired yet, or the student is in a course group.
* Whether access is active is checked at the current moment. If a student's access ended yesterday, they are not counted as a student in past periods either.
* Deleted users are not counted.

### Courses sold

The number of “buyer — course” pairs that had a payment in the selected period (commercial schools only). A payment belongs to the period by its payment date.

* Only courses of any kind are counted, including course bundles. Other products do not go into the card.
* If a buyer paid for one course several times in one period — for example, made two installment payments — the course counts once.
* If installment or subscription payments fell into different periods, the course counts in each period with a payment.
* An invoice with several courses gives several sales.
* A purchase with a completed refund is not counted. This applies to past periods too.
* Signing up for a course for 0 — on a free tariff or with a promo code for the full amount — also counts as a sale.

### Revenue

The total of paid invoices for your products for the selected period minus completed refunds (commercial schools only).

* The final invoice amount is used — the amount the buyer paid, including discounts and promo codes.
* Each installment payment and each subscription renewal is a separate invoice. It goes into the period in which it was paid.
* Refunds are subtracted by the date the refund was completed. If a refund for last month's purchase was made this month, this month's revenue goes down.
* The cost of the refunded invoice items is subtracted.

**If your school accepts payments in several currencies**, amounts in different currencies are not added up. The platform picks one currency — the one that brought in the most money over the selected and the previous periods — and calculates revenue and refunds only in it. Payments in other currencies do not go into the card. The currency label next to the number is the school's main currency from its settings.

### Courses on sale

The number of published courses that can be bought right now. The course must be published no later than the end of the period, not archived and not deleted.

A course is considered on sale if all three conditions are met at the same time:

1. The course sales period has already started and has not ended yet, or is not set.
2. The course has an enabled tariff that is currently active, or the course is free.
3. The course has an enabled published launch with open sales, or the course has no launches at all.

Sales conditions are checked at the current moment. If you are looking at last month and the course was taken off sale today, it does not go into the card for last month either.

In corporate schools, this card is replaced by **Published** — the number of all published courses as of the end of the period, without checking the sales conditions.

### Active

The number of distinct users who signed in or connected to the school during the period — opened the website or the app while signed in. All school users are counted, including staff.

### Completion rate

The share of “student — course” pairs in which the student completed all started lessons, as of the end of the selected period. The value is rounded to a whole percent.

* Only pairs where the student has progress on at least one lesson are counted. Students who have never opened the course are not counted.
* For each lesson, the last progress status as of the end of the period is used. A pair is considered completed if all lessons with progress have the **Completed** status.
* The metric is cumulative: a completed course stays completed in the following periods.

## Charts

### Course enrollments

The number of accesses to the school's courses and products granted during the period. An enrollment belongs to an interval by the moment the access was granted.

| Series | What it includes |
| - | - |
| **Purchase** | Commercial schools only. Access after the first payment for a course. Installment payments and subscription renewals do not create new enrollments |
| **Assignment** | Access granted manually by a school staff member |
| **Via link** | Enrollment via an invite link |
| **Open** | Self-enrollment in a free course, and signing up for a free tariff of a paid course |

If a student signed up for a paid tariff with a promo code for the full amount, the enrollment goes into the **Purchase** series: only tariffs with a zero price go into the **Open** series.

### Payment revenue

The total of paid invoices by interval — by payment date (commercial schools only). The rules are the same as for the **Revenue** card, with two differences:

* refunds are not subtracted on the chart;
* the currency is chosen only by the selected period, without the previous one.

### Users online

The number of distinct users in each interval. A user goes into an interval when they connect to the school or go offline. If a person keeps the tab open for a long time, with a breakdown by minutes or hours they may not appear in the intervals in between.

## Why the numbers differ

| What you compare | Why the numbers differ |
| - | - |
| **Revenue** and the total in the **Payments** table | By default, the table also shows unpaid invoices, and the **Creation date** filter selects invoices by creation date. Analytics uses only paid invoices by payment date, subtracts refunds and counts one currency |
| **Revenue** and the **Payment revenue** chart | The card subtracts refunds, the chart does not |
| **Courses sold** and the number of paid invoices | One invoice can contain several courses. An installment consists of several invoices. A repeat payment for the same course by the same buyer in one period does not add a sale |
| **Courses sold** and the **Purchase** series | A sale is counted by payment date, an enrollment by the moment access was granted. A free tariff goes into sales, but on the chart it goes into the **Open** series |
| **Students** and the number of course enrollments | One student can have access to several courses. Expired and disabled accesses are not part of the card |
| Your numbers and a colleague's numbers | Day boundaries are calculated in each staff member's browser time zone |

## External analytics systems

The built-in analytics shows the overall picture for the school. If you need funnels, traffic sources and goals for advertising, connect Yandex Metrica, Google Analytics, Meta Pixel or VK Ads through custom code. The platform sends goal events to them automatically: sign-up, course view, checkout start and purchase (commercial schools only), course completion. The list of events and how to connect them are in [Custom code](https://faq.exode.biz/en/general/developers/custom-code.md).

The UTM tags the buyer came with are saved in payments (commercial schools only): you can filter the **Payments** table by them. The tags also go into the exports of payments, installments, subscriptions and users. Learn more in [UTM tags](https://faq.exode.biz/en/online-schools/marketing/utm-tags.md) and [Tables and exports](https://faq.exode.biz/en/general/analytics/dashboards.md).

## Frequently asked questions

> **Why do the numbers in analytics not match the invoices?**
>
> Analytics uses only paid invoices and assigns them to the payment date, not the creation date. Refunds are subtracted from revenue, and with payments in several currencies only the currency with the largest volume is counted. Also, the data on the cards can lag by up to 2 minutes.

> **How often does the data update?**
>
> Cards lag behind real events by no more than 2 minutes, charts by no more than 5 minutes. To see new data, reload the page or click the refresh button in the section header.

> **A student paid for a course in 6 monthly installments. How many sales will I see?**
>
> For the month of the first payment — one sale and one enrollment in the **Purchase** series. In each following month with an installment payment, the course counts again in that month's **Courses sold**, but no new enrollments appear on the chart. Each payment is added to the revenue of its month.

> **Why is the revenue for the month negative or very small?**
>
> Refunds are subtracted in the period when they were completed, even if the purchase was earlier. If the period had few payments and a large refund, revenue can be lower than expected or even negative.

> **We sell in rubles and in sums. Why does the revenue show only part of the money?**
>
> Amounts in different currencies are not added up. The platform calculates revenue in one currency — the one that brought in the most money over the selected and the previous periods. To see payments in all currencies, use the **Payments** table and its export.

> **Why is a course with open sales not counted in “Courses on sale”?**
>
> Check the three conditions: the course sales period is open, the course has an enabled tariff that is currently active, and an enabled published launch with open sales. If at least one of them is not met, the course is not considered on sale. Also, the course must not be archived.

> **Why is the “Completion rate” high even though many students have not finished the course?**
>
> Only students with progress on at least one lesson are counted. Students who enrolled but have not opened a single lesson are not counted. Compare the metric with the progress in the course student table — see [Student progress](https://faq.exode.biz/en/general/analytics/personal-analytics.md).

> **Are school staff counted in “Users” and “Active”?**
>
> Yes. Both cards count all school accounts, including administrators, curators and service users of API keys.

> **A student bought a course with a 100% promo code. Is it a sale?**
>
> Yes. Signing up for 0 counts as a sale on the **Courses sold** card, and 0 is added to revenue. On the enrollments chart, this purchase goes into the **Purchase** series, because the tariff is paid.

> **Can I see analytics for a single course?**
>
> On Home, the metrics are collected for the whole school, and there is no filter by course. View the progress of a specific course's students in the course student list, and the course payments in the **Payments** table with the **Course** filter (commercial schools only).

***

*Updated: 2026-10-15 18:08 UTC*


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.