Browse the help center

Release 151

Header bidding — sell your inventory through Prebid.js on pages and Prebid Server or Prebid Mobile in apps, with a tag you edit in the account, five ready-made integration hand-overs, video, native and full-screen slots, other bidders and aliases on the same tag, a Header Bidding fill report, and a Traffic Source dimension and targeting rule that tell header-bidding traffic apart.

Reference network manager admin Account → Header Bidding

Release 151 is the header-bidding release. A publisher’s inventory can now be sold ahead of Google Ad Manager instead of behind it, on a web page through Prebid.js and in an app through Prebid Server and Prebid Mobile — and the whole integration is a tag you build in the account and hand over, with nothing for the publisher to re-install when it changes. Around it: video, native and full-screen slots that bid the same way, other bidders and aliases on the same tag, a report that says who filled each slot, and a Traffic Source dimension that keeps header-bidding numbers apart from ordinary tag traffic.

Three things to act on.

Five new permissions arrive switched off for every role — Set Advertiser Domain, the Traffic Source report grant, the two Traffic Source targeting grants and the Header Bidding report type. Nothing is taken away, but the fields and reports they gate stay invisible until an admin grants them. The Header Bidding tab itself is granted to roles that already hold Inventory Update = All.

A publisher who already runs their own Prebid or a Prebid Server needs a header-bidding tag listing their placements before this release reaches your network. Bids are answered only for placements an active tag sells — the placement key alone no longer does it.

Set the Advertiser domain on your advertisers once you hold the permission: every bid Epom makes now names the advertiser to the buyer, and a bid that names nobody is the one buyers cannot match against their lists.

New features

Sell inventory through header bidding

Open Account → Header Bidding, create a tag for a site, and add a slot for each ad position: which placement it is, which ad units it accepts, and — if the page already has one — the Google ad unit path the win should be handed to. The Code tab then hands over exactly what the publisher needs, split by who owns what: our Prebid.js on their page (bringing Prebid and the Google slots, or adopting the slots the page already defines), their Prebid.js with our adapter, our Prebid Server, their Prebid Server with our stored requests, or their Prebid Server with our adapter alone. Every slot has a fixed id of the form {network}-{slot} that an app sends as its configId. Epom bids the net price the publisher earns, only in the sizes the slot asked for, and a sold campaign’s bid carries a deal marker so one Sponsorship line item in Google Ad Manager makes Google step aside exactly when Epom wins. Full guide: Header bidding, with the five hand-overs under When the buyer runs a Prebid Server.

Working reference apps for iOS and Android, wired to the shared server, are one click from the editor: epom/epom-prebid-mobile-demo.

Video, native and full-screen slots bid too

A Video placement bids VAST and hands an instream win to the publisher’s own player; a Native placement answers the assets the page asked for and renders them in place; and a Non-standard placement answers an app’s interstitial or rewarded request at the size of the screen. A slot marked Rewarded — available on Non-standard and Video slots alike — tells the app’s SDK to hold the ad until the reward is earned: a video to its end, a playable until it says so. One slot carries one kind of creative, so a rewarded video and a rewarded playable are two slots with two ids. See Video and native slots and Full-screen and other Non-standard slots.

Other bidders and aliases on the same tag, and a supply chain

A slot can carry other Prebid bidders beside Epom — pick the partner, paste its parameters — and the same adapter can appear twice under an alias, which is how one page reaches two Epom deployments. Resellers declare a supply chain from two fields, a seller domain in white-label settings and a seller ID per site. See Other bidders on your tag and Reselling: the supply chain.

The Header Bidding report: who filled each slot

A new Header Bidding report type in Analytics shows, per placement, zone, site and country, the Fill Source — Epom’s own bid, the ad server’s, its backfill, a partner’s bidder code, or unfilled — with Fills, Unfilled, Fill Rate, Gross and eCPM Gross, down to the hour. A fill Google made never touches placement limits, pacing or publisher payments. Behind the permission Analytics Report Type Header Bidding. See Reporting.

Traffic Source: report and target header-bidding traffic apart

Impressions and clicks won through header bidding land in the logs as Traffic Source = Header Bidding. Group or filter the Advanced report and the Impressions and Clicks logs by it, and target on it at all six levels — a campaign that runs only on header-bidding traffic, or a placement that keeps it out. Each is a separate permission, off until granted. See Analytics dimensions and Targeting dimensions.

The advertiser’s own domain on every bid

An advertiser now carries an Advertiser domain (Advanced settings on the advertiser card), published as adomain on every bid Epom makes — the value every buyer matches against its block lists. Left empty on a creative bought from a DSP partner, the domain that partner declared is used. It is deliberately not derived from the creative’s landing link, which is usually a click tracker. Behind the permission Set Advertiser Domain, off for every role until granted. See Advertisers and Who the bid names as the advertiser.

What each demand partner owes, on screen and over the API

