Only this pageAll pages
Powered by GitBook
1 of 56

English

Loading...

Loading...

Loading...

Setup Guides

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Mobile apps

Loading...

Loading...

Loading...

User Guides

Categories & Tags

Loading...

Loading...

Loading...

Privacy Banners

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Extensions

Loading...

Loading...

Loading...

Marketing Preferences Center

Loading...

Knowledge Base

Loading...

Loading...

Loading...

Loading...

Loading...

Rest data API

Loading...

Onsite API

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

PLATFORM API

Loading...

Releases notes

Release 7.90.40 - 15/11/2021

The calculation of the Click reject button statistic has been revised.

The metric is now calculated directly from the raw data to better reflect the mobile applications.

In the old formula this metric was derived from other metrics, which could result in an imprecise measurement on mobile app banners.

The recalculation is retroactive and does not affect other metrics in the report. The raw data from the exports are not changed either.

Overview

Increase brand loyalty by allowing users to control the data collected about them & establish trust through transparency.

As a result of the increasing number of data breaches and the misuse of personal information, privacy management is a growing part of the modern marketing landscape.

The General Data Protection Regulation (GDPR) has largely been perceived as a legal issue, due to the fines that can be imposed because of non-compliance, but it’s also created opportunities for brands to build greater trust with their users. In fact, according to research conducted by iProspect, 88% of global marketers say trust is a priority in 2019, and they are looking to build this trust through credibility, relevancy, and reliability.

Fueled by consumer privacy laws like the GDPR, most marketers are turning to solutions like TrustCommander that alert website and mobile app users of the personal data that’s being captured, stored, and shared with third parties.

This documentation will provide you with an overview of TrustCommander, setup guides per platform, user guides per feature and a knowledge base for frequently asked questions.

Components

TrustCommander consists of following components:

Component

Description

Privacy banner

Banner that is shown to visitors to inform them about privacy settings and to ask for permission to collect their personal data.

Privacy center

Banner that provides fine-grained privacy controls for website visitors for different privacy categories, vendors or tools. The privacy center is usually linked in the privacy banner and privacy policy.

Privacy manager

A technical layer below the privacy banner and privacy center that manages and stores the privacy settings of the visitor. It connects with other tools like tag managers to control which features, services or tags are loaded for a visitor based on his privacy settings.

Privacy cookies

First party cookies that are used to store the privacy settings of a user.

Privacy log

A database that logs visitor consent settings so that they can be proofed in case of an information request by the visitor.

Categories

Groups of services and features that require personal data. These categories are used by the privacy center to present consent controls and are used by the privacy manager to communicate privacy settings to other tools. Typical categories are "Analytics" and "Personalisation".

Vendors

Individual services and vendors that require personal data. These vendors are used by the privacy center to present consent controls and are used by the privacy manager to communicate privacy settings to other tools. Typical vendors are e.g. "Google" and "Facebook".

Dashboard

Dashboard that provides performance KPIs of each privacy banner.

OnSite API

Allows to interact with TrustCommander with code.

Frameworks

TrustCommander supports following frameworks:

  • IAB TCF 2.0

  • Google ACM

Extensions

It is possible to extend TrustCommander with following modules:

These modules are set up and configured by a Commanders Act consultant.

Setup

Please refer to the Setup Guides section for detailed installation instructions of TrustCommander per platform. In case your platform is not listed you can reach out to a Commanders Act consultant for a custom implementation.

Cookie Scanner
TagFirewall
Tag Hierarchy
Setup Guides

TagCommander

Steps to implement TrustCommander with TagCommander

TrustCommander and TagCommander are natively integrated with each other. This setup requires minimal technical knowledge and can be done entirely in the interface.

Setup

Following you will find the required steps to implement a standard TrustCommander setup.

  1. Connect your privacy banner templates with TagCommander container and implement rules for which the banner should be played out (see below).

Install TrustCommander banner with TagCommander container

To deploy a TrustCommander banner with TagCommander it needs to be linked to a container. TagCommander can then be use to implement detailed rules for which a TrustCommander banner is shown to visitors.

Implement rules to show TrustCommander banner

TAG > Tag Management > Edition (tab RULES)

In TagCommander it is possible to provide exact conditions to decide when each of the linked privacy banners should be shown to visitors. Typical use cases consist of:

  • Implement different banner for different languages or regions

  • Avoid to deploy the banner on legal pages (privacy policy) so that users can read them before providing consent.

  • Implement AB test for two banner designs.

You can create constrains under the PRIVACY BANNERS section to define under which conditions a privacy banner should be shown. Privacy banner constraint work the same way as tag constraints. Please reference constraints in the TagCommander documentation for more information.

Link TrustCommander banner with TagCommander container

TAG > Tag Management > Edition (tab GENERATE)

TagCommander makes it easy to implement TustCommander banner on websites. To link a privacy banner with a TagCommander container it just has to be activated in the GENERATE tab with the ACTIVATION checkbox. This installs the selected privacy banner in the generated container version.

All containers of your website should be re-generated and deployed when installing a new privacy banner.

Choose the default account configuration mode for your account (see ).

Setup your TrustCommander categories & vendors (see ).

Assign your TrustCommander categories & vendors to your TagCommander tags (see )

Create one or multiple banner templates (see )

Deploy your TrustCommander banner templates to the Commanders Act CDN or on premise target (see ).

You have to first deploy a banner to the Commanders Act CDN or on premise location before being able to configure constraints (see ).

You have to first deploy a banner to the Commanders Act CDN or on premise location before boing able to link it (see ).

Manage Categories
Assign Categories
Manage Banner
Deploy Banner

Consent Mode

This documentation is deprecated

Please refer to this page

Consent Mode in GTM

This documentation is deprecated

Please refer to this page

Example: A IT SITE rule was assigned to the privacy banner header-with-privacy-center to only show this banner to Italian sites.
Example: The selected banner would only load in case the data layer property env_template has the value FR.
Example: Add privacy banner to TagCommander container.
Example: TrustCommander banner are now deployed with the TagCommander container.

iOS

Having the user consent is essential to send sensible information like the IDFA/AAID. To prevent having to manually save the consent asked to the user and manually using it with our SDKs, we created a module helping you do it automatically.

This module will gather the consent and will:

  • Display a consent page (if needed)

  • Save consent and reload it every time the application is launched.

  • Save and check the validity of the consent. The validity duration is set to 13 months.

  • Send a hit to our servers to record the consent.

  • Enable or disable the SDK. (if used alongside the SDK)

  • Add the categories automatically to the hits the SDK sends. (if used alongside the SDK)

Privacy's Implementation Guide:

https://github.com/TagCommander/pods/tree/master/TCPrivacy

Responsability of actors

The collection of personal information is regulated by law at European level with the GDPR.

As a European player, Commanders Act fits into this framework and pays particular attention to the governance of its data.

This page explains the positioning of Commanders Act and that of its customers within this regulatory framework.

Commanders Act

Under RGPD rules, Commanders Act acts as a data processor. Therefore, Commanders Act is responsible for the following obligations:

- maintain data security

- continuously improve security processes

- duty of cooperation, in particular in the event of control by the CNIL

- appointment of a data protection officer

- keep a processing register

- notify any data breach to the data controller

The customer

Customers of Commanders Act, users of the platform, are considered data controllers. Therefore their obligations are:

- decide on the purpose of the processing (reasons for the processing, categories of data)

- decide on the means of processing (retention period, recipient, right of opposition, right of rectification)

Commanders Act puts its technical expertise at the service of its customers in order to guarantee the protection of users' personal data.

As your partner and processor, we are at your disposal for all questions on data protection subjects.

Adobe Launch

Steps to implement TrustCommander with Adobe Launch.

TrustCommander provides a plug-in to integrate with Adobe Launch. The setup requires technical installation steps.

Setup

Following you will find the required steps to implement a standard TrustCommander setup.

  1. Implement TrustCommander tag (see below)

  2. Manage Adobe Launch tags with TrustCommander (see below).

Implement TrustCommander tag on website and inside Adobe Launch.

1 - Website configuration

Delay your Adobe container

TrustCommander creates the consent variables when the privacy javascript file is loaded. You have to delay your Adobe container until TrustCommander is ready otherwise the variables containing the consent status will be undefined.

To delay your container, update your <script> tags loading your Adobe container in order to execute it after TrustCommander is loaded.

<script type="text/javascript" src="/path/to/adobe_launch_script.js"></script>

is replaced by :

<script type="text/tc_privacy" src="/path/to/adobe_launch_script.js"></script>

The text/javascript script type has to be replaced by text/tc_privacy. In this way, Adobe is loaded only when TrustCommander is ready Add the TrustCommander javascript file (if possible, call it before Adobe container and after datalayer) :

<script type="text/javascript">    
var tCPrivacyTagManager = "adobe";
</script>
<script type="text/javascript" src="my-privacy.js"></script>

2 - Configure consent variables

When TrustCommander is loaded and gets the consent, a variable tcCategoriesConsent is created by TrustCommander in the Adobe datalayer :

window.digitalData.user.tcCategoriesConsent = tcCategoriesConsent;

This variable contains the ID of the categories accepted by the user and separated by a coma.

You have to declare this variable in Adobe Launch interface, in the Data Elements configuration. From a Property page, open the Data Elements tab, then click Add Data Element, and add "tcCategoriesConsent" variable.

If your datalayer is not set in the digitalData object, set the path to tcCategoriesConsent (in this case the variable is created in the window scope: window.tcCategoriesConsent)

Then, you have to create the rules that will fire your tags based on the categories ID accepted by the users. You have to create a separate rule for each category you want to use as a firing condition (ex: "Retargeting category accepted", "Analytics category accepted"...).

In the Adobe Launch interface, open the "Rules" tab and click Create New Rule.

Set a rule based on the previously created tcCategoriesConsent. Ex: if you want to trigger a tag based on the Retargeting category (ID 6), you will have to create a rule "if tcCategoriesConsent contains 6", then the Criteo tag has to be triggered.

Choose the default account configuration mode for your account (see ).

Setup your TrustCommander categories & vendors (see ).

Create one or multiple banner templates (see )

Deploy your TrustCommander banner templates to the Commanders Act CDN or on premise target (see ).

Manage Categories
Manage Banner
Deploy Banner

Websites (Hardcoded)

Steps to hardcode TrustCommander on websites.

TrustCommander can be directly integrated with websites. The setup requires technical installation steps.

Setup

Following you will find the required steps to implement a standard TrustCommander setup.

  1. Install TrustCommander tag (see below)

  2. Manage onsite tags with TrustCommander (see below).

Install TrustCommander tag

To hardcode TrustCommander on websites you need to add following JavaScript tag to your website. This snippet should be added to the <head> of your website.

<script type="text/javascript" src="{{ privacy_tag_url }}"></script>

{{ privacy_tag_url }} has to be replaced with your privacy JavaScript tag URL. This URL can be found in the GENERATE & DEPLOY tab of each privacy banner.

Manage onsite tags with TrustCommander

Add tag triggers

TrustCommander can manage onsite JavaScript tags by wrapping them in a script tag with a custom MIME type.

This approach only works when you install TrustCommander in the <head> of the document (e.g. not when injecting the TrustCommander tag via Google Tag Manager)!

This TrustCommander wrapper does only fire that wrapped JavaScript code in case a visitor provided consent for the specified privacy category ID.

<script type="text/tc_privacy" data-category="{{ category_or_sub-category_id }}" data-vendor="{{ vendor_id }}">
    {{ tag_javascript_code }}
</script>

The <script> has to have type="text/tc_privacy" .

{{ tag_javascript_code }} has to be replaced with the JavaScript code of the tag you want to manage with TrustCommander.

{{ vendor_id }} has to be replaced with the vendor ID of the vendor related to the tag (Only available when native vendors are activated for the account).

Example

Following examples shows how you would manage a Criteo Tag based on a TrustCommander category named "Retargeting".

Retargeting was assigned to sub-category ID 6. In case a sub-category is used you should never use the main category (4 in this case) to manage tags.

The Tag wrapper for the Criteo JavaScript tag might look like this (example shortened):

<script type="text/tc_privacy" data-category="6" src="//static.criteo.net/js/ld/ld.js" async="true">
</script>

<script type="text/tc_privacy" data-category="6">
    window.criteo_q = window.criteo_q || [];
    window.criteo_q.push(...);
</script>

Manage Vendors

Management of TrustCommander privacy vendors.

TRUST> Categories & Tags (tab MANAGE VENDORS)

In this section you can manage your TrustCommander privacy vendors. These vendors will be used by your privacy center to provide users with detailed privacy management options.

Vendors

To enable native vendors go to TRUST > Options and activate the custom vendors option.

Click ADD VENDOR to add vendors to your TrustCommander installation. You can select vendors available on TagCommander (Predefined Vendors) or add custom vendors (Custom Vendor) by selecting the respective tab. A Commanders Act vendor is available by default.

Each vendor can be mapped to TrustCommander categories with the respective dropdown. This allows users to provide consent to all vendors of a category at once in the privacy center. A PEN icon allows to edit information of the vendor that is displayed in the privacy center. Following fields are available per vendor. A TRASH icon allows to remove the vendor.

It is possible to map vendors to multiple categories for stand-alone installation of TrustCommander. Tags in TagCommander can only be mapped to one category and vendor.

It is necessary to generate and deploy new version of privacy banners to deploy updates in the vendor section.

IAB vendors

Click ADD IAB TCF 2.0 VENDORS to manage the IAB vendors with your TrustCommander installation. You can either select all vendors or select specific vendors that are relevant for your setup.

The description of IAB TCF 2.0 vendors is automatically loaded from the IAB TCF 2.0 framework.

TrustCommander automatically configures purposes, special purposes, features and special features in the CATEGORIES tab depending on the selected vendors.

Google ACM vendors

To enable Google ACM vendors go to TRUST > Options and activate the IAB option and the Google ACM vendors.

