Before any bidder can bid, you have to describe what you are selling: this slot, these sizes, these formats. In Prebid that description is an adUnit, and it maps almost one-to-one onto the OpenRTB request every exchange already speaks.
An adUnit has three core parts: a code (which matches your ad-server slot), mediaTypes (banner, video, or native, with their sizes), and bids[] (the bidders you want, each with its params).
{
code: 'div-leaderboard',
mediaTypes: { banner: { sizes: [[728, 90], [970, 250]] } },
bids: [
{ bidder: 'rubicon', params: { accountId: '1', siteId: '2', zoneId: '3' } },
{ bidder: 'pubmatic', params: { publisherId: '156209', adSlot: 'leaderboard' } },
],
}How it becomes an OpenRTB request
Prebid turns each adUnit into an OpenRTB imp (impression) object: the sizes become banner.format, the mediaTypes become the imp’s media objects. The ortb2 and ortb2Imp fields let you attach first-party data (page context, audience signals) to the request, which good bidders use to value the impression.
Quick check
An advertiser only buys 300x250, but your adUnit lists only [728, 90]. Will they bid?
Note
Each bidder you add here should also be authorized in the page’s ads.txt. Track B3 and the Inspect tool make that connection.