As of now, our definition of account ID has three components:
1) if ext.prebid.parentAccount is present, use that
2) else if site.publisher.id is present, use that
3) else if app.publisher.id is present, use that
4) else there's no account ID
There several types of requests that don't carry valid account ID:
AMP
SDK requests where the app didn't specify the account
Prebid.js requests where the pub entered a placeholder account ID. (s2sConfig.accountId is required on the prebidServerBid adapter)
Any other interface that doesn't supply
Alternate methods of obtaining account ID
Rubicon has implemented a feature in our private fork of PBS-Java to obtain account ID by scanning imp[].ext.rubicon.params.account. This works as long as there's at least one ad unit where Rubicon is a bidder, but it's obviously not ideal.
A somewhat better way would be to have PBS look in the global ext.prebid.account. Then we could update stored request DB entries to contain the account. This would pose a problem if the SRID isn't globally unique (https://github.com/prebid/prebid-server/issues/1024), but is more elegant in the scenario where SRID is unique enough.
So the hunt path for account would become:
1) if ext.prebid.parentAccount is present, use that
2) else, if ext.prebid.account is present, use that
3) else if site.publisher.id is present, use that
4) else if app.publisher.is is present, use that
5) else there's no account ID
Account ID is important but not always present
Account ID is becoming more important as evidenced by recent activity:
As of now, our definition of account ID has three components:
1) if ext.prebid.parentAccount is present, use that 2) else if site.publisher.id is present, use that 3) else if app.publisher.id is present, use that 4) else there's no account ID
There several types of requests that don't carry valid account ID:
Alternate methods of obtaining account ID
Rubicon has implemented a feature in our private fork of PBS-Java to obtain account ID by scanning imp[].ext.rubicon.params.account. This works as long as there's at least one ad unit where Rubicon is a bidder, but it's obviously not ideal.
A somewhat better way would be to have PBS look in the global
ext.prebid.account
. Then we could update stored request DB entries to contain the account. This would pose a problem if the SRID isn't globally unique (https://github.com/prebid/prebid-server/issues/1024), but is more elegant in the scenario where SRID is unique enough.So the hunt path for account would become:
1) if ext.prebid.parentAccount is present, use that 2) else, if ext.prebid.account is present, use that 3) else if site.publisher.id is present, use that 4) else if app.publisher.is is present, use that 5) else there's no account ID