Ads Session Feed: Schema and Column Dictionary

Complete field, type, mode, and description reference for the Conviva Connect Ads Session Feed schema, with a sample delivered file.

Updated 2026-10-02 ads-ssd, schema, column dictionary, fields

This page is the canonical column dictionary for the Conviva Connect Ads Session Feed schema: every delivered field, its type, its mode, and what it means. For the metric definitions and SQL built on these fields, see Ad Session Summary. If you are migrating an existing legacy Ads SSD pipeline, see Legacy vs Connect.

Primary key and session identity

Each row is one ad session. The primary key for processing ad sessions is AdSessionID plus StartTimeMs. Because the Ads feed is hourly only, a session that spans an hour boundary appears once per active hour with the same key, so this pair is also the deduplication key. Keep the row with the greatest dt. See Build your first pipeline, step 4.

ContentSessionID is the ConvivaSessionID of the video session the ad played inside. Use it to join to the Video Session Feed. Both identifiers are five colon-separated integers: the first four are the Conviva Client ID, which is shared between the video session and every ad session inside it, and the fifth is the session number.

Field naming

Field names are delivered in PascalCase, for example AdSessionID and StartTimeMs. The names in the dictionary below match the delivered file exactly, including three quirks that read as typos:

  • AdCeativeName is spelled without the second r. That is the real delivered column name. Do not correct it in your schema definition or the column will not bind.

  • DeviceManufacture is the delivered name, not DeviceManufacturer.

  • Identifier casing is split and cannot be normalized. AdID, AdCreativeID, AdBreakID, AdSessionID, ContentSessionID, DeviceID, and AdvertiserID end in ID. SegmentId, FirstAdId, FirstCreativeId, DecisionResourceId, and ViewerId end in Id. pCoreCDN and isLive are the only two fields that start with a lowercase letter.

Nulls and sentinel values

Conviva Connect represents absence consistently, so write your filters to match:

  • An absent scalar is a real NULL. Connect does not emit sentinel strings such as NA, N/A, or UNKNOWN in place of a missing value, which legacy Ads SSD did. Test with WHERE col IS NOT NULL.

  • An absent list is an empty array, never NULL. All seven list columns behave this way. Test with WHERE cardinality(col) > 0. An IS NOT NULL test passes every row.

  • A few numeric fields still use a documented negative code rather than NULL, because the code carries meaning. StartupTime uses -1 for an unsuccessful play and -3 when the client never reported enough to determine the start, and ContentLength and PlayingTime use -1 when unavailable. Those are called out per field below.

Columns are selectable per account, so your delivered file may be a subset of the dictionary below. A column that is present but null in every row usually reflects what your ad stack passes through rather than a gap in the feed. Confirm your configured column list with your Conviva Representative.

Note: Field values are capped at 128 bytes, except for title and name fields, which are exempt and can be longer.

Sample delivered file

Below is an anonymized sample of a delivered hourly Connect Ads file: the header plus three rows, exactly as the columns arrive. Scroll the table horizontally to see all 88 columns. The values are synthetic (test-network IP addresses and placeholder names), but the column order, casing, and formatting match a real delivered file. Download the full sample hourly Ads Connect file to open it in a spreadsheet or feed it through your pipeline.

The first two rows are the same ad session, 1000000001:1000000002:1000000003:1000000004:4487054, delivered in two consecutive hourly files. The 07:00 row shows it mid-flight (EndedStatus 0, PlayingTime 12000); the 08:00 row shows it finished (EndedStatus 1, PlayingTime 30000). Summing PlayingTime across both rows gives 42 seconds for a 30-second ad. That is the double count deduplication removes. The third row is a separate session that failed to start: StartupTime is -1, StartupError is true, and the error appears in both ErrorList and VideoStartFailureErrorsTech.

