Transcend XDI

Transcend XDI is a JavaScript library that implements a secure client-side tunnel between your cross-domain hosts (e.g. your Privacy Center and your website), enabling automated and secure synchronization of consent, tracking events, and client-side identifiers from sources such as cookies and local storage.

In order to host Transcend XDI yourself, you must ensure that your embedder policy headers allow XDI clients to embed your host endpoint.

If your site does not have any existing embedding control headers, such as X-Frame-Options or Content-Security-Policy: frame-ancestors, then no additional steps are necessary.

If your site uses the X-Frame-Options header, you will need to remove this header and upgrade to Content-Security-Policy: frame-ancestors.

If your site has a Content-Security-Policy header with a frame-ancestors directive, then you will need to specifically allow the origin of your Privacy Center in this directive.

Example (before):

Content-Security-Policy: frame-ancestors 'none';

Example (after):

Content-Security-Policy: frame-ancestors https://privacy.example.com;

Note: This step is not necessary if you have already installed Transcend Consent Management on your site. Our consent manager automatically loads the Transcend XDI host script as needed.

To install the Transcend XDI host script, simply add this script tag to the bottom of any page where you want to extract identifiers or coordinate consent manager sync.

Multiple sync groups can be specified via data-sync-groups. Quarantine sync is only available for self-hosted sync endpoints.

<script
  async
  defer
  src="https://transcend-cdn.com/cm/{your-bundle-id}/xdi.js"
  data-sync-groups='{"group1":["example.com", "example.net"], "group2": ["example.org"]}'
  data-xdi-commands="ConsentManager:Sync"
></script>

Extended Sync allows for event quarantine and consent metadata to be synchronized in addition to consent. In order to use Extended Sync, you must self-host your own XDI host endpoint.

Extended Sync can be disabled by adding data-extended-sync="off" to your xdi.js script tag.