Add Google ACM vendor allows to add Google ACM vendors to add a Google ATP to your TrustCommander installation. Each vendor has to be mapped to a TrustCommander category.

Descriptions for the ATP that are shown in the TrustCommander privacy center are automatically loaded from the Google ACM list.

Google ACM vendor management only works with IAB TCF 2.0 banner templates.

Assign Categories

Assign TagCommander tags to TrustCommander categories.

TRUST > Categories & Tags (tab ASSIGN TAGS)

TagCommander tags can be assigned to TrustCommander categories & vendors in following locations.

  • In ASSIGN TAGS section of TrustCommander.

  • In the EDIT tab of TagCommander.

This section is only available in case you use TrustCommander with TagCommander.

Assign categories & vendors in TrustCommander interface

Categories & vendors are managed per TagCommander container. You can select a TagCommander container in the left column. Then you can manage following TrustCommander setting per tag on the right side of the interface.

This option enables TrustCommander to block a tag depending on a visitors privacy setting. It is possible to activate or deactivate this setting for all tags via the all and none buttons on top of the column.

You can assign one TrustCommander category to each tag. This allows visitors to block tags by deactivating the related categories in the privacy center.

You can assign one TrustCommander vendor to each tag. This allows visitors to block tags by deactivating the related vendor in the privacy center.

This option allows you to bypass the default behaviour of tags that are managed with TrustCommander. e.g. TrustCommander blocks tags that are included in the privacy scope until a visitor provides his consent in case the default account configuration is set to optout. Bypassing this option would allow you to therefore load tags before the visitor provided his privacy settings (e.g. on the first page). In case such tags are included in the privacy scope they can still be deactivated by the user depending on his privacy settings.

It is possible to activate or deactivate this setting for all tags via the all and none buttons on top of the column.

Additionally you can also manage these TrustCommander settings for following elements:

Containers have to be re-generated and deployed to apply these changes.

Assign categories in TagCommander interface

For convenience it is also possible to directly assign TrustCommander categories & vendors inside the Edit tab of TagCommander. Assigning a category & vendor also includes the tag in the privacy scope.

In case a new vendor is added to the account the tag will not be fired when a user provided an optin for the corresponding category. Therefore it is necessary to activate the "Re-activate privacy" option during the generation of a new banner version to re-ask consent. The option "Don't re-ask the consent to trigger this tag" will change this default behaviour so that the vendor will receive an automatic optin based on the corresponding category.

IAB TCF V2.0 option

In case you choose to manage tags with IAB 2.0 you do not need to assign IAB compliant tags in the category assignation tab. IAB compliant tags are automatically controlled by the IAB framework.

It is still possible to assign tags to categories to allow TrustCommander to manage them directly with TagCommander.

Choose the default account configuration mode for your account (see ).

Setup your TrustCommander categories & vendors (see ).

Create one or multiple banner templates (see )

Deploy your TrustCommander banner templates to the Commanders Act CDN or on premise target (see ).

{{ category_or_subcategory_id }} has to be replaced with the category or sub-category of the TrustCommander category that should manage this tag (see ). Be careful when you create sub-categories associated to a category: you have to enter the sub-category ID in the attribute, not the category ID, as the user will be able to activate or deactivate only sub-categories and not the main category in the banner:

TrustCommander is compliant with IAB TCF 2.0 (). To enable IAB vendors go to TRUST > Options and activate the IAB option.

Google (ACM) allows to manage consent for Google Ad Technology Providers (ATP) (that are not part of the IAB TCF Global Vendors List) alongside IAB TCF vendors.

Manage Categories
Manage Banner
Deploy Banner
Manage Categories

Option

Description

Name

Name of the vendor. Privacy centers will display this name.

ID

ID of the vendor. This ID is used in raw data exports and for technical setup of certain functionalities. It is possible to manually provide an ID. In case the field is left empty a category ID will be assigned automatically.

Description

Description of the vendor. Privacy centers use this description as the default description for this vendor in case no localisation was provided in the banner editor.

Policy URL

Privacy Policy Link of the vendor. Privacy centers display this URL for each vendor.

Element

Description

EVENTS

TagCommander events that are implemented with the deprecated tc_events_xxx functions (events are now handled with TagCommander Trigger and therefore managed with normal tags).

COMMANDERS ACT HITS

Commanders Act related hits that are initiated from the container (this includes hits for functionalities like tag deduplication, tag hierarchy, and other). A separate category is available for the cookie sync option. This setting is synced between all client-side TagCommander container.

STATIC AND DYNAMIC JAVASCRIPT CODE

Custom JavaScript that can be implemented in TagCommander container (found in ADVANCED section of the Edit tab).

Link to official listing
Additional Consent Mode

Google Tag Manager (GTM)

Steps to implement TrustCommander with Google Tag Manager.

TrustCommander provides a plug-in to integrate with Google Tag Manager. The setup requires technical installation steps.

Setup

Following you will find the required steps to implement a standard TrustCommander setup.

  1. Install TrustCommander tag (see below)

  2. Manage GTM tags with TrustCommander (see below).

Install TrustCommander tag

To install TrustCommander with Google Tag Manager you need to add following JavaScript tag to your website. This snippet can be added in the <head> of the website or via a custom HTML tag in Google Tag Manager.

<script type="text/javascript">
    var tCPrivacyTagManager = "gtm";
</script>
<script type="text/javascript" src="{{ privacy_tag_url }}"></script>

tCPrivacyTagManager hast to be set to "gtm". This variable allows TrustCommander to send privacy settings to GTM. It will push a tcConsentChanged event to the GTM data layer that includes the privacy settings of a visitor in the tcCategoriesConsent variable. The event is pushed as soon as TrustCommander loads on a page and in case a visitor updates his privacy settings.

{{ privacy_tag_url }} has to be replaced with your privacy JavaScript tag URL. This URL can be found in the GENERATE & DEPLOY tab of each privacy banner.

Manage GTM tags with TrustCommander

Add tag triggers in Google Tag Manager

Field

Value

Variable name

Label that the consent variable has in the GTM interface (recommended: tcCategoriesConsent)

Variable Type

Data Layer Variable

Data Layer Variable Name

tcCategoriesConsent

Data Layer version

Choose the latest data layer version available

Setup Consent Changed Trigger

Create a new Trigger for each TrustCommander category and sub-category. These trigger can then be used to only fire your tags when a visitor accepts a certain TrustCommander category. Create each trigger with following settings:

Field

Value

Trigger name

Label of the Trigger in the GTM interface (recommended to use TrustCommander category name like "Retargeting category").

Trigger Type

Custom Event

Event name

tcConsentChanged

This trigger fires on

Some Custom Events

Fire this trigger when an Event occurs and all of these conditions are true

tcCategoriesConsent containsID of the related TrustCommander category.

Call the Privacy banner

Visitors will be able to activate or deactivate only sub-categories and not the main category in the banner. In case a category has sub-categories then you have to use the sub-category ID instead of the category ID to play out tags.

There are 4 steps to add triggers to tags in Google Tag Manager (GTM).

Setup Consent Variable

In the GTM interface, "Variables" tab, create a custom variable to calculate the status of the consent given by the user: no consent, optout, optin or partially optin. Create a "User Defined" variable.

  • Variable name: tcCategoriesConsent (the name that will appear in your interface, so you can choose another name)

  • Variable Type: "Data Layer Variable"

  • Data Layer Variable Name: tcCategoriesConsent (the variable used by Commanders Act Privacy when you add tCPrivacyTagManager = "gtm" in the website’s source code)

  • Data Layer version: choose the latest data layer version available

function(){
    if (typeof tC.privacy == "undefined") {

        var cookieName = "TC_PRIVACY=";
        var cookieSeparator = "@"

        var privacyCookie = "";
        var cookieCategoryName = cookieName+"_CENTER=";
        var cookieData = null;
        var categories = null;
        var decodedCookie = decodeURIComponent(document.cookie);
        var ca = decodedCookie.split(';');

        for (var i = 0; i <ca.length; i++) {
            var c = ca[i];
            while (c.charAt(0) == ' ') {
                c = c.substring(1);
            }
            if (c.indexOf(cookieName) == 0) {
                privacyCookie = c.substring(cookieName.length, c.length);
            } else if (c.indexOf(cookieCategoryName) == 0) {
                categories = c.substring(cookieCategoryName.length, c.length);
            }
        }

        if (privacyCookie === "") {
            return "no_consent";
        } else if (privacyCookie) {
            cookieData = privacyCookie.split(cookieSeparator);
        } else {
            cookieData = [];
        }

        var optType = parseInt(cookieData[0] || 0);

        if (categories == "ALL") {
            if (optType === 1) {
                return "optout";
            } else {
                return "all_consent";
            }
        }

        return optType === 0 && categories != -1 ? categories : "optout";
    }

    if (tC.getCookie(tC.privacy.getCN()) === "")  {
        return "no_consent";
    } else if (tC.privacy.getOptinCategories().join(",") === ""){
        return "optout";
    } else {
        return tC.privacy.getOptinCategories().join(",");
    }
}

Important: to facilitate the implementation of Privacy rules on your tags that may already have other triggers in place, we recommend that you work with an "exception" logic and follow the implementation process explained below. The logic is to create rules that will not trigger the tag if the category is denied rather than rules that will trigger it if the category is valid.

Configure the trigger as follows:

  • Trigger name: Retargeting category (this name depends on the category names that you create and the name that you want to be displayed on your interface)

  • Trigger Type: "Custom Event"

  • Event name: tcConsentChanged (this is the event sent by the Commanders Act Privacy when you use tCPrivacyTagManager = "gtm" in your website’s source code)

  • This trigger fires on: "Some Custom Events"

  • Fire this trigger when an Event occurs and all of these conditions are true: pick the tcCategoriesConsent variable created in the previous step, the operator “equals” (or “contains”), and the name of the category as you declared it in the Commanders Act Privacy interface.

Be careful when you create sub-categories associated to a category: you have to enter the sub-category ID and not the category ID in the Trust commander values, as the user will be able to activate or deactivate only sub-categories and not the main category in the banner:

Be careful in case you use more then 9 categories and sub-categories. In this case there can be a confusion between e.g. category "2" and category "12" as "2" is included in "12". In this case we recommend to only use category IDs above 10. We are working on an improvement to resolve this.

Assign Consent Changed Trigger to Tags

  • Name of the trigger: "trust_commander".

  • Trigger Type: "Custom Event"

  • Event name: "trust_commander"

  • This trigger fires on: "All Custom Events"

In the "Triggers" section, start by creating the following trigger that allows you to not activate the tags if the user has not yet given his consent :

If you want your site to be in "default optout" mode (blocking of tags when the visitor arrives on your site, in accordance with the General Data Protection Regulations, the GDPR), you must also make the following configuration.

Then create a custom tag that you will trigger on all pages (this is the TrustCommander event listener) in the "Tags" section:

  • Name of the tag: "Trust commander event listener"

  • Trigger Type: "Custom HTML"

  • HTML: copy and paste the following code :

<script>
//No choice expressed by the user yet
if({{Trust commander values}} === "no_consent"){
window.tc_closePrivacyButton = window.tc_closePrivacyButton || function (){
window.dataLayer.push({"event":"trust_commander"});  
}
window.tc_closePrivacyCenter = window.tc_closePrivacyCenter || function (close_type){
if(close_type !== "cross"){  
window.dataLayer.push({"event":"trust_commander"});  
}  
}
} 
//Choice already expressed
else{

}
</script>  
  • Triggering : "All pages"

Step 4 :Trigger your tags based on user consent

In the GTM interface, in the Tags section, assign the previously created trigger to your tags to fire them based on the TrustCommander categories. These triggers will replace your normal "pageview" trigger.

ATT - App Tracking Transparency (iOS 14.5+)

When and how should you request permission from the ATT?

Before attempting to use the IDFA from an iOS device, you must first display the ATT tracking permission alert, according to Apple's guidelines. If permission is not requested or if the user declines, the IDFA will be unavailable to your app and any embedded third-party SDKs. Third-party SDKs may not function properly in this case.

To really complies with both Apple and GDPR requirements, you must open the ATT popup to get user permission as well as open CMP popup to get user consent for GDPR purpose.

ATT isn't currently compliant with the IAB TCF or with GDPR prerequisites, so it can't be utilized as the lone consent collection system and should be utilized with the TrustCommander CMP.

Our recommended solutions

1. Most accepted solution : ATT first

From customer's experiences, the most accepted solution by Apple is to :

  1. Open the ATT popin

  2. Depending of user's choice on ATT :

    1. if the user choose to allow the tracking, then open the TrustCommander popin to collect the consent

    2. If the user refuse the tracking in the ATT popin, the user has to be considered as optout without opening the TrustCommander popin

2. ATT after TrustCommander

For some customer's this solution worked also :

  1. Open the TrustCommander popin

  2. Whatever the consent, open the ATT popin just after

This setup offers the advantage of allowing the user to consent certain purposes whatever his choice regarding the popin ATT tracking. Neverthe less this implementation is some time refused by some Apple reviewers

Dashboard

The TrustCommander performance dashboard provides insights into critical KPIs of your consent management setup.

Interface

Filter options

The dashboard provides KPIs for each individual TrustCommander banner. You can customise the dashboard by adjusting filter settings at the top left of the interface. TrustCommander provides the following filters:

Configures which privacy banners are displayed in the dashboard table.

Allows to filter dashboard metrics for typical device types. Depending on the browser settings of your website visitors, device recognition might not be 100% accurate.

Allows to filter dashboard metrics for data inside and outside the EU.

Time selection

On the top right you will find options to filter data for a specific time range by specifying a start and end date. The dashboard will show metrics including the selected start and end date.

To select only one day, the day has to be clicked twice in the date picker so that both the start and end date are set to the needed day.

Export options

It is possible to export CSV reports via the EXPORT option on the top right in the interface. Reports will only include data for the selected timeframe.

Data collection is done in real-time, but metrics calculation is updated overnight, therefore no data is available in the dashboard for the current day (if you need immediate data, you can export the raw consent data via the "Options" page).

