Note: As of July 1st, 2023, the MSPS will be available to implement on your properties alongside the U.S. Privacy String (USPS) with the intention that the MSPS will eventually supplant USPS later in the year.
The IAB Tech Lab's Global Privacy Platform's (GPP) Multi-State Privacy String (MSPS) is a signal that notifies downstream partners that participating publishers have provided end-users with specific notice and choice over data processing activities on their properties. In this article, we will cover how to enable the MSPS on your web property that is also utilizing the U.S. Privacy String.
Note: Currently, Sourcepoint only supports MSPS on web properties that utilize Soucepoint's unified script in its implementation.
MSPS size and performance
Sourcepoint currently gives your organization the option to utilize MSPS instead of automatically defaulting to the signal because of the current size of the GPP library. Though the IAB Tech Lab is continuing to optimize the library, Sourcepoint cannot guarantee how implementing MSPS will impact your property's performance.
Below is the current size of the library (June 28th, 2023) in order to assist your decision on whether or not to implement MSPS for your web property:
Library | Size |
IAB GPP library | 403kb (uncompressed) |
Add GPP stub file
To enable the MSPS signal on your web property that is currently utilizing the U.S. Privacy String, your organization will need to add the GPP stub file in addition to the U.S. Privacy - CCPA stub file on your property with the following:
<script>
window.__gpp_addFrame=function(e){if(!window.frames[e])if(document.body){var t=document.createElement("iframe");t.style.cssText="display:none",t.name=e,document.body.appendChild(t)}else window.setTimeout(window.__gpp_addFrame,10,e)},window.__gpp_stub=function(){var e=arguments;if(__gpp.queue=__gpp.queue||[],__gpp.events=__gpp.events||[],!e.length||1==e.length&&"queue"==e[0])return __gpp.queue;if(1==e.length&&"events"==e[0])return __gpp.events;var t=e[0],p=e.length>1?e[1]:null,s=e.length>2?e[2]:null;if("ping"===t)p({gppVersion:"1.1",cmpStatus:"stub",cmpDisplayStatus:"hidden",signalStatus:"not ready",supportedAPIs:["2:tcfeuv2","5:tcfcav1","6:uspv1","7:usnatv1","8:uscav1","9:usvav1","10:uscov1","11:usutv1","12:usctv1"],cmpId:0,sectionList:[],applicableSections:[],gppString:"",parsedSections:{}},!0);else if("addEventListener"===t){"lastId"in __gpp||(__gpp.lastId=0),__gpp.lastId++;var n=__gpp.lastId;__gpp.events.push({id:n,callback:p,parameter:s}),p({eventName:"listenerRegistered",listenerId:n,data:!0,pingData:{gppVersion:"1.1",cmpStatus:"stub",cmpDisplayStatus:"hidden",signalStatus:"not ready",supportedAPIs:["2:tcfeuv2","5:tcfcav1","6:uspv1","7:usnatv1","8:uscav1","9:usvav1","10:uscov1","11:usutv1","12:usctv1"],cmpId:0,sectionList:[],applicableSections:[],gppString:"",parsedSections:{}}},!0)}else if("removeEventListener"===t){for(var a=!1,i=0;i<__gpp.events.length;i++)if(__gpp.events[i].id==s){__gpp.events.splice(i,1),a=!0;break}p({eventName:"listenerRemoved",listenerId:s,data:a,pingData:{gppVersion:"1.1",cmpStatus:"stub",cmpDisplayStatus:"hidden",signalStatus:"not ready",supportedAPIs:["2:tcfeuv2","5:tcfcav1","6:uspv1","7:usnatv1","8:uscav1","9:usvav1","10:uscov1","11:usutv1","12:usctv1"],cmpId:0,sectionList:[],applicableSections:[],gppString:"",parsedSections:{}}},!0)}else"hasSection"===t?p(!1,!0):"getSection"===t||"getField"===t?p(null,!0):__gpp.queue.push([].slice.apply(e))},window.__gpp_msghandler=function(e){var t="string"==typeof e.data;try{var p=t?JSON.parse(e.data):e.data}catch(e){p=null}if("object"==typeof p&&null!==p&&"__gppCall"in p){var s=p.__gppCall;window.__gpp(s.command,(function(p,n){var a={__gppReturn:{returnValue:p,success:n,callId:s.callId}};e.source.postMessage(t?JSON.stringify(a):a,"*")}),"parameter"in s?s.parameter:null,"version"in s?s.version:"1.1")}},"__gpp"in window&&"function"==typeof window.__gpp||(window.__gpp=window.__gpp_stub,window.addEventListener("message",window.__gpp_msghandler,!1),window.__gpp_addFrame("__gppLocator"));
</script>
Add GPP parameter(s)
In addition to updating the stub file, your organization will also need to add the includeGppApi
parameter to the ccpa
object in your client configration and set one of the following flag(s) depending on your organization's use case. See below for more information:
Note: The default settings are for organizations who have not signed the Multi-State Privacy Agreement (MSPA) and only want to listen for the MSPS. When using this default setting, the MSPA, as a contractual framework, does not cover your transactions. Click here for more information on MSPA covered transactions and the different modes signatories can use.
In order to set the default settings on the MSPS, set the includeGppApi
parameter to true
. When utilizing the default method, the following fields in the MSPS will be set accordingly:
Field | Value in MSPS | Description |
MspaCoveredTransaction |
2 |
Publisher or Advertiser, as applicable, is a signatory to the IAB Multistate Service Provider Agreement (MSPA), as may be amended from time to time, and declares that the transaction is a “Covered Transaction” as defined in the MSPA.
|
MspaOptOutOptionMode |
0 |
Publisher or Advertiser, as applicable, has enabled “Opt-Out Option Mode” for the “Covered Transaction,” as such terms are defined in the MSPA.
|
MspaServiceProviderMode |
0 |
Publisher or Advertiser, as applicable, has enabled “Service Provider Mode” for the “Covered Transaction,” as such terms are defined in the MSPA.
|
//Example
window._sp_queue = [];
window._sp_ = {
config: {
accountId: 1584,
baseEndpoint: 'https://cdn.privacy-mgmt.com',
ccpa: {
includeGppApi: true
},
propertyHref: 'https://www.testdemo.com',
For transactions covered by the MSPA, signatories can choose to operate in Opt-Out Option Mode or Service Provider Mode. In order to set the appropriate fields in the MSPS, your organization will need to set the following flags in the includeGppApi
object:
MspaCoveredTransaction
MspaOptOutOptionMode
MspaServiceProviderMode
Reference the table below for possible values for each field:
Field | Possible values | Description |
MspaCoveredTransaction |
|
Publisher or Advertiser, as applicable, is a signatory to the IAB Multistate Service Provider Agreement (MSPA), as may be amended from time to time, and declares that the transaction is a “Covered Transaction” as defined in the MSPA. The configured value for the flag will translate to the following in the MSPS:
|
MspaOptOutOptionMode |
|
Publisher or Advertiser, as applicable, has enabled “Opt-Out Option Mode” for the “Covered Transaction,” as such terms are defined in the MSPA. The configured value for the flag will translate to the following in the MSPS:
|
MspaServiceProviderMode |
|
Publisher or Advertiser, as applicable, has enabled “Service Provider Mode” for the “Covered Transaction,” as such terms are defined in the MSPA. The configured value for the flag will translate to the following in the MSPS:
|
//Example
window._sp_queue = [];
window._sp_ = {
config: {
accountId: 1584,
baseEndpoint: 'https://cdn.privacy-mgmt.com',
ccpa: {
includeGppApi: {
"MspaCoveredTransaction": "yes",
"MspaOptOutOptionMode": "yes",
"MspaServiceProviderMode": "no"
}
},
propertyHref: 'https://www.testdemo.com',
Comments
0 comments