AdTitleDeviceIDContentLengthCityContinentCountryStatePostalCodeASNISPIPV4IPV6IPAddressIPTypeAvgBitRateReBufferingEventsReBufferingTimeFatalErrorCodesStartTimeStartTimeMsPlayingTimeEndTimeEndTimeMsVideoPlaybackFailureErrorsBusinessVideoPlaybackFailureErrorsTechVideoStartFailureErrorsBusinessVideoStartFailureErrorsTechSegmentIdAdSessionIDStreamURLAdManagerNameAdManagerVersionAdPodTypeAdStitcherAdvertiserAdvertiserCategoryAdvertiserIDAdBreakIDAdCampaignNameAdCategoryAdClassificationAdCreativeIDAdCeativeNameAdDayPartAdDescriptionFirstAdIdFirstAdSystemFirstCreativeIdAdIDAdIsSlateVASTMediaFileAPIFrameworkAdPositionAdSequenceAdSystemAdTechnologyAdTypeAdUnitNameContentAssetNameContentSessionIDBrowserBrowserVersionDeviceOSisLiveSessionTagsViewerIdStartupTimeStartupErrorErrorListEndedStatusSessionEndedStatusDeviceHardwareTypeDeviceManufactureDeviceMarketingNameDeviceNameDeviceOSVersionDeviceOSFamilyPlayerFrameworkNamePlayerFrameworkVersionDeviceModelDeviceVendorConnectionTypeDMADecisionResourceDecisionBitrateDecisionResourceIdpCoreCDNDecisionResourceResolveddt
Example Ad Creative 11000000001:1000000002:1000000003:100000000430000SpringfieldNorth AmericaUnited States64500Example ISP192.0.2.10192.0.2.10IPv4Only2400001760425740176042574000012000176042880017604288000001000000001:1000000002:1000000003:1000000004:4487054https://example.com/ads/creative-1.m3u8Example Ad Manager4.1.0pre-roll-podExample StitcherExample AdvertiserRetailadv-00001break-0001Example Spring CampaignRetailCommercialcreative-0001Example Creative NameExample ad descriptionline-item-00010pre-roll1Example Ad ServerServer Sidelinearexample/prerollExample Asset 11000000001:1000000002:1000000003:1000000004:4487050Non-Browser AppsExample OSfalsec3.cm.contentType=Example&c3.cm.channel=example&c3.player.name=Example%20Player&c3.app.version=1.0.0&c3.cws.clv=4.2.1&dv.mnf=ExampleMfr&dv.mod=ExampleModel&dv.os=Example%20OS&dv.osv=Example%20OS%2015&c3.device.conn=WiFi&c3.video.isLive=Fabcdef0000000000000000000000000000000000000000000000000000000001820false0NotEndedSet Top BoxExampleMfrExample DeviceExample DeviceExample OS 15Example OSExample Framework1.0ExampleModelWiFi2025-10-14T07:00:00.000Z
Example Ad Creative 11000000001:1000000002:1000000003:100000000430000SpringfieldNorth AmericaUnited States64500Example ISP192.0.2.10192.0.2.10IPv4Only2400001760425740176042574000030000176042881217604288124311000000001:1000000002:1000000003:1000000004:4487054https://example.com/ads/creative-1.m3u8Example Ad Manager4.1.0pre-roll-podExample StitcherExample AdvertiserRetailadv-00001break-0001Example Spring CampaignRetailCommercialcreative-0001Example Creative NameExample ad descriptionline-item-00010pre-roll1Example Ad ServerServer Sidelinearexample/prerollExample Asset 11000000001:1000000002:1000000003:1000000004:4487050Non-Browser AppsExample OSfalsec3.cm.contentType=Example&c3.cm.channel=example&c3.player.name=Example%20Player&c3.app.version=1.0.0&c3.cws.clv=4.2.1&dv.mnf=ExampleMfr&dv.mod=ExampleModel&dv.os=Example%20OS&dv.osv=Example%20OS%2015&c3.device.conn=WiFi&c3.video.isLive=Fabcdef0000000000000000000000000000000000000000000000000000000001820false1GracefulEndSet Top BoxExampleMfrExample DeviceExample DeviceExample OS 15Example OSExample Framework1.0ExampleModelWiFi2025-10-14T08:00:00.000Z
Example Ad Creative 21000000006:1000000007:1000000008:100000000915000SpringfieldNorth AmericaUnited States64500Example ISP198.51.100.23198.51.100.23IPv4Only180020ExampleFatalError17604285001760428500000017604286201760428620118ExampleFatalError1000000006:1000000007:1000000008:1000000009:4487061https://example.com/ads/creative-1.m3u8Example Ad Manager4.1.0mid-roll-podExample StitcherExample AdvertiserRetailadv-00001break-0001Example Spring CampaignRetailCommercialcreative-0002Example Creative Name 2Example ad descriptionline-item-00020mid-roll2Example Ad ServerServer Sidelinearexample/prerollExample Asset 21000000006:1000000007:1000000008:1000000009:4487055Non-Browser AppsExample OStruec3.cm.contentType=Example&c3.cm.channel=example&c3.player.name=Example%20Player&c3.app.version=1.0.0&c3.cws.clv=4.2.1&dv.mnf=ExampleMfr&dv.mod=ExampleModel&dv.os=Example%20OS&dv.osv=Example%20OS%2015&c3.device.conn=WiFi&c3.video.isLive=Fabcdef0000000000000000000000000000000000000000000000000000000002-1trueExampleFatalError2ByExpirationSet Top BoxExampleMfrExample DeviceExample DeviceExample OS 15Example OSExample Framework1.0ExampleModelWiFi2025-10-14T08:00:00.000Z

