Recommended entertainment app events

At a glance: Measure the quality of your users throughout their user journey by recording these suggested in-app events for your entertainment app.

InApp_Events_streaming.png Entertainment

With the growing requirement by users for on-demand content, the entertainment applications market has become very competitive. The typical events that we suggest recording are user subscriptions, streaming content, and downloading and saving content.

Recording events can help you determine:

  • What content users consume
  • Campaign performance according to what content users demand 
  • User engagement and usage

These events are also relevant for entertainment apps that run on the following smart TVs:

  • Android Smart TV
  • Apple TV (tvOS)
  • Amazon Fire TV

For more information about recording in-app events, see the Rich in-app events guide.

Flowchart_for_recommended_events entertainment_app_user_journey

Recommended structures for predefined events

The following section provides a list of event structures that are typical to the entertainment vertical. Each structure includes a predefined event name and the suggested event parameters to use. Note that in-app events can include any event parameters that meet your business needs.

Complete registration (af_complete_registration)

Purpose

Learn how many users installed the app and completed the signup process, and what signup methods your users prefer.

Trigger

When the user completes the signup process

Event parameters

Name Description Example value
af_registration_method Method the user chooses to sign up with Facebook, Google, email

Code examples

Android iOS - Objective C iOS - Swift Unity
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.REGSITRATION_METHOD, "Facebook"); 
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.COMPLETE_REGISTRATION, eventValue);

Login (af_login)

Purpose

Understand the retention of your registered users

Trigger 

When the user successfully logs in

Event parameters

Can be sent without any additional parameters

Code examples

Android iOS - Objective C iOS - Swift Unity
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.LOGIN, null);

Start trial (af_start_trial)

Purpose

Many streaming services offer users a trial period to explore premium features. This event can help you:

  • See how many users opt-in for a trial period
  • Whether the trial is part of a promotion or a collaboration with a partner
  • What promotion prompted the user to activate the trial period

Trigger 

When the user opts in and activates the trial period

Event parameters

Name Description Example value
trial_method Method to activate the trial Free with a new phone, free with a carrier, promotion, coupon code
trial_method_identifier

Identifier of the trial method

Name of carrier, for example, Vodafone

Name of the partner, for example, Facebook

Coupon code, for example, TRA123

 Note

If you are mapping this event to the Facebook StartTrial event, and want to associate revenue, use the af_price parameter instead of the af_revenue parameter. 

Code examples

Android iOS - Objective C iOS - Swift Unity

Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put("trial_method", "coupon code");
eventValue.put("trial_method_identifier", "TRA123");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.START_TRIAL, eventValue);

Subscription (af_subscribe)

Purpose

Subscription is at the core of streaming services. This event can help you:

  • See which campaigns bring users that subscribe
  • Compare the number of users in a trial to subscribed users
  • Determine the amount of revenue generated from subscriptions and attribute it to campaigns and media sources

Trigger 

  • When the user successfully subscribes
  • When a subscription is renewed

See our Subscription recording guide for more information.

Event parameters

Name Description Example value
new_subscription Whether the subscription is new or renewed true / false
af_coupon_code Coupon code, if one is used during the subscription 3MonthsSubscription
coupon_code_value How much the coupon deducts from the initial price 10%
af_revenue Revenue associated with the subscription 5.95
af_currency Currency of the payment for the subscription USD
subscription_method Payment method used in the subscription credit card, e-wallet, PayPal
expiration_date Expiration date of the subscription 2018/07/18

Code examples

Android iOS - Objective C iOS - Swift Unity

Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put("new_subscription", true);
eventValue.put(AFInAppEventParameterName.COUPON_CODE, "3MonthsSubscription");
eventValue.put("coupon_code_value", "10%");
eventValue.put(AFInAppEventParameterName.REVENUE, 5.95);
eventValue.put(AFInAppEventParameterName.CURRENCY, "USD");
eventValue.put("subscription_method", "");
eventValue.put("expiration_date", "2018/07/18");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), AFInAppEventType.SUBSCRIBE, eventValue);

Recommended structures for custom events

