# Set up the consent banner

AdPix is the tracker, so its consent banner is served first-party from the same origin and enforces the visitor's choice at the source. In Cookie consent you turn the module on, set the categories and the default mode, build the banner, and publish.

## What you are setting up

Most consent banners are a bolt-on tool that can only ask other tags to behave. This one is different: the banner and the tracker are the same product. The banner you build is served from the AdPix collection domain, writes the visitor's choice into the `cc_cookie` cookie, and the `__sov` tracker immediately gates **its own** cookies and events on that choice.

You configure three things on this page, all stored against the property:

- **Consent configuration** — categories, default mode, revision number, how long a choice stays valid.
- **The banner's look and copy** — layout, theme, title, description and button labels.
- **The re-open control** — the button a visitor uses later to change their mind.

Settings live on the **property**, not the data stream. If a property has several streams, they all share one banner and one configuration.

## Turn the module on

The page sits in the sidebar under **Configure**, named **Cookie consent**, and has three tabs: **Builder**, **Consent log** and **Cookie declaration**. All the setup happens on the first one.

1. Open **Cookie consent** and check that the right property is selected in the picker at the top of the page.
2. Under **Categories**, decide whether each category starts on or off in the preferences panel. **Necessary** is locked.
3. Under **Consent settings**, set **Default mode** and **Consent expiry (days)**.
4. Under **Content & language**, pick the **Locale** and write the banner copy; shape it under **Theme** and **Layout & behavior**, and watch the result in **Live preview**.
5. Turn on the **Module** switch at the top of the page and select **Publish**.

Nothing is saved and no banner appears on your site until you select **Publish** — not even the **Module** switch. After saving, a "Saved ✓" marker appears next to the button.

