# Measure engagement: watch time, lift, and cohorts

Engagement on Genuin is measured as per-minute watch time per user, with lift against a holdout, broken down along the grid and by cohort, so you can see what [Maya](https://begenuin.com/developers/get-started/any-business/supervised-intelligence-what-it-does-and-where-to-start#maya-genuin-s-orchestrator) and your content decisions changed. Reading time about 5 minutes.

## Core metrics

| Metric | Definition |
| --- | --- |
| Watch time per user per minute | Seconds of video watched per user, per minute of session, averaged across sessions on a placement |
| Lift | Difference in watch time, pages per session, or return rate between viewers who saw the placement and a matched holdout |
| Completion | Share of plays that reached 90 percent |
| Follow rate | Follows per thousand views |
| Return rate | Share of viewers who returned within seven days |
| Participation | Posts, comments, Quest entries per thousand members |

## Where to read them

- **Reports → Realtime** – the last 60 minutes, per placement.
- **Reports → Engagement** – daily, rolled up along the grid (see [The Hierarchical Grid: one spine for inventory, layout, and reporting](https://begenuin.com/developers/get-started/any-business/the-hierarchical-grid-one-spine-for-inventory-layout-and-reporting)), filterable by cohort (see [Audience segments: onsite, offsite, and offline signals](https://begenuin.com/developers/get-started/any-business/audience-segments-onsite-offsite-and-offline-signals)), experience (see [Player experiences: Shorts, Shoppable, Community, and Live](https://begenuin.com/developers/get-started/any-business/player-experiences-shorts-shoppable-community-and-live)), and content source.
- **Relevance dashboard** (see [Reading the Relevance dashboard](https://begenuin.com/developers/get-started/any-business/reading-the-relevance-dashboard)) – the same numbers reframed as leading indicators of revenue, with Maya's contribution isolated.

## Exporting

Every report exports to CSV and is available through scheduled exports (see [Receive engagement events in your own analytics](https://begenuin.com/developers/get-started/any-business/receive-engagement-events-in-your-own-analytics)) and webhooks (see [Webhooks and events](https://begenuin.com/developers/get-started/any-business/webhooks-and-events)) for your own warehouse.

## How it runs

The placements, feeds, destinations, and identity settings described here are proposed from your grid and audience, applied on confirmation, and tuned on a cadence from the reports.

**Support.** Help is available 24/7 from Brand Control Center and from every page of these docs. Ask in plain language; when a person is needed, an account manager, developer, or Ops engineer joins the same thread and stays on it until it is resolved. Every Business Account owner has this on every plan (see [24/7 Octo support: how Octo brings in account managers, developers, and Ops](https://begenuin.com/developers/get-started/any-business/24-7-octo-support-how-octo-brings-in-account-managers-developers-and-ops)).

## API & SDK

Access: the calls in the table are the proposed Business Account API (see [Business Account API: provisioning, OAuth, and the resource map](https://begenuin.com/developers/get-started/any-business/business-account-api-provisioning-oauth-and-the-resource-map)), authenticated with a key scoped to the account and a role or an OAuth client acting for it; every confirmation in this article becomes a proposal you can approve by API (`POST /proposals/{proposalId}:approve`). Live today, the server API under `/api/thirdparty` authenticates with a `gn-access-token` (see [Generate an access token](https://begenuin.com/developers/developer-resources/api/generate-access-token-using-authentication-api)), and [Live API today and the Business Account API roadmap](https://begenuin.com/developers/developer-resources/guides/live-api-today-and-the-business-account-api-roadmap) maps what is live to what is proposed.

| Call | Purpose |
| --- | --- |
| GET /reports/engagement | Watch time, completion, lift, cohorts by placement, feed, community |
| GET /reports/distribution | Syndication and network distribution by platform, partner, feed |
| POST /accounts/{accountId}/webhooks | Subscribe to events (proposal.created, placement.published, member.subscribed, revenue.posted, moderation.flagged, …) |

```js
// proposed server SDK (Business Account API)
import { Genuin } from '@genuin/sdk';
const genuin = new Genuin({ apiKey: process.env.GENUIN_KEY });
await genuin.reports.engagement({ brandId, from, to, by: 'placement' });
await genuin.reports.distribution({ brandId });
await genuin.webhooks.create(accountId, { url, events: ['proposal.created'] });
```

Live today: [Receive engagement events in your own analytics](https://begenuin.com/developers/developer-resources/sdk/receive-engagement-events-in-your-own-analytics) · [Query Genuin event data in BigQuery](https://begenuin.com/developers/developer-resources/api/integrate-google-bigquery-with-brand-control-center) · [Embed the Genuin Web SDK on your website](https://begenuin.com/developers/developer-resources/sdk/how-do-you-embed-and-configure-the-genuin-web-sdk-on-your-website) · [Integrate the Genuin iOS SDK](https://begenuin.com/developers/developer-resources/sdk/developer/genuin-sdk/native-compatibility/ios/how-to-integrate-and-power-your-brand-community-in-ios-apps).

SDKs: Web SDK (see [Embed the Genuin Web SDK on your website](https://begenuin.com/developers/developer-resources/sdk/how-do-you-embed-and-configure-the-genuin-web-sdk-on-your-website)), iOS SDK (see [Integrate the Genuin iOS SDK](https://begenuin.com/developers/developer-resources/sdk/developer/genuin-sdk/native-compatibility/ios/how-to-integrate-and-power-your-brand-community-in-ios-apps)), Android SDK (see [Integrate the Genuin Android SDK](https://begenuin.com/developers/developer-resources/sdk/how-to-integrate-and-power-your-brand-community-in-android-apps)), React Native (see [Integrate the Genuin SDK with React Native apps](https://begenuin.com/developers/developer-resources/sdk/how-do-you-integrate-the-genuin-react-native-sdk-into-your-application)), and Flutter (see [Integrate the Genuin SDK with Flutter apps](https://begenuin.com/developers/developer-resources/sdk/how-do-you-integrate-the-genuin-flutter-sdk-into-your-application)) render Genuin and sign members in; the Node (`@genuin/sdk`) and Python (`genuin`) server SDKs are proposed with [Business Account API: provisioning, OAuth, and the resource map](https://begenuin.com/developers/get-started/any-business/business-account-api-provisioning-oauth-and-the-resource-map).
