Audio Programmatic Monetization: OpenRTB Audio Object, VAST 4.3, and IAB Podcast Measurement v2.3

When an OpenRTB 2.6 bid request carrying an imp.audio object reaches a tier-1 Demand-Side Platform (DSP), the bidder's evaluation engine immediately inspects

Minimalist 3D audio-engineering artwork of matte-black studio headphones beside a frosted-glass smartphone with a holographic blue-and-gold soundwave synchronized to a glowing square companion ad card.

When an OpenRTB 2.6 bid request carrying an imp.audio object reaches a tier-1 Demand-Side Platform (DSP), the bidder's evaluation engine immediately inspects the protocols array, the feed classification, and the mimes whitelist before allocating compute cycles to auction pricing. If a supply-side integration maps audio inventory inside a legacy imp.video container to force backward compatibility, or omits VAST 4.1 through 4.3 protocol identifiers (7, 8, 11, 12, 13, 14), algorithmic buyers either throttle queries per second (QPS) or apply steep bid shading due to unverified playback mechanics. Unlike visual display or standard outstream video, programmatic audio spans fundamentally different delivery architectures: persistent HLS and DASH music streams, live terrestrial AM/FM simulcasts triggered by SCTE-35 or ID3 tags, and asynchronous progressive-download podcast enclosures.

Executing high-yield audio monetization requires strict protocol alignment across the entire supply chain. At the signaling layer, OpenRTB 2.6 provides native primitives for audio podding, variable duration floors (durfloors), and loudness normalization (nvol). At the creative transport and rendering layer, VAST 4.3 unifies client-side and server-side audio ad insertion, providing source mezzanine files for dynamic transcoding alongside deterministic tracking beacons. At the verification layer, server-side stitchers must filter out automated mobile pre-loads and byte-range probes before firing billable impression pixels.

At Sky Boosts, our unified SSP and monetization platform pairs Google Ad Manager (GAM 360) and Prebid Server audio pipelines with strict HUMAN and Pixalate invalid traffic (IVT) filtration. By enforcing 100% Google-friendly, brand-safe demand (excluding alcohol, gambling, adult, and tobacco categories) and settling revenue on reliable Net-30 and Net-60 payment cycles, we enable audio publishers to capture premium programmatic demand without compromising playback latency or compliance.

How VAST 4.1+ Absorbed DAAST for Unified Audio and Video Trafficking

Prior to the release of VAST 4.1 by the IAB Tech Lab, programmatic audio relied on the Digital Audio Ad Serving Template (DAAST 1.0). Introduced in 2014, DAAST was designed as an XML schema parallel to VAST 3.0, tailored specifically for audio players lacking a visual rendering surface. While DAAST established baseline conventions for audio <MediaFiles>, quartile tracking, and optional companion banners, maintaining separate XML parsers for VAST and DAAST created severe operational friction. Sell-side ad servers, client-side SDKs (such as the Google IMA and PAL SDKs), and server-side ad insertion (SSAI) stitchers had to maintain dual parsing engines, while DSPs hesitated to build dedicated DAAST creative wrappers when VAST already dominated video workflows.

Recognizing that the transport, verification, and podding mechanics of linear audio and linear video are structurally identical, the IAB Tech Lab deprecated DAAST and absorbed its entire feature set directly into VAST 4.1, refining those capabilities further in VAST 4.2 and VAST 4.3. In a modern VAST 4.3 implementation, unified trafficking allows streaming publishers and digital audio networks to manage both video and audio line items through a single XML schema and ad server pipeline.

