Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Integration Type and Channel #1428

Closed
bretg opened this issue Aug 4, 2020 · 10 comments
Closed

Integration Type and Channel #1428

bretg opened this issue Aug 4, 2020 · 10 comments
Assignees
Labels
Intent to implement An issue describing a plan for a major feature. These are intended for community feedback PBS-Go

Comments

@bretg
Copy link
Contributor

bretg commented Aug 4, 2020

Our hosted Prebid Server has been getting more complicated with events, analytics, special cases, and additional business models. We'd like to propose some changes to support distinguishing between various traffic sources and business arrangements.

Integration Type

In support of analytics and billing, Rubicon's fork of PBS-Java supports a concept called "integration type". It's a host-company-specific set of values used to indicate the source of the request, which is turn is used in events and billing calculations. For example, we use one value for our "fully managed service" offering, and other value for our "hosted service" offering, which have different financial characteristics.

Example use cases:

  • host company getting PBS traffic from their own managed PBJS: "mpbjs" (managed)
  • host company getting PBS traffic from their a publisher-managed PBJS: "shpbjs" (self-hosted)
  • host company getting PBS traffic from a 3rd-party managed PBJS: "3pbjs"

We'd like to take this feature out of our private fork and formalize it with the community. Here's what it impacts:

  1. Account configuration can define a default integration
  2. OpenRTB requests can contain ext.prebid.integration. Allowed values are dependent on the host company.
  3. The integration value is added to event URLs generated by Prebid Server and is available to analytics adapters.

Channel

Also in support of analytics, we'd like to formalize a value that defines how the request came in. It's not used by PBS-core, but is available to analytics adapters. Valid values could vary by host company, but for example:

  • pbjs
  • app
  • amp
  • s2s

Proposal:

  1. Channel is an object that contains a name (required) and a version (optional)
  2. Update the PBJS pbsBidAdapter to pass ext.prebid.channel: {name: "pbjs", version: "4.1"} unless overridden by s2sConfig.extPrebid
  3. PBS gets the channel name out of the request if it's there
  4. If the channel isn't present:
    4a. set channel name to 'amp' if the request came in on /openrtb2/amp
    4b. set channel name to 'app' if the request contains an 'app' object
    4c. otherwise leave channel blank. Analytics adapters can default if they'd like.
@bretg bretg self-assigned this Aug 4, 2020
@albertmolinermrf
Copy link

Would it be possible to make the proposal the default behaviour, but allow the ability to:

  1. Skip the addition from Prebid.js (i.e., not pass anything at all).
  2. Pass any channel name from Prebid.js.

@bretg
Copy link
Contributor Author

bretg commented Aug 11, 2020

@albertmolinermrf - I think we can cover both of your requests in one go -- s2sConfig supports 'extPrebid' which corresponds to the ext.prebid portion of the OpenRTB -- the pbsBidAdapter should check to see if someone already set extPrebid.channel -- if so, don't change it.

  1. extPrebid.channel: {}
  2. extPrebid.channel: {name: "whatever"}

@bretg
Copy link
Contributor Author

bretg commented Sep 30, 2020

Done in PBS-Java 1.43

@SyntaxNode SyntaxNode added Intent to implement An issue describing a plan for a major feature. These are intended for community feedback and removed feature request labels Oct 12, 2020
@AlexBVolcy
Copy link
Contributor

@bretg I am working on this issue now for PBS Go, and I had a question regarding the proposal for Channel. Here's the section I have a question on:

If the channel isn't present:
4a. set channel name to 'amp' if the request came in on /openrtb2/amp
4b. set channel name to 'app' if the request contains an 'app' object
4c. otherwise leave channel blank. Analytics adapters can default if they'd like.

The question I have with the above is that the Channel type can be configured by the host, and if that's the case, how can we know for bullets 4a/4b that the host allowed 'amp' and 'app' to be channel types? Thanks!

@AlexBVolcy
Copy link
Contributor

@bretg

And a follow up question I have is that there is some integration type terminology used for account level CCPA and GDPR config and I was just wondering if this terminology is just a coincidence and is referring to a different concept than what is being mentioned in this issue?

And do we still want to use the same terminology for this issue, or will that cause some confusion to have the phrase Integration Type be used in multiple places?

Thanks!

@bretg
Copy link
Contributor Author

bretg commented Oct 4, 2021

Channel type can be configured by the host, and if that's the case, how can we know for bullets 4a/4b that the host allowed 'amp' and 'app' to be channel types?

If think you're refering to the statement "Valid values could vary by host company"?

This just means that if the host company has non-standard values, they need to tell their clients what they are and how to pass them. The defaults supported by PBS are amp and app, but if the client (or stored request) specifies a value, these defaults won't come into play.

integration type terminology used for account level CCPA and GDPR config

Yup, this is why 'integration' exists! We had several pubs, for instance, that wanted to turn off GDPR processing for AMP because AMP CMPs were non-existent for a long time.

@AlexBVolcy
Copy link
Contributor

AlexBVolcy commented Oct 6, 2021

@bretg

Thank you for responding! I still think I need more clarification regarding the use of integration terminology for the CCPA/GDPR config. What I'm confused by is what the difference is between the integration types used with that CCPA/GDPR config vs. the integration type proposal on this GitHub issue?

Specifically it confuses me that each of the Integration Types utilized in the CCPA/GDPR config are set to values that look more like the Channels you gave as examples in this GitHub issue (i.e. app, amp) vs. the examples of Integration Types in this issue (i.e. mpbjs, shpbjs).

Thanks!

@AlexBVolcy
Copy link
Contributor

Just wanted to update this thread, Bret and I talked about my question that I posted above, and agreed that the values the Integration Types are set to are confusing given that they look more like Channel values. Two issues were created for both PBS Java (prebid/prebid-server-java#1524) and PBS Go (#2044) to further address this.

@bretg
Copy link
Contributor Author

bretg commented Dec 3, 2021

For the record, Mansi noticed an inconsistency in the implementation:

Account configuration can define a default integration and whether or not it can be overridden at the request level

I've removed the bolded clause from above. This is minor feature that could be added later if needed

@AlexBVolcy
Copy link
Contributor

This feature was implemented here #2037 and here #2111

These features were merged in PBS Go 0.186.0 and 0.197.0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Intent to implement An issue describing a plan for a major feature. These are intended for community feedback PBS-Go
Projects
None yet
Development

No branches or pull requests

4 participants