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

# Computed Traits for Media and Entertainment

> A reference of computed traits for media and entertainment: the computation method, data source, and business use case for each trait.

OTT, news, and video-streaming apps track content affinity, watch time, and engagement signals in real time. Computed traits turn that raw activity into live user attributes you can segment on, personalize with, and branch Flows on, without engineering support or CSV uploads.

This page is a menu. Each row tells you what to build, which computation method to pick, what event data it needs, the business outcome, and how to use it.

New to computed traits? [Computed Traits - Overview](/docs/user-guide/data/computed-traits/computed-traits-overview) explains what they are and how each computation method works, and [Create a Computed Trait](/docs/user-guide/data/computed-traits/create-a-computed-trait) walks through building one.

## How Computed Traits Work

Every trait on this page follows the same four-step model. Once you recognize it, the tables below read at a glance.

<Steps>
  <Step title="Start with an event" icon="database">
    A user behavior you already track, such as Content Played or App Session Started.
  </Step>

  <Step title="Choose a method" icon="calculator">
    [Count, Aggregation, First/Last Value, or SQL](/docs/user-guide/data/computed-traits/computed-traits-overview#methods-of-computations).
  </Step>

  <Step title="Get a trait" icon="user-check">
    A live attribute like Favorite Genre that updates automatically.
  </Step>

  <Step title="Activate it" icon="rocket">
    Use it in segmentation, analytics, Jinja personalization, and Flows.
  </Step>
</Steps>

Once a trait runs, it becomes a standard user attribute you can use anywhere in MoEngage: build [segments](/docs/user-guide/segment/segment-operations/rule-based-filter-segments) from it, group and filter it in [analytics](/docs/user-guide/analyze/moengage-analytics/overview), insert its value into message copy with [Jinja personalization](/docs/user-guide/campaigns-and-channels/getting-started/message-personalization/jinja-templating-language), or branch a [Flow](/docs/user-guide/flows-cross-channel-messaging/getting-started/overview-flows/overview-flows) on it.

<Tip>
  **Most traits here are no-code.** The <Badge color="green">Count</Badge> <Badge color="green">Aggregation</Badge> and <Badge color="green">First/Last Value</Badge> methods need no SQL. Reach for <Badge color="purple">SQL</Badge> only for composite scores that combine multiple events, or for ratios such as redemption or completion rate. You can build every no-code trait on this page yourself.
</Tip>

## Start Here

Build these three first. They give you the fastest return and the most reuse across campaigns.

<CardGroup cols={3}>
  <Card title="Last Session Date" icon="clock">
    **Last Value** · Powers every retention Flow with date operators.
  </Card>

  <Card title="Favorite Genre" icon="film">
    **Last Value** · Transforms the home screen and every recommendation.
  </Card>

  <Card title="Total Watch Time" icon="stopwatch">
    **Aggregation** · The definitive engagement metric, no SQL needed.
  </Card>
</CardGroup>

## Browse Traits by Goal

<Info>
  The event and property names in these tables are examples. The exact names in your account depend on how your app tracks data, so you might not find an event named `Content Played` as written here. Check your tracked events and properties under **Data** before you build a trait, and ask your development team to track any that are missing. For how tracking works, see [A Complete Guide to Event Tracking](/docs/user-guide/data/event-data/a-complete-guide-to-event-tracking).
</Info>

### Content Affinity

Keep each viewer's genre, language, and format preferences live, so every recommendation and push feels personal.

| Computed Trait           | Method                       | Data Source (Events / Properties)                                                       | Business Use Case                                                   | How to Use It                                                                                                                |
| ------------------------ | ---------------------------- | --------------------------------------------------------------------------------------- | ------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
| Favorite Genre           | Last Value                   | **Event:** `Content Played`; **Property:** `genre`                                      | The foundation of OTT personalization.                              | Swap newsletter content blocks by genre, and send genre-specific push on new releases.                                       |
| First Genre Watched      | First Value                  | **Event:** `Content Played`; **Property:** `genre`                                      | The entry-door genre, useful for onboarding and trial conversion.   | Run a trial-conversion campaign that references the viewer's first genre.                                                    |
| Favorite Language        | Last Value                   | **Event:** `Content Played`; **Property:** `language`                                   | Essential in multi-lingual markets.                                 | Localize push copy, and filter new-release alerts by language.                                                               |
| Preferred Content Format | Last Value                   | **Event:** `Content Played`; **Property:** `format` (Movie, Series, Short, Documentary) | Match promotional weight to what the viewer actually watches.       | Send series-first viewers episode arcs, and movie-first viewers standalone drops.                                            |
| Distinct Genres Watched  | Aggregation (Count Distinct) | **Event:** `Content Played`; **Property:** `genre`                                      | Tell single-genre loyalists apart from wide-ranging viewers.        | Send loyalists deep-genre recommendations, and explorers cross-genre curated lists.                                          |
| Content Completion Rate  | SQL Computation              | `Content Completed` / `Content Started`                                                 | Ratio where high means engaged and low signals a discovery problem. | Give low-completion viewers an onboarding tour and curated shorts, and high-completion viewers deep-catalog recommendations. |

### Engagement & Binge

Watch time and binge patterns are the strongest retention predictors. Turn them into traits, not just analytics.

| Computed Trait                  | Method            | Data Source (Events / Properties)                             | Business Use Case                                                       | How to Use It                                                                            |
| ------------------------------- | ----------------- | ------------------------------------------------------------- | ----------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- |
| Total Watch Time (Minutes)      | Aggregation (Sum) | **Event:** `Content Played`; **Property:** `duration_watched` | Rank viewers by engagement depth.                                       | Send milestone celebrations at 10, 50, and 100 hours, and assign a VIP badge tier.       |
| Total Sessions Last 7 Days      | Count             | **Event:** `App Session Started`                              | Habit-formation signal; frequent viewers convert to premium more often. | Trigger a premium-trial offer when a viewer's weekly sessions cross 5.                   |
| Total Episodes Watched (Series) | Count             | **Event:** `Episode Played`; **Property:** `series_id`        | Series-specific engagement, the foundation of binge detection.          | Send a next-episode reminder at 2 episodes, and upsell an annual plan at 5 or more.      |
| Last Session Date               | Last Value        | **Event:** `App Session Started`; **Property:** `timestamp`   | The single most important recency trait for detecting drift.            | Build segments with date operators for an escalating win-back at 7, 14, and 30 days.     |
| Binge Watcher                   | SQL Computation   | 3 or more episodes of the same series within 24 hours         | Composite trait; bingers rarely churn in the short term.                | Send a congratulatory push with a next-series recommendation, and upsell an annual plan. |

### Subscription

Manage the full subscription journey, from trial to renewal to win-back, with dedicated traits.

| Computed Trait                | Method          | Data Source (Events / Properties)                                                           | Business Use Case                                                   | How to Use It                                                                                              |
| ----------------------------- | --------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- |
| Subscription Start Date       | First Value     | **Event:** `Subscription Purchased`; **Property:** `timestamp`                              | Anchor for tenure-based journeys and anniversary campaigns.         | Build segments with date operators to send anniversary emails at 30, 90, and 365 days.                     |
| Total Subscription Renewals   | Count           | **Event:** `Subscription Renewed`                                                           | Loyalty milestone that separates repeat renewers from first-timers. | Send milestone rewards at 2, 5, and 10 renewals, and an extra retention push to first-time renewers.       |
| Free Trial to Paid Propensity | SQL Computation | Trial users with over 60 minutes watched, 3 or more sessions, and completion rate above 40% | Composite conversion score.                                         | Reserve premium offers for high-propensity trialists, and send educational content to low-propensity ones. |
| Renewal Confidence Score      | SQL Computation | Watch time, session count, and notification engagement in the last 30 days                  | Composite score to prioritize renewal outreach.                     | Run a 14, 7, and 3-day-out reminder sequence for low-confidence renewals only.                             |

### Multi-device

The modern household is multi-profile and multi-device. These traits keep you from treating it as one viewer.

| Computed Trait              | Method                       | Data Source (Events / Properties)                                                   | Business Use Case                                                           | How to Use It                                                                                   |
| --------------------------- | ---------------------------- | ----------------------------------------------------------------------------------- | --------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- |
| Distinct Profiles Used      | Aggregation (Count Distinct) | **Event:** `Profile Switched`; **Property:** `profile_id`                           | Identify family accounts, which have different needs.                       | Send a family-content newsletter, and a kids-content push on weekends.                          |
| Preferred Viewing Device    | Last Value                   | **Event:** `Session Started`; **Property:** `device_type` (TV, Mobile, Web, Tablet) | TV-first viewers respond to hero campaigns; mobile-first to episodic drops. | Promote device-appropriate content, and skip "watch on the big screen" for mobile-only viewers. |
| Distinct Devices Registered | Aggregation (Count Distinct) | **Property:** `device_id` on the `App Opened` event                                 | Viewers on several devices are less likely to churn.                        | Run a multi-device onboarding boost, and exclude these viewers from device-driven win-back.     |
| Last Device Used            | Last Value                   | **Event:** `App Session Started`; **Property:** `device_type`                       | Send device-native content and features.                                    | Send device-specific in-app messages.                                                           |

### Sports, News & Kids

Domain-specific super-fan traits unlock niche verticals without segmenting your whole base.

| Computed Trait              | Method          | Data Source (Events / Properties)                                                      | Business Use Case                                  | How to Use It                                                                       |
| --------------------------- | --------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------- | ----------------------------------------------------------------------------------- |
| Matches Watched (Team)      | Count           | **Event:** `Match Watched`; **Property:** `team_id`                                    | Identify team fans without a composite score.      | Send team-specific match reminders, and cross-sell jerseys or merchandise.          |
| Total Kids-Profile Sessions | Count           | **Event:** `Session Started` (Kids profile)                                            | Cohort family accounts for kids-content marketing. | Send a kids-content push on Saturday mornings, and educational content on weekdays. |
| Favorite News Category      | Last Value      | **Event:** `Article Read`; **Property:** `category` (Politics, Business, Sports, Tech) | Personalize newsletters and breaking-news alerts.  | Filter push alerts by category, and run a category-specific newsletter track.       |
| Sports Super Fan            | SQL Computation | Watched 5 or more matches, favorited a team, and enabled match alerts                  | Composite trait to identify super-fans.            | Upsell a season pass, and send player-specific content notifications.               |

## Related Documentation

Computed traits are used across MoEngage. These guides cover the surfaces referenced in the tables above:

* [Segments](/docs/user-guide/segment/segment-operations/rule-based-filter-segments): build audiences from a computed trait's value.
* [Analytics](/docs/user-guide/analyze/moengage-analytics/overview): group and filter user behavior by a computed trait's value.
* [Campaigns and channels](/docs/user-guide/campaigns-and-channels/getting-started/introduction/moengage-channels): the channels you can reach users on.
* [Flows](/docs/user-guide/flows-cross-channel-messaging/getting-started/overview-flows/overview-flows): branch users down different paths based on a trait.
* [Message personalization](/docs/user-guide/campaigns-and-channels/getting-started/message-personalization/overview): insert trait values into your content with Jinja.
* [Data](/docs/user-guide/data/key-concepts/overview-data): how MoEngage collects and manages the event data these traits build on.
