跳到正文
DEV Community· Aleksander Sekowski·· 2 小時前AI 評分35

CTV 廣告組合速查表:影片廣告營運工程師必備

The CTV Ad Portfolio Cheat Sheet Every Video Ad Ops Engineer Needs

AI 導讀

CTV 廣告組合速查表對照五種影片廣告格式的 AdCOM/OpenRTB 訊號與 VAST 結構,供廣告營運工程師核對素材和播放器排程。暫停、螢幕保護程式、覆蓋、畫面收縮及場景內廣告使用 imp.video 和 NonLinear VAST;選單及圖塊使用 imp.native,不使用 NonLinear 容器。

正文

On October 9, 2026, The Trade Desk framed pause ads as the next leg of a broader CTV portfolio: formats beyond the midroll break, each with its own moment on the glass. Netflix had already said pause would move onto partner DSPs in October. The hard part is not finding budget. It is matching three layers that were finalized separately: AdCOM integers on the bid request, the VAST envelope in adm, and what the player or stitcher actually schedules. IAB Tech Lab closed the CTV Ad Portfolio signaling guidance on July 22, 2026. That document is a table of enumerations, not a creative QA checklist. Programmatic pause in particular still splits by route, which we mapped in Netflix pause ads go programmatic, and each buying route accepts a different NonLinear creative.

This sheet is for video ad ops and trafficking engineers who receive a DSP export, an SSAI template, or an agent-generated VAST blob and need to know, in one screen, which OpenRTB signals and which VAST subtree belong together. Bookmark it next to your plcmt reference. One wrong integer pair can validate and still never render.

Format-to-signal and VAST shape

Five portfolio formats ride imp.video and return NonLinear VAST in adm. Menu and tile units ride imp.native and may embed VAST inside video.vasttag; they do not use the NonLinear container. Values below come from IAB's Signaling Implementation Guidelines format table.

Format video.plcmt Typical pos Typical playbackmethod VAST delivery Tracking the player expects
Pause 5 7 fullscreen, 8 partial 8 sound on, 9 sound off (user pause) <NonLinearAds> with static, cinemagraph, or video asset creativeView, overlayViewDuration; quartiles only when <Duration> is present on video
Screensaver 6 7 or 8 10 sound on, 11 sound off (idle) <NonLinearAds>; often static Same NonLinear set; duration optional for stills
Overlay 7 9, 10, 14, 15, or 5 by geometry Often 1 or 2 (autostart sound on/off) <NonLinearAds> with image or video creativeView, overlayViewDuration; include <Duration> when time-based beacons matter
Squeezeback 8 11, 12, 13, 16, or 17 by layout Often 1 or 2 <NonLinearAds>; content frame shrinks Same as overlay; pos must match squeezeback layout, not pause fullscreen
In-scene 9 (format-specific) Often 1 or 2 <NonLinearAds> insert in scene bid.attr should declare motion; NonLinear tracking as above
Menu / tile Native plcmttype 1 or 3 N/A on video object N/A Native img.url and/or video.vasttag (may wrap linear VAST) Native eventtrackers plus embedded VAST pixels

Downstream, DSPs echo plcmt, pos, playbackmethod, and attr into VAST AdCOM extensions so stitchers that never saw the bid can still read what was sold. The child element name must match the extension type. A type="pos" wrapper with a <plcmt> child is well formed XML and wrong semantics.

Interactive portfolio units that use SIMID declare <InteractiveCreativeFile apiFramework="SIMID"> under <NonLinear> in the VAST 4.4 pattern, with a renderable <MediaFile> fallback. That handshake is separate from the signal table, but the same rule applies: the buy must match the container.

Three table rows that pass schema and lose the impression

Pause plcmt with a linear <Linear> creative. OpenRTB can carry plcmt=5 while adm is a standard instream MP4 under <Linear>. XSD checks pass. CTV portfolio players look for <NonLinearAds>. The spot does not enter the pause overlay path; the impression disappears without a trafficking error code. This is the most common copy-paste failure when a team reuses a :15 preroll tag for a pause deal.

plcmt=5 paired with squeezeback pos and instream playbackmethod. Each integer is legal AdCOM. Together they describe pause, squeezeback, and ordinary autoplay at once. Stitchers that enforce portfolio rules reject the mismatch; lenient parsers attach the wrong geometry. vastlint flags cross-format pairs such as pause plcmt with playbackmethod 1 instead of 8 or 9.

Video <MediaFile> under <NonLinear> with no <Duration>. IAB allows omitting duration for static pause and screensaver assets when display time is unknown at response time. Add a looping MP4 for a cinemagraph pause, and quartile URLs plus overlayViewDuration have no timeline. The tag validates; measurement flatlines. That row is easy to miss because the same NonLinear subtree works for a JPEG.

How you catch it

Schema validation alone cannot enforce the table. You need the resolved tag the player sees, including wrapper hops.

Paste the live tag URL into the VAST tag tester to fetch, preview the NonLinear asset, and confirm tracking URLs fire on the events your MMP expects. When the ad server returns wrappers, open the VAST inspector and walk the chain hop by hop until you hit the InLine that carries <NonLinearAds>.

For SIMID or IAB sample creatives on portfolio placements, use the IAB-style VAST tester (SIMID studio and sample tags). It is an independent fork, not an IAB Tech Lab product, but it exercises the interactive NonLinear path the portfolio spec describes.

After preview, run vastlint on the final XML (cargo install vastlint or npm install vastlint). An agent or MCP task can emit portfolio VAST that parses clean while plcmt, pos, and playbackmethod still disagree. vastlint is the deterministic check on the creative the buy claimed. It is independent of IAB Tech Lab and of AAO; the spec does not require it, but it encodes the same format-to-signal rows as rules you can run in CI.

Where to go next

來源:DEV Community · dev.to