The core mechanism enabling this convergence is the adType attribute on the top-level <Ad> element. In VAST 4.3, every <Ad> node can explicitly declare adType="video", adType="audio", or adType="hybrid". When a VAST parser on an audio player or SSAI proxy ingests a response marked with adType="audio", it alters its validation rules:

  1. Relaxed Spatial Constraints: In standard video VAST responses, <MediaFile> elements require non-zero width and height attributes. Under adType="audio", spatial dimensions are omitted from <MediaFile> nodes, and the parser evaluates selection criteria strictly on type (such as audio/mp4, audio/mpeg, audio/aac, or audio/ogg), bitrate (or minBitrate and maxBitrate for adaptive streams), and codec (such as mp4a.40.2 for AAC-LC).
  2. Mandatory Mezzanine Ingestion for SSAI: Just as CTV stitchers require a high-bitrate source file to transcode video ads into matching HLS renditions, audio SSAI platforms rely on the <Mezzanine> element inside <MediaFiles>. For audio, the mezzanine asset is typically an uncompressed WAV, FLAC, or high-bitrate (256-320 kbps) AAC/MP3 file. The SSAI stitcher ingests this master file, normalizes its loudness profile to match the host stream, and transcodes it into the exact sample rate (such as 44.1 kHz or 48 kHz) and container format required by the listener's active session.
  3. Unified Quartile and Interaction Tracking: VAST 4.3 applies the exact same <TrackingEvents> taxonomy to audio as it does to video (start, firstQuartile, midpoint, thirdQuartile, complete, mute, unmute, pause, resume, rewind, skip, playerExpand, playerCollapse). Additionally, VAST 4.1+ introduced <AudioInteractions> to handle non-visual click-through equivalents, such as voice-activated responses or lock-screen notification taps.
