The ping command will return the IAB TCF v2 ping object that you can use to determine whether the main CMP script has loaded and if GDPR applies for your pageview.


Command

//call the __tcfapi() function from the browser console with the ping command 
__tcfapi('ping', 2, (pingReturn) => {
   console.log("retrieving pingReturn: ", pingReturn)
});
...
        
function show_pingReturn(pingReturn)    {
    // custom code displays the properties of pingReturn data object
    console.log('value cmpId is ' + pingReturn.cmpId);
    console.log('value cmpVersion is ' + pingReturn.cmpVersion);
    console.log('value cmpLoaded is ' + pingReturn.cmpLoaded);
    console.log('value gdprApplies is ' + pingReturn.gdprApplies);
    console.log('value tcfPolicyVersion is ' + pingReturn.tcfPolicyVersion);
    console.log('value cmpLoaded is ' + pingReturn.cmpLoaded);
    console.log('value cmpStatus is ' + pingReturn.cmpStatus);
    console.log('value displayStatus is ' + pingReturn.displayStatus);
    console.log('value apiVersion is ' + pingReturn.apiVersion);
}

__tcfapi('addEventListener', 2, function(tcdata, success) {
    if(success) {

    // call TCF API ping command
    __tcfapi('ping', 2, (pingReturn) => {
        // call custom code to display values of pingReturn data object properties
        show_pingReturn(pingReturn);
    });

    if (tcdata.eventStatus === 'useractioncomplete') {
        // call code when user has made an action
    } else if (tcdata.eventStatus === 'tcloaded') {
        // call code when consent string has loaded
    } else if (tcdata.eventStatus === 'cmpuishown') {
        // call code when cmp message is shown
    }
    }
});
...

Response

{
  "apiVersion": "2",
  "cmpId": 6,
  "cmpLoaded": true,
  "cmpStatus": "loaded",
  "cmpVersion": 1,
  "displayStatus": "hidden",
  "gdprApplies": true,
  "gvlVersion": 196,
  "tcfPolicyVersion": 2
}
schema:
    description: Response for [PingReturn object](https://github.com/InteractiveAdvertisingBureau/GDPR-Transparency-and-Consent-Framework/blob/master/TCFv2/IAB%20Tech%20Lab%20-%20CMP%20API%20v2.md#pingreturn)
    type: object
    properties:
      apiVersion:
        type: string
        description: Version of the CMP API that is supported. Currently the value is 2
        example: 2
      cmpId:
        type: number
        description: IAB assigned CMP ID
        example: 6
      cmpLoaded:
        type: boolean
        description: Indicates if the CMP main script has loaded. true means CMP main script is ready. false means CMP main script has not loaded, stub is still running
        example: true
      cmpStatus:
        type: string
        description: Returns loaded | stub | error. Loaded is if the CMP has finished loading. Stub is if the CMP has not yet loaded and the stub is in place. Error is if the CMP is in an error state. A CMP shall not respond to any other API requests if cmpStatus returns error.
        example: loaded
      cmpVersion:
        type: number
        description: CMPs own/internal version that is currently running
        example: 1
      displayStatus:
        type: string
        description: Returns visible | hidden | disabled.
        example: hidden
      gdprApplies:
        type: boolean
        description: true is if GDPR applies to end-user browser session. false if if GDPR does not apply to end-user browser session
        example: true
      gvlVersion:
        type: number
        description: Version of the Global Vendor List currently loaded by the CMP
        example: 196
      tcfPolicyVersion:
        type: number
        description: Number of the supported TCF version
        example: 2

📘

Click here for additional information on the pingReturn object .