---
title: "Sell premium inventory through PMP private deals"
description: "End-to-end recipe for private marketplace deals — negotiate terms, attach deals to a campaign, control the auction with deal floors and private auction, and measure delivery per deal."
type: "howto"
audience: [network-manager, admin]
keywords: [PMP, private marketplace, deal, deal ID, buyer seat, private auction, bid floor, first price, second price, fixed price, programmatic direct]
ui_path: "Account → Advertisers → advertiser → campaign → RTB PMP deals"
---

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.

# Sell premium inventory through PMP private deals

A buyer on a DSP wants guaranteed access to your inventory at negotiated terms — a
fixed price for a homepage takeover, a preferred floor for a premium video slot, or
first look before the open auction. A **PMP (private marketplace) deal** formalizes
that agreement: you record the deal terms on a campaign, the platform carries them in
every bid request that campaign sends, and bids referencing the deal get the
negotiated handling. This recipe covers the whole path — negotiation inputs, setup,
auction behavior, and how to measure delivery per deal.

## Who this is for

Network managers running programmatic demand. The campaign's **RTB PMP deals** card is off for
every role out of the box — ask your network administrator to switch it on for your role. The underlying DSP
partner is configured by your network administrator.

## Prerequisites

- A working programmatic pipe to the buyer's DSP: partner configured, an OpenRTB
  banner in a campaign, bids flowing. If you don't have that yet, do
  [Plug programmatic DSP demand](https://epom.com/ad-server/docs/use-cases/programmatic-dsp-demand.md) first — deals ride on
  the bid requests that campaign's OpenRTB banners generate.
- Terms agreed with the buyer (usually via the DSP's deal workflow). You need four
  facts from them: the **deal ID** string, the **buyer seat ID**, the **floor price**,
  and the **auction type** — plus which countries the deal covers.

## Steps

1. **Dedicate a campaign to the deal.** Deals attach at campaign level and reports
   have no per-deal dimension — one campaign per deal (with its own OpenRTB banners
   for the partner) is what makes the deal measurable later. Targeting, capping and
   linking on that campaign also become the deal's delivery controls: link only the
   placements the deal covers, target only the agreed geography.
2. Open **Account → Advertisers → advertiser → campaign** and find the **RTB PMP deals**
   card. Switch it **on**.
   ![Campaign PMP deals card with the private auction toggle and a deal row](https://epom.com/docs-images/ad-server/pmp-private-deals/pmp-deals-card.webp)
3. Click **Add** and enter the negotiated terms:
   ![Add PMP deal modal with deal terms fields](https://epom.com/docs-images/ad-server/pmp-private-deals/pmp-deal-modal.webp)

   | Field | What it does |
   |---|---|
   | Deal ID | The external deal string both sides reference — must match what the buyer's DSP sends back in its bids. |
   | Buyer ID | The buyer's seat ID. Bids on this deal must come from this seat. |
   | Country | The country this deal row applies to, or **Global** (`*`). A deal row is attached to a bid request only when the request's country matches — add one row per country, or a Global row. |
   | Auction type | *First price*, *Second price* or *Bid floor price* — see step 4. |
   | Bid floor | The negotiated minimum price for this deal. |

4. **Pick the auction type to match the commercial agreement:**
   - **First price** — the buyer pays their bid (any bid at or above the deal floor
     is accepted). Use for standard preferred deals.
   - **Second price** — the win clears one cent above the higher of the runner-up bid and
     the deal floor, and never above the winner's own bid; a winner with no competition clears
     one cent above the deal floor. Use when the buyer negotiated second-price billing.
   - **Bid floor price** — a **fixed-price deal**: whatever the buyer bids, the win clears
     at exactly the deal floor. This is the "homepage takeover at $X CPM" option.
5. **Private auction** (optional): switch the toggle on to accept **only deal bids**
   on this campaign — open-auction bids from the same partner are rejected. Leave it
   off to let deal bids and open bids compete side by side.
6. **Verify delivery.** Ask the buyer to activate the deal on their side, then check
   **Admin → Demand partners (DSP) → DSP partners analytics** for Requests / Bids / Wins on
   the partner (administrator view), and the campaign's own impression numbers in the
   account area.
7. **Report on the deal.** Because the campaign *is* the deal (step 1), run any
   [report](https://epom.com/ad-server/docs/guides/analytics/run-report.md) grouped by campaign — impressions,
   revenue and eCPM of that campaign are the deal's delivery and yield. Deals can
   also be managed over the [REST API](https://epom.com/ad-server/docs/api/network-and-misc.md).

## How the auction treats deal bids

Understanding this saves most support conversations with buyers:

- A bid referencing your deal ID is matched against the deal terms: the **seat must
  match the Buyer ID** and the **price must meet the deal floor** — otherwise the bid
  is rejected outright.
- A valid deal bid **skips the open-auction floor check**. The deal floor replaces
  your placement/site bid floors — a deal negotiated below your open floor still
  clears. That is intentional: the deal terms are the contract.
- With **Private auction** on, bids that don't reference a valid deal are rejected —
  the campaign becomes deal-only.

## Corner cases and gotchas

> **Corner case:** with **Private auction** on and only country-scoped deal rows, the
> platform sends **no bid request at all** for traffic outside those countries — a
> private auction with no eligible deals is an invalid request, so it is dropped
> before sending. If the buyer reports missing volume, check the deal's Country rows
> against the traffic mix first.

> **Corner case:** country matching is exact. When geo lookup fails for a request,
> country-scoped deal rows are not attached — only a **Global** row keeps the deal in
> play on unresolvable traffic. If the deal must always ride along, give it a Global
> row.

> **Corner case:** the deal floor **overrides** your open-auction floors, in both
> directions. A generous placement Bid Floor does not protect you from a deal you
> priced too low — the deal clears at deal terms.

> **Corner case:** a buyer bidding with the right deal ID but from a **different
> seat** than the Buyer ID you entered is rejected as an invalid deal bid. Seat IDs
> change more often than deal IDs on the buyer side — when a previously delivering
> deal suddenly goes quiet, re-confirm the seat first.

> **Corner case:** there is no per-deal dimension in analytics reports. If you attach
> several deals to one campaign, their delivery blends into one set of numbers — the
> one-campaign-per-deal pattern in step 1 is the only way to keep deals separately
> measurable.

## Per-role notes

- **Network manager:** the **RTB PMP deals** card appears once your network administrator switches it on for
  your role. Advertiser-role campaigns do not carry it.
- **Admin:** the DSP partner and partner-level analytics are in the admin area.
- **Can view share:** deals display read-only; changing one needs **Can edit**.

## Related

- [Plug programmatic DSP demand](https://epom.com/ad-server/docs/use-cases/programmatic-dsp-demand.md)
- [Configure DSP partners](https://epom.com/ad-server/docs/guides/admin/dsp-partners.md)
- [OpenRTB (DSP) banners](https://epom.com/ad-server/docs/guides/advertising/banner-openrtb-dsp.md)
- [Create and edit a campaign](https://epom.com/ad-server/docs/guides/advertising/campaigns.md)
- [PMP deals over the REST API](https://epom.com/ad-server/docs/api/network-and-misc.md)
- [Run a report](https://epom.com/ad-server/docs/guides/analytics/run-report.md)
- [PMP deals on a campaign](https://epom.com/ad-server/docs/guides/advertising/pmp-deals.md)
- [Epom PMP deal types compared](https://epom.com/ad-server/docs/guides/advertising/pmp-deal-types-compared.md)