Supply Chain Object Module

Service Providers who manage Prebid wrappers on behalf of multiple publishers and handle payments to the publishers need to declare their intermediary status in the Supply Chain (a.k.a SChain) object. The IAB OpenRTB SupplyChain Object Specification prohibits SSPs from adding upstream intermediaries, so publishers or Prebid.js managed service providers need to specify schain information.

Two modes are supported:

  • Global Supply Chains
    Use this configuration when the Prebid.js implementation is managed by an entity that needs to add an SChain node to every bid request. i.e. payments flow through this entity for all traffic.

  • Bidder-Specific Supply Chains
    Use this configuration when one or more bid adapters is an entity (such as a reseller) that requires an SChain node, but other adapters do not require the node. e.g. payments flow through a bidder that doesn’t add its own schain node.

How to Use the Module

First, build the schain module into your Prebid.js package:

gulp build --modules=schain,...

The module performs validations on the schain data provided and makes it available to bidder adapters on the bidRequest object.

Global Supply Chains

Call setConfig with the schain object to be used:

pbjs.setConfig({
  "schain": {
    "validation": "strict",
    "config": {
      "ver":"1.0",
      "complete": 1,
      "nodes": [
        {
          "asi":"indirectseller.com",
          "sid":"00001",
          "hp":1
        }
      ]
    }
  }
});

Bidder-Specific Supply Chains

This method uses the pbjs.setBidderConfig function, with a syntax similar to the global scenario above.

pbjs.setBidderConfig({
  "bidders": ['bidderA'],   // can list more bidders here if they share the same config
  "config": {
    "schain": {
      "validation": "relaxed",
      "config": {
        "ver":"1.0",
        "complete": 1,
        "nodes": [
          {
            "asi":"bidderA.com",
            "sid":"00001",
            "hp":1
          }
        ]
      }
    }
  }
});

You can find more information about the pbjs.setBidderConfig function in the Publisher API Reference.

Global and Bidder-Specific Together

Yes, you can set both global and bidder-specific SChain configs. When together, the schain config setup via pbjs.setConfig acts as a global config that applies to all your bidders, while pbjs.setBidderConfig overrides the global config for the noted bidder(s).

SChain Config Syntax

SChain Param Scope Type Description Example
validation optional string 'strict': In this mode, schain object will not be passed to adapters if it is invalid. Errors are thrown for invalid schain object. 'relaxed': Errors are thrown for an invalid schain object but the invalid schain object is still passed to adapters. 'off': No validations are performed and schain object is passed as-is to adapters. The default value is 'strict'. ‘strict’
config required object This is the full Supply Chain object sent to bidders conforming to the IAB OpenRTB SupplyChain Object Specification. (See examples above)

Adapter Information

Adapters can read the bidRequest.schain object and pass it through to their endpoint. The adapter does not need to be concerned about whether a bidder-specific schain was provided; the system will provide the relevant one.

Adapters Supporting the schain Module

33Across
9 Media Online
Aardvark
AAX
Aceex
AcuityAds
Adagio
Adbite
AdBookPSP
AdformOpenRTB
AdKernel
Adlivetech
AdMixer
adOmega
Adot
Adquery
adsolut
Adtarget
Adtelligent
AdTrue
AdView
Adyoulike
AlgoriX
Alkimi
AMX RTB
AndBeyond.Media
ANIVIEW
Apacdex
AppNexus
Adserver.Online
Audience Media
AudienceRun
Avantis Video
Avocet
BCM
Beachfront
Between
Bidmachine
BidMyAdz
Bidstack
Bidsxchange
BigRichMedia
BizzClick
Blue
Blue Billywig
Bright Mountain Media
Brave
Brightroll
Caroda
CatapultX
Colossus
Colossus
Compass
ConnectAd
Consumable
ContentExchange
Converge-Digital
Criteo
DataBlocks
Denakop
Dianomi
diDNA Video
DisplayioAds
DistrictmDMX
DistroScale
Duration Media
E-volution tech
Edge Query X
EMX Digital
EngageADX
Epsilon
eRGADX
felixads
Fidelity Media
fluct
freeWheelssp
FutureAds
Gamoshi
Globalsun
Goldbach
gothamads
TheMediaGrid
GroupM
GumGum
Haxmedia
Head Bidding
HouseOfPubs
iionads
Impactify
Improve Digital
InfyTV
InMobi
Insticator
IQzone
IronSource
Index Exchange (Prebid Server)
Index Exchange (Prebid.js)
JANet
Justpremium
Krushmedia
Kubient
Kueez
KueezRTB
Limelight Digital
Livewrapped
LKQD
LockerDome
Logan
LunamediaHB
LuponMedia
Marsmedia
MathildeAds
MediaFuse
Mediakeys
Media.net
MediaSquare
MinuteMedia
Mobfox_PB
MobileFuse
Motionspots
Newspass ID
Nexx360
Nobid
Orangeclickmedia
One Fifty Two Media
One Fifty Two Media Server
OneTag
OpenWeb
OpenWeb Video
OpenX
OperaAds
ottadvisors Video
Ozone Project
PGAM
PGAM MEDIA
Piximedia
Playwire
Prisma
pubGENIUS
PubMatic
PubNative
Pub-X
PulsePoint
PubWise
Quantumdex
ResetDigital
ResultsMedia
RhythmOne
Rich Audience
Rise
Roundel
RtbAnalytica
RtbDemand.com
RTBHouse
Rubicon Project
SA Lunamedia
seedtag
SelectMedia Video
Sharethrough
Shinez
Smaato
Smart AdServer
SmartHub
smartx
SmartyAds
SMN
Snigel
Sonic Twist Media
Sonobi
Sovrn
SpotX
StroeerCore
Synacor Media
tappx
TargetVideo
Teads
Telaria
TripleLift
TripleLift Native
TrustX
The Trade Desk
Türk Telekom
ucfunnel
Undertone
Unibots
Unruly
Valueimpression
VidCrunch
VidCrunch LLC
VideoByte
VideoHeroes
YOC VIS.X
VRTCAL Markets, Inc.
Vuukle
WaardeX
WINR
xe.works
Yahoo SSP
Yieldlab
YieldLift
Yieldmo


Further Reading