# Transcend XDI (/docs/consent-management/reference/xdi)

## Overview [#overview]

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

## Hosting an XDI Endpoint [#hosting-an-xdi-endpoint]

### Update Embedder Policy Headers [#update-embedder-policy-headers]

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

#### No Existing Headers [#no-existing-headers]

If your site does not have any existing embedding control headers, such as [X-Frame-Options](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options) or [Content-Security-Policy: frame-ancestors](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/frame-ancestors), then no additional steps are necessary.

#### X-Frame-Options [#x-frame-options]

If your site uses the `X-Frame-Options` header, you will need to remove this header and upgrade to [Content-Security-Policy: frame-ancestors](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/frame-ancestors).

#### Content-Security-Policy: frame-ancestors [#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):**

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

**Example (after):**

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

### Add XDI Host Script (Standalone) [#add-xdi-host-script-standalone]

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`.

```html
<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>
```