Field dictionary

Note: All INTEGER type fields can store 64-bit integer values. Fields with mode REPEATED arrive as a native array in Parquet and Avro, and as a single &-separated string in CSV. The dictionary is grouped by category; every group uses the same Field name, Type, Mode, and Description columns.

Session identity and lifecycle

Each row is one ad session. The primary key is AdSessionID plus StartTimeMs; that same pair is the deduplication key for the hourly feed. ContentSessionID is the join key back to the Video Session Feed.

Field name Type Mode Description
AdSessionIDVARCHAR(128)NULLABLEUnique Conviva session identifier for the ad session that attempted to play. The first 4 components represent the Client ID, the fifth component represents the Session ID. The Client ID is shared between Video sessions and Ad sessions (for ads that play in the video session).
ContentSessionIDVARCHAR(128)NULLABLEUnique Conviva session identifier for the video session that attempted to play. The first 4 components represent the Client ID, the fifth component represents the Session ID. The Client ID is shared between Video sessions and Ad sessions (for ads that play in the video session).
SegmentIdVARCHAR(32)NULLABLESegment ID of the Ad
ViewerIdVARCHAR(128)NULLABLEUnique identifier of the viewer (sometimes called subscriber) watching content in that session. This is typically a number, or a hashed/masked identifier without any personally identifiable information. The same ViewerID can have multiple sessions. This can be null if not passed as part of sensor integrations.
DeviceIDVARCHAR(128)NULLABLEConviva unique device (app) identifier, 4 integers separated by colons (:)
StartTimeINTEGERNULLABLEThe time when Conviva received the first heartbeat for the ad session. The format is Unix epoch time in seconds.
StartTimeMsINTEGERNULLABLEThe time when Conviva received the first heartbeat for the ad session. The format is Unix epoch time in milliseconds.
EndTimeINTEGERNULLABLEThe time we received the last heartbeat update from this session. The format is Unix epoch time in seconds.
EndTimeMsINTEGERNULLABLEThe time we received the last heartbeat update from this session. The format is Unix epoch time in milliseconds.
EndedStatusINTEGERNULLABLEAn integer showing the status of the session at the end of the hour the file covers: 0 = Not Ended; at the SSD issue time, the session is still active. 1 = Gracefully ended; the session ended with a session ended event. 2 = Expired due to lack of heartbeat update; we received no heartbeat update for 2 minutes. Or expired due to long buffering; the session's lifetime buffering is longer than 30 minutes, Zombie session.
SessionEndedStatusVARCHAR(48)NULLABLEThe string values for Ended Status.
dtTIMESTAMPNULLABLEStarting hour of the hourly interval the row belongs to, in the format <YYYY-MM-DD>T<hh:mm:ss.sss>Z, where T separates date and time and Z indicates UTC. For example, 2025-10-14T07:00:00.000Z. This is the partition column and the tie-breaker in the deduplication rule.

