Outstream video lets you serve video ads in your normal banner ad units. The BiddingStack video player renders a VAST ad inside the existing slot, so you can bring video demand into display inventory without new placements, a separate player embed, or page changes.
Everything runs inside a Google Ad Manager creative, so no page changes are needed. The slot keeps a fixed 16:9 size for the whole lifecycle, so the page layout never shifts.
If you would rather place the player directly on the page instead of going through a display creative, see How to Serve Outstream Video Ads with Google Ad Manager and BiddingStack Video Player.
The video ad is requested only after the display line item wins the slot. You set a fixed CPM rate on the line item serving this creative, and that rate is what competes in the display auction.
Pick a rate that reflects what your video demand actually pays. Too high and the line item wins impressions it cannot monetize; too low and it rarely serves. Review delivery and revenue after a few days and adjust.
640x360 (or your preferred 16:9) creative.640x360, 1x1, or another 16:9 size that matches your slot.iu=/124312541/video01 with your own video ad unit path. It must be different from the display ad unit serving this creative.Paste this into the Custom HTML / third party creative body:
<script src="https://pubtm.com/serve/tag.js" async></script>
<script>
(function () {
// Size from GAM macros, fallback to 640x360 (16:9)
var w = parseInt("%%WIDTH%%", 10) || 640;
var h = parseInt("%%HEIGHT%%", 10) || Math.round(w * 9 / 16);
var vastUrl =
"https://securepubads.g.doubleclick.net/gampad/ads" +
"?iu=/124312541/video01" + // your VIDEO ad unit (not the one serving this creative)
"&env=vp&output=vast" +
"&sz=" + w + "x" + h +
"&gdfp_req=1&unviewed_position_start=1" +
"&url=%%PATTERN:url%%" +
"&description_url=%%PATTERN:url%%" +
"&correlator=%%CACHEBUSTER%%";
async function renderVideo() {
document.body.style.margin = "0";
await window.BID_AD.displayAd({
placement: "banner",
mediaType: "video",
data: { vastUrl: vastUrl },
config: {
width: w,
height: h
},
});
}
(function waitForTag() {
if (window.BID_AD && window.BID_AD.displayAd) {
renderVideo().catch(console.error);
} else {
setTimeout(waitForTag, 50);
}
})();
})();
</script>
Need help setting up the video ad unit or line items? Contact the BiddingStack team.
Header bidding, yield, and ad tech insights for publishers. A few emails a month, no spam.