<VAST version="4.3" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.iab.com/VAST">
  <Ad id="sb-audio-994821" sequence="1" adType="audio">
    <InLine>
      <AdSystem version="4.3">Sky Boosts_SSP_Engine</AdSystem>
      <AdTitle>Enterprise_Cloud_30s_Audio_Spot</AdTitle>
      <Impression id="imp-primary"><![CDATA[https://trk.skyboosts.com/audio/imp?auid=994821&cb=[CACHEBUSTING]]]></Impression>
      <Error><![CDATA[https://trk.skyboosts.com/audio/err?code=[ERRORCODE]&auid=994821]]></Error>
      <Creatives>
        <Creative id="cr-audio-30" sequence="1" adId="ISCI-8849201">
          <Linear>
            <Duration>00:00:30</Duration>
            <TrackingEvents>
              <Tracking event="start"><![CDATA[https://trk.skyboosts.com/audio/q?ev=start&auid=994821]]></Tracking>
              <Tracking event="firstQuartile"><![CDATA[https://trk.skyboosts.com/audio/q?ev=25&auid=994821]]></Tracking>
              <Tracking event="midpoint"><![CDATA[https://trk.skyboosts.com/audio/q?ev=50&auid=994821]]></Tracking>
              <Tracking event="thirdQuartile"><![CDATA[https://trk.skyboosts.com/audio/q?ev=75&auid=994821]]></Tracking>
              <Tracking event="complete"><![CDATA[https://trk.skyboosts.com/audio/q?ev=100&auid=994821]]></Tracking>
              <Tracking event="mute"><![CDATA[https://trk.skyboosts.com/audio/q?ev=mute&auid=994821]]></Tracking>
            </TrackingEvents>
            <MediaFiles>
              <MediaFile id="mf-aac-128" delivery="progressive" type="audio/mp4" bitrate="128" codec="mp4a.40.2" scalable="false" maintainAspectRatio="false">
                <![CDATA[https://cdn.skyboosts.com/creatives/audio/spot_8849_128k.m4a]]>
              </MediaFile>
              <MediaFile id="mf-mp3-192" delivery="progressive" type="audio/mpeg" bitrate="192" scalable="false" maintainAspectRatio="false">
                <![CDATA[https://cdn.skyboosts.com/creatives/audio/spot_8849_192k.mp3]]>
              </MediaFile>
              <Mezzanine id="mez-wav-master" delivery="progressive" type="audio/wav" fileSize="5292000">
                <![CDATA[https://cdn.skyboosts.com/creatives/audio/master_spot_8849.wav]]>
              </Mezzanine>
            </MediaFiles>
          </Linear>
        </Creative>
      </Creatives>
    </InLine>
  </Ad>
</VAST>

When an SSAI stitcher or client player fails to play an audio asset due to codec mismatch or network timeout, VAST 4.3 provides granular error reporting via the [ERRORCODE] macro. Audio AdOps teams specifically monitor Error 403 ( Linear assets were found in the VAST response, but none matched the player's capabilities, often triggered when a DSP returns an audio/ogg asset to an iOS AVPlayer expecting audio/mp4 or audio/mpeg) and Error 405 (Problem displaying MediaFile, frequently caused by sample rate discontinuities during stream splicing).

Constructing the OpenRTB 2.6 imp.audio Object and DurFloor Pricing

While VAST 4.3 governs the creative payload and tracking lifecycle, the OpenRTB 2.6 imp.audio object governs the real-time auction request. Historically, publishers running Prebid Server or custom exchange adapters had to improvise podding logic using vendor-specific ext fields. OpenRTB 2.6 elevated structured podding, dynamic ad break durations, and duration-based floor pricing (durfloors) into first-class specification fields within imp.audio.

Isometric dark-mode illustration of wireless headphones over a smartphone displaying Pre-Roll, Content, and Mid-Roll holographic soundwaves synchronized with a square companion banner.

In digital audio, ad breaks are rarely isolated single-spot opportunities; they are structured as commercial pods ranging from 30 seconds in music streaming to 120 seconds in mid-roll podcast breaks. OpenRTB 2.6 supports both fixed-slot pods (where each slot in a break is represented as a distinct imp object linked by podid and slotinpod) and dynamic pods (where a single imp.audio object defines the total pod duration poddur and the maximum number of ads permitted maxseq, leaving the SSP and DSP to optimize the combination of spot lengths).

A critical yield vulnerability in dynamic audio pods is flat-CPM floor pricing. If a publisher sets a flat $14.00 CPM floor on an imp.audio object with minduration: 15 and maxduration: 60, a DSP can win the impression with a 60-second audio spot at $14.01 CPM, consuming the entire commercial break that could have otherwise accommodated four 15-second spots or two 30-second spots at $14.00 CPM each (which would yield $28.00 to $56.00 in effective pod RPM).

To prevent long-duration creatives from cannibalizing pod yield, our OpenRTB audio infrastructure enforces durfloors arrays inside every imp.audio bid request. Introduced in OpenRTB 2.6, the DurFloors object allows the exchange to declare tiered CPM reserve prices bound to specific creative duration brackets (mindur to maxdur). Additionally, the maxextended attribute signals whether the player allows a buyer to extend an ad beyond maxduration for an interactive audio unit, and minbitrate / maxbitrate ensure that cellular mobile listeners are not served bloated audio files that stall buffer playback.

{
  "id": "req-audio-8839201-a",
  "tmax": 250,
  "cur": ["USD"],
  "imp": [
    {
      "id": "imp-pod-midroll-1",
      "bidfloor": 12.00,
      "bidfloorcur": "USD",
      "audio": {
        "mimes": ["audio/mp4", "audio/mpeg", "audio/aac"],
        "minduration": 15,
        "maxduration": 60,
        "poddur": 90,
        "protocols": [7, 8, 11, 12, 13, 14],
        "startdelay": 0,
        "sequence": 1,
        "maxseq": 3,
        "podid": "pod-mid-01",
        "slotinpod": 0,
        "mincpmpersec": 0.65,
        "battr": [1, 2, 15],
        "maxextended": 0,
        "minbitrate": 64,
        "maxbitrate": 320,
        "delivery": [1, 2, 3],
        "api": [7],
        "companiontype": [1, 2],
        "feed": 3,
        "stitched": 1,
        "nvol": 3,
        "durfloors": [
          {
            "mindur": 1,
            "maxdur": 15,
            "bidfloor": 12.00
          },
          {
            "mindur": 16,
            "maxdur": 30,
            "bidfloor": 19.50
          },
          {
            "mindur": 31,
            "maxdur": 60,
            "bidfloor": 34.00
          }
        ]
      }
    }
  ],
  "app": {
    "id": "app-99301",
    "name": "Daily Tech Dispatch Audio",
    "bundle": "com.publisher.dailytechdispatch",
    "cat": ["IAB19", "IAB1", "IAB1-7"],
    "publisher": {
      "id": "pub-4410"
    }
  },
  "device": {
    "ua": "Mozilla/5.0 (iPhone; CPU iPhone OS 18_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148",
    "ip": "198.51.100.42",
    "devicetype": 4,
    "make": "Apple",
    "model": "iPhone",
    "os": "iOS",
    "osv": "18.2",
    "ifa": "00000000-0000-0000-0000-000000000000",
    "lmt": 1
  }
}

Alongside durfloors, the mincpmpersec attribute provides a continuous linear floor baseline (for example, $0.65 per second of audio duration) for DSPs that evaluate dynamic duration pricing rather than discrete tiered brackets. When our Prebid Server clearing engine evaluates returned bids for a 90-second pod (poddur: 90), it runs a knapsack optimization algorithm: it deduplicates competing bids by adomain and IAB category (cat) to prevent two competing brands from playing back-to-back in the same audio break, verifies that each bid clears its corresponding durfloors tier, and selects the combination of ads that maximizes total gross revenue for the pod.

Specifying feed (1=Music Service, 2=FM/AM Broadcast, 3=Podcast), stitched, and nvol

Three attributes inside the imp.audio object directly dictate how tier-1 DSPs classify inventory quality, select eligible creative formats, and calibrate bid prices: feed, stitched, and nvol. Omitting these fields or populating them with inaccurate static defaults causes immediate buyer disqualification on specialized audio campaigns.

OpenRTB 2.6 Field Data Type IAB AdCOM / OpenRTB Enumerations Operational Impact on DSP Bidding & SSAI Execution
feed integer 1 = Music Service
2 = FM/AM Broadcast
3 = Podcast
Determines campaign eligibility, contextual pricing tiers, and synchronous break constraints.
stitched integer 0 = No (Client-Side)
1 = Yes (Server-Side)
Signals whether the audio file is spliced server-side into the continuous stream or fetched by the client player.
nvol integer 0 = None
1 = Ad Volume Average Normalized
2 = Ad Volume Peak Normalized
3 = Ad Loudness Normalized
4 = Custom Volume Normalization
Protects listener experience by alerting buyers and stitchers to the target loudness normalization standard (such as LUFS/LKFS).

The feed attribute (governed by the Feed Types enumeration in IAB AdCOM 1.0) segments audio supply into three distinct user contexts:

  • feed: 1 (Music Service): Represents algorithmic playlists, on-demand album streams, and curated internet radio stations. Music services typically feature high session frequency, persistent logged-in user identity (enabling first-party data and alternative ID resolution), and intermittent screen interaction where companion banners can render. However, background listening is common, and ad breaks are usually capped at 15 to 30 seconds to prevent subscriber churn.
  • feed: 2 (FM/AM Broadcast): Represents live digital simulcasts of terrestrial radio stations. In a terrestrial simulcast, the digital stream must replace the over-the-air commercial break triggered by an in-band SCTE-35 splice cue or ID3 timed metadata tag. Because the live studio broadcast resumes at an exact wall-clock millisecond, the digital ad pod must match the exact duration of the terrestrial break. Buyers bidding on feed: 2 must supply creatives that strictly adhere to rqddurs (required durations) or standard 15/30/60-second lengths so the SSAI stitcher does not clip the ad or rejoin the live broadcast mid-sentence.
  • feed: 3 (Podcast): Represents spoken-word episodic audio delivered via RSS enclosures or streaming podcast apps. Podcast inventory commands the highest programmatic audio CPMs ($20.00 to $35.00+) because listener engagement is active and lean-in, completion rates regularly exceed 90%, and spoken-word ads blend naturally with host commentary.

The stitched attribute (0 for client-side ad insertion, 1 for server-side stitched stream) informs the DSP's verification and delivery logic. When stitched: 1 is declared, the DSP knows that an SSAI proxy will fetch the VAST XML, transcode and splice the audio binary into the content stream or podcast file, and fire the VAST <Impression> and quartile beacons on behalf of the client device. Consequently, when stitched: 1 is present, the SSP must properly populate the X-Forwarded-For HTTP header (or the device.ip and device.ua fields in OpenRTB alongside the Server-Side-Ad-Insertion-Client-IP header on VAST beacon fires) so that downstream fraud verification systems do not flag the SSAI data center IP cluster as automated bot traffic.

The nvol attribute specifies the Volume Normalization Mode applied to the audio stream. Nothing degrades listener retention faster than a jarring +6 dB volume jump when transitioning from a spoken-word podcast at -18 LUFS to a heavily compressed commercial mixed at -9 LUFS. By declaring nvol: 3 (Ad Loudness Normalized to Content), the publisher signals that its SSAI transcoding pipeline applies ITU-R BS.1770 / EBU R128 loudness normalization (typically targeting -16 LUFS with a -1.0 dBTP true-peak ceiling for stereo mobile audio, or -24 LKFS for broadcast streams). DSPs use this signal to route appropriately mastered audio spots without risking listener mute events.

Companion Banners in In-App Audio Players

While audio is primarily a screen-off or background medium, in-app music players and podcast applications frequently display a persistent player view when the user unlocks their phone to browse episodes, inspect lyrics, or skip tracks. To monetize this visual surface alongside the audio spot, OpenRTB 2.6 utilizes the companionad array (an array of standard Banner objects embedded inside imp.audio) paired with the companiontype attribute (1 = Static Resource, 2 = HTML Resource, 3 = iframe Resource).

In the corresponding VAST 4.3 payload, the DSP returns a <Creative> block containing the <Linear> audio asset alongside a sibling <Creative> block containing <CompanionAds>. A crucial engineering distinction exists between how the audio impression and the companion banner impression are tracked and verified:

  1. Decoupled Impression Beacons: The top-level VAST <Impression> node tracks the rendering of the primary <Linear> audio asset. It must fire the moment the audio player (or SSAI stream monitor) begins playing the first frame of the audio spot. It does not guarantee that the companion banner was rendered.
  2. Conditional creativeView Execution: Each <Companion> node inside <CompanionAds> contains its own <TrackingEvents> block with a <Tracking event="creativeView"> URI. According to IAB and MRC measurement standards, the client SDK must only fire this creativeView tracker when the companion banner is actually rendered into an active, foregrounded UI viewport.

In iOS (UIApplication.State) and Android (ProcessLifecycleOwner), audio apps spend the majority of their runtime in a backgrounded or screen-locked state (UIApplication.State.background or inactive). A common implementation failure in custom mobile audio players is instantiating the companion WKWebView or image view off-screen while the device is locked in the user's pocket, immediately firing the companion <Tracking event="creativeView"> pixel alongside the audio <Impression> pixel.

Verification engines such as HUMAN and Pixalate actively monitor the ratio of audio impressions to companion banner viewability signals, as well as OS foreground state telemetry passed via Open Measurement SDK (OMID API 7). If an app fires companion creativeView beacons while the screen is off, the inventory is flagged for hidden-ad IVT, resulting in domain or bundle clawbacks.

To prevent this failure mode, our mobile SDK architecture decouples audio playback from visual companion rendering. When an audio ad begins playing while the app is backgrounded, the player fires the VAST <Impression> and audio quartile beacons on schedule, but holds the <Companion> payload in memory. Only if the user brings the app to the active foreground (UIApplication.didBecomeActiveNotification) while the audio ad is still playing (or during a persistent post-audio companion window) does the UI controller mount the 300x250 or 320x50 companion view, initialize the OMID session, and fire the creativeView beacon. Furthermore, if the publisher's player layout requires a companion image to fill the album-art container during the ad break, setting <CompanionAds required="all"> in VAST instructs the player to discard the entire ad if the companion asset fails to load, whereas required="none" (the standard default for background-capable audio) allows the audio spot to play seamlessly without visual accompaniment.

Server-Side Podcast Ad Stitching and IAB Podcast Measurement v2.3 (September 2026) Filtering

Monetizing podcasts (feed: 3) via programmatic OpenRTB auctions presents an architectural challenge that does not exist in live radio or real-time music streaming: the disconnection between HTTP file transfer and actual human listening. While some proprietary podcast platforms utilize streaming protocols with client-side telemetry, the open podcast ecosystem relies on RSS feeds pointing to progressive-download MP3 or M4A enclosures.

When a listener's podcast app requests an episode enclosure URL, a Dynamic Ad Insertion (DAI) / SSAI proxy intercepts the HTTP request, identifies the pre-roll, mid-roll, and post-roll splice points in the host audio file, executes real-time OpenRTB 2.6 auctions for each pod, stitches the winning VAST 4.3 audio files directly into the enclosure byte stream, and returns the unified audio file to the client. Because RSS podcast clients have no VAST parser and cannot fire client-side tracking pixels, the SSAI server is solely responsible for firing the VAST <Impression> beacons.

However, firing a VAST <Impression> beacon the instant an HTTP GET request hits the podcast server causes massive impression inflation. Modern mobile operating systems and podcast applications aggressively pre-fetch episodes in the background when a device connects to Wi-Fi and charging power, issue multi-part HTTP Range requests to inspect file headers, and resume partial downloads across switching cellular and Wi-Fi IP addresses.

To enforce strict billing integrity across server-side audio pipelines, the IAB Tech Lab Podcast Measurement Technical Guidelines v2.3 (released September 2026, succeeding v2.2 from May 2024) standardize server-side log filtering for downloads, audience deduplication, pre-load exclusions, and valid ad delivery verification. Complying with the v2.3 guidelines requires engineering the SSAI and CDN log-processing pipeline around four mandatory verification gates before any programmatic VAST impression beacon is triggered:

  1. Pre-Load and Byte-Range Exclusion Filtering: Podcast clients (most notably Apple Podcasts on iOS and watchOS, as well as web-based HTML5 <audio> players) frequently initiate a 206 Partial Content request for the first 2 bytes (Range: bytes=0-1) or the first 64 KB (Range: bytes=0-65535) of an audio file to validate enclosure availability and parse ID3 header metadata without playing the episode. Under IAB v2.3 rules, these initial probe requests and unplayed automated background pre-loads must be excluded. For a stitched ad impression to be counted as valid delivery, the server must verify through CDN byte-transfer logs (or segmented HLS chunk requests) that the client actually downloaded the specific byte range containing the stitched audio ad in full, or downloaded at least 60 seconds worth of continuous playback bytes past the ad insertion offset.
  2. 24-Hour Audience Deduplication Window: As a mobile listener commutes from home Wi-Fi to cellular 5G, their podcast player may make dozens of discontinuous byte-range requests for the same episode file. The SSAI state engine must construct a composite listener signature by hashing the normalized client IP address (converting IPv6 addresses to their /64 routing prefix to account for iOS privacy address rotation) together with the raw User-Agent string and episode URI. All byte ranges transferred to that composite signature within a rolling 24-hour window are aggregated into a single logical download session, ensuring the VAST <Impression> beacon fires at most once per unique listener session.
  3. Bot, Spider, and Storage-Proxy Scrubbing: Server-side filters must ingest the IAB Tech Lab Spiders and Bots inclusion/exclusion lists and strip requests originating from known cloud data center ASNs, headless curl/wget scrapers, and third-party podcast archivers. Additionally, when a podcast platform caches episodes on an intermediate proxy server, requests from the proxy IP must be excluded unless the proxy forwards validated client headers.
  4. Deferred VAST Beacon Execution (Decisioning vs. Delivery): Because an RSS enclosure download may occur hours before the user presses play (or may be aborted after the first 128 KB), high-compliance DAI architectures decouple auction decisioning from impression firing, or utilize just-in-time streaming chunk delivery. The VAST <Impression> pixel is held in a Redis or Kafka verification queue until the CDN edge confirms that the byte threshold covering the stitched ad segment has cleared the socket with an HTTP 200 OK or validated 206 Partial Content completion.
-- Production ClickHouse / SQL Verification Query for IAB Podcast Measurement v2.3 Compliance
-- Evaluates CDN edge byte-range logs before releasing deferred VAST 4.3 impression beacons

WITH aggregated_sessions AS (
    SELECT
        episode_id,
        ad_impression_id,
        ad_byte_start,
        ad_byte_end,
        -- Construct 24-hour deduplication key using /64 IPv6 prefix or IPv4 + User-Agent
        sipHash64(
            concat(
                if(isIPv6String(client_ip), cutIPv6(IPv6StringToNum(client_ip), 8, 0), client_ip),
                '|',
                normalized_user_agent
            )
        ) AS listener_session_hash,
        toStartOfInterval(request_timestamp, INTERVAL 24 HOUR) AS dedup_window,
        -- Exclude 2-byte header probes (bytes=0-1) and metadata prefetches (< 64KB)
        sumIf(bytes_sent, NOT (range_start = 0 AND range_end <= 65535)) AS valid_content_bytes,
        -- Verify the client downloaded the specific byte segment containing the stitched ad
        maxIf(1, range_start <= ad_byte_start AND (range_start + bytes_sent) >= ad_byte_end) AS ad_segment_delivered
    FROM cdn_audio_edge_logs
    WHERE
        http_status IN (200, 206)
        AND is_iab_bot_or_spider = 0
        AND is_cloud_asn_datacenter = 0
        AND is_watchos_auto_preload = 0
        AND request_timestamp >= now() - INTERVAL 24 HOUR
    GROUP BY
        episode_id,
        ad_impression_id,
        ad_byte_start,
        ad_byte_end,
        listener_session_hash,
        dedup_window
)
SELECT
    ad_impression_id,
    episode_id,
    listener_session_hash
FROM aggregated_sessions
WHERE
    ad_segment_delivered = 1
    AND valid_content_bytes >= (ad_byte_end - ad_byte_start);

For engineering and AdOps teams scaling audio yield across mobile apps, web streams, and podcast enclosures, the operational blueprint is clear: retire legacy video-proxy workarounds and construct native OpenRTB 2.6 imp.audio objects populated with accurate feed, stitched, nvol, and tiered durfloors parameters. Pair this signaling layer with VAST 4.3 adType="audio" trafficking that supplies uncompressed <Mezzanine> assets for loudness-normalized SSAI stitching, decouple background audio playback from foreground companion creativeView firing, and enforce IAB Podcast Measurement v2.3 byte-range verification at the CDN edge. By anchoring this technical stack to Sky Boosts' curated, IVT-clean demand ecosystem and predictable Net-30 and Net-60 payouts, publishers can capture maximum programmatic audio CPMs with institutional measurement integrity.

Next step

Put it to work.

Every pattern in this article runs on our unified SSP and monetization platform: GAM and MCM management, Prebid client and server-side, and CTV SSAI.

Net-30 / Net-60 terms · 100% brand-safe demand