Measurement approach

TrustCommander measures privacy banner interactions to calculate consent KPIs.

All metrics are visitor/ traffic based and not user based. TrustCommander therefore sets a 1st party cookie TCPID on website visitors. It deduplicates certain metrics (e.g. opt-in actions) of a visitor based on this cookie. TrustCommander identifies visitors as new visitors in case they delete this cookie.

Optin vs. optout action

To understand dashboard metrics it is important to understand how TrustCommander measures optin and optout actions.

An optin action occurs when a visitor...

  • clicks the accept button of the privacy banner.

  • saves the privacy center with at least one category set to "on".

  • navigates to a second page (only in case implicit "on navigation" consent was installed).

  • scrolls on the landing page (only in case implicit "on scroll" consent was installed).

  • clicks any element on the website (only in case implicit "on click" consent was installed).

An optout action occurs when a visitor...

  • clicks the reject button of the privacy banner.

  • saves the privacy center with all categories off.

Examples

Following examples outline a hypothetical scenario with only one website visitor to explain the measurement approach:

Example 1

  1. A new visitor arrives at a website with a TrustCommander privacy banner.

  2. He accepts the privacy banner and immediately navigates to the privacy policy page.

  3. There he re-opens the privacy center and revokes his prior consent.

This would lead to one optin action and one optout action and two banner views. TrustCommander deduplicates action and therefore only uses the last action of a visitor to calculate the consent KPIs per day. Additionally it deduplicates the banner views per visitor per day therefore only counts one banner view in this scenario. This user journey leads to an optin rate of 0%, a no choice rate of 0%, and optout rate of 100%.

Example 2

  1. A new visitor arrives at a website with a TrustCommander privacy banner.

  2. He does not interact with the banner and leaves the site immediately.

  3. On the next day he returns to the website.

  4. He accepts the privacy banner and immediately navigates to the privacy policy page.

  5. There he re-opens the privacy center and revokes his prior consent.

On the first day this would lead to no action and one deduplicated banner view. On the second day this leads to one deduplicated optout action (see Example 1) and one deduplicated banner view.

For a selected timeframe that only includes the first day this would result in a no choice rate of 100%. For a selected timeframe that only includes the second day this would result in a optout rate of 100%. For a selected timeframe that includes both days this would result in an optin rate of 0%, a no choice rate of 50%, and an optout rate of 50%.

This measurement approach and the following metrics are based on the standard usage of TrustCommander banner templates. In case of a banner customisation or custom workflow, part of the metrics might have a different meaning.

Dashboard metrics

Following you will find detailed descriptions of each metric in the dashboard. When available you can expand the line to get the break down by categories.

Global

Metrics are deduplicated each day. On 23/09/2021 the calculation method has changed to take into account both banner displays and Privacy Center displays (previously, only banner displays were taken into account). When displaying the dashboard after this date, every date range will take into account Privacy Center display.

Consent methods

How engaged visitors react to CMP?

How visitors interact with the CMP banner?

How visitors use the privacy center?

Understanding metrics

No choice vs. Bounce rate

In an optin configuration (no tracking before a user provides consent), bounce rate tracking is not possible anymore as bouncers usually won't interact with the website and therefore won't provide consent for analytic services. The no choice metric of TrustCommander can help to get an idea on your bounce rate, but it is not the same metric!

In a default optin configuration, the "no choice" is expected to include:

Normal cases:

  • Visitors who do not provide an optin and leave the website (bounce)

  • Visitors who do not provide an optin and continue to browse the website without closing the privacy consent message (possible with header/ footer banner templates, less likely with a popin template that blocks website navigation)

  • Visitors who do not provide an optin who continue browsing the website after closing the privacy consent message with the closing cross

Special cases:

  • Visitors that are redirected by an internal redirect of the website (for example due to a language redirect on the landing page)

  • Mobile visitors who are redirected to the mobile app when arriving on the landing page in a mobile browser

  • Visits of bots like web crawlers. Common bot traffic is excluded but industry specific crawlers might increase "no choice" percentage

At the time of the first release of TrustCommander the no choice rate is expected to be close to your bounce rate. The metrics will then start to differ over the following time.

AB testing

The performance of privacy banner is crucial for the success of any data driven marketing activity. Therefore it is especially important to perform AB tests of your privacy banner to improve the user experience of your website visitors and to improve your consent KPIs. For AB tests it is common to set a goal to minimise the no choice and optout KPIs.

TrustCommander dashboard makes it very easy to compare metrics of two banners set up for AB test side by side by adding the AB test banners via the PRIVACY filter option.

Please contact your Commanders Act consultant in case you need support in setting up AB tests for your TrustCommander setup.

Android

Having the user consent is essential to send sensible information like the IDFA/AAID. To prevent having to manually save the consent asked to the user and manually using it with our SDKs, we created a module helping you do it automatically.

This module will gather the consent and will:

  • Display a consent page (if needed)

  • Save consent and reload it every time the application is launched.

  • Save and check the validity of the consent. The validity duration is set to 13 months.

  • Send a hit to our servers to record the consent.

  • Enable or disable the SDK. (if used alongside the SDK)

  • Add the categories automatically to the hits the SDK sends. (if used alongside the SDK)

Privacy's Implementation Guide:

Banner Templates

A list of available banner templates in TrustCommander

TrustCommander offers multiple banner templates for different kind of privacy workflows.

Manage Categories

Management of TrustCommander privacy categories.

TRUST> Categories & Tags (tab MANAGE CATEGORIES)

In this section you can manage your TrustCommander privacy categories and sub-categories. These categories will be used by your privacy center to provide users with detailed privacy management options.

Category options

Each TrustCommander privacy category has following options:

Managing categories

Default category

In case you use TrustCommander with TagCommander you can select a default category with a dropdown on the top left of the interface. New tags in TagCommander will automatically receive the default category as their privacy category. The default category has a * in the category list.

Creating categories

To add a new category press ADD CATEGORY on the the top right of the interface.

TrustCommander supports up to 10 categories.

Editing categories

You can edit a TrustCommander category by pressing the pencil icon to the right of the category.

Deleting categories

You can delete TrustCommander categories by pressing the x icon to the right of the category.

You need to regenerate your privacy banners after adjusting privacy categories. In case you install TrustCommander with TagCommander you will also need to regenerate your TagCommander container so that your tags have access to the updated categories.

IAB categories

IAB TCF 2.0 purposes, special purposes, features and special features are automatically added to the CATEGORIES tab depending the vendors you add in the MANAGE VENDORS tab. You can still add custom categories that you can use side by side with the predefined IAB categories.

The description of IAB TCF 2.0 categories is automatically loaded from the IAB TCF 2.0 framework.

Accessibility Template

WCAG standards : offer a privacy fully functional for people with disabilities

Among the available templates, one is dedicated to accessibility. It ensures compatibility with RGAA and WCAG 2.0 level AA standards.

What is Web Accessibility ?

When websites and web tools are properly designed and coded, people with disabilities can use them. However, currently many sites and tools are developed with accessibility barriers that make them difficult or impossible for some people to use.

Making the web accessible benefits individuals, businesses, and society. International web standards define what is needed for accessibility.

Web accessibility means that websites, tools, and technologies are designed and developed so that people with disabilities can use them. More specifically, people can:

  • perceive, understand, navigate, and interact with the Web

  • contribute to the Web

With this template the main key point is to offer a privacy fully functional for people with disabilities.

Translation

The Accessibility template provides an automatic translation of different labels. This translation is based on navigator language. Currently, it supports : Italian, English, German, French and Russian.

Options :

1. Personalize translation

Banners

You can either add new translation or override aria labels by using the function tC.privacy.addTranslation() in the custom JS.

Labels available :

iframeTitle : Title attribute of the iframe

privacyLabel : Aria Label of the footer

acceptAria : Aria Label of the accept button

refuseAria : Aria Label of the refuse button

showPcAria : Aria Label of the “Show Privacy Center“ Button

Exemple :

Privacy Center

⚠️ To translate the privacy you must use another function: pc.addTranslation()

Available keys and their values :

Some of the translation accept a label as {label}. The label here is always the label of the category.

The last keys with SrPrefix/SrSuffix have empty translation by default. These keys are used for “sr-only” text which are prefixing and suffixing the category name. These text are only readable by a screen reader.

cookieSr are used when the category isn’t locked

cookieAlwaysOnSr replaces cookieSr if the category is blocked to on

Example:

2. Force Translation

By default, texts provided to screen readers is translated depending on the navigator language. In some case you may want to display a privacy in english for example even if the navigator language is another one. ie : with an ISO language code in the url

You can force the privacy to take a language by using the function setLocale in the Privacy Center > Custom JS field > JS Block Before :

Value can be : fr, it, de, ru or en

Note : this function must be placed after the translation declaration.

3. Focus Trap

The focus trap is an accessibility option designed so that keyboard user have their navigation locked to the banner. Pressing the TAB key would cycle between the different navigation elements of the banner without going on your website. This is an accessibility recommendation when using modal on a webpage.

You can deactivate the focus trap by adding the following JavaScript snippet to the custom JS of the accessibility template banner:

Add IAB TCF 2.0 vendors popin
Other elements that can be managed by TrustCommander.
Example: Assigning a Facebook tag to the SOCIAL NETWORKS category.

This method to integrate GTM is outdated. See the page “” for a smoother integration.

Choose the default account configuration mode for your account (see ).

Setup your TrustCommander categories & vendors (see ).

Create one or multiple banner templates (see )

Deploy your TrustCommander banner templates to the Commanders Act CDN or on premise target (see ).

Example: if you wanted to add a trigger to Criteo tag based on whether the user accepted or refused the ‘Retargeting’ category, you would assign the previously created ‘Retargeting category’ trigger to the ‘Criteo’ tag.

Since April 2021, Apple requires that your app provide a transparency popup to ask user permission for tracking, beginning with iOS 14.5 () and the .

To go further, here a for France customers the position of the competition authority on this subject:

TrustCommander is compliant with IAB TCF 2.0 (). To enable IAB categories go to TRUST > Options and activate the IAB option.

TrustCommander is compliant with IAB TCF 2.0 () and can use predefined IAB TCF purposes instead of manually configuring categories. Go to TRUST > Options tab to activate IAB TCF 2.0 option for your account.

Web Content Accessibility Guidelines (WCAG) is developed through the in cooperation with individuals and organizations around the world, with a goal of providing a single shared standard for web content accessibility that meets the needs of individuals, organizations, and governments internationally.

More information here :

⚠️
Consent Mode in GTM
Manage Categories
Manage Banner
Deploy Banner

Metric

Description

Visitors exposed to CMP

The number of visitors viewing a screen of the CMP for the requested time period. It includes visitors viewing the first layer as well as visitors opening the privacy center.

Give consent

The number of visitors who at least consent to one category. It includes consent collected via the first layer (accept all, reject all buttons) as well as consent collected via the privacy center. In case several consent actions are collected during the same day (consent, no consent), only the last one is taken into account.

Do not give consent

The number of visitors who consent to no category. It includes visitors who explicitly don’t give consent (e.g. click reject all button) and “no choice visitors” with no action recorded. In case several consent actions are collected during the same day (consent, no consent), only the last one is taken into account.

Metric

Description

Banner button

The number of visitors who explicitly consent to all categories by clicking the accept button on the first layer.

Privacy center

The number of visitors who explicitly consent to at least one category by clicking the save button on the privacy center.

Implicit > Continue browsing

The number of visitors who implicitly consent to all categories by navigating to a second page on the website.

Implicit > Page click

The number of visitors who implicitly consent to all categories by clicking any element on the page.

Implicit > Page scroll

The number of visitors who implicitly consent to all categories by scrolling down on the page.

Metric

Description

Visitors making an explicit choice

The number of visitors saving a consent choice. It includes choices made by clicking consent or refuse buttons on the first layer as well as choices saved via the privacy center.

Explicitly consent (at least 1 category)

The number of visitors who at least consent to one category. It includes consent collected via the global layer (accept all, reject all buttons) as well as consent collected via the privacy center.

Explicitly reject

The number of visitors who consent to no category. It only includes visitors who explicitly don’t give consent (e.g. click reject all button). It excludes “no choice visitors” with no action recorded. In case several consent actions are collected during the same day (consent, no consent), only the last one is taken into account.

Metric

Description

Interaction rate

The number of visitors who at least interact with one element of the CMP first layer. It includes clicks on accept button, reject button, configure button (opening the privacy center) and text links.

Metric

Description

Visitors exposed to privacy center categories

The number of visitors viewing the category section of the privacy center for the requested time period.

Visitors exposed to privacy center vendors

The number of visitors viewing the vendor section of the privacy center for the requested time period.

Visitors saving a configuration

The number of visitors clicking the privacy center save button. It includes visitors using the save button as well as the accept all or reject all buttons.

Visitors not saving a configuration

The number of visitors viewing the privacy center and not saving a configuration. It includes visitors using the closing cross to go back to the first layer and visitor leaving the website from the privacy center.

Template

Description

Header (with Privacy Center)

Floating overlay banner (is layered on top of the website), positioned at the top of the page. This banner includes a text message and customisable buttons. You can add a link to another page (e.g. privacy policy).

This template exists with and without an optional privacy center.

Popin (with Privacy Center)

A floating modal dialogue (pop-up), positioned in the centre of the page. This banner includes a text message and customisable buttons. It supports links to another page (e.g. privacy policy).

This template exists with and without an optional privacy center.

Footer (with Privacy Center)

Floating overlay banner, positioned at the bottom of the page. This banner includes a text message and customisable buttons. It supports links to another page (e.g. privacy policy).

This template exists with and without an optional privacy center.

A variation of this template exists with extended accessibility support.

Footer without button

Floating overlay banner, positioned at the bottom of the page. This banner includes a text message and cross icon to close the banner. It supports links to another page (e.g. privacy policy).

Popin with categories

