> ## 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 Content Streaming

> A reference of computed traits for music, audio, and podcast apps: the computation method, data source, and business use case for each trait.

Music, audio, and podcast apps measure engagement in minutes, moods, and moments: songs played, skips, shares, and listening sessions. 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 Song Played or Podcast Episode Played.
  </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 Top Artist 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="Top Artist" icon="microphone-lines">
    **Last Value** · Turns every push and email into "for you."
  </Card>

  <Card title="Last Play Date" icon="clock">
    **Last Value** · Powers every win-back Flow, no SQL needed.
  </Card>

  <Card title="Total Listening Minutes" icon="headphones">
    **Aggregation** · The definitive engagement metric for milestones.
  </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 `Song 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>

### Artist & Genre

The moment you have live artist and genre traits, every home screen and push becomes personal.

| Computed Trait              | Method                       | Data Source (Events / Properties)                                                     | Business Use Case                                                                       | How to Use It                                                                           |
| --------------------------- | ---------------------------- | ------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- |
| Top Artist                  | Last Value                   | **Event:** `Song Played`; **Property:** `artist_id`                                   | The foundational personalization trait, powering "new from your top artist" everywhere. | Send new-release push and concert alerts, and personalize the annual wrap-up.           |
| Favorite Genre              | Last Value                   | **Event:** `Song Played`; **Property:** `genre`                                       | Genre-based curation and playlist recommendation.                                       | Send genre-mood playlist newsletters, and morning or evening genre-appropriate push.    |
| First Genre Played          | First Value                  | **Event:** `Song Played`; **Property:** `genre`                                       | The entry-door genre that reveals how a listener got hooked.                            | Base first-week onboarding on the first genre, and root playlist recommendations in it. |
| Distinct Artists Played     | Aggregation (Count Distinct) | **Event:** `Song Played`; **Property:** `artist_id`                                   | Tell loyal listeners apart from discoverers.                                            | Send loyalists a deep-artist push, and discoverers a curated new-artist newsletter.     |
| Total Songs Played (Artist) | Count                        | **Event:** `Song Played`; **Property:** `artist_id`                                   | Artist-specific listening depth, a simple fan indicator.                                | Send a concert or merch push when a listener passes 20 plays for an artist.             |
| Artist Super Fan            | SQL Computation              | Over 20 plays for an artist, registered for a concert event, and following the artist | Composite trait for identifying an artist's biggest fans.                               | Grant concert pre-sale access, and unlock exclusive artist content.                     |

### Listening Habits

When and how someone listens tells you more than what they listen to.

| Computed Trait                 | Method            | Data Source (Events / Properties)                         | Business Use Case                                                         | How to Use It                                                                                   |
| ------------------------------ | ----------------- | --------------------------------------------------------- | ------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- |
| Total Listening Minutes        | Aggregation (Sum) | **Event:** `Song Played`; **Property:** `duration_played` | Rank listeners by engagement depth to drive premium upsell.               | Send milestone celebrations at 100, 500, and 1000 hours, and run wrap-up campaigns.             |
| Total Sessions Last 7 Days     | Count             | **Event:** `App Session Started`                          | Habit-formation signal; frequent listeners convert to premium more often. | Trigger a premium-trial offer when weekly sessions cross 5.                                     |
| Peak Listening Hour            | Last Value        | **Event:** `Song Played`; **Property:** `hour_of_day`     | The exact window each listener tunes in.                                  | Personalize the send window with Best Time Delivery, and send morning-commute content.          |
| Last Play Date                 | Last Value        | **Event:** `Song Played`; **Property:** `timestamp`       | The single most important churn trait for streaming.                      | Build segments with date operators to win back with a nostalgia playlist at 7, 14, and 30 days. |
| Total Play Events Last 30 Days | Count             | **Event:** `Song Played` (last 30 days)                   | Activity signal that complements last-play date.                          | Combine with last-play date to tell "just paused" apart from "truly lapsed."                    |

### Discovery vs. Repeat

A listener's personality, discoverer or repeat-listener, shapes what to promote and when.

| Computed Trait                        | Method                       | Data Source (Events / Properties)                                      | Business Use Case                                       | How to Use It                                                                                 |
| ------------------------------------- | ---------------------------- | ---------------------------------------------------------------------- | ------------------------------------------------------- | --------------------------------------------------------------------------------------------- |
| Distinct New Artists Played (30 Days) | Aggregation (Count Distinct) | **Event:** `Song Played`; **Property:** `artist_id` (first-ever plays) | A simple discovery indicator without a ratio.           | Send discoverers a New Music Weekly playlist push, and loyalists a "because you played" push. |
| Playlist Creator Score                | Count                        | **Event:** `Playlist Created`                                          | Playlist creators are power users worth protecting.     | Feature their playlists, and unlock collaborative playlist features.                          |
| Total Songs Skipped (30 Days)         | Count                        | **Event:** `Song Skipped`                                              | High skip volume signals recommendation-quality issues. | Trigger a genre-preference survey, and retrain recommendations for the listener.              |
| Skip Rate                             | SQL Computation              | `Songs Skipped` / `Songs Played`                                       | Ratio that normalizes skips against listening volume.   | Use a refined threshold to trigger a recommendation-quality intervention.                     |

### Language & Region

Music is cultural. Language and regional traits are essential on globally diverse platforms.

| Computed Trait                      | Method                       | Data Source (Events / Properties)                                                                | Business Use Case                                                     | How to Use It                                                                    |
| ----------------------------------- | ---------------------------- | ------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------- | -------------------------------------------------------------------------------- |
| Preferred Language                  | Last Value                   | **Event:** `Song Played`; **Property:** `language`                                               | Localize every push, email, and home-screen row.                      | Send language-specific playlist newsletters, and localize push copy.             |
| Regional Genre Affinity             | Last Value                   | **Event:** `Song Played`; **Property:** `sub_genre` (Punjabi, Tamil, Bhojpuri, K-Pop, Reggaeton) | Surface hyper-local content, a differentiator for regional streaming. | Send regional new-release alerts, and market regional-artist concerts.           |
| Distinct Languages Played (30 Days) | Aggregation (Count Distinct) | **Event:** `Song Played`; **Property:** `language`                                               | A simple measure of how wide-ranging a listener is.                   | Segment listeners with 3 or more languages for global-catalog premium messaging. |

### Podcasts

Podcasts have different economics and retention curves than music. Track them separately.

| Computed Trait                | Method            | Data Source (Events / Properties)                                    | Business Use Case                                                          | How to Use It                                                                                             |
| ----------------------------- | ----------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- |
| Total Podcast Episodes Played | Count             | **Event:** `Podcast Episode Played`                                  | Cohort podcast listeners for a dedicated track.                            | Send a weekly podcast newsletter, and a podcast recommendation push to anyone above zero.                 |
| Favorite Podcast Category     | Last Value        | **Event:** `Podcast Episode Played`; **Property:** `category`        | Personalize podcast discovery and new-episode alerts.                      | Send a category weekly digest, and an auto-push per category on new episodes.                             |
| Total Podcast Minutes         | Aggregation (Sum) | **Event:** `Podcast Episode Played`; **Property:** `duration_played` | Depth of podcast consumption.                                              | Send milestone recognition, and upsell a premium-podcast subscription.                                    |
| Podcast Completion Rate       | SQL Computation   | `Episodes Completed` / `Episodes Started`                            | Ratio that tells binge-podcasters apart from sample-and-move-on listeners. | Upsell a subscription to high-completion listeners, and feature shorter episodes for low-completion ones. |

### Freemium to Premium

Every premium conversion should be driven by a computed trait, not a blanket campaign.

| Computed Trait           | Method          | Data Source (Events / Properties)                                    | Business Use Case                                           | How to Use It                                                                                                     |
| ------------------------ | --------------- | -------------------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- |
| Total Ads Shown          | Count           | **Event:** `Ad Shown`                                                | Ad-interruption volume, a strong premium-conversion driver. | Trigger a premium-trial offer when ads shown cross a threshold, such as 50 in 7 days.                             |
| Downloads Blocked        | Count           | **Event:** `Download Attempt Blocked`                                | Every blocked download is a premium-conversion opportunity. | Send a real-time in-app message: "Download this song with Premium."                                               |
| Total Songs Shared       | Count           | **Event:** `Song Shared`                                             | High sharers are your evangelists.                          | Send referral-program invitations, and unlock playlist gifting.                                                   |
| Premium Trial Propensity | SQL Computation | Session frequency, total minutes, ad exposure, and download attempts | Composite conversion trait.                                 | Reserve the best trial offers for high-propensity listeners, and send educational content to low-propensity ones. |

## 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.
