← Back to Metrics

Content Start Count

Also known as: Content Starts, Playback Starts, Title Starts, Stream Starts, Play Starts, Successful Starts

EngagementmetricMedia & Streaming

Counts valid instances in which eligible video or audio content begins playback and the player confirms that media time has started advancing. Each distinct playback start is counted once, including user-initiated and autoplay starts, while playback attempts, ad starts, previews, pause resumes, and duplicate telemetry are excluded.

Business Use Case

The Product organization compares content starts by title, placement, platform, and market after a homepage or recommendation change. If impressions increase but starts do not, the team can revise artwork, ranking, metadata, or playback entry points; if playback attempts increase without corresponding starts, the team can prioritize investigation of startup failures by application version and device.

Business Criticality

High

Journey / Navigation Area

Engagement

Owning Function

Product

Scope

Event

Formula

COUNT(DISTINCT CASE WHEN event_name = 'playback_start' AND playback_status = 'playing' AND media_time_advanced = TRUE AND is_eligible_content = TRUE AND is_ad = FALSE AND is_preview = FALSE THEN playback_start_id END)

Calculation Notes

1️⃣ Assign starts based on original event occurrence timestamp. 2️⃣ Pauses, resumes, or recoveries do not create new starts. 3️⃣ Replays or restarts count only with a new playback_start_id. 4️⃣ Count content start at editorial content, not pre-roll. 5️⃣ Include autoplay of full eligible items; exclude silent previews. 6️⃣ Identity-resolve client and server events before counting. 7️⃣ Restate offline events into original occurrence period if within late-arrival window.

Technical Details

Measure Typecount
Aggregation WindowTime based - Hourly/Daily/Monthly/Yearly

Events

PlatformEvent
Google Analytics 4video_start
Adobemedia.sessionStart

Data Mappings