This template directly opens the privacy center that allows visitors to select TrustCommander privacy categories and sub-categories they want to activate/deactivate.

IAB TCF 1.1 Popin

A floating modal dialogue (pop-up), positioned in the centre of the page. This template offers consent controls following the IAB TCF 1.1 standard.

IAB TCF 1.1 Footer

Floating overlay banner, positioned at the bottom of the page. This template offers consent controls following the IAB TCF 1.1 standard.

IAB TCF 2.0 Popin

Template available if IAB TCF 2.0 option is activated in the TRUST > Options section.

A floating modal dialogue (pop-up), positioned in the centre of the page. This template offers consent controls following the IAB TCF 2.0 standard.

IAB TCF 2.0 Footer

Template available if IAB TCF 2.0 option is activated in the TRUST > Options section.

Floating overlay banner, positioned at the bottom of the page. This template offers consent controls following the IABTCF 2.0 standard.

Option

Description

Name

Name of the category (e.g. "Analytics", "Advertising", etc.). Privacy centers use this name as the default label for this category in case no localisation was provided in the banner editor.

ID

ID of the category. This ID is used in raw data exports and for technical setup of certain functionalities. It is possible to manually provide an ID. In case the field is left empty a category ID will be assigned automatically.

Description

Description of the category. Privacy centers use this description as the default description for this category in case no localisation was provided in the banner editor.

Sub-categories

It is possible to provide sub-categories for each category (e.g. "Universal Analytics", "Matomo", etc. for an "Analytics" category). Each sub-category has a name and an ID. Privacy center use this name as the default label for this sub-category in case no localisation was provided in the banner editor. The ID is used in raw data exports and for technical setup of certain functionalities. It is possible to manually provide an ID. In case the field is left empty a sub-category ID will be assigned automatically.

tC.privacy.addTranslation({
  en : {
    // overriding
    iframeTitle : 'the iframe title you want',
    privacyLabel : 'the aria label you want',
    acceptAria: 'the aria label you want for accept button',
    refuseAria: 'the aria label you want for refuse button',
    showPcAria: 'the aria label you want for display the pc button'
  },
  ru: {
    // add new translation
    iframeTitle : 'the iframe title you want',
    privacyLabel : 'the aria label you want',
    acceptAria: 'the aria label you want for accept button',
    refuseAria: 'the aria label you want for refuse button',
    showPcAria: 'the aria label you want for display the pc button'
  }
})
var en = {
    "pcAria":"Cookie settings",
    "closePrivacyCenter":"Close the cookie setting dialog",
    "acceptAll":"Accept all",
    "refuseAll":"Refuse all",
    "saveLabel":"Save",
    "saveAria":"Save the current cookie settings",
    "acceptAllAria":"Accept all cookies",
    "refuseAllAria":"Refuse all cookies",
    "showVendors":"Show vendors",
    "showPurposes":"Show purposes",
    "vendors":"Vendors",
    "enableCookieLabel":"Enabled:",
    "enableCookieAria":"{label} cookies enabled",
    "disableCookieAria":"{label} disabled cookies",
    "turnOnSubCategoriesAria":"Enable {label} cookies",
    "turnOffSubCategoriesAria":"Disable {label} cookies",
    "cookieAlwaysOnSrPrefix":"",
    "cookieAlwaysOnSrSuffix":"",
    "cookieSrPrefix":"",
    "cookieSrSuffix":"",
    "showRelatedVendors":"Show related vendors",
    "privacyPolicy":"Privacy policy",
    "categories":"Categories"
}
pc.addTranslation({
  en : {
    // Override english Aria Label
    closePrivacyCenter: 'Close the privacy center', 

  },
  ru : {
    // you can also add a new language
    closePrivacyCenter: 'Close the privacy center',
      },
})
pc.setLocale("fr");
tC.privacy.enableFocusTrap(false);
ATT framework
https://www.autoritedelaconcurrence.fr/fr/communiques-de-presse/ciblage-publicitairemise-en-place-par-apple-de-la-sollicitation-att-lautorite
https://github.com/TagCommander/android/tree/master/TCPrivacy
Link to official listing
Link to official listing
W3C process
https://www.w3.org/WAI/standards-guidelines/wcag/
Options
Options
Options
Options

Manage Banner

Options to create and edit banner templates.

TRUST > Privacy banners

Creating Privacy Banner

Click ADD PRIVACY BANNER in the top right of the interface to add a new banner to your account. Each template has following options:

Field

Description

Name

Label of the banner used in the interface.

Template

Dropdown to select a template for this banner.

Hosting

Consent duration

Duration how long the consent cookie is valid. After this duration the consent cookie is not valid anymore and a new banner will be presented to the user. It is possible to configure a duration in full months between 1 and 13 month. This has no impact on the storage duration of the consent in the TRUST consent database.

Use the new privacy center

This option allows to use the old privacy center template of TrustCommander. This option allows to use custom CSS and custom JS that was created for old banner templates. In case you are not sure if a banner was customised please check with your Commanders Act consultant or support contact before creating a new template. This option is not available on all templates.

Update Privacy Banner

You can open and edit the privacy banner settings via the gear icon on the top left of the interface.

Changing banner templates might not work for customised privacy banner templates. Please contact your Commanders Act consultant or support in case you are unsure if your banner was customised before using this option.

Customise banner content

TRUST > Privacy banners (tab EDIT BANNER)

Options for banner customisation

All banner templates can be customised with a WYSIWYG editor. Following options are available for all banners (except IAB TCF and Popin with Categories templates).

Options to manage the main text content of your banner.

  • Content: Text content (supports HTML formatting and links).

  • Font color: Text color.

  • Background color: Background color of the content area.

Options to manage up to two buttons.

  • Label: Button text.

  • Font color: Color of the button text.

  • Background color: Background color of the button.

  • Button action: Action the button performs (e.g. optin to all categories or open privacy center).

  • Button Position: Change Button Position to Top/Bottom of the banner. Only one button can be positioned to top.

Custom CSS that can be used by advanced users to customise the banner style. This CSS is applied globally to your website, avoid to use global selectors and use the HTML ID attribute of the banner elements instead.

Advanced customisation options. Please contact your Commanders Act consultant or support before using these.

Changes have to be saved with the SAVE button.

Options for privacy center customisation

Following options are available for the privacy center and "Popin with categories" templates.

Options to manage the header text of your privacy center.

  • Title: Text content.

  • Font color: Text color.

  • Background color: Background color of the header area.

Options to manage the main text content of your banner.

  • Categories introduction: Introductory text of the category tab (supports HTML formatting and links)

  • Vendors introduction: Introductory text of the vendor tab (supports HTML formatting and links, only visible in case IAB TCF 2.0 or custom vendors were activated)

  • Font color: Text color.

  • Background color: Background color of the content area.

Options to manage the privacy categories of the privacy center. These categories are based on the categories managed in the Categories & Tags part of the interface.

  • Order: Drag and Drop sorting of Categories.

  • edit icon that allows to overwrite the default name and description of categories and sub-categories that have been provided in the

    Categories & Tags section of the interface for this banner (used for localisation).

  • Checkbox that allows to hide a category (below edit icon).

  • Categories Blocked On: Checkbox that permanently enables a category that can not be deactivated by visitors (e.g. for an "essential cookies" category)

  • IAB TCF 2.0 option: IAB purposes, special purposes, features and special features are automatically displayed on the basis of selected vendors in Categories & Tags / Manage vendorssection. The categories translation is done automatically depending on the user’s browser language settings. Non-IAB categories will be displayed after the official IAB categories in the banner.

Options to manage and translate descriptions of custom vendors. IAB TCF 2.0 vendor descriptions and translations are managed automatically by the IAB TCF 2.0 framework.

  • Vendor Description: Description displayed in the vendor tab.

  • Hide Vendor: Options to hide the vendor from the banner.

  • Order of vendors can be changed via drag & drop. (IAB TCF 2.0 vendors are always displayed before custom vendors).

Options to manage the save button, and the category controls of the privacy center.

  • Label: Button text.

  • Font color: Color of the button text.

  • Background color: Background color of the button.

  • Default status of buttons (IAB and non-IAB) to accept or refuse categories and sub-categories:

    • "On": "On" is chosen by default for categories/sub-categories (IAB and non-IAB) in the Privacy Center. When the visitor leaves it as such, their status for browsing is “optin”.

    • "Off": "Off" is chosen by default for categories/sub-categories in the Privacy Center. When the visitor leaves it as such, their status for browsing is “optout”.

    • "Neutral position": In this position, neither "On" nor "Off" is chosen by default for categories/sub-categories in the Privacy Center. The user must choose “On” or “Off” for each of the categories and sub-categories to be able to save their preferences and continue browsing. The “Warning message” field allows you to personalise the message that will appear to the left of the save button in the Privacy Center: this will inform the user that they must give or refuse their consent for all the categories before saving.

  • Default status of buttons to accept or refuse vendors (IAB and non-IAB):

    • "Off": The default status of vendors is "Off". When a new visitor accepts consent categories in the privacy center for the first time the vendors are not not activated based on their linked categories.

  • Label for "Off for all": "Off for all" button text if the user wants to give their choice for all of a category’s sub-categories in one click.

  • Label for "Off" button: "Off" button text which appears in the Privacy Center (e.g. you can replace it by “No”).

  • Label for "On for all": "On for all" button text if the user wants to give their choice for all of a category’s sub-categories in one click.

  • Label for "On" button: "On" button text which appears in the Privacy Center (e.g. you can replace it by “Yes”).

  • "ON blocked" look & feel: Styling of on blocked Categories (Checkbox or Text)

Custom CSS that can be used by advanced users to customise the banner style.

Advanced customisation options. Please contact your Commanders Act consultant or support before using these.

Changes have to be saved with the SAVE button.

Advanced Options for IAB TCF Banner

Customise Publisher Country Code Field

Option to manage the publisherCC field of the IAB TCF API.

TrustCommander sets this value to "FR" by default in the IAB response. The publisher country code field can be customised with following JavaScript snippet (should be implemented in the first container on the website.).

tC.privacy.iabPublisherCC = "<country_code>";

Example to set the publisher country code field to a German country code:

tC.privacy.iabPublisherCC = "DE";

Customise Purpose One Treatment Field

Option to manage the purposeOneTreatment field of the IAB TCF API.

IAB TCF offers this field to specify how purpose one should be treated in specific scenarios.

true: Purpose 1 not disclosed at all. CMPs use publisherCC to indicate the publisher's country of establishment to help Vendors determine whether the vendor requires Purpose 1 consent.

false: There is no special Purpose 1 treatment status. Purpose 1 was disclosed normally (consent) as expected by TCF Policy

TrustCommander sets this value to false by default in the IAB response. The purpose one treatment field can be customised with following JavaScript snippet (should be implemented in the first container on the website.).

tC.privacy.iabPublisherCC = (true|false);

Neutral vendor buttons

You can change the vendor button type to neutral if you choose the neutral position as the default status.

You can't choose a neutral position for IAB categories (purposes) as it's not allowed by the framework policy

Synchronisation mode between vendors and categories

You can choose to synchronise vendors status with categories, choosing to do it only for neutral buttons or always. If you use an IAB TCF template, this option will not have any effects on TCF vendors, as the TCF framework doesn't allow this.

IAB TCF Stacks Beta

Only available for IAB TCF 2.0 banner.

Right now IAB TCF Stacks are in beta in TrustCommander. They are activated with a JavaScript command that needs to be added to the privacy center CUSTOM JS field JS BLOCK BEFORE.

TrustCommander offers two options to activate Stacks:

pc.iab.useAutoStack();

This option uses an algorithm to automatically find the tightest Stack combination for the configured vendors. This option is the recommended approach.

pc.iab.useStackIds(1,2); // activates Stacks with ID 1 and 2

Purposes may only be included in one Stack. In case of a bad configuration TrustCommander ignores IAB Stack configuration and provides an error in the browser console.

Move native Categories above IAB Purposes

Per default IAB Purpose controls are placed above native category controls. It is possible to display native categories above IAB TCF Purpose controls by adding following JavaScript snippet to the CUSTOM JS field JS BLOCK BEFORE of the privacy center.

pc.tc.categoriesSectionTop(true);

The "Other" headline of the native category controls can be translated by adding following configuration snippet to the CUSTOM JS field JS BLOCK BEFORE of the privacy center.

pc.addTranslation({
    en: { others: 'My Headline' }
});
pc.setLocale('en');

Cookie Scanner

The cookie scanner module allows TrustCommander users to monitor cookies on their website and to provide users with an automated cookie notice.

Overview

TrustCommander offers a cookie scanner that continuously monitors websites for cookies in realtime. The scanner has access to a database of common analytics and marketing cookies and can therefore provide ready to use descriptions and information. This cookie information can be used to install a dynamic cookie notice on the website that provides transparent information about the used cookies and their purpose to visitors.

Scan Cookies

Mechanisms

Cookie scanner combines three mechanisms to identify cookies on websites:

Cookie Scanner uses a JavaScript tag that is directly deployed on the website (e.g. with TagCommander). The JavaScript tag scans cookies of website users in realtime. This allows to identify cookies that are set in very specific scenarios e.g. it allows to identify cookies that are only set for a specific geolocation or behind a log-in form.

The tag also monitors the 3rd party domains the website communicates with (e.g. for an Analytics service). This information is used to infer 3rd party cookies via the cookie scanner cookie database.

JavaScript tags have limited access to cookie information—therefore cookie scanner enriches the information identified with the JavaScript tag with information received with the Chrome extension and cookie database.

Commanders Act recommends to install the Chrome extension on multiple team members across different country teams to cover a wide range of use cases.

Cookie Scanner uses a cookie database to enrich missing information that can not be identified with the tag and extension. For example it provides ready to use descriptions for common tracking and marketing cookies.

Additionally the cookie database provides the tag with a mechanism to infer typical 3rd party cookies based on the communication of the website with 3rd party domains.

