Developers

Works
with Prebid.

Zurla, a frontier model built for advertising, joins your Prebid auction as one more bidder. Your ad server keeps the final say, and you choose how much more Zurla runs: your price floors, or your whole Prebid setup.

Prebid auction zurla Your ad server Picks the winner
Your bidders bid Zurla joins as one more Your ad server picks

Header bidding, in plain words

Every buyer bids
at the same moment.

Header bidding asks several buyers for a price at once, as the page loads, before your ad server picks the winner. Prebid is the free, open-source code many sites use to run it: Prebid.js in the reader’s browser, or Prebid Server on a server.

Zurla joins that auction as one more bidder. Here’s one page view, start to finish.

  1. The page loads

    Prebid reads your ad units: each slot, its sizes and formats, and the bidders asked to fill it.

    Your ad units
  2. Buyers bid at once

    Every bidder in the ad unit gets the same request at the same moment and answers within your timeout.

    Zurla joins here
  3. Floors apply

    Bids under the slot’s price floor sit this auction out. Prebid’s Price Floors module can take its floors from Zurla.

    One floor per slot
  4. Your ad server picks

    Prebid hands the highest bid to your ad server, which weighs it against your direct campaigns.

    Your ad server decides
  5. The ad shows

    The winning ad fills the slot, and Prebid records who bid what, for your reports.

    Ad in its slot
Header biddingAlso called: pre-bidding
Asking several buyers for a price at once, as the page loads, before your ad server picks the winner.
Prebid.js
The open-source header bidding code that runs in the reader’s browser. Each buyer joins through its own bidder adapter.
Prebid Server
The same auction run on a server instead of in the browser, so pages stay light as more buyers join.
Ad unit
One ad slot in your Prebid setup: its code, sizes and formats, and the bidders asked to fill it. Zurla is a zurla entry in each.
Bidder adapter
The small piece of code that lets Prebid talk to one buyer. The Zurla adapter is coming to Prebid.js and Prebid Server.
Timeout
How long Prebid waits for bids, set by you. Zurla answers in under 100 ms, well inside it.
Price Floors module
Prebid’s optional module that sets the lowest bid each slot accepts. Point it at Zurla, and Zurla sets your floors.
Key-valuesAlso called: targeting keys
Short labels such as hb_pb=2.40 that tell your ad server a bid’s price, size and bidder.
Line items
Entries in your ad server, ranked by price and priority. Prebid line items match the key-values; your direct campaigns keep their own.

Three levels

Keep Prebid.
Tell Zurla how much to run.

Three levels, each adding to the last. Zurla bids at every level. At level 2 it sets your price floors; at level 3 it hosts your Prebid setup and runs its settings toward your goals. Your current buyers stay, and your ad server keeps the final say.

How much Zurla runs

Ask in the chat, or pick a level

  • Your current bidders stay in the auction.
  • Your ad server always picks the final winner.
Zurla · Pellbrook Media

We run Prebid with four buyers. Can you set our price floors and leave the rest alone?

Yes. I wrote the one setting that lets me set your floors (the lowest bid each slot accepts); your developer adds it once. From then on, each slot’s floor is the same for every bidder, me included.

  • Read a week of your Prebid bids, through the analytics setting you turned on
  • Wrote the floors setting for your Prebid setup
  • Set a $1.60 floor on the sidebar
  • Testing on 20% of page views · undo in one click

Level 2 · Floors set by ZurlaYour bidders and timeouts unchanged

Ask Zurla about your Prebid setup

Illustrative data · bids per 1,000 views

Level 1

Zurla as a bidder

Zurla joins Prebid.js or Prebid Server as a bidder, with a ‘zurla’ entry in each ad unit. It bids on your banner and native slots with premium demand and the private deals you set up through Zurla. Your setup decides everything else.

Level 2

Zurla sets your floors

Point Prebid’s Price Floors module at Zurla. It’s one setting, if your Prebid build includes the module. Zurla then sets the lowest bid each slot, size and format accepts, toward your goals, with no code release.

Level 3

Zurla runs your header bidding

Zurla hosts your Prebid build and its settings: timeouts, which buyers are asked, refresh rules. Same ad units, same ad server line items. Zurla tunes all of it toward your goals and asks before dropping any buyer.

AuctionsSame rules for every buyerAt every level, every bidder in your auction meets the same floor and the same rules, Zurla included. The full rules are on the Auctions page.

Prebid.js or Prebid Server

In the browser or on a server.
Zurla bids in both.

Prebid.js runs the auction in the reader’s browser. Prebid Server runs it on a server, so pages stay light as more buyers join. Zurla joins either one, and both reach the same buyers, work toward the same goals and land in the same reports.

