---
title: "Walkthrough: Configuring a website to require explicit consent for tracking"
slug: "walkthrough--configuring-a-website-to-require-explicit-consent-for-tracking"
abstract: "How to configure a website to require explicit consent for tracking."
---
# Walkthrough: Configuring a website to require explicit consent for tracking

In Sitecore 10 and later, you can configure a website to require explicit consent from contacts before web tracking is started. Contacts that do not provide explicit consent are not tracked. Use Sitecore's [API calls for reading, giving, and revoking consent](https://doc.sitecore.com/xp/en/developers/101/sitecore-experience-platform/manage-a-contact-s-tracking-consent-choices.html "Manage a contact's tracking consent choices") to manage a contact's consent choices - for example, in the context of a cookie consent banner.

This walkthrough describes how to:

- Configure a site to require explicit consent
- Configure service page tracking

> [!note]
> Sitecore does not provide a default cookie consent banner rendering.

<details>
<summary><h2>Configure a site to require explicit consent</h2></summary>

You can require explicit consent for tracking on a per-site basis.

To require explicit consent:

- Set the `explicitConsentForTrackingIsRequired` attribute on the `<site>` element to `true` as shown:

    ```xml
    <configuration xmlns:patch="http://www.sitecore.net/xmlconfig/"
    xmlns:set="http://www.sitecore.net/xmlconfig/set/">
        <sitecore>
             <sites>    
                <site name="mywebsite" set:enableTracking="true" set:explicitConsentForTrackingIsRequired="true" />
            </sites>
        </sitecore>
    </configuration>
    ```

</details>

<details>
<summary><h2>Configure service page tracking</h2></summary>

By default, service pages belong to the `service` site, which means that they are not tracked as pages of the current site. Therefore, the tracking of service pages is not aligned with contact’s consent for the current site.

To track service pages as pages belonging to the current site, and thereby prevent the tracking of visitors that have opted out of tracking, choose one of the following:

- Move all service pages out of the `/sitecore/service` folder and update global settings.
- Create site-specific service pages and update site-specific settings.

### Option 1: Move global service pages

To track service pages as pages visited under the current site, move all pages out of the `<wwwroot>/sitecore/services` folder. To do this:

- Move each of the following files to the root folder or a new subfolder and update the corresponding global setting:

    | Original file location | New location | Global setting (<wwwroot>/App_Config/Sitecore.config) | Notes |
    | --- | --- | --- | --- |
    | `/sitecore/service/error.aspx` | `/error.aspx` | `ErrorPage` |  |
    | `/sitecore/service/noaccess.aspx` | `/noaccess.aspx` | `NoAccessUrl` |  |
    | `/sitecore/service/nolicense.aspx` | `/nolicense.aspx` | `NoLicenseUrl` |  |
    | `/sitecore/service/nolayout.aspx` | `/nolayout.aspx` | `LayoutNotFoundUrl` |  |
    | `/sitecore/service/notfound.aspx` | `/notfound.aspx` | `ItemNotFoundUrl` |  |
    | - | `/nopublishable.aspx` | `NoPublishableUrl` | This page does not exist in default. Create a copy of any other services page (such as `error.aspx`) and edit the content. |
    | `/sitecore/service/notfound.aspx` | `/notfound.aspx` | `LinkItemNotFoundUrl` | By default, this setting has the same value as the `ItemNotFoundUrl` setting. |

### Option 2: Create site-specific service pages

Alternatively, you can create site-specific service pages. To do this:

1. Create copies of the following files and move them to the web root or a new subfolder. See the following table for examples:

    | Original file | Copied file | Notes |
    | --- | --- | --- |
    | `/sitecore/service/error.aspx` | `/error-docsitecorecom.aspx` |  |
    | `/sitecore/service/noaccess.aspx` | `/noaccess-dotsitecorecom.aspx` |  |
    | `/sitecore/service/nolicense.aspx` | `/nolicense-docsitecorecom.aspx` |  |
    | `/sitecore/service/nolayout.aspx` | `/nolayout-docsitecorecom.aspx` |  |
    | `/sitecore/service/notfound.aspx` | `/notfound-docsitecorecom.aspx` |  |
    | - | `/nopublishable-docsitecorecom.aspx` | This page does not exist in default. Create a copy of any other services page (such as `error.aspx`) and edit the content. |
    | `/sitecore/service/notfound.aspx` | `/notfound-docsitecorecom.aspx` | By default, this setting has the same value as the `ItemNotFoundUrl` setting. |

2. Add the following attributes to the `site` node of the site (or sites) that require explicit consent for tracking and set the values to the custom pages you created:
    - `errorPage`
    - `noAccessUrl`
    - `noLicenseUrl`
    - `layoutNotFoundUrl`
    - `itemNotFoundUrl`
    - `linkItemNotFoundUrl`
    - `noPublishableUrl`

    For example:

    ```text
    <site name="website" enableTracking="true" explicitConsentForTrackingIsRequired="true" itemNotFoundUrl="/notfound-docsitecorecom.aspx" ... />
    ```

Be aware that:

- If you do not specify site-specific service pages, Sitecore directs visitors to the global service pages.
- It does not matter what name you give the service page, but remember that the URL is visible to visitors.

</details>