W3 Data Layer
{
  "event": [
    {
      "page": {
        "pageInfo": {
          "pageURL": "<page_location>",
          "pageName": "<page_title>",
          "referringURL": "<page_referrer>"
        }
      },
      "user": {
        "profile": {
          "profileInfo": {
            "profileID": "<user_id>",
            "anonymousID": "<anonymous_id>"
          }
        }
      },
      "media": {
        "isAd": false,
        "muted": false,
        "autoplay": false,
        "isResume": false,
        "playerId": "<player_id>",
        "playhead": 0,
        "contentId": "<content_id>",
        "isPreview": false,
        "contentUrl": "<content_url>",
        "fullscreen": false,
        "playerName": "<player_name>",
        "playerType": "<player_type>",
        "streamType": "<live_or_on_demand>",
        "contentType": "<video_or_audio>",
        "contentOwner": "<content_owner>",
        "contentTitle": "<content_title>",
        "deliveryType": "<streaming_or_downloaded>",
        "contentFormat": "<content_format>",
        "contentSeason": "<season_number>",
        "contentSeries": "<series_name>",
        "playerVersion": "<player_version>",
        "contentEpisode": "<episode_number>",
        "contentCategory": "<content_category>",
        "contentDuration": 0,
        "contentLanguage": "<language_code>",
        "contentProvider": "<content_provider>",
        "playbackAttempt": false,
        "advancementDelta": 0.001,
        "contentAssetType": "<content_asset_type>",
        "mediaTimeCurrent": 0.001,
        "mediaTimeAdvanced": true,
        "mediaTimePrevious": 0,
        "playbackSessionId": "<playback_session_id>",
        "playbackStartType": "<user_initiated_or_autoplay>"
      },
      "privacy": {
        "analyticsStorage": "<granted_or_denied>"
      },
      "eventInfo": {
        "eventId": "<unique_event_id>",
        "eventName": "video_start",
        "eventType": "media",
        "startCount": 1,
        "validStart": true,
        "eventAction": "play",
        "eventSequence": 1,
        "schemaVersion": "1.0",
        "eventTimestamp": "<iso_8601_timestamp>"
      },
      "environment": {
        "platform": "<web_ios_android_or_connected_tv>",
        "sessionId": "<analytics_session_id>"
      }
    }
  ]
}
GA4 Data Layer
{
  "event": "video_start",
  "is_ad": false,
  "muted": false,
  "user_id": "<user_id>",
  "visible": true,
  "autoplay": false,
  "event_id": "<unique_event_id>",
  "platform": "<web_ios_android_or_connected_tv>",
  "playhead": 0.001,
  "is_resume": false,
  "player_id": "<player_id>",
  "video_url": "<content_url>",
  "content_id": "<content_id>",
  "fullscreen": false,
  "is_preview": false,
  "page_title": "<page_title>",
  "session_id": "<analytics_session_id>",
  "content_url": "<content_url>",
  "player_name": "<player_name>",
  "player_type": "<player_type>",
  "start_count": 1,
  "stream_type": "<live_or_on_demand>",
  "valid_start": true,
  "video_title": "<content_title>",
  "anonymous_id": "<anonymous_id>",
  "content_type": "<video_or_audio>",
  "content_owner": "<content_owner>",
  "content_title": "<content_title>",
  "delivery_type": "<streaming_or_downloaded>",
  "page_location": "<page_location>",
  "page_referrer": "<page_referrer>",
  "video_percent": 0,
  "content_format": "<content_format>",
  "content_season": "<season_number>",
  "content_series": "<series_name>",
  "event_sequence": 1,
  "player_version": "<player_version>",
  "schema_version": "1.0",
  "video_duration": 0,
  "video_provider": "<content_provider>",
  "content_episode": "<episode_number>",
  "event_timestamp": "<iso_8601_timestamp>",
  "content_category": "<content_category>",
  "content_duration": 0,
  "content_language": "<language_code>",
  "content_provider": "<content_provider>",
  "playback_attempt": false,
  "advancement_delta": 0.001,
  "analytics_storage": "<granted_or_denied>",
  "content_asset_type": "<content_asset_type>",
  "media_time_current": 0.001,
  "video_current_time": 0.001,
  "media_time_advanced": true,
  "media_time_previous": 0,
  "playback_session_id": "<playback_session_id>",
  "playback_start_type": "<user_initiated_or_autoplay>"
}
Adobe Client Data Layer
{
  "page": {
    "pageURL": "<page_location>",
    "pageName": "<page_title>",
    "referringURL": "<page_referrer>"
  },
  "user": {
    "userId": "<user_id>",
    "anonymousId": "<anonymous_id>",
    "analyticsStorage": "<granted_or_denied>"
  },
  "event": "media.sessionStart",
  "media": {
    "isAd": false,
    "muted": false,
    "owner": "<content_owner>",
    "length": 0,
    "season": "<season_number>",
    "series": "<series_name>",
    "episode": "<episode_number>",
    "autoplay": false,
    "isResume": false,
    "language": "<language_code>",
    "playerId": "<player_id>",
    "playhead": 0.001,
    "provider": "<content_provider>",
    "assetType": "<content_asset_type>",
    "contentId": "<content_id>",
    "isPreview": false,
    "sessionID": "<playback_session_id>",
    "contentUrl": "<content_url>",
    "fullscreen": false,
    "playerName": "<player_name>",
    "playerType": "<player_type>",
    "startCount": 1,
    "streamType": "<live_or_on_demand>",
    "validStart": true,
    "contentType": "<video_or_audio>",
    "contentTitle": "<content_title>",
    "deliveryType": "<streaming_or_downloaded>",
    "friendlyName": "<content_title>",
    "contentFormat": "<content_format>",
    "playerVersion": "<player_version>",
    "contentCategory": "<content_category>",
    "playbackAttempt": false,
    "advancementDelta": 0.001,
    "mediaTimeCurrent": 0.001,
    "mediaTimeAdvanced": true,
    "mediaTimePrevious": 0,
    "playbackStartType": "<user_initiated_or_autoplay>"
  },
  "eventInfo": {
    "eventId": "<unique_event_id>",
    "eventName": "media.sessionStart",
    "eventType": "media",
    "eventAction": "play",
    "eventSequence": 1,
    "schemaVersion": "1.0",
    "eventTimestamp": "<iso_8601_timestamp>"
  },
  "environment": {
    "platform": "<web_ios_android_or_connected_tv>",
    "analyticsSessionId": "<analytics_session_id>"
  }
}
XDM Mapping
{
  "_id": "<unique_event_id>",
  "web": {
    "webReferrer": {
      "URL": "<page_referrer>"
    },
    "webPageDetails": {
      "URL": "<page_location>",
      "name": "<page_title>",
      "pageViews": {
        "value": 0
      },
      "isErrorPage": false
    }
  },
  "eventType": "media.sessionStart",
  "timestamp": "<iso_8601_timestamp>",
  "environment": {
    "type": "<web_ios_android_or_connected_tv>"
  },
  "identityMap": {
    "ECID": [
      {
        "id": "<anonymous_id>",
        "primary": true,
        "authenticatedState": "ambiguous"
      }
    ]
  },
  "eventMergeId": "<playback_session_id>",
  "mediaCollection": {
    "playhead": 0.001,
    "sessionID": "<playback_session_id>",
    "sessionDetails": {
      "feed": "<delivery_type>",
      "name": "<content_id>",
      "show": "<series_name>",
      "genre": "<content_category>",
      "length": 0,
      "season": "<season_number>",
      "channel": "<content_provider>",
      "episode": "<episode_number>",
      "contentID": "<content_id>",
      "originator": "<content_owner>",
      "playerName": "<player_name>",
      "streamType": "<live_or_on_demand>",
      "contentType": "<video_or_audio>",
      "friendlyName": "<content_title>"
    }
  },
  "implementationDetails": {
    "name": "<player_name>",
    "version": "<player_version>",
    "environment": "<player_type>"
  }
}

