Search the DG Knowledge Base
This document outlines the functionality present in the Universal Consent Platform (UCP) API, how to use it, and how to solve common scenarios.
The UCP scripts power all the UCP functionality we provide on your web pages. They start with the script block you can retrieve from our Privacy Application. When you add the script block to your site it will start to function.
This script block is just a loader script, pulling in the actual scripts, which power our consent functionality. The following scripts are always loaded:
In addition to the scripts listed above, we have several scripts that you can load depending on the settings you’ve configured within UCP. They are:
When our scripts load they create a global object under the window namespace called “evidon”:
window.evidon
After our scripts successfully execute a “notice” object is added to the window.evidon namespace:
window.evidon.notice
That is the starting point for our supported API. All API methods are located on the window.evidon.notice object, or a sub-object:
window.evidon.notice.banner
If you inspect the object in Chrome tools you will see a number of methods located on the window.evidon.notice object. Some will start with an underscore (eg. _hookConsentEvents).
Note: Any method starting with an underscore is NOT a supported API method. These are internal and should not be used by customers.
You can execute your own JavaScript actions using the following list of callback methods:
window.evidon.priorConsentCallback(categories, vendors, cookies)
This is executed whenever consent is detected. That can happen in the following circumstances:
categories[‘advertising’] == true or categories[‘all’] == true
vendors[‘adobe’] == true or vendors[‘all’] == true
cookies[‘login cookie’] == true or cookies[‘all’] == true
The parameters may not be present on your tag as they were introduced well after the release of the Universal Consent Platform. If they are missing you can add them or log in to our platform and retrieve the full tag from there.
window.evidon.closeCallback()
This is executed when a consent UI element (eg. banner, barrier) is closed by the user without consent being given, and the user didn’t specifically decline.
window.evidon.consentWithdrawnCallback()
This is executed when a user withdraws consent. Since our scripts do not perform any action by default when consent is withdrawn, this allows our customers to perform some kind of action like refresh the page. This is fired after consent has been withdrawn so there is no mechanism for blocking the withdraw action.
window.evidon.consentDelcinedCallback()
This is executed when a user specifically declines to give consent, which is different from closing the UI element. We have broken this out so our customers can perform different actions on decline and close.
There are a few properties located at the root window.evidon portion of the API. The following are supported values that can be located in that object.
Property |
Description |
Permissions |
notice |
The notice object. |
Read-Only |
id |
This is your company identifier. |
Read-Only |
userid |
Use this property to assign an identifier for the current active user. For example, if you have an internal user-id value for the user, you can place it here and we will store that information with our reporting information. |
Editable |
banner |
Reference to the active banner object if available. This will only be set if a banner needs to be displayed to gather consent. |
Read-Only |
barrier |
Reference to the active barrier object if available. This will only be set if a barrier needs to be displayed to gather consent. |
Read-Only |
gdprL2 |
Reference to our privacy Options Dialog object, which is used to display the more advanced consent gathering mechanisms (such as GDPR support, IAB support, etc.). This will only be set if the Options Dialog is activated. |
Read-Only |
cmp |
Reference to our “cmp” object which powers the IAB __cmp API. T |
Read-Only |
preferencesDialog |
This is the latest version of our privacy Options Dialog and is used to display more advanced consent information. |
Read-Only |
Location |
This contains the country information pulled from our geo-location script. It will only have a value if the country.js script arrives before our main script API is available. It should not be used as a reliable mechanism to determine the active country location. |
Read-Only |
Themes |
Contains the object holding the theme information used to power the UI displays. |
Read-Only |
consentTemplates |
This is a list of the different consent combinations defined for the current domain settings. |
Read-Only |
link |
Reference to the object that controls our consent link access. |
Read-Only |
button |
Reference to the object that controls our consent button access. |
Read-Only |
events |
This is an internal event queue. |
Read-Only |
enableGoogleConsentSupport |
Use this property to enable/disable support for the Google Consent API. This is an optional property. The Consent API will be enabled by default if you do not add it to your script. If you wouldlike to support the Google Consent API, we recommend adding the support into your main script block so will be set before the consent api calls are made. |
|
Use the following properties from the window.evidon.notice object to provide access to information that might be valuable to other scripts running on the page, but should be considered READ-ONLY. Any properties that can be modified at runtime will have a supported API method to allow that. For example, you can use the setLocation() method to change the country on the notice.
Property |
Description |
country |
The currently active country object. |
languageCode |
The active language code. |
languageRoot |
The active root language. This is used to pull the correct set of translation values. |
activeTranslations |
The object holding the currently active set of translations. |
settings |
The settings object holding all the possible settings for the current domain. |
domain |
The active domain |
activeSettings |
The object holding the currently active settings for the notice. |
consentTypeId |
The identifier indicating the type of consent is active for this notice: 1: no consent 2: banner consent 3: barrier consent |
privacyAccessTypeId |
The identifier indicating the type of privacy tool access mechanism to show: |
consentIsGiven |
Flag indicating whether the active user has provided consent. |
regulationId |
Indicates the active regulation identifier. Possible values are: |
regulationConsentTypeId |
Indicates the active consent type. Possible values are: |
The following list of methods are supported under the window.evidon.notice namespace.
appendScript(url, callback)
Call this API method to append a script to the current document.
consentGiven()
Calling this method instructs our script to drop the consent cookie and execute any consent callback/tag manager functionality. Use this call if you are going to provide a consent mechanism not currently supported by our scripts (your own consent button for example).
getConsentUrl()
Returns the url to the consent tool for this notice. You can use this method to get the raw url, but we suggest using the “showConsentTool” method to actually display the consent tool.
showConsentTool()
Instructs our consent tool to display based on the currently defined rules (overlay vs. new window for example). Use this method if you are going to build your own access to our consent tool.
isMobile()
A helper method that returns true if we are running on a mobile device and false for a desktop. If you need to match any mobile vs. desktop logic from your scripts to ours we recommend using this method to check for mobile device execution.
showNotice()
Call this to display the consent notice. This is the primary method called to run the logic and make the checks necessary to display notice elements based on the environment settings (country, language, etc.).
setLocation(locationObj)
locationObj: the json object containing the details for the location you want to use. The format of the object is:
{'code':'us','id':1,'defaultLangauge':'en-us'}
Call this method to set the notice location (country) and to override the country settings if necessary.
The following table contains the identifiers for all the countries we currently support.
1 |
us |
United States |
65 |
jo |
Jordan |
3 |
de |
Germany |
66 |
ir |
Iran |
4 |
es |
Spain |
67 |
ua |
Ukraine |
5 |
fr |
France |
68 |
vn |
Viet Nam |
6 |
gb |
United Kingdom |
69 |
ws |
Samoa |
7 |
it |
Italy |
70 |
am |
Armenia |
8 |
nl |
Netherlands |
71 |
ph |
Philippines |
9 |
ca |
Canada |
72 |
al |
Albania |
10 |
cn |
China |
73 |
ai |
Anguilla |
11 |
il |
Israel |
74 |
ag |
Antigua & Barbuda |
12 |
mx |
Mexico |
75 |
aw |
Aruba |
13 |
ru |
Russia |
76 |
bs |
Bahamas |
15 |
dk |
Denmark |
77 |
bb |
Barbados |
16 |
ie |
Ireland |
78 |
bz |
Belize |
17 |
no |
Norway |
79 |
bm |
Bermuda |
18 |
pl |
Poland |
80 |
bo |
Bolivia |
19 |
at |
Austria |
81 |
ba |
Bosnia & Herzegovina |
20 |
be |
Belgium |
82 |
vg |
British Virgin Islands |
21 |
ch |
Switzerland |
83 |
ky |
Cayman Islands |
22 |
sv |
Sweden |
84 |
cl |
Chile |
23 |
sk |
Slovakia |
85 |
co |
Colombia |
24 |
hu |
Hungary |
86 |
cg |
Congo (Brazzavilla) |
25 |
fi |
Finland |
87 |
cr |
Costa Rica |
26 |
pt |
Portugal |
88 |
cd |
Democratic Republic of the Congo |
27 |
cz |
Czech Republic |
89 |
dm |
Dominica |
28 |
lu |
Luxembourg |
90 |
do |
Dominican Republic |
29 |
gr |
Greece |
91 |
ec |
Ecuador |
30 |
bg |
Bulgaria |
92 |
sv |
El Salvador |
31 |
ro |
Romania |
93 |
ga |
Gabon |
32 |
ee |
Estonia |
94 |
gh |
Ghana |
33 |
lv |
Latvia |
95 |
gd |
Grenada |
34 |
lt |
Lithuania |
96 |
gt |
Guatemala |
35 |
si |
Slovenia |
97 |
gy |
Guyana |
36 |
mt |
Malta |
98 |
ht |
Haiti |
37 |
cy |
Cyprus |
99 |
hn |
Honduras |
38 |
is |
Iceland |
100 |
jm |
Jamaica |
39 |
tr |
Turkey |
101 |
md |
Moldova |
40 |
eg |
Egypt |
102 |
ma |
Morroco |
41 |
sa |
Saudi Arabia |
103 |
an |
Netherlands Antilles |
42 |
br |
Brazil |
104 |
ni |
Nicaragua |
43 |
ar |
Argentina |
105 |
pa |
Panama |
44 |
tw |
Taiwan |
106 |
py |
Paraguay |
45 |
kr |
South Korea |
107 |
pe |
Peru |
46 |
jp |
Japan |
108 |
pr |
Puerto Rico |
47 |
au |
Australia |
109 |
kn |
Saint Kitts & Nevis |
48 |
nz |
New Zealand |
110 |
sn |
Senegal |
49 |
za |
South Africa |
111 |
lc |
Saint Lucia |
50 |
dz |
Algeria |
112 |
vc |
Saint Vincent & Grenadines |
51 |
ly |
Libya |
113 |
sr |
Suriname |
52 |
sd |
Sudan |
114 |
tt |
Trinidad & Tobago |
53 |
ng |
Nigeria |
115 |
tn |
Tunisia |
54 |
ae |
United Arab Emirates |
116 |
tc |
Turks & Caicos Islands |
55 |
id |
Indonesia |
117 |
uy |
Uruguay |
56 |
my |
Malaysia |
118 |
vi |
Virgin Islands |
57 |
th |
Thailand |
119 |
ve |
Venezuela |
58 |
pk |
Pakistan |
120 |
ge |
Georgia |
59 |
in |
India |
121 |
az |
Azerbaijan |
60 |
sg |
Singapore |
122 |
la |
Laos |
61 |
hr |
Croatia |
123 |
kh |
Cambodia |
62 |
mk |
Macedonia |
124 |
np |
Nepal |
63 |
rs |
Serbia |
125 |
lk |
Sri Lanka |
64 |
hk |
Hong Kong |
126 |
mm |
Myanmar |
127 |
bn |
Brunei |
activateTranslations(code)
code: language code to make the active translation set
Use this method to force a specific language that is different from the browser settings. A use case would be a site that uses a dropdown to switch languages and you want to force the consent messaging to match your site instead of the browser settings.
getBannerStyle()
Use this method to pull the styles for the banner object.
getBarrierStyle()
Use this method to pull the styles for the barrier object.
getButtonStyle()
Use this method to pull the styles for the consent tool button object.
getLinkStyle()
Use this method to pull the styles for the consent tool link object.
getL2Style()
Use this method to pull the styles used for the privacy Options Dialog.
getTranslations()
Use this method to return the active set of translations.
formatTranslation(text)
text: the translation text to apply formatting to
This method executes a string replace on the passed in string to replace other string markers with dynamic values. Currently this method replaces the following:
dropSuppressionCookie(days)
days: an integer value indicating the number of days to set the cookie for. Leave this as null or 0 to drop a session cookie.
Use this method to drop a cookie to “suppress” the display of the consent UI elements (banner/barrier). This enables compliance with Prior Consent (GDPR,LGPD) instructions to allow a user to access site content without providing consent.
setUserIdentifier(id)
id: a string value which stores the user identifier for the current user.
Use this method to assign a user identifier that can be stored with the reporting information for the active user. This should be an internal identifier that will allow you to identify specific users for actions such as consent. It can also help improve reporting from the UCP by using a unique identifier instead of the default correlation key, which is not guaranteed to represent a unique user.
Note: You can also set the user identifier using the window.evidon.userid property. Since the window.evidon.userid property can be set available before the notice API is available using that property instead of this API method can help prevent timing issues where the User ID is not set before the reporting calls fire, causing the identifier to be excluded from the call. However, both are supported and this call will override the id value if it is set on the window.evidon.userid.
withdrawConsent()
Use this method to withdraw consent for the active user. When called, this method removes the consent cookie and then calls the consentWithdrawnCallback event to execute any code located in that callback.
getConsentData()
This call pulls the list of consented items, categories, and vendors, from the local storage. It wraps the logic of whether this information is stored in the consent cookie or local storage.
The format of the data returned will be similar to the following:
{
"consent_date":"2020-07-31T20:11:01.970Z",
"categories":{
"3":{
"evidon vendors":true,
"advertiser":false
}
},
"vendors":{
"3":{
"80":false,
"241":true
}
},
"cookies":{
"3":{}
},
"consent_type":1
}
The “3” in the structure is the country identifier for the set of categories, vendors, and cookies. All of the information is stored at a country level, allowing different sets of vendors/categories per country.
The consent_type indicates the type of consent requested from the user:
getDataRequestUrl()
This call returns the url for the Evidon data request form.
Note: We do not recommend using this form in your own solutions as there are some low-level messaging interactions that happen to allow the form to function properly.
getDoNotSellRequestUrl()
This call returns the url for the Evidon data request form configured for a Do Not Sell request.
Note: We do not recommend using this form in your own solutions as there are some low-level messaging interactions that happen to allow the form to function properly.
getPrivacyPolicyLink()
Returns privacy policy links configured for the active notice/country which was entered in the notice settings when it was configured.
getCookiePolicyLink()
Returns cookie policy links configured for the active notice/country which was entered in the notice settings when it was configured.
showOptions()
Triggers the display of our Options Dialog panel. This is the panel where users can elect to exercise choices on vendors and categories as well as access IAB information if set up. This call wraps the logic for which version of the Options Dialog panel to display.
showOptionPanel (deprecated)
Displays our legacy Options Dialog.
Note: This call is deprecated and we recommend using showOptions instead.
showPreferencesDialog (deprecated)
Displays the current default version of our Options Dialog.
Note: This call is deprecated and we recommend using showOptions instead.
_getConsentedCategories()
Returns the list of categories which have been consented to.
See example of the returned category object:
{
“evidon vendors”: true,
“advertiser”: true,
“analytics provider”: true
}
The first value is the string identifier for the category. The second value will be true or false. True indicates the vendors in that category have been consented to run.
_getConsentedCookies()
Returns the list of cookies which have been consented to.
_getConsentedVendors()
Returns the list of vendors which have been consented to.
See the example of the returned vendor object:
{
80: true,
81: true,
241: true
}
The first value is the vendor identifier. The second value will be true or false. True indicates the vendor has been consented to and their tags can run.
isGDPR()
Checks to see if the GDPR regulation applies to the active notice/country combination.
isCCPA()
Checks to see if the CCPA regulation applies to the active notice/country combination.
isOptedOut()
Checks to see if the active user has elected to exercise their right to opt-out of data collection for the CCPA.
The following list of methods are supported under the window.evidon.banner namespace.
IEVersion()
A helper method called to return the current version of IE the scripts are running on. There are conditional code blocks which execute differently on earlier version of IE..
closeBanner(eventObj)
eventObj: a standard event object received from JavaScript click events.
The click handler from the banner accept button and close icon. It can be called from your code if you want to simulate a click event, but we recommend you use the window.evidon.notice.consentGiven() API instead.
acceptButtonClicked(eventObj)
eventObj: a standard event object received from JavaScript click events.
The callback executed when a user clicks the Accept button. Call this method to simulate the Accept button click.
optionButtonClicked(eventObj)
eventObj: a standard event object received from JavaScript click events.
This is the callback executed when a user clicks the Options button on the banner. Call this method to simulate the Options button click.
closeIconClicked(eventObj)
eventObj: a standard event object received from JavaScript click events.
The callback executed when a user clicks the Close icon on the banner. Call this method to simuluate the Close icon click.
endsWith(source,value)
A helper method that returns a Boolean true if the source string ends with the passed in value.
isOnBanner(element)
element: An element object
A helper method that returns true if the given element object is actually located on our banner display. Use this method to prevent executing a consent event if someone clicks at some random place on the banner. It is unlikely you will need to use this method for anything.
closeConsentBanner()
Instructs the banner to close. This method does not execute any consent functionality. It should only be used if you want to hide the banner without a user consenting for some reason.
getBannerStyle()
Returns the style used to format the banner on the page. This is a helper method which makes sure some specific values (z-index for example) are present in the styles being applied to the banner.
createAcceptButton()
A helper method that creates a formatted Accept button.
createOptionButton()
A helper method to create the Option button displayed on the banner.
createCloseIcon()
A helper method to create the Close icon displayed on the banner.
createBanner()
A method called when the script loads to create the banner structure.
setTextValues(translations)
translations: an object containing the string values for the various banner elements.
Call this method to apply translations to the banner. Typically, this is called from our main notice script if the language is changed. It is highly recommended you use our user interface to make translation changes, but if you need to force these to be different you can use this method.
createNotice()
Call this methoed to create the consent notice and show it on the page. This is called as soon as the script loads so it is unlikely you will need to use it, but if you have to force the banner to display, this method will do that.
destroyNotice()
Instructs the notice to close and remove itself from the DOM. Calling this method does not trigger any type of consent actions or drop the consent cookie. You can use this method if you need to remove the banner from the current page.
scaleForMobile()
A helper method called to apply a zoom on the banner if displayed on a mobile device.
The following list of methods are supported under the window.evidon.barrier namespace:
createBarrierNotice()
Runs the barrier creation routine.
destroyNotice()
Closes the notice and removes it from the DOM.
showCookieConsentTool()
If the Options Dialog is enabled, this will run the enabled functionality of the Options Dialog. If not, this will show the consent tool in the barrier in an iframe.
The following list of methods are supported under the window.evidon.gdprL2 namespace:
Note: This object is only available in the window.evidon object after the script has been loaded, which occurs the first time the overlay is triggered to display.
showOverlay()
Execute this method to show the GDPR overlay.
closeOverlay()
Execute this method to hide the GDPR overlay. This call closes the GDPR overlay and removes it from the DOM.
This is the object that powers the UCP support of the IAB GDPR framework (CMP stands for Consent Management Provider). Currently we do not support using this API directly. Instead, use the window.cmp object which is defined in the IAB EU specifications. (Specification located at: https://github.com/InteractiveAdvertisingBureau/GDPR-Transparency-and-Consent-Framework/blob/master/...)
The evidon implemention of the __cmp support provides full support for that specification.
The IAB has upgraded GDPR platform to version 2, which is not compatible with version 1.
To support v2 and v1 simultaneously we created a v2 CMP library for our scripts. We do not recommend using any of the functionality in this namespace directly. All the functionality is meant to be internal.
The IAB does define an API for their framework support, geared primarily towards pulling their consent string which is passed along to their advertisers to inform downstream actors of permissions available to them.
The documentation for the IAB v2 framework can be found here:
Search our DG Forum to find answers to questions asked by other DG users.
No luck? Ask a question. Our Product and Support teams are monitoring the Forum and typically respond within 48 hours.