Prebid.js Prebid Server Buyers Prebid.js Prebid Server Buyers
  • Same buyers
  • Same goals
  • Same safety rules
  • Same reports
  • Bids in under 100 ms

In the browser

Prebid.js

Once the Zurla adapter is in your Prebid build, add a ‘zurla’ entry to each ad unit. Your other bidders stay as they are.

{ bidder: 'zurla', params: { … } }

On a server

Prebid Server

Already on Prebid Server? Add ‘zurla’ to the bidders list in your existing server setup, so pages stay light as more buyers join.

bidders: [ …, 'zurla' ]

See the code for both

OpenRTB 2.6Your own auction, no PrebidPublishing groups with an in-house auction can send bid requests in OpenRTB 2.6, banner and Native 1.2, straight to Zurla.

For your developers

Zurla marks the lines.
You add them once.

Ask Zurla what to add. It marks the ‘zurla’ entries in your ad units and keeps your consent settings as they are, so your developers add a few lines once. At levels 2 and 3, Zurla’s floors and settings change after that with no code release.

Zurla · Pellbrook Media

We run Prebid. What do we add?

Once the Zurla adapter is in your Prebid build (it’s coming to Prebid.js and Prebid Server), add a ‘zurla’ entry in each ad unit. I’ve marked them; the rest of your setup stays as it is.

  • Marked the ‘zurla’ entry in your sidebar unit
  • Marked the ‘zurla’ entry in your native unit
  • Kept your consent settings: IAB TCF v2.3 and GPP (US state privacy choices)
  • Your ads.txt line is ready in your account, marked DIRECT

Prebid lines marked2 lines to add, plus 1 in ads.txt

Ask Zurla what to add

Illustrative data

Marked by Zurla
// Illustrative: the Zurla adapter is coming to Prebid.js and
// Prebid Server; bidder code and params are placeholders.
// Already run Prebid? Add the marked 'zurla' entries to your
// ad units; everything else stays as it is today.
var pbjs = pbjs || {};
pbjs.que = pbjs.que || [];
var adUnits = [{
  code: 'sidebar',
  mediaTypes: { banner: { sizes: [[300, 250], [300, 600]] } },
  bids: [
    { bidder: 'yourBidder', params: { /* as today */ } },
    { bidder: 'zurla', params: { publisherId: 'ZRL-000000' } }
  ]
}, {
  code: 'home-feed-2',
  mediaTypes: { native: { ortb: { assets: [
    { id: 1, required: 1, title: { len: 90 } },
    { id: 2, required: 1, img: { type: 3, wmin: 600, hmin: 314 } },
    { id: 3, required: 1, data: { type: 1 } }   // advertiser name
  ] } } },
  bids: [
    { bidder: 'yourBidder', params: { /* as today */ } },
    { bidder: 'zurla', params: { publisherId: 'ZRL-000000' } }
  ]
}];
pbjs.que.push(function () {
  pbjs.setConfig({
    // needs the consentManagementTcf and consentManagementGpp modules
    consentManagement: {   // wait times in ms: your settings
      gdpr: { cmpApi: 'iab', timeout: 3000 },   // IAB TCF v2.3
      gpp:  { cmpApi: 'iab', timeout: 3000 }    // GPP, including US states
    }
  });
  pbjs.addAdUnits(adUnits);
  pbjs.requestBids({
    bidsBackHandler: function () { /* send bids to your ad server, as today */ }
  });
});
// Illustrative: Zurla sets your floors through Prebid's
// Price Floors module; the URL and fallback values are placeholders.
var pbjs = pbjs || {};
pbjs.que = pbjs.que || [];
pbjs.que.push(function () {
  pbjs.setConfig({
    floors: {
      auctionDelay: 60,   // placeholder: wait up to 60 ms
      endpoint: { url: 'https://floors.zurla.com/v1/ZRL-000000.json' },
      data: {   // fallback values, used until Zurla's floors arrive
        currency: 'USD',
        schema: { fields: ['mediaType'] },
        values: { banner: 0.30, native: 0.40 }
      }
    }
  });
});
// Illustrative: the Zurla adapter is coming to Prebid.js and
// Prebid Server; bidder code and params are placeholders.
// Already on Prebid Server? Add 'zurla' to your bidders list.
var pbjs = pbjs || {};
pbjs.que = pbjs.que || [];
pbjs.que.push(function () {
  pbjs.setConfig({
    s2sConfig: [{
      accountId: 'YOUR_PBS_ACCOUNT',
      bidders: ['yourBidder', 'zurla'],   // plus 'zurla' in each ad unit
      adapter: 'prebidServer',
      enabled: true,
      endpoint: 'https://pbs.example.com/openrtb2/auction',
      syncEndpoint: 'https://pbs.example.com/cookie_sync',
      timeout: 500   // your Prebid Server timeout, in ms (your setting)
    }]
  });
});
Zurla’s bidderJavaScript · 40 linesMarked by Zurla