SQL Queries

Google Analytics 4 (BigQuery)
-- ==========================================
-- 1. GOOGLE BIGQUERY SQL
-- ==========================================
WITH extracted AS (
  SELECT
    PARSE_DATE('%Y%m%d', event_date) AS event_date,
    TIMESTAMP_MICROS(event_timestamp) AS event_timestamp,
    event_name,
    (SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'event_id') AS event_id,
    COALESCE(
      (SELECT ANY_VALUE(ep.value.int_value) FROM UNNEST(event_params) ep WHERE ep.key = 'event_sequence'),
      event_bundle_sequence_id
    ) AS event_sequence,
    (SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'schema_version') AS schema_version,
    (SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'content_id') AS content_id,
    COALESCE(
      (SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'content_title'),
      (SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'video_title')
    ) AS content_title,
    (SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'content_type') AS content_type,
    (SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'content_format') AS content_format,
    (SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'content_category') AS content_category,
    (SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'content_series') AS content_series,
    (SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'content_season') AS content_season,
    (SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'content_episode') AS content_episode,
    COALESCE(
      (SELECT ANY_VALUE(ep.value.double_value) FROM UNNEST(event_params) ep WHERE ep.key = 'content_duration'),
      (SELECT ANY_VALUE(ep.value.float_value) FROM UNNEST(event_params) ep WHERE ep.key = 'content_duration'),
      CAST((SELECT ANY_VALUE(ep.value.int_value) FROM UNNEST(event_params) ep WHERE ep.key = 'content_duration') AS FLOAT64),
      SAFE_CAST((SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'content_duration') AS FLOAT64)
    ) AS content_duration,
    COALESCE(
      (SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'content_url'),
      (SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'video_url')
    ) AS content_url,
    (SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'content_language') AS content_language,
    COALESCE(
      (SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'content_provider'),
      (SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'video_provider')
    ) AS content_provider,
    (SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'content_owner') AS content_owner,
    (SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'content_asset_type') AS content_asset_type,
    (SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'player_id') AS player_id,
    (SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'player_name') AS player_name,
    (SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'player_version') AS player_version,
    (SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'player_type') AS player_type,
    (SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'playback_start_type') AS playback_start_type,
    COALESCE(
      SAFE_CAST((SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'autoplay') AS BOOL),
      (SELECT ANY_VALUE(ep.value.int_value) FROM UNNEST(event_params) ep WHERE ep.key = 'autoplay') = 1,
      FALSE
    ) AS autoplay,
    COALESCE(
      SAFE_CAST((SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'muted') AS BOOL),
      (SELECT ANY_VALUE(ep.value.int_value) FROM UNNEST(event_params) ep WHERE ep.key = 'muted') = 1,
      FALSE
    ) AS muted,
    COALESCE(
      SAFE_CAST((SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'fullscreen') AS BOOL),
      (SELECT ANY_VALUE(ep.value.int_value) FROM UNNEST(event_params) ep WHERE ep.key = 'fullscreen') = 1,
      FALSE
    ) AS fullscreen,
    (SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'stream_type') AS stream_type,
    (SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'delivery_type') AS delivery_type,
    COALESCE(
      (SELECT ANY_VALUE(ep.value.double_value) FROM UNNEST(event_params) ep WHERE ep.key = 'playhead'),
      (SELECT ANY_VALUE(ep.value.float_value) FROM UNNEST(event_params) ep WHERE ep.key = 'playhead'),
      CAST((SELECT ANY_VALUE(ep.value.int_value) FROM UNNEST(event_params) ep WHERE ep.key = 'playhead') AS FLOAT64),
      SAFE_CAST((SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'playhead') AS FLOAT64)
    ) AS playhead,
    COALESCE(
      (SELECT ANY_VALUE(ep.value.double_value) FROM UNNEST(event_params) ep WHERE ep.key = 'media_time_previous'),
      (SELECT ANY_VALUE(ep.value.float_value) FROM UNNEST(event_params) ep WHERE ep.key = 'media_time_previous'),
      CAST((SELECT ANY_VALUE(ep.value.int_value) FROM UNNEST(event_params) ep WHERE ep.key = 'media_time_previous') AS FLOAT64),
      SAFE_CAST((SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'media_time_previous') AS FLOAT64)
    ) AS media_time_previous,
    COALESCE(
      (SELECT ANY_VALUE(ep.value.double_value) FROM UNNEST(event_params) ep WHERE ep.key = 'media_time_current'),
      (SELECT ANY_VALUE(ep.value.float_value) FROM UNNEST(event_params) ep WHERE ep.key = 'media_time_current'),
      CAST((SELECT ANY_VALUE(ep.value.int_value) FROM UNNEST(event_params) ep WHERE ep.key = 'media_time_current') AS FLOAT64),
      SAFE_CAST((SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'media_time_current') AS FLOAT64)
    ) AS media_time_current,
    COALESCE(
      SAFE_CAST((SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'media_time_advanced') AS BOOL),
      (SELECT ANY_VALUE(ep.value.int_value) FROM UNNEST(event_params) ep WHERE ep.key = 'media_time_advanced') = 1,
      FALSE
    ) AS media_time_advanced,
    COALESCE(
      (SELECT ANY_VALUE(ep.value.double_value) FROM UNNEST(event_params) ep WHERE ep.key = 'advancement_delta'),
      (SELECT ANY_VALUE(ep.value.float_value) FROM UNNEST(event_params) ep WHERE ep.key = 'advancement_delta'),
      CAST((SELECT ANY_VALUE(ep.value.int_value) FROM UNNEST(event_params) ep WHERE ep.key = 'advancement_delta') AS FLOAT64),
      SAFE_CAST((SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'advancement_delta') AS FLOAT64)
    ) AS advancement_delta,
    COALESCE(
      SAFE_CAST((SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'playback_attempt') AS BOOL),
      (SELECT ANY_VALUE(ep.value.int_value) FROM UNNEST(event_params) ep WHERE ep.key = 'playback_attempt') = 1,
      FALSE
    ) AS playback_attempt,
    COALESCE(
      SAFE_CAST((SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'is_ad') AS BOOL),
      (SELECT ANY_VALUE(ep.value.int_value) FROM UNNEST(event_params) ep WHERE ep.key = 'is_ad') = 1,
      FALSE
    ) AS is_ad,
    COALESCE(
      SAFE_CAST((SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'is_preview') AS BOOL),
      (SELECT ANY_VALUE(ep.value.int_value) FROM UNNEST(event_params) ep WHERE ep.key = 'is_preview') = 1,
      FALSE
    ) AS is_preview,
    COALESCE(
      SAFE_CAST((SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'is_resume') AS BOOL),
      (SELECT ANY_VALUE(ep.value.int_value) FROM UNNEST(event_params) ep WHERE ep.key = 'is_resume') = 1,
      FALSE
    ) AS is_resume,
    COALESCE(
      SAFE_CAST((SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'valid_start') AS BOOL),
      (SELECT ANY_VALUE(ep.value.int_value) FROM UNNEST(event_params) ep WHERE ep.key = 'valid_start') = 1,
      FALSE
    ) AS valid_start,
    (SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'playback_session_id') AS playback_session_id,
    COALESCE(
      (SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'session_id'),
      CAST((SELECT ANY_VALUE(ep.value.int_value) FROM UNNEST(event_params) ep WHERE ep.key = 'ga_session_id') AS STRING)
    ) AS analytics_session_id,
    (SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'page_location') AS page_location,
    (SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'page_referrer') AS page_referrer,
    (SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'page_title') AS page_title,
    COALESCE(
      user_id,
      (SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'user_id')
    ) AS user_id,
    COALESCE(
      (SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'anonymous_id'),
      user_pseudo_id
    ) AS anonymous_id,
    (SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'analytics_storage') AS analytics_storage,
    COALESCE(
      (SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'platform'),
      platform
    ) AS platform
  FROM `your-project.analytics_123456789.events_*`
  WHERE event_name = 'video_start'
),
validated AS (
  SELECT *
  FROM extracted
  WHERE valid_start
    AND NOT is_ad
    AND NOT is_preview
    AND NOT playback_attempt
    AND media_time_advanced
    AND COALESCE(media_time_current, 0) > COALESCE(media_time_previous, 0)
),
deduplicated AS (
  SELECT *
  FROM validated
  QUALIFY ROW_NUMBER() OVER (
    PARTITION BY COALESCE(
      event_id,
      TO_HEX(SHA256(CONCAT(
        COALESCE(anonymous_id, ''), '|',
        COALESCE(CAST(event_timestamp AS STRING), ''), '|',
        COALESCE(playback_session_id, ''), '|',
        COALESCE(content_id, ''), '|',
        COALESCE(CAST(event_sequence AS STRING), '')
      )))
    )
    ORDER BY event_timestamp, event_sequence
  ) = 1
)
SELECT
  event_date,
  event_timestamp,
  event_name,
  event_id,
  event_sequence,
  schema_version,
  content_id,
  content_title,
  content_type,
  content_format,
  content_category,
  content_series,
  content_season,
  content_episode,
  content_duration,
  content_url,
  content_language,
  content_provider,
  content_owner,
  content_asset_type,
  player_id,
  player_name,
  player_version,
  player_type,
  playback_start_type,
  autoplay,
  muted,
  fullscreen,
  stream_type,
  delivery_type,
  playhead,
  media_time_previous,
  media_time_current,
  media_time_advanced,
  advancement_delta,
  playback_attempt,
  is_ad,
  is_preview,
  is_resume,
  valid_start,
  playback_session_id,
  analytics_session_id,
  page_location,
  page_referrer,
  page_title,
  user_id,
  anonymous_id,
  analytics_storage,
  platform,
  CAST(1 AS INT64) AS content_start_count
