Enable GPP Multi-State Privacy String (MSPS) with U.S. Privacy - CCPA solution

  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: 

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"));

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:

Default MSPA Covered Transactions

  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


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.

1 Yes

2 No



Publisher or Advertiser, as applicable, has enabled “Opt-Out Option Mode” for the “Covered Transaction,” as such terms are defined in the MSPA.

0 Not Applicable

1 Yes

2 No



Publisher or Advertiser, as applicable, has enabled “Service Provider Mode” for the “Covered Transaction,” as such terms are defined in the MSPA.

0 Not Applicable

1 Yes

2 No

window._sp_queue = [];
window._sp_ = {
    config: {
        accountId: 1584,
        baseEndpoint: 'https://cdn.privacy-mgmt.com',
        ccpa: { 
            includeGppApi: true
        propertyHref: 'https://www.testdemo.com',
Was this article helpful?
0 out of 0 found this helpful



Article is closed for comments.