You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* adding deviceAccess flag and TCF2
* moved tcf2 blog post to separate PR
* edits
* removing defaultGdprScope from this PR
* clarifying
Confirming which bidders need to update and how to get a bidder on the TCF 1.1 and TCF 2.0 lists.
Co-authored-by: Jean Stemp <[email protected]>
Copy file name to clipboardExpand all lines: dev-docs/modules/consentManagement.md
+119-18
Original file line number
Diff line number
Diff line change
@@ -15,6 +15,9 @@ sidebarType : 1
15
15
* TOC
16
16
{: toc }
17
17
18
+
{: .alert.alert-warning :}
19
+
Prebid.org is working on updates that will enable support for reading and parsing TCF 2.0 consent strings. See the [blog post](/blog/tcf2) for timelines.
20
+
18
21
## Overview
19
22
20
23
This consent management module is designed to support the EU General Data Protection Regulation ([GDPR](https://www.iab.com/topics/consumer-privacy/gdpr/))
@@ -44,13 +47,13 @@ If the timeout period expires or an error from the CMP is thrown, one of these a
44
47
45
48
## Page Integration
46
49
47
-
To utilize this module, a CMP compatible with the [IAB 1.1 TCF spec](https://iabeurope.eu/tcf-v1/) needs to be implemented on the site to interact with the user and obtain their consent choices.
50
+
To utilize this module, a Consent Management Platform (CMP) compatible with the [IAB TCF v1.1 spec](https://iabeurope.eu/tcf-v1/) or [IAB TCF v2.0 spec](https://iabeurope.eu/tcf-2-0/) needs to be implemented on the site to interact with the user and obtain their consent choices.
48
51
49
52
Though implementation details for the CMP are not covered by Prebid.org, we do recommend to that you place the CMP code before the Prebid.js code in the head of the page in order to ensure the CMP's framework is loaded before the Prebid code executes.
50
53
51
54
Once the CMP is implemented, simply include this module into your build and add a `consentManagement` object in the `setConfig()` call. Adapters that support this feature will then be able to retrieve the consent information and incorporate it in their requests.
52
55
53
-
Here are the parameters supported in the `consentManagement` object:
56
+
Here are the parameters supported in the `consentManagement.gdpr` object:
54
57
55
58
{: .alert.alert-warning :}
56
59
Note that versions of Prebid.js before 2.43.0 had a different GDPR configuration. The module is backwards-compatible,
@@ -62,15 +65,70 @@ but we recommend migrating to the new config structure as soon as possible.
62
65
| gdpr |`Object`|||
63
66
| gdpr.cmpApi |`string`| The CMP interface that is in use. Supported values are **'iab'** or **'static'**. Static allows integrations where IAB-formatted consent strings are provided in a non-standard way. Default is `'iab'`. |`'iab'`|
64
67
| gdpr.timeout |`integer`| Length of time (in milliseconds) to allow the CMP to obtain the GDPR consent string. Default is `10000`. |`10000`|
65
-
| gdpr.allowAuctionWithoutConsent |`boolean`| Determines what will happen if obtaining consent information from the CMP fails; either allow the auction to proceed (`true`) or cancel the auction (`false`). Default is `true`|`true`|
66
-
| gdpr.consentData |`Object`| An object representing the GDPR consent data being passed directly; only used when cmpApi is 'static'. Default is `undefined`. Not currently supported for US Privacy. ||
68
+
| gdpr.allowAuctionWithoutConsent |`boolean`| (TCF v1.1 only) Determines what will happen if obtaining consent information from the CMP fails; either allow the auction to proceed (`true`) or cancel the auction (`false`). Default is `true`|`true`|
69
+
| gdpr.consentData |`Object`| An object representing the GDPR consent data being passed directly; only used when cmpApi is 'static'. Default is `undefined`. ||
NOTE: The `allowAuctionWithoutConsent` parameter refers to the entire consent string, not to any individual consent option. Prebid.js does not parse the GDPR consent string, so it doesn't know if the user has consented to any particular action.
78
+
NOTE: The `allowAuctionWithoutConsent` parameter supported for TCF v1.1 refers to the entire consent string, not to any individual consent option. Prebid.js does not parse the GDPR consent string, so it doesn't know if the user has consented to any particular action.
70
79
71
-
### Examples
80
+
A related parameter is `deviceAccess`, which is at the global level of Prebid.js configuration because it can be used GDPR, CCPA, or custom privacy implementations:
72
81
73
-
Example 1: GDPR IAB CMP using custom timeout and cancel-auction options.
82
+
{: .table .table-bordered .table-striped }
83
+
| Param | Type | Description | Example |
84
+
| --- | --- | --- | --- |
85
+
| deviceAccess |`boolean`| If false, Prebid.js will prevent adapters and modules from reading and setting cookies and HTML local storage. Defaults to `true`. |`false`|
Prebid.js adapters don't need to change to support TCF v2.0 if they already support TCF 1.1 -- the consent string is passed through the same bidrequest location. The bidder's endpoint, however, will need to change to support TCF v2.0. Once the endpoint supports TCF2, you can update the documentation.md file as described below above the table showing the list of TCF2-compliant bidders.
189
+
131
190
If you are submitting changes to an adapter to support this approach, please also submit a PR to the [docs repo](https://github.com/prebid/prebid.github.io) to add the `gdpr_supported: true` variable to your respective page in the [bidders directory](https://github.com/prebid/prebid.github.io/tree/master/dev-docs/bidders). **This will ensure that your adapter's name will automatically appear on the list of adapters supporting GDPR.**
Depending on your needs, you could include the consent information in a query of your pixel and/or, given the consent choices, determine if you should drop the pixels at all.
206
265
207
-
## Publishers not using an IAB-Compliant CMP
266
+
## Publisher Scenarios
267
+
268
+
### Page Control of Consented Activities
269
+
270
+
Page JavaScript can prevent Prebid.js from performing various activities that come under the scope of GDPR controls. Since header bidding isn't the only service that falls under GDPR scope, the page may already have parsed the TCF string and stored it.
271
+
272
+
Here are some things that publishers can do to control various activities:
273
+
274
+
1. If the user hasn't consented to Purpose 1:
275
+
- Set [deviceAccess](/dev-docs/publisher-api-reference.html#setConfig-deviceAccess): false
2. If you're working with bidders that don't support GDPR, consider dynamically populating adunits as needed. See the list below for bidders supporting GDPR.
280
+
281
+
282
+
### Publishers Not Using an IAB-Compliant CMP
208
283
209
284
Prebid.js and much of the ad industry rely on the IAB CMP standard for GDPR support, but there might be some publishers who have implemented a different approach to meeting the privacy rules. Those publishers can utilize Prebid.js and the whole header bidding ecosystem by building a translation layer between their consent method and the IAB method.
210
285
@@ -279,7 +354,7 @@ var cmpLoaded; // true if iabConsentData was loaded and processed
279
354
})(window, document);
280
355
{% endhighlight %}
281
356
282
-
### Explanation of Parameters
357
+
####Explanation of Parameters
283
358
284
359
**_iabConsentData_**
285
360
For instructions on how to generate the IAB consent string see the [IAB CMP 1.1 Spec](https://github.com/InteractiveAdvertisingBureau/GDPR-Transparency-and-Consent-Framework) and [IAB Consent String SDK](https://github.com/InteractiveAdvertisingBureau/GDPR-Transparency-and-Consent-Framework/tree/master/Consent%20String%20SDK).
@@ -299,26 +374,52 @@ This should be false if there was some error in the consent data; otherwise set
299
374
**_cmpLoaded_**
300
375
This should be be set to true once the parameters listed above are processed.
301
376
302
-
## Adapters Supporting GDPR
377
+
## Adapters Supporting TCF v1.1:
378
+
379
+
Bidders on this list have self-declared their TCF 1.1 support in their https://github.com/prebid/prebid.github.io/tree/master/dev-docs/bidders md file by adding `gdpr_supported: true`.
Bidders on this list have self-declared their TCF 2.0 support in their https://github.com/prebid/prebid.github.io/tree/master/dev-docs/bidders md file by adding `tcf2_supported: true`.
Note that turning on debugging for Prebid Server causes most server-side adapters to consider it a test request, meaning that they won't count on reports.
1309
1311
1312
+
<aname="setConfig-deviceAccess" />
1313
+
1314
+
#### Device Access
1315
+
1316
+
You can prevent Prebid.js from reading or writing cookies or HTML localstorage by setting this flag:
1317
+
1318
+
{% highlight js %}
1319
+
pbjs.setConfig({ deviceAccess: false });
1320
+
{% endhighlight %}
1321
+
1322
+
This can be useful in GDPR, CCPA, COPPA or other privacy scenarios where a publisher has determined that header bidding should not read from or write the user's device.
0 commit comments