FROM deduplicated;
Adobe Experience Platform (AEP Query Service)
-- ==========================================
-- 2. ADOBE AEP QUERY SERVICE SQL
-- ==========================================
WITH extracted AS (
  SELECT
    CAST(timestamp AS DATE) AS event_date,
    timestamp AS event_timestamp,
    eventType AS event_name,
    _id AS event_id,
    CAST(NULL AS BIGINT) AS event_sequence,
    CAST(NULL AS VARCHAR) AS schema_version,
    mediaCollection.sessionDetails.contentID AS content_id,
    mediaCollection.sessionDetails.friendlyName AS content_title,
    mediaCollection.sessionDetails.contentType AS content_type,
    CAST(NULL AS VARCHAR) AS content_format,
    mediaCollection.sessionDetails.genre AS content_category,
    mediaCollection.sessionDetails.show AS content_series,
    mediaCollection.sessionDetails.season AS content_season,
    mediaCollection.sessionDetails.episode AS content_episode,
    CAST(mediaCollection.sessionDetails.length AS DOUBLE PRECISION) AS content_duration,
    CAST(NULL AS VARCHAR) AS content_url,
    CAST(NULL AS VARCHAR) AS content_language,
    mediaCollection.sessionDetails.channel AS content_provider,
    mediaCollection.sessionDetails.originator AS content_owner,
    CAST(NULL AS VARCHAR) AS content_asset_type,
    CAST(NULL AS VARCHAR) AS player_id,
    mediaCollection.sessionDetails.playerName AS player_name,
    implementationDetails.version AS player_version,
    implementationDetails.environment AS player_type,
    CAST(NULL AS VARCHAR) AS playback_start_type,
    CAST(FALSE AS BOOLEAN) AS autoplay,
    CAST(FALSE AS BOOLEAN) AS muted,
    CAST(FALSE AS BOOLEAN) AS fullscreen,
    mediaCollection.sessionDetails.streamType AS stream_type,
    mediaCollection.sessionDetails.feed AS delivery_type,
    CAST(mediaCollection.playhead AS DOUBLE PRECISION) AS playhead,
    CAST(0 AS DOUBLE PRECISION) AS media_time_previous,
    CAST(mediaCollection.playhead AS DOUBLE PRECISION) AS media_time_current,
    CAST(TRUE AS BOOLEAN) AS media_time_advanced,
    CAST(mediaCollection.playhead AS DOUBLE PRECISION) AS advancement_delta,
    CAST(FALSE AS BOOLEAN) AS playback_attempt,
    CAST(FALSE AS BOOLEAN) AS is_ad,
    CAST(FALSE AS BOOLEAN) AS is_preview,
    CAST(FALSE AS BOOLEAN) AS is_resume,
    CAST(TRUE AS BOOLEAN) AS valid_start,
    COALESCE(mediaCollection.sessionID, eventMergeId) AS playback_session_id,
    CAST(NULL AS VARCHAR) AS analytics_session_id,
    web.webPageDetails.URL AS page_location,
    web.webReferrer.URL AS page_referrer,
    web.webPageDetails.name AS page_title,
    CAST(NULL AS VARCHAR) AS user_id,
    identityMap['ECID'][0].id AS anonymous_id,
    CAST(NULL AS VARCHAR) AS analytics_storage,
    environment.type AS platform
  FROM aep_media_events
  WHERE eventType = 'media.sessionStart'
),
deduplicated AS (
  SELECT
    extracted.*,
    ROW_NUMBER() OVER (
      PARTITION BY COALESCE(
        event_id,
        CONCAT(
          COALESCE(anonymous_id, ''), '|',
          COALESCE(CAST(event_timestamp AS VARCHAR), ''), '|',
          COALESCE(playback_session_id, ''), '|',
          COALESCE(content_id, '')
        )
      )
      ORDER BY event_timestamp
    ) AS duplicate_sequence
  FROM extracted
  WHERE valid_start = TRUE
    AND is_ad = FALSE
    AND is_preview = FALSE
    AND playback_attempt = FALSE
    AND media_time_advanced = TRUE
    AND COALESCE(media_time_current, 0) > COALESCE(media_time_previous, 0)
)
SELECT
  event_date,
  event_timestamp,
  event_name,
  event_id,
  event_sequence,
  schema_version,
  content_id,
  content_title,
  content_type,
  content_format,
  content_category,
  content_series,
  content_season,
  content_episode,
  content_duration,
  content_url,
  content_language,
  content_provider,
  content_owner,
  content_asset_type,
  player_id,
  player_name,
  player_version,
  player_type,
  playback_start_type,
  autoplay,
  muted,
  fullscreen,
  stream_type,
  delivery_type,
  playhead,
  media_time_previous,
  media_time_current,
  media_time_advanced,
  advancement_delta,
  playback_attempt,
  is_ad,
  is_preview,
  is_resume,
  valid_start,
  playback_session_id,
  analytics_session_id,
  page_location,
  page_referrer,
  page_title,
  user_id,
  anonymous_id,
  analytics_storage,
  platform,
  CAST(1 AS BIGINT) AS content_start_count
FROM deduplicated
WHERE duplicate_sequence = 1;

Source Data

Digital Analytics

Dependencies

[ "playback_start_event", "playback_start_id", "playback_session_id", "content_id", "event_timestamp", "playback_status", "media_time_advanced", "is_eligible_content", "is_ad", "is_preview", "content_catalog_dimension", "traffic_classification_dimension" ]

Report Attributes

Event Date Event Hour Content ID Content Title Series Season Episode Content Type Genre Live or On-Demand Platform Device Type Application Version Operating System Country Market Subscription Tier Acquisition Channel Playback Initiation Type Homepage Placement Recommendation Module

Recommended Reporting Views

Views
Executive Streaming Engagement DashboardContent Performance DashboardPlayback Funnel DashboardRecommendation Effectiveness DashboardPlatform and Device Health DashboardLive Event Performance Dashboard

Segment Eligibility

true

Governance

Data Sensitivityinternal

Derived KPIs

Governance

Created bydevyendarm
Created on9/3/2026
Last modified bydevyendarm
StatusPUBLISHED

GitHub

View File on GitHubcatalog/metrics/content-start-count.yml

Community Discussion