Ad metadata

Ad-level descriptive fields sourced from the VAST response and your ad manager. Which of these arrive populated depends on what your ad serving stack passes through, so treat an all-null column as a configuration question rather than a feed defect.

Field name Type Mode Description
AdTitleVARCHAR(256)NULLABLEName of the ad
AdIDVARCHAR(64)NULLABLEThe Ad Id or Line Item against which the ad impression is counted
AdCreativeIDVARCHAR(128)NULLABLEThe ID of the Ad Creative
AdCeativeNameVARCHAR(128)NULLABLEName of the ad creative
AdCampaignNameVARCHAR(128)NULLABLEName of the campaign related to the ad
AdCategoryVARCHAR(128)NULLABLECategory of ad
AdClassificationVARCHAR(128)NULLABLEClassification of the ad
AdDescriptionVARCHAR(128)NULLABLEDescription of Ad
AdDayPartVARCHAR(128)NULLABLEThe broadcast daypart associated with the ad. Contact your Conviva Representative for how this value is populated for your account.
AdBreakIDVARCHAR(128)NULLABLEThe ID of the ad break in which the ad played
AdPodTypeVARCHAR(128)NULLABLEPod type of the ad
AdPositionVARCHAR(32)NULLABLEThe position in which the ad plays, for example, pre-roll or mid-roll
AdSequenceVARCHAR(128)NULLABLESequence of the ad
AdTypeVARCHAR(128)NULLABLEType of the ad
AdUnitNameVARCHAR(128)NULLABLEUnit name of Ad
AdIsSlateVARCHAR(16)NULLABLESet to 1 if a default media file (slate) plays rather than an ad, and 0 otherwise. Delivered as a string, not a numeric type. Primarily used for server-side stitched ads on live streams.
AdSystemVARCHAR(128)NULLABLEThe name of the ad server, such as DFP or Google Ad Manager
AdTechnologyVARCHAR(128)NULLABLEUsed to identify whether the ad is client side or server side stitched
VASTMediaFileAPIFrameworkVARCHAR(128)NULLABLESet to "VPAID" if a VPAID ad creative plays (generally client-side ad)
FirstAdIdVARCHAR(128)NULLABLERelevant for wrapper (3rd party redirect) ads. capture the "first" Ad ID in the wrapper chain
FirstAdSystemVARCHAR(128)NULLABLERelevant for wrapper (3rd party redirect) ads. capture the "first" Ad System in the wrapper chain
FirstCreativeIdVARCHAR(128)NULLABLERelevant for wrapper (3rd party redirect) ads. capture the "first" Ad Creative ID in the wrapper chain

Advertiser and ad serving

Who bought the ad and which stack delivered it.

Field name Type Mode Description
AdvertiserVARCHAR(128)NULLABLEName of the advertiser
AdvertiserIDVARCHAR(128)NULLABLEID of the advertiser
AdvertiserCategoryVARCHAR(128)NULLABLECategory of the advertiser
AdManagerNameVARCHAR(128)NULLABLEName of Ad manager
AdManagerVersionVARCHAR(128)NULLABLEVersion of Ad manager
AdStitcherVARCHAR(128)NULLABLEAd insertion solution, such as Yospace

Content context

The content session the ad played inside.

Field name Type Mode Description
ContentAssetNameVARCHAR(256)NULLABLEName of the content
ContentLengthINTEGERNULLABLEThe planned duration of the ad in milliseconds (ms). If not available, then set to -1
isLiveBOOLEAN (true/false)NULLABLEIs video live or vod?
StreamURLVARCHAR(1024)NULLABLEThe last streaming URL used during the session.

