The Digital Services Act (DSA) was adopted in October 2022, and the date of applicability for Platform companies is 16 February 2024. Along with the Digital Markets Act (DMA), the DSA is intended to improve the confidence of both private consumers and business users of Online Platforms in the products and services they access via those platforms, as well as the advertising they are exposed to on them, and to ensure a level playing field between platforms. The DSA lays down transparency obligations in relation to advertising; these obligations apply to Online Platforms, “Very Large Online Platforms” (VLOPs), and “Very Large Online Search Engines” (VLOSEs) as defined by the Digital Services Act.
Article 26 of the DSA requires Online Platforms to ensure that users have real-time access to certain elements of information about any ad shown to them on an Online Platform:
- That the ad is indeed an ad;
- The identity of the advertiser;
- The identity of the party that financed the ad, if it is different from the advertiser;
- Information about the “main parameters” used to select the ad presented to the end-user;
- Where applicable, information about any means users may have at their disposal to change those main parameters.
Although the legal obligation to provide the user-facing information disclosures applies to Online Platforms, it is clear that in many advertising scenarios, those platforms will need to rely on third-party vendors for the data that will be required to populate the disclosures. To ensure that the third parties are equipped to provide this support, this technical specification standardizes the collection, compilation and transport of the data, leaving Online Platforms free to decide how they wish to make the user-facing disclosures, including if they want to delegate the disclosures to another party.
This technical specification provides data formats and transport for the advertising industry to implement relevant DSA transparency information. This solution should be applicable across most relevant use cases including; programmatic and non-programmatic media buys, channels including desktop web, mobile (web/app), video, CTV.
Attribute | Type | Description |
ext.dsa |
object | Extension for DSA transparency information |
Attribute | Type | Description |
dsarequired |
integer | Flag to indicate if DSA information should be made available. This will signal if the bid request belongs to an Online Platform/VLOP, such that a buyer should respond with DSA Transparency information based on the pubrender value.
|
pubrender |
integer | Flag to indicate if the publisher will render the DSA Transparency info. This will signal if the publisher is able to and intends to render an icon or other appropriate user-facing symbol and display the DSA transparency info to the end user.
|
datatopub |
integer | Independent of pubrender, the publisher may need the transparency data for audit purposes.
|
transparency |
array of object | Array of objects of the entities that applied user parameters and the parameters they applied. |
Attribute | Type | Description |
domain |
string | Domain of the entity that applied user parameters |
dsaparams |
array of integer | Array for platform or sell-side use of any user parameters (using the list provided by DSA Transparency Taskforce). Note; See definition and list of possible user parameters as listed here, applied consistently in both bid request and/or bid response. |
{
"id": "80ce30c53c16e6ede735f123ef6e32361bfc7b22",
"at": 1,
"cur": [
"USD"
],
"regs": {
"ext": {
"dsa": {
"dsarequired": 3,
"pubrender": 0,
"datatopub": 2,
"transparency": [{
"domain": "platform1domain.com",
"dsaparams": [1]},
{"domain": "SSP2domain.com",
"dsaparams": [1,2]
}]
}
}
},
"imp": [{
"id": "1"
}],
"site": {
"id": "102855"
},
"user": {
"id": "55816b39711f9b5acf3b90e313ed29e51665623f"
}
}
Attribute | Type | Description |
ext.dsa |
object | DSA Ad Transparency information |
Attribute | Type | Description |
behalf |
string | Advertiser Transparency: Free UNICODE text string with a name of whose behalf the ad is displayed. Maximum 100 characters. |
paid |
string | Advertiser Transparency: Free UNICODE text string of who paid for the ad. Must always be included even if it's the same as what is listed in the behalf attribute. Maximum 100 characters |
transparency |
array of object | Array of objects of the entities that applied user parameters and the parameters they applied. |
adrender |
integer | Flag to indicate that buyer/advertiser will render their own DSA transparency information inside the creative.
|
Attribute | Type | Description |
domain |
string | Domain of the entity that applied user parameters |
dsaparams |
array of integer | Array of buy-side applied user parameter targeting (using the list provided by DSA Transparency Taskforce). Include support for multiple vendors who may add their own user-targeting parameters. |
{
"id": "1234567890",
"bidid": "abc1123",
"seatbid": [{
"seat": "512",
"bid": [{
"id": "1",
"nurl": "http://adserver.com/winnotice?impid=102",
"iurl": "http://adserver.com/pathtosampleimage",
"adomain": [
"advertiserdomain.com"
],
"ext": {
"dsa": {
"behalf": "Advertiser",
"paid": "Advertiser",
"transparency": [{
"domain": “dsp1domain.com”,
"dsaparams": [1,2]
}],
"adrender": 1
}
}
}]
}]
}
The definitions below are not meant to be consumer-facing messages.
User Parameter ID | User Parameter | Definition | TCF Purpose IDs |
1 | Profiling | Information about the user, collected and used across contexts, that is about the user's activity, interests, demographic information, or other characteristics. | TCF Purposes 4 |
2 | Basic advertising | Use of real-time information about the context in which the ad will be shown, to show the ad, including information about the content and the device, such as: device type and capabilities, user agent, URL, IP address, non-precise geolocation data. Additionally, use of basic cross-context information not based on user behavior or user characteristics, for uses such as frequency capping, sequencing, brand safety, anti-fraud. | TCF Purpose 2 |
3 | Precise geolocation | The precise real-time geolocation of the user, i.e. GPS coordinates within 500 meter radius precision. | TCF Special Feature 1 |
Some ad systems may depend on URLs to communicate information. The following parameters and macros can be used to carry relevant DSA information in these cases.
URL Parameter | Corresponding Macro | Representation in URL |
dsarequired |
DSAREQUIRED |
&dsarequired=${DSAREQUIRED} |
dsabehalf |
DSABEHALF |
&dsabehalf=${DSABEHALF} |
dsapaid |
DSAPAID |
&dsapaid=${DSAPAID} |
dsaparams |
DSAPARAMS |
&dsaparams=${DSAPARAMS} |
dsatransparency |
DSATRANSPARENCY |
&dsatransparency=${DSATRANSPARENCY} |
dsapubrender |
DSAPUBRENDER |
&dsapubrender=${DSAPUBRENDER} |
dsadatatopubs |
DSADATATOPUBS |
&dsadatatopubs=${DSADATATOPUBS} |
Macro | Possible Values | Definition |
${DSAREQUIRED} |
0 = Not required 1 = Supported, bid responses with or without DSA object will be accepted 2 = Required, bid responses without DSA object will not be accepted 3 = Required, bid responses without DSA object will not be accepted, Publisher is an Online Platform |
Indicates if DSA information should be made available. |
${DSABEHALF} |
Free UNICODE text string with a name of whose behalf the ad is displayed.
Example: Advertiser |
Populated from the DSP bid response. |
${DSAPAID} |
Free UNICODE text string of who paid for the ad
Example: Advertiser |
Populated from the DSP bid response. |
${DSAPARAMS} |
Any combination of the integer values representing the user parameters. When multiple values are included, they should be separated by an underscore “_”.
Example: 1_2_3 |
Populated based on the combination of information from the bid request and bid response user parameters. |
${DSATRANSPARENCY} |
Composed of the two items from the transparency object; the domain string and the params array. These two items are separated by a tilde “~”. Values in the params array are separated by an underscore “_”. Multiple transparency objects are separated by two tildes “~~”.
Example: &dsatransparency=platform1domain.com~1~~SSP2domain.com~1_2 |
Populated based on the transparency object from the bid request and the bid response. |
${DSAPUBRENDER} |
0 = Publisher can’t render 1 = Publisher could render depending on adrender 2 = Publisher will render |
Signals if the publisher is able to and intends to render an icon or other appropriate user-facing symbol and display the DSA transparency info to the end user. |
${DSADATATOPUBS} |
0 = do not send transparency data 1 = optional to send transparency data 2 = send transparency data |
Independent of pubrender, the publisher may need the transparency data for audit purposes. |
Changelog
Date | Comments |
January 26, 2024 | Updates to attributes to avoid reserved words:
required attribute name to dsarequired params attribute name to dsaparams |
January 16, 2024 | Original publish |