The following section provides a list of event structures that include custom event names and the suggested event parameters to use. Note that in-app events can include any event parameters that meet your business needs.

Media play (media_play)

Purpose

Record the events in which users play media that you offer. Such media can be, for example, videos, music, tv shows, or radio shows.

Recording this event can help you determine:

  • Media consumption by type and content
  • The languages of the most popular streamed content
  • Minimum, maximum, and average duration of the streamed content

Trigger

After a predefined number, for example, 2 minutes, of streamed content.

Event parameters

Name Description Example value
af_content_type Type of content that is streamed tv show, music
af_content_id ID of the content that is streamed 092, E34
af_content Title of the content, that is the song name or the title and episode of a tv show Title of content
media_duration Running time 5
language Language of the content en-us, fr, es

Code examples

Android iOS - Objective C iOS - Swift Unity
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.CONTENT_TYPE, "tv show");
eventValue.put(AFInAppEventParameterName.CONTENT_ID, "E34");
eventValue.put(AFInAppEventParameterName.CONTENT, "My Show");
eventValue.put("media_duration", 5);
eventValue.put("language", "en-us");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "media_play", eventValue);

Media minutes (media_minutes)

Purpose

Media minutes is how much of a given content item the user consumes. After the revenue metric, this is the most important metric in the streaming industry because it allows you to estimate users' usage of the service. It also allows you to understand what is the overall usage rate of the service, and what content is the most popular. This event can help you:

  • See which users make extensive use of your service 
  • Understand what media types and content types are popular

Trigger

One of the following:

  • When the user finishes streaming a media item
  • When the user quits streaming a media item

Event parameters

Name Description Example  value
minutes_consumed Actual running time of the media by the user 3
af_content_type Type of content that is streamed tv show, music
af_content_id ID of the content that is streamed 092, E34
af_content Title of the content, for example, the song name or the title and episode of a tv show Title of content
media_duration Running time 5
language Language of the content en-us, fr, es

Code examples

Android iOS - Objective C iOS - Swift Unity

Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.CONTENT_TYPE, "tv show");
eventValue.put(AFInAppEventParameterName.CONTENT_ID, "E34");
eventValue.put(AFInAppEventParameterName.CONTENT, "My Show");
eventValue.put("media_duration", 5);
eventValue.put("language", "en-us");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(),"media_minutes", eventValue);

Media downloaded (media_downloaded)

Purpose

Highlight user preference by recording media play and media download and comparing the two. You can see what media users prefer to stream and what media they prefer to download.

Trigger 

When a user starts downloading media

Event parameters

Name Description Example value
af_content_type Type of content tv show, music
af_content_id ID of the content 092, E34
af_content Title of the content i.e. the song name or the title and episode of a tv show Title of content
media_duration Running time 5
language Language of the content en-us, fr, es

Code examples

Android iOS - Objective C iOS - Swift Unity
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.CONTENT_TYPE, "tv show");
eventValue.put(AFInAppEventParameterName.CONTENT_ID, "E34");
eventValue.put(AFInAppEventParameterName.CONTENT, "My Show");
eventValue.put("media_duration", 5);
eventValue.put("language", "en-us");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "media_downloaded", eventValue);

Media saved (media_saved)

Purpose

Helps you highlight user preferences

Trigger

Whenever media is saved on the user's device

Event parameters

Name Description Example value
af_content_type Type of content tv show, music
af_content_id ID of the content 092, E34
af_content Title of the content, for example, the song name or the title and episode of a tv show Title of content
media_duration Running time 5
language Language of the content en-us, fr, es

Code examples

Android iOS - Objective C iOS - Swift Unity
Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.CONTENT_TYPE, "tv show");
eventValue.put(AFInAppEventParameterName.CONTENT_ID, "E34");
eventValue.put(AFInAppEventParameterName.CONTENT, "My Show");
eventValue.put("media_duration", 5);
eventValue.put("language", "en-us");
AppsFlyerLib.getInstance().logEvent(getApplicationContext(), "media_saved", eventValue);
Was this article helpful?