> The consent banner builder, with the live preview and theme presets. — [analytics.adpix.io/en/cookie-consent](https://analytics.adpix.io/en/cookie-consent)

The page is tied to the property-settings edit capability, which means an **Editor** role or above: below that it does not appear in the sidebar at all, and if you reach it anyway the **Module** switch, the category switches and **Publish** are disabled. Every publish is recorded in that property's change history: who, when, with which mode and which revision.

## Categories

The banner has four categories: **Necessary**, **Preferences**, **Statistics** and **Marketing**. What each one actually opens in the tracker is covered in [Consent categories](concepts/governance/consent-categories), and it is worth reading before you pick a mode.

In the **Categories** card each category has a switch. That switch does **not** add or remove anything; it only sets the category's default position in the visitor's preferences panel. Out of the box, Preferences and Statistics start on and Marketing starts off — so someone who opens the preferences panel and saves without touching anything does not accept marketing. Necessary is always on and the visitor cannot switch it off either.

The **Accept all** button is independent of those switches and accepts every configured category; **Reject all** keeps Necessary only.

> The consent categories: necessary, statistics and marketing. — [analytics.adpix.io/en/cookie-consent](https://analytics.adpix.io/en/cookie-consent)

Category names and descriptions are not editable from the builder; the text you see here is the text the visitor sees in the preferences panel.

## Default mode: opt-in or opt-out

The most consequential choice on this page is **Default mode**, in the **Consent settings** card. It has two values:

| Value | Means | For |
| --- | --- | --- |
| **Opt-in — EU/EEA** | Until the visitor chooses, nothing non-necessary runs | The EU and the EEA |
| **Opt-out — rest of world** | Until the visitor rejects, everything runs | Everywhere else |

The part to understand before choosing: opt-in **fails closed**. Any unresolved state — the banner has not appeared yet, the visitor has not chosen, or their stored choice does not match the current revision — behaves exactly like a rejection. No page view is sent, no anonymous id is written, no heatmap capture starts.

> **Under opt-in, part of your traffic stops being counted**
>
> A visitor who closes the page without choosing is never recorded anywhere. The drop is real and it shows in the reports. Before turning this on for a high-traffic site, set expectations with your team and note the date of the change, so you do not later mistake the drop for an outage.

The hint under the field says the mode is set dynamically by visitor region. Today it is not: geo rules are stored, but region-based switching is not implemented yet, and the mode you pick applies to every visitor. If you have European visitors, set opt-in for everyone.

## Revision — when to re-ask

Every configuration carries a **Revision** number, and every visitor's stored choice carries the revision it was made under. The tracker compares the two: if the choice's number is lower than the current one, that choice is stale. Three things follow, together:

- The earlier choice stops gating the tracker and the unresolved rule takes over — under opt-in, that means closed.
- The banner comes back for that visitor.
- Their new choice creates a new consent record, and the earlier record stays untouched in the consent log.

Raise the number when something about the **meaning** of consent changed: a new category, a change in what you do with the data, a change to your privacy policy. Do not touch it to recolour a button or fix a typo — that re-asks everyone, and part of your traffic stops being counted until they answer.

**Consent expiry (days)** is how long a choice lives, 182 days by default. After that the choice cookie expires and the banner comes back on its own.

## Look, copy and language

The remaining cards in the left column only shape the banner, and every one of them is reflected immediately in **Live preview** on the right. The preview is rendered by the same code that renders the real banner, so what you see here is what the visitor gets.

| Card | What it controls |
| --- | --- |
| **Layout & behavior** | **Banner layout** (Box, Cloud, Bar), **Position** on screen, **Button weighting** |
| **Interaction** | **Flip button order**, **Dim background**, **Show "Powered by AdPix"** |
| **Theme** | **Preset**, **Brand accent**, **Corner radius**, **Font family** |
| **Content & language** | **Locale** and the copy: **Title**, **Description**, **Accept label**, **Reject label**, **Customize label** |

Three things the preview does not show:

- **The banner is single-language.** **Locale** picks the banner's language, and the copy you write is the same for every visitor; the banner does not switch between versions based on browser language.
- **The banner mounts inside a Shadow DOM.** Your site's styles do not leak into it and vice versa. That is why reaching it from your site's CSS does nothing — use the **Custom CSS (advanced)** field instead, which is injected in the right place and sanitised before it goes in.
- **The "Powered by AdPix" badge can be switched off** with **Show "Powered by AdPix"** in the **Interaction** card.

## The re-open control

Once a visitor has chosen, the banner disappears and a small button stays in the corner so they can change their mind. That is the **Re-open control** card: **Show re-open button**, then **Button style** — **Icon** or **Text** — and, for text, **Button text**.

If you switch that button off, a visitor has no way to change their choice unless you build one. For that, the tracker exposes a function on the page, so you can open the preferences panel from your own footer or privacy page:

```js
window.__apxConsent.open();   // opens the preferences panel
window.__apxConsent.get();    // the current choice and its revision
```

## Publishing, and when visitors see it

**Publish** saves three things at once: whether the module is on, the mode and revision, and the whole banner configuration. Alongside them a fingerprint of that configuration is stored — and that fingerprint is what later lands on every consent record and proves **which version of the banner** a visitor actually saw.

Both responses the banner and the tracker read are served with a 60-second cache. So after publishing, the next visitor gets the new version within roughly a minute. Nothing to purge, no overnight job to wait for.

> **Try it on a test property first**
>
> Turn the banner on for a test property or site, then in a private window choose **Accept all** once and **Reject all** once. Open the **Consent log** tab and check that two records arrived with the right categories. If they did, the whole path works.

## Before you turn it on for a live site

- **Module off means nothing changes.** Until you enable it, the tracker behaves exactly as before and no categories are stamped on events. That is the default state of a new property.
- **Review the banner copy with whoever owns your legal position.** AdPix gives you the machinery to render, capture, enforce and prove consent; which category needs explicit opt-in for which visitor is your call.
- **Check the cookie declaration.** The **Cookie declaration** tab builds the property's cookie list, and AdPix's own cookies describe themselves in it — put that list in your privacy or cookie policy.
- **After turning it on, read the drop from the consent log,** not from guesswork. Acceptance and rejection rates are in [the consent log and export](analytics/privacy/consent-log-and-export).

Exactly what each category closes in the tracker, and what gets stamped on every event, is in [how consent is enforced in the tracker](analytics/privacy/consent-categories-and-gating).

## Frequently asked questions

### Do I have to install a separate script for the banner?

No. The banner is a separate bundle, but the AdPix tracker loads it from the same collection domain, and only when the module is enabled for that property. If the measurement tag is on the site, there is nothing else to add.

### After publishing, how long until the change is live?

About a minute. Both the consent block on the tracker config and the banner's own configuration are served with a 60-second cache, so the next visitor picks up the new version within roughly that.

### Does switching a category off in the builder remove it from the banner?

No. That switch only decides whether the category starts on or off in the visitor's preferences panel. The category is still shown and the visitor can still turn it on.

### How do I re-ask everyone?

Raise the Revision number by one and publish. Every stored choice with a lower number counts as stale, the banner reappears, and until a new choice is made the unresolved rule applies.

## Related

- [Consent categories](https://docs.adpix.io/en/concepts/governance/consent-categories/)
- [How consent is enforced in the tracker](https://docs.adpix.io/en/analytics/privacy/consent-categories-and-gating/)
- [The consent log and export](https://docs.adpix.io/en/analytics/privacy/consent-log-and-export/)
- [Cookie declaration](https://docs.adpix.io/en/analytics/privacy/cookie-declaration/)

---

[Docs](https://docs.adpix.io/en/analytics/privacy/consent-cmp-setup/) · AdPix