Illustrative. Bidder code, params and endpoints are placeholders until the Zurla adapter is released; your real IDs come with your account. Ask us about the adapter 

  1. 01

    Add Zurla to your ad units

    Once the Zurla adapter is in your Prebid build, add a ‘zurla’ entry to each ad unit, or to the bidders list on Prebid Server. Zurla marks every line.

  2. 02

    Add Zurla’s line to ads.txt

    One line marked DIRECT tells buyers Zurla may sell your ad space. More on ads.txt and sellers.json.

  3. 03

    Tell Zurla your goals

    Revenue, page speed, direct sales, brand safety. Say what matters, in plain words.

  4. 04

    Choose your level

    Start as a bidder. Add floors or hosted Prebid when you’re ready: each change starts as a test on a share of page views and can be undone in one click.

Google Ad Manager

Your ad server
still picks.

Zurla’s bids reach Google Ad Manager the way every Prebid bid does: as standard key-values that your Prebid line items match. Your own direct campaigns keep the priority you set, and Ad Manager picks the winner.

Zurla · Pellbrook Media
Ask Zurla about your ad server
Google Ad Manager with Zurla in your Prebid setup: your direct campaigns and your Prebid line items, the key-values Prebid sends when Zurla wins, and the steps Zurla runs before it bids.
Your ad serverGoogle Ad Manager
  1. Your direct campaignsPriority you set
  2. Prebid line itemsMatched on hb_pb

Key-valuesWhen Zurla wins

hb_bidder=zurla
Who bid
hb_pb=2.40
The bid’s price bucket, per 1,000 views
hb_size=300x250
The ad’s size
hb_adid=7a3f9c01
The ad to show
hb_deal=ZRL-DEAL-0001
Sent when one of your private deals wins
Before Zurla bids
  • Consent
  • Checks
  • Price
One request, step by step

Illustrative data

Questions

Good to know.

Plain answers for teams that run Prebid today.

Do we have to replace our Prebid setup?

No. Zurla works with Prebid: it joins the auction you already run as one more bidder. Your bidders, your ad units and your ad server stay as they are, and you choose whether Zurla also sets your floors or hosts your setup.

Is the Zurla adapter in Prebid yet?

It’s coming to Prebid.js and Prebid Server. The code on this page shows what you’ll add; bidder code and params are placeholders until it’s released. Ask us about the adapter.

Will Zurla slow down our auction?

No. Zurla answers in under 100 ms, well inside the timeout you set. If Zurla hosts your Prebid setup, it runs the timeouts itself, inside the speed budget you set.

We sell our own campaigns in Google Ad Manager. Does that still work?

Yes. Zurla competes inside Google Ad Manager through price-priority line items keyed to its bid, the way header bidding works. Your own campaigns keep the priority you set.

Does it work with our consent tool?

Yes. Your Prebid consent settings pass each reader’s choices to Zurla: IAB TCF v2.3 for readers in Europe and the UK, and GPP for US state privacy choices. Without consent for personalized ads, Zurla chooses ads from the page, not the person. More on Consent and privacy.

Can Zurla drop one of our bidders?

At levels 1 and 2, no: your bidders are yours to manage. At level 3, Zurla asks before dropping any buyer, keeps a full auction log by bidder, and one click switches back.

What does Zurla bid on?

Your banner and native slots, with premium demand and the private deals you set up through Zurla. When one of those deals wins, Prebid sends its deal ID to your ad server with the other key-values.

Who runs Prebid day to day?

It depends on the level you choose. At level 1, your team runs Prebid as it does today, and at level 2 Zurla also sets the floors. At level 3, Zurla hosts your Prebid setup and runs the floors, buyers, timeouts, tests and reports, while your team keeps the final say. Every change that affects revenue starts on a share of page views and can be undone in one click. See who does what, team by team.

We run our own auction, not Prebid. Can we connect?

Yes. Publishing groups with an in-house auction can send OpenRTB 2.6 bid requests, banner and Native 1.2, straight to Zurla. More on OpenRTB 2.6.

Are the numbers on this page real?

Every bid, floor and key-value here is illustrative, and the code uses placeholder IDs and endpoints. Your own numbers show up in the chat and in your reports.

Keep Prebid. Add Zurla.

Start as one more bidder in the auction you run today. Hand Zurla your floors or your whole Prebid setup when you’re ready: each change starts as a test on a share of page views, and any change can be undone in one click.

Zurla
Ask Zurla