Some technical systems (like Drupal) create dynamic cookie names. Cookie Scanner therefore groups cookies when 5 or more cookies start with the same 4 characters. (e.g. abcd123, abcd2345, abcd3456, etc.)

Cookie Types

Cookie scanner can scan following types of cookies:

Cookie Type

Description

Scanned with

1st Party Cookie

1st party cookies are cookies that are stored on the domain of the website.

  • Tag

  • Chrome Extension

3rd Party Cookie

3rd party cookies are cookies that are stored on a 3rd party domain.

  • Chrome Extension

  • Cookie Database

HttpOnly 1st Party Cookie

HttpOnly 1st Party Cookie are server cookies that are stored on the domain of the website and that have a HttpOnly flag.

  • Tag

  • Chrome Extension

HttpOnly 3rd Party Cookie

HttpOnly 3rd Party Cookie are server cookies that are stored on a 3rd party domain and that have a HttpOnly flag.

  • Chrome Extension

  • Cookie Database

Local Storage

localStorage is a JavaScript accessible browser storage.

  • Tag

  • Chrome Extension

Session Storage

sessionStorage is a JavaScript accessible session based browser storage.

  • Tag

  • Chrome Extension

Cookie Fields

Cookie Scanner scans following fields per cookie:

Field

Description

Scanned with

Name

Name of cookie e.g. _ga

  • Tag

  • Chrome Extension

Vendor

Name of the vendor that uses the cookie e.g. Google

  • Cookie Database

Category

Category of the cookie that give a high level information on the purpose of the cookie e.g. Technical Cookie

  • Cookie Database

Storage Location

Storage location of the cookie (combination of cookie type and storage domain). It has one of the following values:

  • 3rd Party Cookie (www.example.de)

The domain in brackets is the domain where the cookie is stored. For 1st party cookies it is the domain or subdomain of the website. For 3rd party cookies it is a 3rd party domain or subdomain that is different from the website.

  • Tag

  • Chrome Extension

Storage Duration

Storage duration of the cookie. An algorithm is used to smoothen technical inaccuracies and to optimise readability for users:

  • For Session Cookies it displays "Session"

  • Under 1 month it displays in days, e.g. "7 days"

  • Above 1 month it displays in month, e.g. "13 months"

  • Above 36 month it displays in years, e.g. "5 years".

  • Above 100 years it displays “Unlimited”

Local storage always has duration "Unlimited" and session storage always has duration "Session".

  • Tag

  • Chrome Extension

  • Cookie Database

Description

Description for what the cookie is used, e.g. “Base64 UUID used to identify users on this website to optimise usage across sessions. Used on all pages.”

  • Cookie Database

Cookie scaner doesn't store cookie's values

Manage Cookie Information

TRUST > Cookie Scanner > EDIT (Tab)

In the edit step of the cookie notice it is possible to investigate, edit and enrich cookie information.

Sections

All identified cookies are listed in three groups:

  1. New lists new Cookies that have not yet been manually investigated

  2. Active lists Cookies that should be shown in the cookie notice

  3. Ignored lists (internal) Cookies that should not be shown in the cookie notice

Edit Cookie Information

It is possible to edit the information of each cookie by pressing the Pen icon to the right on the table. This will open a cookie dialogue with following options:

Option

Description

Name

The name of the cooke can not be edited.

Vendor

Dropdown that allows to map the cookie to a TrustCommander vendor managed under TRUST > Categories & Tags.

Vendor Label

Defines the name of the cookie vendor listed on the cookie notice.

Vendor URL

A URL of the vendor that is used in the cookie notice. This allows customers to click the name of the vendor.

Category

Dropdown that allows to map the cookie to a TrustCommander category managed under TRUST > Categories & Tags.

Category Label

Defines the name of the cookie category listed on the cookie notice.

Storage Type

One of the storage types listed under Cookie Fields.

Storage Domain

The domain where the cookie is stored.

Storage Duration

The duration the cookie is valid on users browsers.

Description

A description of the cookie. If possible this field is automatically filled from the cookie database. In case it is overwritten the description is not anymore synced with the cookie database. Clicking the Reset Default button will re-sync the description with the cookie database descriptions.

Custom Fields

All custom fields created in the cookie scanner options.

Create Custom Cookie

It is possible to add custom cookies by pressing the ADD COOKIE button on the top right of the interface. This will open a cookie dialogue that has the same fields as the edit cookie information dialogue. Additionally it has a Name field that allows to set the name of the custom cookie.

Activate, Deactivate or Delete Cookies

New cookies and inactive cookies can be activated via the Checkmark icon. This adds them to the Active cookies list.

Active cookies and be deactivated by clicking the Stop sign icon. This adds them to the Inactive cookies list.

Inactive cookies can be deleted with the Trash can icon. This removes the cookie from the list entirely.

Cookies that should not be shown in the cookie notice should be kept in the inactive list and not deleted. Otherwise they will re-appear as soon as the cookie scanner identifies them again.

Localise Cookie Information

Localisation is not available yet.

It is possible to localise cookie information. This allows to translate important information of each cookie for the cookie notice that can be embedded on a website.

To localise cookie information it is first necessary to select supported languages. To select supported languages go to TRUST > Options and select the country codes of the languages the cookie notice should be made available in. It is recommended to select country codes from the dropdown, but it is also possible to add custom country codes. Cookie Scanner offers automatic translation of predefined information for common languages (EN, FR, DE, IT).

After selecting the needed country codes the cookie information can be translated in the EDIT step of the interface. To translate a cookie click the Pen icon to open the edit modal. There it is possible to select a country code via a dropdown. Then adjust the setting the fields to translate them. You can preview the cookie list in a specific language by using the country code dropdown in the top right of the interface.

Following fields support localisation:

  • Vendor Label

  • Category Label

  • Description

  • Custom Fields

Labels

The cookie list displays optional labels for each cookie in the cookie list to inform about important information and notifications.

Label

Description

Inferred

The cookie was not identified directly, but inferred via the cookie database. It might be a false positive.

Missing

The cookie was not scanned for over one month. It might not be in active use anymore.

Custom

The cookie was manually created.

Set before consent

The cookie is set before a customer provides consent via TrustCommander. This can be intentional for essential cookies.

Manage Cookie Notice

TRUST > Cookie Scanner > DEPLOY (Tab)

The DEPLOY (Tab) interface is used to install, create and deploy a cookie notice on a website. It provides a versioned list of cookie notices that were created within the account.

Install Cookie Notice

After all cookie information was setup in the EDIT (Tab) it is possible to install the cookie notice on a website. The cookie notice is available in 3 versions:

1. Javascript snippet

Copy/past the js code on your legal page to automatically build the cookies list table.

2. HTML Table

The HTML table is the recommended way to install a dynamic cookie notice on websites.

For this it is recommended to setup both a JavaScript tag (e.g. tag template 'TRUST | Install Cookie Notice' in TagCommander) and a placeholder <div> on the website (e.g. in the Content Management System). The placeholder is a slot where the table should be inserted and the tag loads the table and inserts it into the slot.

Both the <div> and the tag need to be configured with a common id. e.g. in case the placeholder <div> has following id: <div id="ca-slot--cookie-notice"></div> it is necessary to set the parameter #PLACEHOLDER_DIV_ID# of the tag template TRUST | Install Cookie Notice to ca-slot--cookie-notice .

Endpoint of the HTML file:

https://cdn.tagcommander.com/cookie-scanner/<site_id>/v1/cookies-<language_code>.html

site_id: Commanders Act site ID (e.g. 1234).

language_code: Language of the cookie notice (e.g. fr, default language is en).

The HTML table uses semantic and accessible table HTML. This ensures that the table uses the default styling of your website. The style of the table can be directly adjusted with the CSS of the website. In case you need help styling you can reach out to your Commanders Act consultant.

3. JSON API

The JSON API provides a method to install a cookie notice for advanced use cases. It provides all cookie information in a structured data format that can be used by technical users to create custom functionalities. The JSON API can e.g. be used to inject a custom cookie notice into a native App.

Endpoint of the json file:

https://cdn.tagcommander.com/cookie-scanner/<site_id>/v1/cookies-<language_code>.json

site_id: Commanders Act site ID (e.g. 1234).

language_code: Language of the cookie notice (e.g. fr, default language is en).

Create Cookie Notice Version

Before it is possible to deploy updates to the cookie notice it is necessary to create a new version. To create a new cookie notice version click the NEW VERSION button on the top right of the interface. This will take all cookies in the Active list of the EDIT (Tab) to create the cookie notice. In the new version dialogue it is possible to provide a comment that explains changes in the new version for internal reference.

Preview Cookie Notice Version

The Play button to the right of a cookie notice version can be used to preview a cookie notice. This will not apply any styling of the website so the look will differ compared to the cookie notice on the website.

Export Cookie Notice Version

A Down Arrow button is available for each cookie notice version. It allows to download the cookie notice in all localisations in HTML, JSON, CSV and XSLX format. In the XSLX one tab is included per language. For all other formats a ZIP will be provided that includes one file per language.

Deploy Cookie Notice Version

The DEPLOY button to the right of each cookie notice version can be used to deploy a cookie notice to the website. This allows to deploy new versions, but allows to roll back to older version in case of issues.

Options

Custom Fields

Cookie Scanners allows to add custom fields to provide additional details per cookie. These fields can be added inside of the feature settings accessible via the Gear icon. It is possible to re-arrange the fields by changing their order via drag and drop.

User Rights

User Rights for Cookie Scanner are not yet available.

Cookie Scanner offers following user rights:

User Right

Description

View Cookie List

User can see the cookie list.

Manage Cookie List

User can edit the cookie list and create custom cookies.

Generate Cookie Notice

User can view the Deploy Step and generate a cookie notice version.

Deploy Cookie Notice

User can deploy cookie notice versions.

Manage Cookie Scanner Settings

User can adjust cookie scanner settings (e.g. custom fields).

Filters

You can filter your cookie's list by host (website) and language

TagFirewall

TagFirewall can whitelist or blacklist tags.

TagFirewall is a paid extension that can be installed with TagCommander or run in standalone mode. Please contact a Commanders Act consultant or account manager to activate it.

Overview

TagFirewall blocks unauthorised tags (domains) in real time. This can e.g. help to block and reduce the risk of piggybacking tags. TagFirewall is highly dynamic and can therefore enrich an existing Content Security Policy (CSP) setup to resolve critical issues with tags in minutes or replace the need for a Content Security Policy (CSP) entirely. TagFirewall offers two modes:

Blacklist Mode

This mode blocks tag communication with a configurable list of domains. Communication with all other domains is still permitted.

Whitelist Mode

This mode blocks tag communication with all domains except a configured whitelist.

Setup

TagCommander

TagFirewall can be set up and configured with the tag template "TagCommander - TagFirewall" in TagCommander.

Option

Description

Mode

Allows to select Blacklist or Whitelist mode.

Blacklist domains

Domains that should be blacklisted. Enclosed in " and and separated by, . (Only for Blacklist Mode)

Internal domains

Tag domains that should be whitelisted. Enclosed in " and and separated by, . (Only for Whitelist Mode)

Tag domains

Internal domains (domain the website needs to function) that should be whitelisted. Enclosed in " and and separated by, . (Only for Whitelist Mode)

Check SSL

This option allows to block all http script hits (it will only allows https script hits).

Standalone

TagFirewall can be set up and configured with a custom JavaScript tag for all other installations. The tag has following options.

Option

Description

<whitelist_tags>

Array of domains used by tags that should not be blocked. (Only for Whitelist Mode)

<whitelist_internal>

Array of internal domains (domain the website needs to function) that should not be blocked. (Only for Whitelist Mode)

<blacklist_tags>

Array of domains used by tags that should be blacklisted. (Only for Blacklist Mode)

<active_flag>

This option activates TagFirewall. Set to true to activate TagFirewall.

<check_ssl>

This option allows to block all http script hits (it will only allows https script hits). Set to true to activate it.

<script_url>

URL of the TagFirewall library JavaScript file. This URL will be provided by a Commanders Act Consultant or Account Manager.

<script>
tC = tC || {};
tC.tagFirewall = tC.tagFirewall || {};

tC.tagFirewall.list = {
    "blacklist": {
        "tags": <blacklist_tags>
    }
};

tC.tagFirewall.checkSSL = <check_ssl>;
tC.tagFirewall.blocked  = <active_flag>;  
</script>
<script src="<script_url>"></script>
<script>
tC = tC || {};
tC.tagFirewall = tC.tagFirewall || {};

tC.tagFirewall.list = {
    "whitelist": {
        "internal": <whitelist_internal>,
        "tags": <whitelist_tags>
    }
};

tC.tagFirewall.checkSSL = <check_ssl>;
tC.tagFirewall.blocked  = <active_flag>; 
</script>
<script src="<script_url>"></script> 

Examples

<script>
tC = tC || {};
tC.tagFirewall = tC.tagFirewall || {};

tC.tagFirewall.list = {
    "blacklist": {
        "tags": ["bad-domain1.com", "bad-domain2.com"]
    }
};

tC.tagFirewall.checkSSL = true;
tC.tagFirewall.blocked  = true;  
</script>
<script src="<script_url>"></script>
<script>
tC = tC || {};
tC.tagFirewall = tC.tagFirewall || {};

tC.tagFirewall.list = {
    "whitelist": {
        "internal": ["cdn.yourdomain.com", "cdn.yourdomain2.com"],
        "tags": ["facebook.com","twitter.com"]
    }
};

tC.tagFirewall.checkSSL = true;
tC.tagFirewall.blocked  = true;
</script>
<script src="<script_url>"></script>

The tag should be included in the <head> of your document. It can only block tags that are loaded after the TagFirewall tag and JavaScript library file.

Options

Global TrustCommander settings.

TRUST > Options.

Only administrators can view and change these account configurations.

Account Default Configuration

Default optout / optin

This setting allows you to handle how tags should be handled in case no consent was yet provided by a user.