Experience metrics

The quality-of-experience measures for the ad session. All durations are milliseconds.

Field name Type Mode Description
PlayingTimeINTEGERNULLABLEThe actual play duration of the ad in milliseconds (ms). The duration excludes any buffering time. If not available, set to -1
StartupTimeINTEGERNULLABLEAd Startup Time is the number of milliseconds between the start of Conviva monitoring and the first played ad frame. -1 indicates an unsuccessful play (no startup time). -3 indicates the session connected but the client didn't send us the necessary information to determine when the ad began playing.
AvgBitRateINTEGERNULLABLEAverage bitrate, in kbps, at which the ad was delivered during the session. The ability to determine bitrate depends on the player integration. Not all players can deliver bitrate information. A value of 0 means the client did not report a bitrate, so filter on AvgBitRate > 0 before you average or sum.
ReBufferingTimeINTEGERNULLABLEThis is the duration of rebuffering time during the ad session. It does not include the initial buffering at startup.
ReBufferingEventsINTEGERNULLABLEThe number of rebuffering events that occurred during the ad session. Buffering at startup is not counted. Pair with ReBufferingTime to separate many short interruptions from a single long one.

Errors and failures

Failure flags and the error lists behind them. The list columns arrive as a real array in Parquet and Avro, and as a single &-separated string in CSV.

Field name Type Mode Description
StartupErrorBOOLEAN (true/false)NULLABLEIf video start failed or successful.
ErrorListARRAY<STRING>REPEATEDA list of fatal errors that occurred during this session, separated by "&". A session with Startup Time = -1 and Playing Time = 0 and no error list, corresponds to an Exit Before Ad Start (EBAS)
FatalErrorCodesARRAY<STRING>REPEATEDA list of fatal errors that occurred during this ad session, separated by "&". A session with Startup Time = -1 and Playing Time = 0 and no error list, corresponds to an Exits Before Video Start (EBAS). For CSV output file, the value for this field is in String format. For Parquet file, the value is in array<string> format.
VideoStartFailureErrorsBusinessARRAY<STRING>REPEATEDVideo Start Failures (VSF) Business Error list contains errors (including custom errors) that caused the video start to fail due to business logic issue. For CSV output file, this field value is in String format. For Parquet file, the value is in array<string> format.
VideoStartFailureErrorsTechARRAY<STRING>REPEATEDVideo Start Failures (VSF) Technical Error list contains errors (including custom errors) that caused the video start to fail due to technical logic issue. For CSV output file, this field value is in String format. For Parquet file, the value is in array<string> format.
VideoPlaybackFailureErrorsBusinessARRAY<STRING>REPEATEDVideo Playback Failures (VPF) Business Error list contains errors (including custom errors) that caused the video playback to fail due to business logic issue. For CSV output file, this field value is in String format. For Parquet file, the value is in array<string> format.
VideoPlaybackFailureErrorsTechARRAY<STRING>REPEATEDVideo Playback Failures (VPF) Technical Error list contains errors (including custom errors) that caused the video playback to fail due to technical logic issue. For CSV output file, this field value is in String format. For Parquet file, the value is in array<string> format.

Device and player

Device and playback-stack attributes, resolved by Conviva from the sensor's device signals.

