Auction and Pricing Model

Overview

Whenever a shopper loads a page on your site, MCM runs a real-time auction to decide which ads appear and how they are priced. This page explains that process at a high level: how campaigns bid for each opportunity, how competing bids are ranked against each other, and how winning campaigns are billed.

Bid and value prices

MCM tracks a few prices for each auction:

  • valuePrice — how much a billing event is worth.
    • For campaigns on manual bidding, the advertiser sets this directly at campaign creation.
    • For campaigns on smart bidding, it represents how much a billing event is worth to the campaign, and it is adjusted dynamically by the bidding system to achieve campaign goals such as target ROAS.
  • bidPrice — a normalized value used to rank bids across cost types.
  • winningPrice (also called the clearing price) — how much a winning ad is charged. It is derived from the winner's valuePrice and the auction rules.

Cost types

Cost type is configured per platform and ad type. It determines both the billing event and how prices are calculated.

Cost typeBilling event
CPM — cost per mille (1,000 impressions)Impressions
CPC — cost per clickClick
CPP — cost per purchaseAttributed purchase

CPM

valuePrice = CPM bid / 1,000
bidPrice   = valuePrice

No probability conversion is required, because both ranking and billing are impression-based.

CPC

valuePrice = CPC bid
bidPrice   ~= pCTR x valuePrice

Including the predicted click-through rate (pCTR) allows a more relevant ad to outrank an ad with a higher CPC bid but lower expected engagement. In practice, variations of this core formula may be used to further improve overall auction quality.

CPP

bidPrice ~= pCTR x pCVR x commission rate x item value

CPP pricing is finalized later, when purchase events are attributed.

CPT (cost per time) is only defined for the Reserved Display ad type and is outside the scope of this auction model.

Auction types

After candidates are ranked by bidPrice, the auction type determines what each winner pays.

First-price auction

Each winner pays its full value price:

winningPrice = valuePrice

Second-price auction

MCM uses a generalized second-price auction. Each winner pays a price informed by the next-highest bid. Because ranking happens in bidPrice space while charging happens in valuePrice space, the winning price is:

winningPrice = valuePrice(winner) x secondPriceDiscount

secondPriceDiscount = bidPrice(runner-up) / bidPrice(winner)

This means the amount charged depends on both bids and their quality scores, so it can be slightly below or above the runner-up's raw bid depending on relative quality. This is different from a simple second-price auction that would just charge the second-highest bid.

Platform pricing controls

Platforms can enforce price range controls at two stages:

  • Bidding-stage price range — applied to valuePrice. Manual bids outside the range are rejected; smart-bidding values are clipped to the minimum or maximum.
  • Auction-stage floor — applied to winningPrice. A calculated price below the minimum CPC or CPM is raised to that floor.

Today, MCM exposes a single platform price range, which is used for both controls.

End-to-end flow

  1. Bidding — Calculate valuePrice and bidPrice, enforcing the platform pricing control.
  2. Auction (ranking and pricing) — Sort candidates by bidPrice, highest first, apply first- or second-price rules, then enforce the minimum CPC or CPM.
  3. Billing — Charge the winning price when the billing event occurs. CPP is priced later during attribution.
  4. Reporting — Report the charged amount through effective average rates:
    • Effective CPM = total spend / impressions x 1,000
    • Effective CPC = total spend / clicks

Worked examples

CPM example

Platform minimum CPM: 100, equivalent to a per-impression minimum price of 0.10.

BiddervaluePricebidPriceRankwinningPrice (first-price)winningPrice (second-price)
10.200.2030.200.10
20.300.3020.300.20
30.400.4010.400.30

Under a first-price auction, each bidder pays its full valuePrice: Bidder 3 pays 0.40, Bidder 2 pays 0.30, Bidder 1 pays 0.20.

Under a second-price auction:

  • Bidder 3: winningPrice = 0.30
  • Bidder 2: winningPrice = 0.20
  • Bidder 1: no lower-ranked bid, so it is charged the minimum CPM (per-impression minimum price of 0.10) when last-bid discounting is enabled.

CPC example

Platform minimum CPC: 2. Here bidPrice = valuePrice x pCTR.

BiddervaluePricepCTRbidPriceRankwinningPrice (first-price)winningPrice (second-price)
1100.2%0.023102
282.0%0.16282
383.0%0.24185.33

Under a first-price auction, each bidder pays its full valuePrice: Bidder 3 pays 8, Bidder 2 pays 8, Bidder 1 pays 10.

Under a second-price auction:

  • Bidder 3: 8 x 0.16 / 0.24 = 5.33
  • Bidder 2: 8 x 0.02 / 0.16 = 1, raised to the minimum CPC of 2
  • Bidder 1: no lower-ranked bid, so it is charged the minimum CPC of 2 when last-bid discounting is enabled.


Did this page help you?