Your tags are not loaded when a user visits your site. They will be fired when the user continues browsing, unless they refuse cookies beforehand.

With the General Data Protection Regulation (GDPR), this is the default setting you should choose.

Your tags are loaded when a user visits your site. They are only disabled if the user explicitly refuses cookies.

This setting is not compatible with the General Data Protection Regulation (GDPR).

By default, accounts are configured in optout mode since it is the most popular and is GDPR compliant.

IAB TCF compliancy

This option enables the IAB TCF 2.0 framework for your account. This will enable IAB TCF 2.0 banner, categories and vendors.

Google Additional Consent Mode

Vendor management

This option activates vendors. This will enable vendor management options in the Categories & Tags section and enables a vendor management screen in your privacy centers that allows users to manage consent per vendor (requires re-deployment or banners).

Localisation

This option allows to select country codes (e.g. fr for French) that are used to localise the cookie notice of the cookie scanner feature. It is possible to add default country codes by clicking in the white area and selecting a country code from the dropdown. Additionally custom country codes can be added by clicking in the white area and typing the custom country code. The custom country code is saved after pressing Enter.

It is recommended to use the default country codes listed in the auto-complete dropdown. This allows to localise the cookie notice based on language settings of browsers.

Consent Export Options

Privacy Cookie Name, Separator and Subdomain

These settings allow you to modify the default name, separator and subdomain of your privacy cookie.

Changing the cookie name, separator or subdomain can have unwanted side-effects depending on your TrustCommander setup. Please contact your Commanders Act consultant or support before applying changes.

Exports

Export raw consent data

Manual or Scheduled export

You can export the raw consent data in the Options menu.

You can download consent data once, or schedule a recurrent export, by email or FTP.

Export fields

The export includes the following fields:

In case vendors are activated for the account, it is possible to include vendor optins in the export by switching the "Include Vendors in Export" toggle. This will increase export size considerably.

IP address is not stored

Storage retention

The option "Consent storage duration in database" allows to set a duration (in month) the consent data is stored in the consent database (which is used to prove consent). Be careful when changing the setting to not lose old consents by accident! You will be shown a prompt after changing the value to confirm the new duration. The maximum storage duration is 13 months. In case you need a longer storage duration, please contact your Commanders Act support or consultant.

Consent Cookie

Format of the TrustCommander consent cookie.

TrustCommander stores the consent of website visitors in a 1st party cookie.

Name

The default name of the consent cookie is TC_PRIVACY. It can be configured in TRUST > Options.

Domain

The cookie is set as a 1st party cookie. The subdomain/domain of the cookie can be configured in TRUST > Options

Value

The value consist of multiple fields separated by @ symbols. The separator can be configured in TRUST > Options .

The consent cookie format is not 100% guaranteed to stay stable. We try to keep the format as stable as possible and extend it with "append only approach (adding new information with a new @)", but changes might happen in the unforeseeable future due to limited storage space in cookies.

The cookie value follows following pattern (optional elements are wrapped in []).

<status>@<privacy_version>[|<tcf_version>]@<banner_id>@<site_id>@<consent_categories>@<blocked_on_categories>@<updated_timestamp>,<creation_timestamp>,<to_expire_timestamp>[@<vendor_consent_string>]

Examples

Example1: Optin for some categories

0@002|12|34@1%2C3@4@1592900933049@1592900933049

Example 2: Optout for all categories

1@012|26|4221@@4@1592900933049@1592900933049

/!\ good to know : special caracters such as "@" or "|" are encoded in the cooke value %2C = "," %7C = "|" %40 = "@"

Copy Banner

Options to copy privacy banner with the Commanders Act copy management.

Admin > Copy management.

Commanders Act copy management allows to copy privacy banner. Privacy banners can be copied within the same account or transferred to another account.

Copying a Banner

Steps to copy a banner with copy management.

Step 1

Select Privacy banner(s) in the Elements to copy dropdown.

Step 2

Use the Site containing the privacy banner(s) to copy dropdown to select the site where the privacy banner is located that you want to copy.

Step 3

Select one or more privacy banner that you would like to copy in the Privacy banner(s) to copy dropdown.

Step 4

Choose one or multiple target sites where you want to copy the selected privacy banner with the Destination site(s) dropdown.

Step 5

You can copy your privacy banner to a new template by selecting Yes in the Copy the privacy content to a new template option.

After this you will be able to select the new template in the Destination template dropdown.

This will keep the content (text, selected color, etc.) of the banner and change the template.

This option might not work for customised privacy banner templates. Please contact your Commanders Act consultant or support in case you are unsure if your banner was customised before using this option.

Step 6

Click COPY in the top right corner of the interface to copy the banner with the selected options.

Marketing Preferences Center (Trust Premium only)

What is our Marketing Preferences Center?

Marketing Preferences Center is part of our Trust Premium offer. It allows you to build a personalized Preferences Center where online and offline consents are merged around unified users and stored in the same database.

Then, you can easily create and customize a web page to display this information to visitors who want to manage their consents and personal information.

It turns a legal page into a preference center that is way more valuable for a customer as it is more like a sharing space between the brand and their visitors/clients rather than just a way to collect the consent.

How it works?

· Consents are collected through our Trust Commander CMP solution (native integration)

· Our customers can personalize the look and feel of their marketing preferences center page, we don’t host the webpage.

· Paid option: our customers can choose to receive regularly a full consents database copy to have a backup on their side

Limitations:

  • The API accepts a maximum of 20 preferences

Deploy Banner

Options to generate and deploy banner.

TRUST > Privacy banners ( tab GENERATE & DEPLOY)

Generate Banner Versions

To deploy a new or updated banner it is first necessary to generate a new version of the banner. Click GENERATE to open the modal dialogue.

You will have following option when generating a new container version.

Preview New Banner Versions

You can preview and test new banner versions by clicking the TEST option on the right site of the banner version in the banner version list. This will preview the banner on a demo website.

It is recommended to test new banner on a test environment of the real website before deploying it.

Banner Deployment Options

The deployment process of a new banner version varies depending on the selected hosting method of the privacy banner. You can select the hosting method of a banner in the privacy banner settings that can be accessed with the gear icon on the top left of the interface (beside the privacy banner name).

Commanders Act CDN

Commanders Act CDN ensures a reliable and performant hosting of your banner. It allows to deploy banners automatically and in real-time.

Click DEPLOY to deploy a banner to the Commanders Act CDN.

On premise (self-hosted)

This option allows to self-host privacy banner. It therefore requires manual effort on each update. For on premise hosting it is necessary to provide the URL of the folder where the on premise banner is hosted. Example:

http(s)://www.mydomain.com/myfolder/

Click DOWNLOAD to download on the right side of the new banner files and manually update them on your server.

Container vs. Banner Deployment

In case both TagCommander and TrustCommander are used to manage tags it is important to understand what needs to be generated and deployed for different update scenarios. Following table lists the elements that needs a generation and deployment for common scenarios.

Example of comparing multiple privacy banners in the dashboard.
Example: Modal dialogue to create a new category.
IAB purposes are automatically added
IAB elements are automatically added

Hosting method used for this banner (see ).

Example: Configuring options of a privacy banner.

"Neutral position": The default status of vendors is "Undecided". When a new visitor accepts consent categories in the privacy center for the first time the vendors activate based on their linked categories (see ).

of the country that determines the legislation of reference. Normally corresponds to the country code of the country in which the publisher's business entity is established.

TrustCommander offers IAB TCF Stacks to reduce the size of the purpose list in the privacy center. IAB TCF Stacks group purposes and special features in a foldable panel and allows visitors to configure consent for all purposes and special feature in a Stack at once. More information on IAB TCF Stacks can be found in the .

Example: Activating Auto Stacks

This option allows to manually activate IAB TCF Stacks by providing a list of Stack IDs. The Stack IDs can be found in the .

Not all cookies are accessible to JavaScript tags. The has more technical capabilities to scan missing cookie information. To use the Chrome extension it just needs to be installed in an up to date Chrome browser. After that it starts scanning cookies while surfing the website. This provides a powerful mechanism to identify cookies in all areas of the website, no matter they require a log-in.

1st Party Cookie ()

HttpOnly 1st Party Cookie ()

HttpOnly 3rd Party Cookie ()

localStorage ()

sessionStorage ()

List cookies on specific website
Example of a TagFirewall configuration.
Example optout per default configuration with IAB support.

This option enables the (ACM) for Google Ad Technology Providers (ATP) for your account. This will enable Google ACM vendor management in the Categories & Tags section and extends the IAB TCF API according to the ACM specification.

See dedicated documentation .

The received via the onsite API is now the official way to access the consent settings of TrustCommander with JavaScript. The direct usage of the consent cookie is deprecated.

This article only explains the consent cookie. you can find a list of all TrustCommander cookies.

Marketing Preferences Center is a realtime searchable nosql database. We provide also a dedicated API to read and/or write consents on this database ()

· Consents coming from a CRM database could be added with our FTP importer files or our API ()

Manage Vendors
Country code
IAB TCF Policy
IAB TCF Policy
Commanders Act Assistant Chrome extension
Additional Consent Mode
here

Field

Description

id_hit

ID of the hit (autoincrement id)

id_tagcommander

ID of the TagCommander container that installed the privacy banner that initiated the consent hit.

id_privacy

ID of the privacy banner that initiated the consent hit.

version

Version of the privacy banner at the time the consent hit was initiated.

cookie

Consent categories that were accepted in the privacy center.

tc_p_id

cookie ID of the consent (hashed).

date_hit

Timestamp of the consent hit.

privacy_action

Action that initiated the hit.

  • V: View of the banner

  • 1: Opt-In click

  • 0: Opt-out click

  • -1: User refused all consent (only on deprecated version 1.0)

type_action

Type of action that generated the hit.

Ex of possible values:

  • banner : click in the banner

  • pc : action in the privacy center

device

device type identifier (1=phone, 2=tablet, 3=desktop, 0=other)

Field

Description

Example Value

<status>

Status that indicates if a visitor provided his optin or optout.

1: Visitor is optout

0: Visitor is optin

<privacy_version>

Version of the privacy banner the visitor interacted with.

008

<tcf_version>

Version of the IAB TCF framework. Only available in case IAB is activated for the account and an IAB banner is used to manage consent. It follows this format:<tcf_global_vendor_list_specification_version>|<tcf_policy_version>|<tcf_global_vendor_list_version>

2|2|42

<banner_id>

ID of the privacy banner the visitor interacted with.

12

<site_id>

ID of the site in the Commanders Act Platform.

34

<consent_categories>

Comma-separated-list of optin, or optout categories. Meaning depends on <status> field. E.g. when <status> is 0 then the visitor provides consent for the listed categories. The value is URL encoded. Therefore the comma separator is replaced with %2C. Some old banner versions might have the value ALL in case all categories are opted out.

2%2C12%2C13

<blocked_on_categories>

Comma-separated-list of blocked on categories. The value is URL encoded. Therefore the comma separator is replaced with %2C. These categories are not repeated in the <consent_categories> field.

2%2C12

<updated_timestamp>

UNIX timestamp for when the consent was last updated

<creation_timestamp>

UNIX timestamp in milliseconds when the consent was provided.

1592900933049

<to_expire_timestamp>

UNIX timestamp for when the consent will expire

<vendor_consent_string>

Vendor consent information (e.g. for IAB TCF vendors). Only available when vendors are activated for the account and in case vendors are used in the banner. The value is compressed and encoded to keep the cookie size small.

AAAAAjkb23...

Field

Description

0

Visitor is optin.

002

Visitor provided optin on banner version 002.

12

Banner ID is 12.

34

Site ID is 34.

1%2C3

Visitor provided optin for categories 1 and 3.

4

The category 4 is blocked on.

1592900933049

Visitor provided optin on Tue Jun 23 2020 08:28:53.

Field

Description

1

Visitor is optout

012

Visitor provided optin on banner version 012.

26

Banner ID is 26.

4221

Site ID is 4221.

Visitor provided optout to all categories.

4

The category 4 is blocked on.

1592900933049

Visitor provided optout on Tue Jun 23 2020 08:28:53.

Option

Description

Comment

You can provide a comment to document the changes of the new banner version (e.g. change text of accept button).

Reactivate privacy

In case you check this option all visitors of the website will be re-asked for consent, they will again see the banner when visiting the website the next time.

Scenario

Affected TAG Container

All TAG Container

TRUST Banner

Global options change (TRUST > Options)

Yes

Yes

Yes

Category or vendor is added, deleted or updated on a used banner

Yes

Yes

Yes

Tag is added to a container (TAG > Edition)

Yes

No

No

Tag is assigned to a category or vendor in the used banner (TAG > Edition or TRUST > Categories & Tags (Tab ASSIGN TAGS))

Yes

No

No

Banner text or style change

No

No

Yes

Banner button actions change

No

No

Yes

Deploy Banner
Deploy Banner

Getting Started

Overview on the TrustCommander OnSite API.

The TrustCommander OnSite API is used to interact with TrustCommander with JavaScript. It currently only offers methods to receive and update consent, but it will be improved with additional methods in the future.

API Stub

It is necessary to install a JavaScript stub before any of the OnSite API methods can be used. The stub is used to buffer all methods in a JavaScript array until TrustCommander JavaScript is loaded and ready to process the methods. This allows to use the OnSite API before TrustCommander JavaScript was loaded.

window.caReady = window.caReady || []; 
window.cact = function() { window.caReady.push(arguments); };

window.caReady is a JavaScript array that buffers the interactions with the API. window.cact is a JavaScript function used to interact with the OnSite API.

In case you work in a big team and are unsure the stub was already installed it is ok to install the JavaScript stub multiple times.

Methods

After installing the stub it is then possible to use any of the OnSite API methods via the window.cact function.

The available methods are listed on the documentation under ONSITE API.

Each method follows a strict signature:

cact(command, [options,] [callback])

Argument

Descriptions

Required

command

A string identifier used to select the desired method.

Required

options

