VASTlint

SSAI: Server-Side Ad Insertion

SSAI (server-side ad insertion, also called ad stitching or dynamic ad insertion) is the delivery model in which ads are merged into the video stream on the server, before anything reaches the viewer. The device plays one continuous stream with the ads already inside it. There is no separate ad request from the player, no player-side ad rendering, and at the network level, no visible boundary between content and ad.

SSAI is the dominant delivery model for CTV and live streaming, which makes the stitcher the most important VAST client most tags will ever meet.

How the stitcher pipeline works

  1. Break reached. The content manifest (HLS or DASH) reaches an ad break, defined by markers in the stream or a VMAP schedule.
  2. Ad decisioning. The stitcher calls the ad server or SSP with the break context and receives a VAST response.
  3. Server-side unwrap. Wrapper chains are resolved in the data center under tight time budgets; the device never walks a redirect chain.
  4. Transcode and normalize. The creative is converted to match the content stream's bitrate ladder, resolution, and codec profile, ideally from the tag's Mezzanine source rather than a compressed rendition.
  5. Manifest manipulation. Ad segments are spliced into the manifest so the player fetches them like any other piece of content.
  6. Tracking. Either the server fires impression and quartile beacons on the device's behalf (server-side beaconing) or the device player fires them from metadata the stitcher passes down (client-side beaconing). Hybrid setups split the two.

SSAI vs CSAI

DimensionCSAI (client-side)SSAI (server-side)
Who fetches and renders the adThe player on the deviceA stitching server
Content-to-ad transitionPlayer switches sources; buffering possibleSeamless; one continuous stream
Ad blockingBlockable at the network levelEffectively unblockable
Device SDK requirementsCapable player SDK on every deviceMinimal; the device just plays video
Measurement fidelityHigh; events reflect actual playbackDepends on beaconing mode and header forwarding
Interactivity (SIMID) and OMID verificationSupported where the SDK supports itRequires client-side integration; server alone cannot run it
Live streams at scaleStrains the device and the ad serverBuilt for it
Typical homeWeb and mobile in-app videoCTV, FAST channels, live sports

What SSAI changes about your VAST

The tag format is identical; the consumer is different, and it has different needs. Four requirements follow:

  • Macros must be expanded by the stitcher. The VAST 4.1 macro set ([TIMESTAMP], [CACHEBUSTING], [IFA], and the rest) is expanded by whoever fires the beacon. In SSAI that is the server, and unexpanded literal brackets in tracker URLs are the most common stitch-time defect.
  • Beacons need forwarded device context. Server-fired impressions come from data-center IPs with server user agents. IAB guidance requires forwarding X-Forwarded-For and X-Device-User-Agent so measurement can attribute the beacon to a real device instead of flagging it as invalid traffic.
  • A Mezzanine source should be present. Stitchers transcode; a mastering-quality source is what keeps the ad looking like the content it interrupts.
  • Client-side layers need a client. OMID verification and SIMID interactivity execute on the device. A pure server-side path carries those elements but cannot run them; if the buy depends on them, the delivery path needs a device-side integration.

The failure modes behind these requirements, and what they cost, are covered in SSAI rewrites your VAST: what breaks at stitch time and the revenue math of broken VAST.

Where validation fits

Because the stitcher re-processes every tag, validation belongs at three points: when a creative is onboarded (before it enters the stitcher's cache), in CI for the systems that assemble tags, and against the served output the stitcher actually produces. vastlint validates the structure, macros, media file set, and version coherence that stitch-time processing depends on.

Validate a tag before it enters an SSAI pipeline.Open the VAST tag validator →

Further reading