From adbf04f0569f32739eb19cf77e4f43bafddaa9f8 Mon Sep 17 00:00:00 2001 From: Rich Loveland Date: Mon, 29 Jan 2018 15:05:44 -0500 Subject: [PATCH] Add multiformat docs: developers, ad ops, example code (#561) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * WIP multiformat docs * Flesh out prerequisites/implementation of dev doc * Add multi-format docs to 'Docs by Format' * Add a quick example of *why* to do this * Outline steps on ad ops page * Clarify multi-format on 'Docs by format' page * Various dev doc fixups * Update JSFiddle, overview bullet points in example * Update multiformat fiddle * Key is now called `hb_format` * s/multi-format/multiformat/ * Use 'appnexus' bidder and Prebid.js v1 * s/multi-format/multiformat/ * Be clear that it's *outstream* video * Use title case * Update multiformat example link * Fill in multiformat ad ops instructions Because these are basically the same as the banner/native instructions, I've filled them in as the "diffs" between our existing, published, vetted instructions. * Add native aspect ratio info to AN adapter docs (#543) * Add native aspect ratios to AppNexus adapter docs Also did some general cleanup and formatting while I was in there. * Update field defs a bit; add OpenRTB native link * Remove OpenRTB note based on feedback * Add banner, video, and native sections * WIP native updates across several pages * Tweak language in AN bidder doc links * Edit down to a single native example; s/Ast//g * Update native example code; s/Ast//g * Show `mediaTypes.native.image.sizes` in examples In addition to updating the basic examples to use sizes for images and icons, we add a section to both the API reference and the 'Show Native Ads' page that lists both ways to define sizes for image-like assets. Since the content is the same, it's in a shared file sourced using the Liquid `include` keyword. * Fix code formatting issue with included file * `adUnit.sizes` is ignored on native ad units * Remove `adUnit.sizes` since banner sizes are used * Remove redundant `adUnit.sizes` from native ad * Use correct syntax for native "image-type" ad * Add multiformat ad unit information (#541) * Add multiformat ad unit information * Update default targeting keys * Update based on review feedback * Change key to hb_format * Add note about including banner media type if supported * update tag samples with multiformat syntax (#528) * update tag samples with multiformat syntax * reverting part of change on show-native-ads.md * s/multiformat/multi-format/g * We don't need an order per demand partner * Remove ambiguous comment on fluid vs. fixed native * Update multi-format language in dev setup intro * Update multi-format description based on feedback * Update 'How it works' based on feedback * Update ad unit language based on feedback * Fix Prebid.org-hosted multiformat example Somehow a native example was erroneously added -- probably as a placeholder. It has been replaced with a slightly modified version [*] of the multi-format example kindly provided by @matthewlane. [*] It was modified to (1) use Prebid.js v1.2 from the CDN and (2) to use the 'appnexus' rather than the old AST adapter * Update JSFiddle in multiformat example To address the following points: 1. Removing mention of the internal dev URL as mentioned by Jacobson 2. Making the code the same as that of prebid.org/examples/multi_format_example.html * Add ad unit creation step with sizing/native info * Clarify line item setup language * Update k-v targeting instructions per feedback - Use slightly different language/notation - Add screenshots * Check in screenshots of multi-format ad ops setup * Update native format language per feedback * Clarify that it's banner and/or outstream * Note bidder-specific line item targeting keys * Update targeting description per feedback * Update native size note, per feedback * Fix mobile size per feedback * Hide multi-format example from site's left nav * Belatedly add link to the 1.0 release announcement * Fix typo * Use Prebid.org-hosted multi-format example (Also, add it to the `/examples` index page.) * s/div-banner-outstream/div-banner-native/g * Add a third example: 'banner-outstream' * Update examples to set `cache.url` to `false` I'm told this is connected somehow to the following issue, but ¯\_(ツ)_/¯ https://github.com/prebid/Prebid.js/pull/1976 * Update placement IDs in Prebid.org-hosted example In order for outstream to work, we need a placement configured to work with VAST 3.0 since that is what the test outstream creative requires. * Update JSFiddle to use updated placement IDs * Get banner/outstream examples working: use 300x250 Also, added a note to the JSFiddle multi-format example page that the Fiddle works sporadically for outstream, so check out the Prebid.org-hosted example (which works closer to 100% of the time) * Fix broken formatting on JSFiddle example page --- _config.yml | 3 + .../setting-up-prebid-multi-format-in-dfp.md | 85 +++++++ .../ad-ops/multi-format/hb_format_native.png | Bin 0 -> 6243 bytes .../multi-format/hb_format_video_banner.png | Bin 0 -> 7122 bytes dev-docs/bidder-adaptor.md | 8 +- dev-docs/docs-by-format.md | 28 +-- dev-docs/examples/multi-format-example.md | 20 ++ dev-docs/publisher-api-reference.md | 19 +- dev-docs/show-multi-format-ads.md | 136 +++++++++++ examples/index.html | 3 + examples/multi_format_example.html | 211 ++++++++++++++++++ 11 files changed, 487 insertions(+), 26 deletions(-) create mode 100644 adops/setting-up-prebid-multi-format-in-dfp.md create mode 100644 assets/images/ad-ops/multi-format/hb_format_native.png create mode 100644 assets/images/ad-ops/multi-format/hb_format_video_banner.png create mode 100644 dev-docs/examples/multi-format-example.md create mode 100644 dev-docs/show-multi-format-ads.md create mode 100644 examples/multi_format_example.html diff --git a/_config.yml b/_config.yml index d03160a697..9f0b994ea9 100755 --- a/_config.yml +++ b/_config.yml @@ -69,6 +69,9 @@ nav_sections: - top_nav: dev_docs code: quick-start name: DEVELOPER QUICK START + - top_nav: dev_docs + code: prebid-multi-format + name: PREBID MULTI-FORMAT (ALPHA) - top_nav: dev_docs code: prebid-video name: PREBID VIDEO (BETA) diff --git a/adops/setting-up-prebid-multi-format-in-dfp.md b/adops/setting-up-prebid-multi-format-in-dfp.md new file mode 100644 index 0000000000..fbbd296704 --- /dev/null +++ b/adops/setting-up-prebid-multi-format-in-dfp.md @@ -0,0 +1,85 @@ +--- +layout: page +title: Setting up Prebid Multi-Format in DFP +head_title: Setting up Prebid Multi-Format in DFP +description: Setting up Prebid Multi-Format in DFP +pid: 3 +hide: false +top_nav_section: adops +nav_section: tutorials +--- + +
+ +# Setting up Prebid Multi-Format in DFP +{: .no_toc} + +This page shows how to set up your ad server so that you can serve multi-format ads. + +Multi-Format ads allow you to declare multiple media types on a single ad unit. For example, you can set up one ad on the page that could show a banner, native, or outstream video ad, depending on which had the highest bid. + +{: .alert.alert-info :} +For instructions on how to set up multi-format ads from the engineering side, see [Show Multi-Format Ads with Prebid.js]({{site.baseurl}}/dev-docs/show-multi-format-ads.html). + +* TOC +{: toc } + +## Step 1. Add an Ad Unit + +In DFP, [create an ad unit](https://support.google.com/dfp_premium/answer/177203?hl=en). + +Decide what combination of formats will be permitted on the ad unit. This will determine what sizes you allow to serve. The ad unit's sizes must be configured properly to support the combination of formats that will be permitted. + +If your ad unit will support native ads, you may want to create a custom **Prebid Native Format** and at least one **Prebid Native Style**. Examples of each are given in [Setting up Prebid Native in DFP][nativeAdSetup]. + +## Step 2. Add an Order + +In DFP, create a new order. This order will be associated with the multiple line items needed to run multi-format auctions. + +## Step 3. Add Line Items and Creatives for each Media Type + +Multi-format ad units which support native require at least two distinct sets of line items and creatives: + ++ One for [banners and/or outstream video][bannerAdSetup]. Banners and outstream videos will serve into a DFP banner creative. + ++ One for [native][nativeAdSetup]. Native ads will serve into a native creative with native format and styles. + +### Banner/Outstream + +Follow the instructions for creating line items and creatives in [Send all bids to the ad server][bannerAdSetup], with the following changes: + ++ Add key-value targeting for **'hb_format' is ('banner' OR 'video')** + + This will ensure that the appropriate ad server line item is activated for banner / outstream bids + + For bidder-specific line items, specify `hb_format_{BIDDER_CODE}`, e.g., `hb_format_appnexus` + + ![Set hb_format to 'banner,video']({{site.baseurl}}/assets/images/ad-ops/multi-format/hb_format_video_banner.png) + ++ Make sure that you're targeting the right sizes for both banner ads and any outstream ads you want to serve in this slot, e.g., + + 1x1 for outstream (or whatever size you pass into DFP as your outstream impression) + + whatever banner sizes are valid for your site / use case + +### Native + +Follow the instructions for creating line items, creatives, custom native formats, and native styles in [Show Native Ads][nativeAdSetup], with the following changes: + ++ Add key-value targeting for **'hb_format' is 'native'** + + ![Set 'hb_format' to 'native']({{site.baseurl}}/assets/images/ad-ops/multi-format/hb_format_native.png) + ++ Make sure you're targeting the right sizes for the native ads you want to serve: + + Fixed-size native, where you specify one or more absolute sizes + + Fluid, which expands to fit whatever space it's put in + + For more information on fluid vs. fixed, see [the DFP docs](https://support.google.com/dfp_premium/answer/6366914?hl=en) + +## Related Topics + ++ [Show Multi-Format Ads with Prebid.js]({{site.baseurl}}/dev-docs/show-multi-format-ads.html) (Engineering setup) ++ [Multi-Format Example]({{site.baseurl}}/dev-docs/examples/multi-format-example.html) (Example code) + +
+ + + +[bannerAdSetup]: {{site.baseurl}}/adops/send-all-bids-adops.html +[nativeAdSetup]: {{site.baseurl}}/adops/setting-up-prebid-native-in-dfp.html +[createCustomNativeFormat]: {{site.baseurl}}/adops/setting-up-prebid-native-in-dfp.html#create-a-custom-native-ad-format diff --git a/assets/images/ad-ops/multi-format/hb_format_native.png b/assets/images/ad-ops/multi-format/hb_format_native.png new file mode 100644 index 0000000000000000000000000000000000000000..206fb0747b594b56623d6211fa07ea68231a61cd GIT binary patch literal 6243 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 QAO5nS3TpBdvZlfR0!?&@P5=M^ literal 0 HcmV?d00001 diff --git a/assets/images/ad-ops/multi-format/hb_format_video_banner.png b/assets/images/ad-ops/multi-format/hb_format_video_banner.png new file mode 100644 index 0000000000000000000000000000000000000000..3b7f43dd2bc70eb37143b59a69e4f346d6c71777 GIT binary patch literal 7122 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 literal 0 HcmV?d00001 diff --git a/dev-docs/bidder-adaptor.md b/dev-docs/bidder-adaptor.md index b74ca59c86..501c82bd8f 100644 --- a/dev-docs/bidder-adaptor.md +++ b/dev-docs/bidder-adaptor.md @@ -96,7 +96,7 @@ Module that connects to Example's demand sources code: 'test-div', mediaTypes: { banner: { - sizes: [[300, 50]], // a mobile size + sizes: [[320, 50]], // a mobile size } }, bids: [ @@ -223,9 +223,9 @@ Sample array entry for `validBidRequests[]`: {% endhighlight %} {: .alert.alert-success :} -There are several IDs present in the bidRequest object: -- **Bid ID** is unique across ad units and bidders. -- **Auction ID** is unique per call to `requestBids()`, but is the same across ad units. +There are several IDs present in the bidRequest object: +- **Bid ID** is unique across ad units and bidders. +- **Auction ID** is unique per call to `requestBids()`, but is the same across ad units. - **Transaction ID** is unique for each ad unit with a call to `requestBids`, but same across bidders. This is the ID that DSPs need to recognize the same impression coming in from different supply sources. The ServerRequest objects returned from your adapter have this structure: diff --git a/dev-docs/docs-by-format.md b/dev-docs/docs-by-format.md index ca970d401c..ba73d0f3ea 100644 --- a/dev-docs/docs-by-format.md +++ b/dev-docs/docs-by-format.md @@ -20,18 +20,20 @@ For ad ops and other ad server-related information, see [our Ad Ops documentatio {:toc} {: .table .table-bordered .table-striped } -| Format | Page | -|---------------------+----------------------------------------------------------------------------------------------------------------------------------| -| *AMP* | [How Prebid on AMP Works]({{site.github.url}}/dev-docs/how-prebid-on-amp-works.html) | -| | [Show Prebid Ads on AMP Pages (Alpha)]({{site.github.url}}/dev-docs/show-prebid-ads-on-amp-pages.html) | -| *Video* (instream) | [Show Video Ads with a DFP Video Tag]({{site.github.url}}/dev-docs/show-video-with-a-dfp-video-tag.html) (With lots of examples) | -| | [How to Add a New Video Bidder Adapter]({{site.github.url}}/dev-docs/how-to-add-a-new-video-bidder-adaptor.html) | -| *Video* (outstream) | [Show Outstream Video Ads]({{site.github.url}}/dev-docs/show-outstream-video-ads.html) | -| | [Outstream Video Example]({{site.github.url}}/dev-docs/examples/outstream-video-example.html) | -| *Standard Display* | [Basic Prebid.js Example]({{site.github.url}}/dev-docs/examples/basic-example.html) | -| | [Getting Started]({{site.github.url}}/dev-docs/getting-started.html) | -| | [Ad Unit Refresh / Infinite Scroll Example]({{site.github.url}}/dev-docs/examples/adunit-refresh.html) | -| *Native* | [Show Native Ads with Prebid.js]({{site.github.url}}/dev-docs/show-native-ads.html) (Engineering setup) | -| | [Setting up Prebid Native in DFP]({{site.github.url}}/adops/setting-up-prebid-native-in-dfp.html) (Ad Ops setup) | +| Format | Page | +|---------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------| +| *Multi-Format (banner, native, outstream video all in one ad unit)* | [Show Multi-Format Ads with Prebid.js]({{site.baseurl}}/dev-docs/show-multi-format-ads.html) (Engineering setup) | +| | [Setting up Prebid Multi-Format in DFP]({{site.baseurl}}/adops/setting-up-prebid-multi-format-in-dfp.html) (Ad ops setup) | +| *AMP* | [How Prebid on AMP Works]({{site.github.url}}/dev-docs/how-prebid-on-amp-works.html) | +| | [Show Prebid Ads on AMP Pages (Alpha)]({{site.github.url}}/dev-docs/show-prebid-ads-on-amp-pages.html) | +| *Video* (instream) | [Show Video Ads with a DFP Video Tag]({{site.github.url}}/dev-docs/show-video-with-a-dfp-video-tag.html) (With lots of examples) | +| | [How to Add a New Video Bidder Adapter]({{site.github.url}}/dev-docs/how-to-add-a-new-video-bidder-adaptor.html) | +| *Video* (outstream) | [Show Outstream Video Ads]({{site.github.url}}/dev-docs/show-outstream-video-ads.html) | +| | [Outstream Video Example]({{site.github.url}}/dev-docs/examples/outstream-video-example.html) | +| *Standard Display* | [Basic Prebid.js Example]({{site.github.url}}/dev-docs/examples/basic-example.html) | +| | [Getting Started]({{site.github.url}}/dev-docs/getting-started.html) | +| | [Ad Unit Refresh / Infinite Scroll Example]({{site.github.url}}/dev-docs/examples/adunit-refresh.html) | +| *Native* | [Show Native Ads with Prebid.js]({{site.github.url}}/dev-docs/show-native-ads.html) (Engineering setup) | +| | [Setting up Prebid Native in DFP]({{site.github.url}}/adops/setting-up-prebid-native-in-dfp.html) (Ad Ops setup) | diff --git a/dev-docs/examples/multi-format-example.md b/dev-docs/examples/multi-format-example.md new file mode 100644 index 0000000000..57c4beb6b0 --- /dev/null +++ b/dev-docs/examples/multi-format-example.md @@ -0,0 +1,20 @@ +--- +layout: example +title: Prebid.js Multi-Format Example +description: Prebid.js Multi-Format Example +top_nav_section: dev_docs +nav_section: quick-start +hide: true +about: +- Multi-Format ads allow you to declare multiple media types on a single ad unit +- Set up one ad unit that could show a banner, native, or outstream video ad +- Any bidder that supports at least one of the listed media types can participate in the auction for that ad unit +- For engineering setup instructions, see Show Multi-Format Ads +- For ad ops setup instructions, see Setting up Prebid Multi-Format in DFP +- Note - Outstream ads only work sporadically in the embedded JSFiddle below; try the Prebid.org-hosted Multi-Format Example +jsfiddle_link: jsfiddle.net/prebid/mg81j0rw/12/embedded/html,result +code_lines: 110 +code_height: 2389 +use_old_example_style: false +pid: 11 +--- diff --git a/dev-docs/publisher-api-reference.md b/dev-docs/publisher-api-reference.md index dd8f569b93..fd5dcadd53 100644 --- a/dev-docs/publisher-api-reference.md +++ b/dev-docs/publisher-api-reference.md @@ -14,7 +14,7 @@ pid: 10 This page has documentation for the public API methods of Prebid.js. {: .alert.alert-danger :} -Methods marked as deprecated will be removed in version 1.0 (scheduled for release Q4 2017). +Methods marked as deprecated were removed in version 1.0. For more information about the changes, see [the release announcement]({{site.baseurl}}/blog/prebid-1-is-released). After a transition period, documentation for these methods will be removed from Prebid.org (likely early 2018). @@ -605,7 +605,8 @@ See the table below for the list of properties in the `mediaTypes` object of the + [Native](#adUnit-native) + [Video](#adUnit-video) + [Banner](#adUnit-banner) -+ [Multi-format](#adUnit-multiformat) ++ [Multi-format](#adUnit-multi-format) + @@ -727,7 +728,7 @@ pbjs.addAdUnits({ }) ``` - + ##### Multi-format @@ -1119,7 +1120,7 @@ For an example showing how to use this method, see [Show Video Ads with a DFP Vi This method is deprecated as of version 0.27.0 and will be removed in version 1.0 (scheduled for release Q4 2017). Please use [`setConfig`](#module_pbjs.setConfig) instead. {: .alert.alert-danger :} -**BREAKING CHANGE** +**BREAKING CHANGE** As of version 0.27.0, To encourage fairer auctions, Prebid will randomize the order bidders are called by default. To replicate legacy behavior, call `pbjs.setBidderSequence('fixed')`. This method shuffles the order in which bidders are called. @@ -1307,9 +1308,9 @@ pbjs.setConfig({ bidderTimeout: 3000 }); {% endhighlight %} {: .alert.alert-warning :} -**Bid Timeouts and JavaScript Timers** -Note that it's possible for the timeout to be triggered later than expected, leading to a bid participating in the auction later than expected. This is due to how [`setTimeout`](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout) works in JS: it queues the callback in the event loop in an approximate location that *should* execute after this time but *it is not guaranteed*. -With a busy page load, bids can be included in the auction even if the time to respond is greater than the timeout set by Prebid.js. However, we do close the auction immediately if the threshold is greater than 200ms, so you should see a drop off after that period. +**Bid Timeouts and JavaScript Timers** +Note that it's possible for the timeout to be triggered later than expected, leading to a bid participating in the auction later than expected. This is due to how [`setTimeout`](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout) works in JS: it queues the callback in the event loop in an approximate location that *should* execute after this time but *it is not guaranteed*. +With a busy page load, bids can be included in the auction even if the time to respond is greater than the timeout set by Prebid.js. However, we do close the auction immediately if the threshold is greater than 200ms, so you should see a drop off after that period. For more information about the asynchronous event loop and `setTimeout`, see [How JavaScript Timers Work](https://johnresig.com/blog/how-javascript-timers-work/). @@ -1435,7 +1436,7 @@ However, there are also good reasons why publishers may want to control the use - *Security*: Publishers may want to control which bidders are trusted to inject images and JavaScript into their pages. {: .alert.alert-info :} -**User syncing default behavior** +**User syncing default behavior** If you don't tweak any of the settings described in this section, the default behavior of Prebid.js is to wait 3 seconds after the auction ends, and then allow every adapter to drop up to 5 image-based user syncs. For more information, see the sections below. @@ -1818,7 +1819,7 @@ var adserverTag = 'https://pubads.g.doubleclick.net/gampad/ads?' + 'sz=640x480&iu=/19968336/prebid_cache_video_adunit&impl=s&gdfp_req=1' + '&env=vp&output=xml_vast2&unviewed_position_start=1&hl=en&url=http://www.example.com' + '&cust_params=section%3Dblog%26anotherKey%3DanotherValue'; - + var videoUrl = pbjs.adServers.dfp.buildVideoUrl({ adUnit: videoAdUnit, url: adserverTag diff --git a/dev-docs/show-multi-format-ads.md b/dev-docs/show-multi-format-ads.md new file mode 100644 index 0000000000..b92b386057 --- /dev/null +++ b/dev-docs/show-multi-format-ads.md @@ -0,0 +1,136 @@ +--- +layout: page +title: Show Multi-Format Ads with Prebid.js +description: Show Multi-Format Ads with Prebid.js +pid: 0 +is_top_nav: yeah +top_nav_section: dev_docs +nav_section: prebid-multi-format +--- + +
+ +# Show Multi-Format Ads with Prebid.js +{: .no_toc } + +This page has instructions for showing multi-format ads using Prebid.js. + +An ad unit is said to be multi-format if it supports at least two of the following media types: + ++ Banner ++ Native ++ Video + +Once declared, any bidder that supports at least one of the media types can participate in the auction for that ad unit. + +{: .alert.alert-info :} +For ad ops setup instructions, see [Setting up Prebid Multi-Format in DFP]({{site.baseurl}}/adops/setting-up-prebid-multi-format-in-dfp.html). + +* TOC +{:toc} + +## How Multi-Format Ads Work + +Prebid multi-format ad units allow direct competition between banner, native, and/or video bids. + +At a high level, Prebid.js supports multi-format ads as follows: + +1. An ad unit may define a [`mediaTypes`]({{site.baseurl}}/dev-docs/publisher-api-reference.html#addAdUnits-MediaTypes) object to specify one or more supported formats and their respective properties. +2. Each bidder specified on a given ad unit will be eligible to bid if the bidder supports at least one of the media types specified via `adUnit.mediaTypes`. +3. Prebid.js sends bid requests to each eligible bidder. + +The following key is added to your ad server targeting, and set to the value of the bid response's `mediaType` property. + ++ `hb_format` + +The ad ops team will reference this key in the ad server to set targeting. For ad ops setup instructions, see [Setting up Prebid Multi-Format in DFP]({{site.baseurl}}/adops/setting-up-prebid-multi-format-in-dfp.html). + +## Prerequisites + +Keep the following prerequisites in mind during the implementation: + ++ Make sure to work with bidders that support demand for the media types you want, particularly native and video. To see which bidders have native and/or video demand, see [Bidders with Video and Native Demand]({{site.baseurl}}/dev-docs/bidders.html#bidders-with-video-and-native-demand). + +## Implementation + +This section describes the implementation using code samples, but ignores some of the details that are common to all Prebid.js setups. + +### 1. Add multi-format ad units + +The ad unit below supports the banner, native, and video media types. + +```javascript + + pbjs.addAdUnits({ + code: 'div-banner-outstream-native', + mediaTypes: { + banner: { + sizes: [ + [300, 250], + [300, 50] + ] + }, + native: { + image: { + sizes: [ + [300, 250], + [300, 50] + ] + } + }, + video: { + context: 'outstream', + playerSize: [640, 480] + }, + }, + bids: [ + + { + bidder: 'bannerBidder', + params: { + placementId: '481' + } + }, + + { + bidder: 'nativeBidder', + params: { + titleAsset: '516' + } + }, + + { + bidder: 'videoBidder', + params: { + vidId: '234' + } + }, + + ] + }); +``` + +### 2. Add your tag to the page body + +Add a tag like the following to your page. Depending on who wins the auction, a banner, outstream, or native ad should serve. + +```html +
+

No response

+ +
+``` + +## Working Examples + ++ [Multi-Format Example]({{site.baseurl}}/examples/multi_format_example.html) + +## Related Topics + ++ [Setting up Prebid Multi-Format in DFP]({{site.baseurl}}/adops/setting-up-prebid-multi-format-in-dfp.html) + +
diff --git a/examples/index.html b/examples/index.html index 1a8f2ec0d3..7f76c97e39 100644 --- a/examples/index.html +++ b/examples/index.html @@ -14,6 +14,9 @@

Prebid.org Hosted Examples

  • Prebid Native
  • +
  • + Prebid Multi-Format +
  • diff --git a/examples/multi_format_example.html b/examples/multi_format_example.html new file mode 100644 index 0000000000..021a14a7e2 --- /dev/null +++ b/examples/multi_format_example.html @@ -0,0 +1,211 @@ + + + + + + + + + + + + + +

    Prebid Multi-Format Testing

    + +

    div-banner-native

    +
    +

    No response

    + +
    + +

    div-banner-outstream

    +
    +

    No response

    + +
    +
    + +

    div-banner-outstream-native

    +
    +

    No response

    + +
    +
    + + +