A JavaScript object that includes data passed to the method.

Optional

callback

A JavaScript callback function that is used to receive information or events from the OnSite API.

Optional

Below you will find an example method that is used to receive the TrustCommander consent with the OnSite API. This example only provides a callback to receive the consent without providing any options.

cact('consent.get', function (result) {
    
    if (result.consent.status === "all-on") {
        
        // Consent available for all categories.
        
    }
    
});

The OnSite API methods are called asynchronously. In case e.g. you need information synchronous in the <head> of the document it is recommended to cache and retrieve the result of the API in localStorage.

Deploy Banner
www.example.de
www.example.de
www.example.de
www.example.de
www.example.de
Consent Object
Here
https://community.commandersact.com/trustcommander/api/get-consents
https://community.commandersact.com/trustcommander/api/get-consents

consentBanner.hide

Javascript method to hide your consent banner.

The command consentBanner.hideallows to hide the consent banner for specific reasons. Simply use the following Javascript method:

cact('consentBanner.hide')

consentBanner.show

Javascript method to display your consent banner.

The command consentBanner.show allows to redisplay the consent banner for specific reasons. Simply use the following Javascript method:

cact('consentBanner.show')

This command allows you to display the consent banner after the user consent is given

IAB TCF V2.0 Consent

Description of how to interact with IAB consent API

That function is defined in your container and in your privacy banner so that you can use it before your privacy banner has finished loading. It is sometimes referred by IAB as the TCF API stub.

IAB TCF consent is encoded in a format called the Consent-String.

How to use the TCF API

The recommended way of getting the value of TCF's consent-string (tcData.tcString in the example below) is by using the addEventListener command.

__tcfapi('addEventListener', 2, function(tcData, success) {
  if(success &&
    (tcData.eventStatus === 'tcloaded' || tcData.eventStatus === 'useractioncomplete')) {

    // do something with tcData.tcString

  } else {

    // do something else

  }
});

Sometimes you do not want to be notified of consent updates. You can achieve this by using the more advanced code below:

__tcfapi('addEventListener', 2, function(tcData, success) {
  if(success &&
    (tcData.eventStatus === 'tcloaded' || tcData.eventStatus === 'useractioncomplete')) {

    // do something with tcData.tcString

    // remove ourselves to not get called more than once
    __tcfapi('removeEventListener', 2, tcData.listenerId);

  } else {

    // do something else

  }
});

How to decode the Consent-String

Google Additional Consent Mode

This an optional extension to IAB TCF. Once setup in TrustCommander Options, an additional addtlConsent property will be available on the tcData object.

__tcfapi('addEventListener', 2, function(tcData, success) {
  if(success &&
    (tcData.eventStatus === 'tcloaded' || tcData.eventStatus === 'useractioncomplete')) {

    // do something with tcData.addtlConsent

  } else {

    // do something else

  }
});

consent.get

Method to receive TrustCommander consent and consent metadata OnSite via JavaScript.

cact('consent.get', function (result) { ... });

The OnSite API works asynchronous. In case you need the consent synchronous (e.g. in the <head> of a document for AB Testing or personalisation solutions) it is recommended to cache the object in the localStorage of the browser. In this case it is crucial to implement the consent.onUpdate method to keep the cached consent in sync.

Examples

Executing code based on the consent setting of a category

In this example the Analytics category was configured with the consent category id 2 in TrustCommander.

cact('consent.get', function (result) {

   const ANALYTICS_ID = 2;
   const analyticsCategory = result.consent.categories[ANALYTICS_ID] || {};
   
   if (analyticsCategory.status === 'on') {
         
      // Consent was provided for the category. 
      
   } else {
      
      // Consent was not provided for the category.
   
   }
        
});

Executing code based on the consent setting of a category and vendor

In this example the Analytics category was configured with the consent category id 2 and the vendor Google with vendor id 5 in TrustCommander.

cact('consent.get', function (result) {
   
   const ANALYTICS_ID = 2;
   const analyticsCategory = result.consent.categories[ANALYTICS_ID] || {};

   const GOOGLE_ID = 5;
   const googleVendor = result.consent.vendors[GOOGLE_ID] || {};
   
   if (analyticsCategory.status === 'on' && googleVendor.status === 'on') {
         
      // Consent was provided for the category. 
      
   } else {
      
      // Consent was not provided for the category.
   
   }
        
});

Check if consent was already set by the visitor

cact('consent.get', function (result) {
   
   if (result.consent.status === 'unset') {
         
      // Consent was not yet provided.
      
   } else {
      
      // Consent was accepted or refused.
   
   }
        
});

Checking when the current consent expires

cact('consent.get', function (result) {

    const dateExpires = result.meta.dateExpires;
                
});

IAB TCF V2.0 and Google FAQ

Google is a TCF 2.0 member, and Google Ad Manager (GAM), Adsense, and Admob can use the IAB TCF API to get the user consent status (the TC string) from TrustCommander.

How to enable Google ACM Vendors

Common issues encountered while using the TCF 2 to integrate with Google Advertising Products

GAM's recorded errors

GAM's recorded errors GAM displays an error message in your GAM Console if it is unable to collect a TC string from the CMP:

The specific errors found are detailed in a report, which you can compare to the GAM documentation in the Troubleshooting TCF 2 implementation post.

We've mentioned some of the most common error codes we've seen while integrating with GAM below.

1.x (1.1 or 1.2 or 1.3) : Google is not approved as a vendor regarding consent or legitimate interest. 1.x errors are to be anticipated, it's normal to expect a certain amount of these errors as they mean that the user has refused permission for Google, main Google purposes, or that you have publisher restrictions that prohibit Google from running.

The rate of negative consent for a given website or mobile app should be approximately matched by the 1.x errors.

Checklist for determining why 1.x errors are so common:

  1. Verify that your 1.x errors as a percentage of all ad requests are approximately equal to your negative consent rate (within a 5 points margin). For instance, if TrustCommander reports a 90% consent rate per page view, a typical 1.x error rate is beetween 5% to15%.

  2. Examine whether the IAB TCF 2 was implemented on your website or mobile app prior to September 2020.

Errors are found in the following ways:

1.1 Errors: Google is not permitted as a vendor along with consent or legitimate interest.

1.2 errors: For EEA countries and the UK, there is no consent for Purpose 1. Before determining whether or not the TC string causes an error, Google will always check whether Purpose 1 has permission before determining whether or not Google, as a vendor, is allowed.

consent.onUpdate

Method to subscribe to TrustCommander consent updates OnSite via JavaScript.

cact('consent.onUpdate', function (result) { ... })

The consent.onUpdate method allow to subscribe a callback function for consent updates. The callback function will be called with the updated Consent Object. It is called whenever the consent is changed via a TrustCommander banner interaction or the consent.update method of the OnSite API.

The consentObject argument will also be enriched with an additional property updateEvent to signal how the update happened. It can have following values:

Value

Description

set

The consent was set.

changed

Consent was already established and then changed.

revoked

Consent was revoked by the user. Used for cleanup tasks like deleting cookie identifiers.

When consent is revoked it fires two events: One changed followed by one revoked.

Examples

Example to react to consent changes of a specific category

In this example the Analytics category was configured with the consent category id 2 in TrustCommander.

cact('consent.onUpdate', function (result) { 
    
    const ANALYTICS_ID = 2;
    const analyticsCategory = result.consent.categories[ANALYTICS_ID] || {};
     
    if (analyticsCategory.status === 'on') {
    
        // Consent was provided for the category. 
    
    } else {
        
        // Consent was not provided for the category. 
           
    }
    
});

Example only react to consent changes of a specific category after the initial consent was given

In this example the Analytics category was configured with the consent category id 2 in TrustCommander.

cact('consent.onUpdate', function (result) { 

    const ANALYTICS_ID = 2;
    const analyticsCategory = result.consent.categories[ANALYTICS_ID] || {};

    if (result.updateEvent === "changed" && analyticsCategory.status === 'on') {
    
        // Consent was provided for the category during an update.
    
    } 
    
});

consent.revoke

Method to revoke TrustCommander consent OnSite via JavaScript.

cact('consent.revoke')

consent.revoke is called with no options and no callback function. It resets the consent, consent id and initiates two consen.onUpdate events, one with the updateEvent set to changed, and a second one set torevoked that allows to perform cleanup tasks like removing cookie identifiers.

Tag Hierarchy

Tag mapping: View all your site's tags and their relationships on a map.

Focus by page type: Filter by page type (conversion page, product page, cart, etc.) and optimize the orchestration of your different tags for these pages in particular.

Consent Object

Description of the Consent Object format that is used by the onsite API to receive and update consent.

The Consent Object is a standardised way to represent consent throughout all methods of the onsite JavaScript API (similar to the IAB TCF consent string). The object holds a meta property that includes metadata like the validity of the cookie and a consent property that holds that current consent settings stored on the browser.

Example Consent Object

{
    meta: {
        version: "1.0",
        tcfPolicyVersion: "2",
        siteId: "1234",
        bannerId: "12",
        bannerVersion: "50",
        consentId: "183049723840253",
        dateCreated: 1614174067000,
        dateUpdated: 1614185078030,
        dateExpires: 1614236789942
    },
    consent: {
        status: "all-on|all-off|mixed|unset",
        categories: {
            "1": {
                status: "on",
                required: true
            },
            "2": {
                status: "on|off|unset"
            },
            "tcf2_1": {
                status: "on|off|unset"
            },
            "tcf2_2": {
                status: "on|off|unset",
                legIntStatus: "on|off|unset"
            },
            "tcf2_sf_1": {
                status: "on|off|unset"
            }
        },
        vendors: {
          "1": {
                status: "on|off|unset"
          },
          "tcf2_1": {
                status: "on|off|unset"
          },
          "tcf2_2": {
                status: "on|off|unset",
                legIntStatus: "on|off|unset"
          },
          "acm_1": {
                status: "on|off|unset"
          }
        }
    }
}

Meta Properties

The meta property includes metadata and context for the consent that was provided on a browser.

Property

Description

Type

meta.version

Version of the Consent Object.

String

meta.tcfPolicyVersion

Version of the IAB TCF consent.

String

meta.siteId

Commanders Act site id associated to the consent.

String

meta.bannerId

Banner id associated to the consent.

String

meta.bannerVersion

Banner version associated to the consent.

String

meta.consentId

Id of the consent stored in the TCPID cookie.

String

meta.dateCreated

Timestamp when the consent was provided (UNIX Epoch in Milliseconds).

Number

meta.dateUpdated

Timestamp when the consent was updated the last time (UNIX Epoch in Milliseconds).

Number

meta.dateExpires

Timestamp when the consent will expire (UNIX Epoch in Milliseconds).

Number

Consent Properties

The consent property includes detailed information about the consent provided on the browser.

Property

Description

consent.status

Global status of the consent that can have one of the following values: all-on: All consent categories have been accepted.

all-off: All consent categories have been refused (except blocked on).

mixed: Some consent categories have been refused.

unset: No consent has been provided yet.

consent.categories[category_id].status

Status of an individual category:

on: Consent was provided.

off: Consent was rejected.

unset: No consent has been provided yet (In case neutral button position is configured it will switch to neutral button position for this category).

category_id is the category id configured under TRUST > Categories & Tags.

consent.categories[category_id].required

The property was set to blocked on and the status is always on.

consent.vendors[vendor_id].status

Status of an individual vendor:

on: Consent was provided.

off: Consent was rejected.

unset: No consent has been provided yet (In case neutral button position is configured it will switch to neutral button position for this vendor).

vendor_id is the vendor id configured under TRUST > Categories & Tags.

Category and Vendor IDs are prefixed with an identifier in case they are managed by a consent framework.

Framework

Prefix

tcf2_

IAB TCF 2 framework. Special features are additionally prefixed with sf_

acm_

Google's Additional Consent Mode vendors.

consent.onReady

Method to obtain consent when it becomes available.

The consent.onReady method allow to subscribe a callback function for when consent is set. The callback function will be called only once, with the updated Consent Object. It is called whenever the consent is set via a consent banner interaction or when a consent cookie is already set.

Like in the command consent.onUpdate, the consentObject argument will be enriched with the property updateEvent, but only with the value 'set'.

Example

Example to wait for consent availability and do something on a specific category

In this example, the code is waiting for the user's interaction with the consent banner. The Analytics category was configured with the consent category id 2 on privacy banner.

consent.update

Method to update TrustCommander consent OnSite via JavaScript.

The consent.update method allows to update the consent with JavaScript. It has to be called with a Consent Object that includes the updated settings. TrustCommander will deep merge the status fields of the current Consent Object with the provided object and automatically update all meta properties and the consent.status property automatically. In case a consent.status field is provided with value all-on, all-off or unset all other updates are ignored and all categories and vendor settings will be set to on, off or unset accordingly.

All unconfigured categories and vendors are ignored when deep-merging the consent objects.

Examples

Update categories and vendors

Below you can see how the Consent Object is affected by this update.

Update IAB TCF/ACM categories and vendors

Accept all categories and vendors

Specifying a category or vendor will not have any effect.

Below you can see how the Consent Object is affected by this update.

Refuse all categories and vendors

Specifying a category or vendor will not have any effect.

Below you can see how the Consent Object is affected by this update. Note: required categories are not affected.

Specify update action

You can specify an action inside the update parameters:

This action value will be used to compute your dashboard metrics. If it is omitted, the default value is banner_button.

The allowed values are:

  • banner_button

  • pc_save

  • page_click

  • scroll

  • browse

Additionally, the following values are allowed for optout only (status: 'all-off' ):

  • banner_cross

TrustCommander cookies exemption

These cookies are necessary for the proper functioning of the collection of consent and the reporting of anonymous statistics. To this regard they are exempt from the obligation of consent.

Consent storage cookies

Consent storage cookies differ depending on the banner template used:

  • v1 templates (deprecated): TC_OPTOUT & TC_OPTOUT_categories

  • v2 tempaltes: TC_PRIVACY & TC_PRIVACY_CENTER

  • IAB TCF templates (local storage) : TC_PRIVACY_IAB_VENDORLIST & TC_PRIVACY_TCF