Admin → Demand Partners → DSP Partners Analytics now carries Impressions, Clicks and Spend beside Requests / Bids / Wins, under the same Group by (date, partner, placement, country), the same date range and the same CSV export. Grouped by partner, one row is one invoice line — where working out the same figure used to mean running the standard report by creative and adding up by hand every OpenRTB banner that pointed at that partner’s endpoint.

Spend is the gross booked on the delivery the endpoint won, not the sum of its winning bids: an auction won by a creative that never rendered adds a Win and no money. It follows the partner’s own pricing model — impressions for CPM and CPI, clicks for CPC — which is why both counts sit beside it. Creatives deleted since still count; deleting the partner is what breaks the attribution, so invoice before deleting, or deactivate instead. The same rows are pullable for billing at GET /rest-api/rtb/dsp-analytics/search.do. See DSP partners.

Improvements

  • Bids only for placements a tag sells. The bid endpoint answers only placements an active header-bidding tag lists; anything else gets a plain no-fill. Deactivating a tag stops its bids within a minute. A publisher on their own Prebid or a Prebid Server therefore needs a tag listing their placements — see When a placement answers bids.

  • A redesigned tag editor — Slots, Tag settings and Code as three faces, a slot list with one open beside it, pickers that show a placement’s type and a bidder’s media types, and ad units filtered by placement type so a pre-roll is never offered a 300×250.

  • Refresh rules you set. Stop refreshing after N minutes idle (default never), Refresh only while the tab is in front (default on), Refresh only creatives on screen (now default off).

  • The placement’s channel and custom parameters ride every header-bidding route, so a network with a channel INCLUDE rule gets bids on its slots. See Channel and custom parameters.

  • The publisher’s bid floor is honoured before a bid is made, and passed on to Epom’s own DSP partners as an outside maximum, so nothing under it is answered or spends limits and pacing.

  • In-app requests read the app and device the way Prebid Mobile sends them — the app package for reports, the advertising id for capping (with the iOS vendor id when tracking is refused), and native’s markup version where OpenRTB puts it.

  • Rewarded placements send imp.rwdd to DSP partners, so a buyer can ask for rewarded inventory or avoid it; before, rewarded and interstitial looked the same on the wire.

  • Mandatory fields in the new UI carry the required marker — 36 fields the server enforces now say so before Save instead of after.

  • Creative sizes are no longer whitelisted per role. A size added in Custom sizes reaches every size drop-down as soon as it is saved; the Ad units checkbox section on the role editor is gone. What limits a size is its placement types and its Inventory side / Campaigns side flags — see Rules and defaults.

  • Export and Import are back on the targeting-preset grids. Domain Groups, IP Range Groups and Application Package Groups in the new UI carry the same two buttons the old grids had, so a preset list can be moved between networks again as a CSV. A file that cannot be read is reported on the file field instead of looking like an import that found nothing.

Bug fixes

  • A slot a DSP partner won was quoted at zero, so Prebid discarded the bid and slots that should have won were lost. The clearing price is now carried through.
  • Adopt mode verified on a live page — adopted slots that waited for the viewport were dropped and never bid; the publisher’s other slots were refreshed even where our hold never applied; a page with no Google tag produced no bids and no console output. All fixed.
  • Long channels and custom parameters no longer cost the bid. Caps of 64, 128/512 and 32 that the ordinary tag never had are gone.
  • The Ad tags Domain picker shows the placement’s serving domain again — it had collapsed to a chevron since the one-domain change in release 150; the saved domain was always applied.
  • A bid floor of 0.01 no longer refused by the browser when adding a floor — the form’s step was bounding the value, not sizing the arrows.
  • A banner bid floor above 999.999 is stored as entered instead of being clamped; all six bid-floor columns now hold the precision the form accepts.
  • Mass banner upload no longer fails or blanks the size. A creative whose dimensions match no ad unit returned a server error instead of a row, and in the new UI a detected size the drop-down did not offer left the cell empty with no explanation. The wizard now falls back to the placement type’s Custom size.
  • A value too long for its field now says which field. Two dozen length limits were not being checked, so an over-long value came back as “Internal server error” naming nothing. They are enforced again — and four of them were widened first: banner, campaign and placement names take 512 characters, template titles 255.
  • The dashboard no longer depends on the old dashboard page building. It used to read its widget layout out of that page’s rendered HTML, so anything that page could not build — an ad unit, a conversion action, a group-by list — took the whole dashboard down with a load failure and nothing behind it. The layout now comes from an endpoint of its own.
  • Five strings in the new UI showed English in every language. A conversion-funnel save error, the two reasons a column split is unavailable, and the date picker’s Now and Today were looked up under keys that existed in no translation bundle.

Under the hood

Platform upgrades and performance work — the header-bidding script on publisher pages is smaller. Header bidding needs a few values set by Epom before it works; they are listed under What Epom configures, so you can ask for them by name.

Related pages

Please disable Adblock
Are you using adblock? Disable it and reload the page to proceed to the destination page.

A registration has already been submitted from this page. Please try again in 10 minutes.