---
title: "Release 151"
description: "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."
type: "reference"
audience: [network-manager, admin]
keywords: [release 151, whats new, header bidding, prebid, prebid.js, prebid server, prebid mobile, epom_as, hb tag, slot id, configId, stored request, in-app, interstitial, rewarded, playable, native, video, traffic source, fill source, header bidding report, advertiser domain, adomain, bid floor, aliases, supply chain, schain, refresh rules, example apps]
ui_path: "Account → Header Bidding"
---

Fetch the complete documentation index at: https://epom.com/ad-server/docs/llms.txt. Use this file to discover all available pages before exploring further. Append .md to any documentation page URL to get its markdown version.

# Release 151

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](https://epom.com/ad-server/docs/guides/inventory/header-bidding.md), with
the five hand-overs under [When the buyer runs a Prebid Server](https://epom.com/ad-server/docs/guides/inventory/header-bidding-prebid-server.md#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](https://github.com/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](https://epom.com/ad-server/docs/guides/inventory/header-bidding-settings.md#video-and-native-slots) and
[Full-screen and other Non-standard slots](https://epom.com/ad-server/docs/guides/inventory/header-bidding-settings.md#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](https://epom.com/ad-server/docs/guides/inventory/header-bidding-settings.md#other-bidders-on-your-tag)
and [Reselling: the supply chain](https://epom.com/ad-server/docs/guides/inventory/header-bidding-settings.md#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](https://epom.com/ad-server/docs/guides/inventory/header-bidding-reporting.md#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](https://epom.com/ad-server/docs/reference/analytics-dimensions.md) and
[Targeting dimensions](https://epom.com/ad-server/docs/reference/targeting-dimensions.md).

### 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](https://epom.com/ad-server/docs/guides/advertising/advertisers.md) and
[Who the bid names as the advertiser](https://epom.com/ad-server/docs/guides/inventory/header-bidding-settings.md#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](https://epom.com/ad-server/docs/guides/admin/dsp-partners.md).

## 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](https://epom.com/ad-server/docs/guides/inventory/header-bidding-settings.md#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](https://epom.com/ad-server/docs/guides/inventory/header-bidding-settings.md#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](https://epom.com/ad-server/docs/guides/admin/rules-and-defaults.md).

- **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](https://epom.com/ad-server/docs/guides/inventory/header-bidding.md#what-epom-configures),
so you can ask for them by name.

## Related

- [Header bidding](https://epom.com/ad-server/docs/guides/inventory/header-bidding.md)
- [Advertisers](https://epom.com/ad-server/docs/guides/advertising/advertisers.md)
- [Analytics dimensions](https://epom.com/ad-server/docs/reference/analytics-dimensions.md)
- [Targeting dimensions](https://epom.com/ad-server/docs/reference/targeting-dimensions.md)
- [What's new in Epom Ad Server](https://epom.com/ad-server/docs/releases.md)
- [Release 152](https://epom.com/ad-server/docs/releases/release-152.md)
- [Release 150](https://epom.com/ad-server/docs/releases/release-150.md)