Cookie for anonymous statistics (TCPID)

When are cookies exempt from consent?

In order to be exempt from consent in accordance with article 82 of the Data Protection Act, these tracers must:

  • have a purpose strictly limited to measure the audience of the site or application (performance measurement, detection of navigation problems, optimization of technical performance or its ergonomics, estimation of the power of the necessary servers, analysis of content consulted) for the exclusive account of the publisher

  • be used to produce anonymous statistical data only

Conversely, to be exempt from consent, these tracers must not:

  • lead to a cross-checking of the data with other processings or the data to be transmitted to third parties

  • do not allow the aggregate tracking of the user's navigation across different applications or websites. Any solution using the same identifier across several websites (for example via cookies placed on a third-party domain loaded by several websites) to cross, split or measure a unified coverage of a content is excluded.

CNIL recommendations

To put in place solutions that respect people's rights, the CNIL also recommends that:

  • users are informed of the implementation of these tracers, for example via the privacy policy of the site or the mobile application

  • the lifespan of the tracers is limited to a period allowing a relevant comparison of audiences over time, as is the case with a period of 13 months, and that it is not automatically extended on new visits

  • the information collected through these tracers is kept for a maximum period of 25 months

  • the above-mentioned retention periods are subject to periodic review in order to be limited to what is strictly necessary

A subcontractor can provide a benchmarking service to multiple publishers if:

  • the data is collected, processed and stored independently for each publisher

  • tracers are completely independent from each other

GET/PUT Consents / preferences

Get/put user consent stored in DataCommander

User Consents

GET https://api.commander1.com/engage/user/

This endpoint allows you to get categorie's consent for one specific user

Query Parameters

Visitor Consents

GET https://api.commander1.com/v1.0/engage/visitors/

This endpoint allows you to get categorie's consent for one specific visitor

Query Parameters

User

PUT https://api.commander1.com/engage/user/

Insert or update a preference in the database (require to have the DataCommander module activated)

Query Parameters

Syntax and limitations

  • The json playload is represented by a key/value for each preference.

  • Each preference property (key) start with "preferences." followed by the preference name : preferences.your_preference_name

  • The preference name should not contain white space, dot or special characters. Its format is [A-Za-z0-9_-]

  • The preference value can contain white space, dot but not special characters.

  • The API accepts a maximum of 20 preferences

Example Request

PUT

https://api.commander1.com/engage/user/?site=1234&user_id=1234&token=WvNIX8955cnZ7WF0f632s0Wb99Ql3rtA

Hosting options for privacy banners

If you are using IAB TCF option (see to setup IAB TCF on your account), you will be able to use IAB TCF's __tcfapi where your privacy banner is deployed.

Reference:

You can use this copy-paste a Consent-String on this page: .

Reference:

Reference:

The Commanders Act has to be installed before using any of the OnSite API functions.

The consent.get method takes one callback JavaScript function as an argument that gets called with the that is currently stored on the browser. The callback is called once after TrustCommander JavaScript loaded and validated the stored consent.

To enable Google ACM vendors go to TRUSTCOMMANDER > Options and follow

Check to see if there are publisher restrictions. If so, make sure they don't affect Google or do so in a way that's compliant with Google's requirements : .

The Commanders Act has to be installed before using any of the OnSite API functions.

The Commanders Act has to be installed before using any of the OnSite API functions.

Tag Hierarchy

The onsite API and Consent Object is the official way to access the consent settings of TrustCommander with JavaScript. The direct usage of the is deprecated.

Method to obtain consent when it becomes available.The Commanders Act has to be installed before using any of the OnSite API functions.

The Commanders Act has to be installed before using any of the OnSite API functions.

For its own operations, TrustCommander sets 1st party cookies to store the and to report anonymous consent statistics.

A 1st party cookie is set to be able to collect anonymous statistics of consent: TCPID. We have worked together with the CNIL France to design the setting and processing of this cookie to strictly comply with the rules of the RGPD and in particular the enacted by the CNIL in 2019.

Name
Type
Description
Name
Type
Description
Name
Type
Description
this page
IAB TCF commands
https://iabtcf.com/#/decode
IAB TCF Consent-String format
Google Additional Consent Mode Technical Specification
OnSite API stub
Consent Object
this instruction
https://support.google.com/admanager/answer/9805023?hl=en
OnSite API stub
OnSite API stub
Consent Cookie
cact('consent.onReady', function (result) { ... })
cact('consent.onReady', function (result) { 
    
    const ANALYTICS_ID = 2;
    const analyticsCategory = result.consent.categories[ANALYTICS_ID] || {};
     
    if (analyticsCategory.status === 'on') {
    
        // Consent was provided for the category. 
    
    } else {
        
        // Consent was not provided for the category. 
           
    }
    
});
cact('consent.update', consentObject)
cact('consent.update', {
    categories: {
        '2': { status: 'on' }
    },
    vendors: {
        '1': { status: 'on' }
    }
});
/* Consent Object Before Update
{
    meta: { ... },
    consent: {
        status: "mixed",
        categories: {
            "1": { status: "on" },
            "2": { status: "off" }
        },
        vendors: {
            "1": { status: "off" },
            "2": { status: "on"}
        }     
    }
}
*/

// Update
cact('consent.update', {
    categories: {
        '2': { status: 'on' }
    },
    vendors: {
        '1': { status: 'on' }
    }
});

/* Consent Object After Update
{
    meta: { ... }, // automatically updated
    consent: {
        status: "all-on", // automatically updated
        categories: {
            "1": { status: "on" },
            "2": { status: "on" } // updated
        },
        vendors: {
            "1": { status: "on" }, // updated
            "2": { status: "on"}
        }     
    }
}
*/
cact('consent.update', {
    categories: {
        '1': { // non-IAB category
            status: 'on' 
        },
        'tcf2_1': { // TCF purpose 1
            status: 'on' // no legintStatus for purpose 1
        },
        'tcf2_2': { // TCF purpose 2
            status: 'off',
            legIntStatus: 'on'
        },
        'tcf2_sf_1': { // TCF special feature 1
            status: 'on'
        }
    },
    vendors: {
        'tcf2_1': { // TCF vendor 1
            status: 'on',
            legIntStatus: 'off'
        },
        'tcf2_2': { // TCF vendor 2
            status: 'on',
            legIntStatus: 'on'
        },
        'acm_1': { // ACM vendor 1
            status: 'on'
        }
    }
});
cact('consent.update', { 
    status: 'all-on'
});
cact('consent.update', { 
    status: 'all-on', 
    categories: {
        '2': { status: 'unset' } // ignored as global status is specified
    }
});
/* Consent Object Before Update
{
    meta: { ... },
    consent: {
        status: "unset",
        categories: {
            "1": { status: "unset" },
            "2": { status: "unset" }
        },
        vendors: {
            "1": { status: "unset" },
            "2": { status: "unset"}
        }     
    }
}
*/

// Update Method
cact('consent.update', { 
    status: 'all-on'
});

/* Consent Object After Update
{
    meta: { ... }, // automatically updated
    consent: {
        status: "all-on",
        categories: {
            "1": { status: "on" }, // automatically updated
            "2": { status: "on" } // automatically updated
        },
        vendors: {
            "1": { status: "on" }, // automatically updated
            "2": { status: "on"} // automatically updated
        }     
    }
}
*/
cact('consent.update', { 
    status: 'all-off'
});
cact('consent.update', { 
    status: 'all-off', 
    categories: {
        '2': { status: 'on' } // ignored as global status is specified
    }
});
/* Consent Object Before Update
{
    meta: { ... },
    consent: {
        status: "mixed",
        categories: {
            "1": { status: "on" },
            "2": { status: "off" },
            "3": { status: "on", required: true }
        },
        vendors: {
            "1": { status: "on" },
            "2": { status: "on"}
        }     
    }
}
*/

// Update Method
cact('consent.update', { 
    status: 'all-off'
});

/* Consent Object After Update
{
    meta: { ... }, // automatically updated
    consent: {
        status: "all-off",
        categories: {
            "1": { status: "off" }, // automatically updated
            "2": { status: "off" }, // automatically updated
            "3": { status: "on", required: true } // unchanged
        },
        vendors: {
            "1": { status: "off" }, // automatically updated
            "2": { status: "off"} // automatically updated
        }     
    }
}
*/
cact('consent.update', {
    action: 'banner_button',
    categories: {
        '2': { status: 'on' }
    },
    vendors: {
        '1': { status: 'on' }
    }
});
LogoGoogle Tag Manager (GTM) - Consent ModeCommanders Act X
LogoGoogle Tag Manager (GTM) - Consent ModeCommanders Act X

token

string

Security token

user_id

string

ID of the user

site

integer

ID of the site

{
    "user_privacy_optin": 1,
    "user_privacy_categories": [
      "11",
      "12",
      "13"
    ]
}
{
    "message": "Person not found"
}

callback

string

(optional) Callback for jsonp request

token

string

Security token

site

integer

ID of the site

tc_id

String

Optional. Cookie id of the user

{
    "user_privacy_optin": 1,
    "user_privacy_categories": [
      "11",
      "12",
      "13"
    ]
}
{
    "user_privacy_optin": 0,
    "user_privacy_categories": []
}
{
    "message": "visitor not found"
}

site

string

Id of the site (account)

user_id

string

Id of the user. Required if tc_id parameter is not set

token

string

Security token

{"success":true}
{
  "preferences": {
    "news_monthly": true,
    "news_sales": true
  }
}

Get statistics

Get data from the consent dashboard (aggregated data)

Get Statistics

GET https://api-internal.commander1.com/v2/{siteId}/privacy/statistics

This endpoint allows you to get the data from the consent dashboard on a specific date range

Path Parameters

Name
Type
Description

{siteId}

string

Account ID example: '12345'

Query Parameters

Name
Type
Description

filter[sup_filters][location][]

integer

Data inside and outside of the EU 0 : Out of EU 1 : EU

filter[sup_filters][device][]

integer

Typical device types 0 : others 1 : mobile 2 : tablet 3 : desktop

token

string

Authentication token. Optional if the header "Authorization' parameter is used instead.

filter[begin_date]

string

example: '2021-04-30'

filter[end_date]

string

example: '2021-04-31'

{
    "data": [
        {
            "type": "privacy/statistic",
            "id": "1",
            "attributes": {
                "nb_banner_views": 198,
                "nb_banner_clicks_button": 32,
                "nb_optin": 34,
                "nb_optin_all": 33,
                "nb_optin_all_on_click_banner": 23,
                "nb_banner_clicks_links_not_PC": 1,
                "nb_PC_views": 1,
                "nb_optin_all_on_browsing": 10,
                "optin_rate": 0.1717171717171717,
                "optout_rate": 0,
                "nb_optin_category_1": 35,
                "optin_rate_category_1": 0.17676767676767677,
                "nb_optin_category_2": 35,
                "optin_rate_category_2": 0.17676767676767677,
                "nb_optin_category_3": 35,
                "optin_rate_category_3": 0.17676767676767677,
                "nb_optin_category_4": 35,
                "optin_rate_category_4": 0.17676767676767677,
                "nb_optin_category_5": 14,
                "optin_rate_category_5": 0.0707070707070707,
                "nb_optin_category_10001": 7,
                "optin_rate_category_10001": 0.03535353535353535,
                "nb_optin_category_10003": 7,
                "optin_rate_category_10003": 0.03535353535353535,
                "nb_optin_category_10005": 7,
                "optin_rate_category_10005": 0.03535353535353535,
                "nb_optin_category_10007": 7,
                "optin_rate_category_10007": 0.03535353535353535,
                "nb_optin_category_10009": 7,
                "optin_rate_category_10009": 0.03535353535353535,
                "nb_optin_category_10011": 7,
                "optin_rate_category_10011": 0.03535353535353535,
                "nb_optin_category_10013": 7,
                "optin_rate_category_10013": 0.03535353535353535,
                "nb_optin_category_10015": 7,
                "optin_rate_category_10015": 0.03535353535353535,
                "nb_optin_category_10017": 7,
                "optin_rate_category_10017": 0.03535353535353535,
                "nb_optin_category_10019": 7,
                "optin_rate_category_10019": 0.03535353535353535,
                "nb_optin_category_13001": 7,
                "optin_rate_category_13001": 0.03535353535353535,
                "nb_optin_category_13003": 7,
                "optin_rate_category_13003": 0.03535353535353535
            }
        },
        {
            "type": "privacy/statistic",
            "id": "20",
            "attributes": {
                "nb_PC_views": 1,
                "optin_rate": 0,
                "optout_rate": 0
            }
        }
    ]
}
{
    "errors": [
        {
            "status": 401,
            "title": "Unauthenticated.",
            "detail": "The access token provided is expired, revoked, malformed, or invalid.",
            "context": []
        }
    ]
}
https://api-internal.commander1.com/v2/siteId/privacy/statistics?token=XXXXXX&filter%5Bbegin_date%5D=2021-04-30&filter%5Bend_date%5D=2021-04-31&filter%5Bsup_filters%5D%5Bdevice%5D%5B%5D=1&filter%5Bsup_filters%5D%5Blocation%5D%5B%5D=0&filter%5Bsup_filters%5D%5Blocation%5D%5B%5D=1

How to get the token

For each API, you'll have to ask a token to your account manager or support team.

Tag Manager

OnSite API stub
OnSite API stub
user's consent
rules

consentCenter.hide

Javascript method to hide your consent center (consent categories menu).

The command consentCenter.hide allows to hide the consent center for specific reasons. Simply use the following Javascript method:

cact('consentCenter.hide')

consentCenter.show

Javascript method to display your consent center (consent categories menu).

The command consentCenter.show allows to redisplay the consent center for specific reasons. Simply use the following Javascript method:

cact('consenCenter.show')

This command allows you to display the consent center after the user consent is given