Target ad breaks with SCTE-35 signals

Ad Manager supports broadcast standard SCTE-35 signals for Dynamic Ad Insertion on live stream content. This allows you to use metadata from SCTE-35 markers to perform break-level ad targeting (for example, the first break in live sporting event).

You can request a copy of the SCTE-35 specification at

While the SCTE-35 specification has many use cases, Ad Manager supports two commands, for ad insertion:

  1. splice_insert: a simple ad break start and end like EXT-X-CUE-OUT and EXT-X-CUE-IN
  2. time_signal: can include arbitrary metadata or ad break ownership information, such as local versus national. Metadata is embedded in what is called a segmentation descriptor.

Requirements and restrictions

  • Your stream should conform to all live stream requirements, including OUT and IN cuepoints.
  • Only one command type is used: time_signal or splice_insert.
  • Markers are encoded in the playlist in base64 format as the only attribute of the EXT-OATCLS-SCTE35 tag.
  • If there are multiple markers on the same cue-point, only the first is used.
  • SCTE-35 cue-out markers occur on the same segment as the EXT-X-CUE-OUT. This means that segments are split at the ad break boundary and the SCTE-35 message occurs at the exact moment of cue-out.
  • SCTE-35 markers occur either at cue-out only, or at cue-out and cue-in. Overlapping or nested ranges of SCTE-35 markers are not supported.
  • SCTE-35 messages are not yet supported for video on demand.
  • The live stream playlist type event can be used in some scenarios.
See an example

The SCTE-35 message is binary so the representation in the manifest is encoded base64.




In this example, the encoder has generated the HLS markup and you can see the existing EXT-X-CUE-OUT and EXT-X-CUE-IN markers, plus additional EXT-OATCLS-SCTE35 that includes the SCTE-35 message as an attribute. Ad Manager assumes the following about how the encoder renders the in-band SCTE-35 message:

  • For splice_insert, the splice_event_id field is used for ad targeting. For time_signal, either the unique_program_id (converted to a string) or the splice_event_id fields are used.
  • All feeds indicate return to content through EXT-X-CUE-IN, not a return or end SCTE-35 command.
  • The ad break duration is always extracted from EXT-X-CUE-OUT, not the SCTE-35 message.
  • Commands do not overlap.

Ad Manager does not currently support markup syntax for SCTE-35 other than EXT-OATCLS-SCTE35.

Enable SCTE-35 for Dynamic Ad Insertion on live stream content

If your feed includes EXT-OATCLS-SCTE35 markup, the metadata is automatically extracted and made available through custom key-values. You need to set up the custom key-values, and insert them as macros when you generate ad tags.

When you set up the new custom key-values for the SCTE-35 fields, use a custom key (for example, "scte35") and set the value to the macro(s) that correspond to which type of field is available in your feed:


The first three macros, which are unsigned integers in the SCTE35 message, are converted to strings as decimal numbers. Also, %%TIME_SIGNAL_UPID%% is rendered as lowercase hexadecimal, with no 0x prefix.

Was this helpful?
How can we improve it?