Field name Type Mode Description
DeviceOSVARCHAR(128)NULLABLEOS of the viewer's device
DeviceOSVersionSTRINGNULLABLEThe version of the operating system used by the device.
DeviceOSFamilySTRINGNULLABLEThe name of the operating system group, such as PlayStation for PlayStation 3 and PlayStation 4, or Windows for Windows 10 and Windows XP.
DeviceHardwareTypeSTRINGNULLABLEThe type of your device hardware, such as set top box, mobile phone, tablet, and TV.
DeviceManufactureSTRINGNULLABLEThe manufacturer of the device from which the content was watched, such as Google, Roku, Huawei, and Apple.
DeviceMarketingNameSTRINGNULLABLEMarketing name of the device from which the content was watched, such as Google Chromecast, Huawei P20, and Apple iPhone 12 Pro.
DeviceModelSTRINGNULLABLEModel of the device, such as iPad Pro 11-inch (2nd generation), EML-L29.
DeviceNameSTRINGNULLABLEName of the device from which the content was watched, such as Android phone, Apple iPhone, and Chromecast.
DeviceVendorSTRINGNULLABLEVendor of the device.
BrowserVARCHAR(128)NULLABLEName of the browser used by the viewer's device. If no browser is involved in the streaming, such as with a mobile app or connected TV, the value will be "Non-Browser Apps."
BrowserVersionVARCHAR(128)NULLABLEVersion of the browser used by the viewer's device
PlayerFrameworkNameSTRINGNULLABLEThe name of the player framework used for video playback, for example, AVFoundation, NexPlayer, and HTML5.
PlayerFrameworkVersionSTRINGNULLABLEThe version of the framework used for video playback.

Network and geography

Network path and viewer location, derived from the IP address Conviva observes.

Field name Type Mode Description
ASNVARCHAR(32)NULLABLEAutonomous System Number for the ISP
ISPVARCHAR(32)NULLABLEInternet Service Provider name
ConnectionTypeSTRINGNULLABLEThe type of network connection used to consume content, for example, mobile, wired, and wireless.
IPAddressVARCHAR(48)NULLABLEThe viewer's video playing device public IP address. The IP address - as seen by the Conviva gateway - typically corresponds to the modem gateway for fixed connections or the packet gateway for mobile connections. For European customers, due to legal/privacy reasons, the IP address is not shown.
IPTypeVARCHAR(32)NULLABLEIf IP address is IPv4 or IPv6
IPV4VARCHAR(32)NULLABLEThe public IP address of the viewer's video playing device in v4 version. For example, 84.106.90.230.
IPV6VARCHAR(48)NULLABLEThe public IP address of the viewer's video playing device in v6 version. For example, 2600:8801:8d07:e100:c0a9:9de9:8741:267.
CityVARCHAR(128)NULLABLECity Name (geography, like San Francisco)
StateVARCHAR(128)NULLABLEState Name (geography, like California)
CountryVARCHAR(128)NULLABLECountry Name
ContinentVARCHAR(128)NULLABLEContinent Name
PostalCodeSTRINGNULLABLEA series of numbers used for postal delivery area identification. This field is null when the postal code is unavailable.
DMASTRINGNULLABLEThe Designated Market Area or media region in which the session was viewed. This field is null when the DMA is unavailable.

Conviva Precision decision fields

Populated only for accounts running Conviva Precision. On every other account these five columns are present in the schema and null in every row.

Field name Type Mode Description
DecisionResourceSTRINGNULLABLEThe internal resource returned to Precision.
DecisionResourceIdSTRINGNULLABLEThe internal Conviva id for the component returning the result to Conviva Precision.
DecisionResourceResolvedSTRINGNULLABLEThe resource being returned by Conviva Precision, for example Akamai Live Content Node.
DecisionBitrateINTEGERNULLABLEThe bitrate associated with the resource returned to Precision. A value of 0 indicates the bitrate is not known.
pCoreCDNSTRINGNULLABLEThe CDN being returned by Conviva Precision, for example AKAMAI.

Custom session tags

Your own player metadata, carried through as key-value pairs.

Field name Type Mode Description
SessionTagsARRAY<STRUCT<key STRING, value STRING>>REPEATEDSession tags are player metadata that are defined when you integrate your player with Conviva. Each tag describes a piece of information that your player sends to Conviva. You can choose which of the available tags you want to include in SSD and the Ads Viewer Module. You can have a unique set of tags based on your players and business needs and your Conviva Solutions Consultant can assist further with your list. For CSV output file, this field value is in String format. For Parquet file, the value is in array<struct<key:string,value:string>> format.