Skip to content

Latest commit

 

History

History
404 lines (376 loc) · 9.66 KB

seat-non-bid.md

File metadata and controls

404 lines (376 loc) · 9.66 KB

Seat Non Bid Response

Sponsors: Xandr, Magnite, CafeMedia, Media.net

Overview

There’s an ongoing effort in the industry for exchanges to provide publishers with insights into why seats do not bid. Insights include reasons why the exchange did not request a bid from a seat, why a seat did not bid, and why a bid was considered invalid. Publishers want to use this information to learn how to improve performance and increase efficiency.

This proposal introduces an extension on the BidResponse object to enable each seat to provide a reason for not bidding, or for the exchange to provide a reason for not requesting a bid or rejecting a bid from a particular seat.

Why Something New

The OpenRTB 2.x BidResponse object defines the nbr field to provide one reason for not bidding. There's no structure defined to convey granular information when some seats bid and others do not.

The Bid object cannot be extended for non bid scenarios since it constitutes an offer to buy an impression and requires a price. Similarly, the SeatBid object cannot be extended as it requires at least one Bid.

Considerations

Exchanges and publishers who do not wish to emit or act upon these insights may choose to ignore this extension. Exchanges may provide an option to publishers for including this level of detail.

There are many reasons for a non bid scenario and it is understood not all can be included in a standardized enumeration. Exchanges may use 500+ values to define their own reason codes as appropriate.

Specification

Example Bid Response

{
    "id": "1234567890",
    "ext": {
        "seatnonbid": [{
            "seat": "512",
            "nonbid": [{
                "impid": "102",
                "statuscode": 301
            }]
        }]
    }
}

Object: BidResponse

Attribute Type Description
ext.seatnonbid object array Optional array of SeatNonBid objects.

Object: SeatNonBid

Attribute Type Description
nonbid object array; required Array of 1+ NonBid objects each related to an impression. Multiple non bids may relate to the same impression.
seat string ID of the buyer seat (e.g., advertiser, agency) on whose behalf this bid is made.
ext object Placeholder for future extensions.

Object: NonBid

Attribute Type Description
impid string; required ID of the Imp object in the related bid request.
statuscode integer; required Reason for non bid. Refer to the Non Bid Status Codes list in this document.
ext object Placeholder for future extensions.

List: Non Bid Status Codes

Value Description
0 No Bid - General
1 No Bid - Internal Technical Error
2 No Bid - Invalid Request
3 No Bid - Known Web Crawler
4 No Bid - Suspected Non-Human Traffic
5 No Bid - Cloud, Data Center, or Proxy IP
6 No Bid - Unsupported Device
7 No Bid - Blocked Publisher or Site
8 No Bid - Unmatched User
9 No Bid - Daily User Cap Met
10 No Bid - Daily Domain Cap Met
11 No Bid - Ads.txt Authorization Unavailable
12 No Bid - Ads.txt Authorization Violation
13 No Bid - Ads.cert Authentication Unavailable
14 No Bid - Ads.cert Authentication Violation
15 No Bid - Insufficient Auction Time
16 No Bid - Incomplete SupplyChain
17 No Bid - Blocked SupplyChain Node
100 Error - General
101 Error - Timeout
102 Error - Invalid Bid Response
103 Error - Bidder Unreachable
200 Request Blocked - General
201 Request Blocked - Unsupported Channel (app/site/dooh)
202 Request Blocked - Unsupported Media Type (banner/video/native/audio)
203 Request Blocked - Optimized
204 Request Blocked - Privacy
300 Response Rejected - General
301 Response Rejected - Below Floor
302 Response Rejected - Duplicate
303 Response Rejected - Category Mapping Invalid
304 Response Rejected - Below Deal Floor
350 Response Rejected - Invalid Creative
351 Response Rejected - Invalid Creative (Size Not Allowed)
352 Response Rejected - Invalid Creative (Not Secure)
353 Response Rejected - Invalid Creative (Incorrect Format)
354 Response Rejected - Invalid Creative (Malware)
355 Response Rejected - Invalid Creative (Advertiser Exclusions)
356 Response Rejected - Invalid Creative (Advertiser Blocked)
357 Response Rejected - Invalid Creative (Category Exclusion)
500+ Vendor-specific codes.

Advertiser Exclusions vs Advertiser Blocked: "Exclusion" refers to scenarios of competitive separation, while "Blocked" refers to publisher driven block lists.

Non Bid Status Codes Guidance

  • Exchanges are encouraged to provide as much detail as possible, but it is acceptable to use the general codes (0, 100, 200, 300) when details aren't known.

  • The values 1-17 intentionally overlap with the OpenRTB 3.0 No-Bid Reason Codes such that seats which provide a nbr can easily mapping to a statuscode.

Non Bid Status Code values are purposefully organized into the following ranges to assist with high level classification:

Range         Description                  Interpretation Action
0-99 No Bid Auction ran successfully without demand for the impression. Seats with low demand may be re-evaluated or optimized.
100-199 Error Technical problem occurred during the auction. Seat may need investigation to determine root cause.
200-299 Request Rejected Impression was explicitly not sent to the seat. Bid Request should be re-evaluated for unsupported impressions. May be expected due to exchange configuration.
300-399 Response Rejected Seat responded with a bid that was rejected by the exchange. Seat may need to resolve.