Consent

How Wake's consent banner, two-click embeds and consent records work.

Wake has a consent manager built in. It asks only when there is something to ask for, treats "Decline" exactly like "Accept" and keeps an anonymous record of every decision.

When the banner appears

By default the banner appears on every site (always: true in settings/consent.yml), so visitors always see what the site counts and can decide. With always: false it appears only when the site actually needs consent up front:

  • the statistics cookie is offered (statistics: true),
  • marketing scripts are used (marketing: true), or
  • level-1 statistics wait for consent (tracking.level1: 'consent', the default).

Embedded videos and maps ask for themselves when someone clicks them (see below).

The footer link @wakeConsentLink ("Cookie settings") opens the detailed settings at any time, so visitors can change or withdraw their choice.

Categories

Category What it unlocks
Necessary the wake_consent cookie that stores the choice. Always active
Statistics the wake_v cookie for level-2 statistics (returning visitors)
External media all embeds (YouTube, Vimeo, maps, …) without a click
Marketing your own scripts marked with data-wake-consent="marketing"

Two-click embeds

::: embed https://www.youtube.com/watch?v=abc123
Caption of the video.
:::

Wake renders a placeholder that names the service and explains that data goes to it. Nothing is loaded from the service until the visitor clicks Load content. A checkbox Always allow YouTube remembers the choice for this service only. Visitors who agreed to External media see embeds directly.

Where a service offers a privacy-friendlier player, Wake uses it (youtube-nocookie.com, Vimeo with dnt=1).

Recognised services: YouTube, Vimeo, Google Maps, OpenStreetMap, Spotify, SoundCloud, Instagram, X. Other addresses are embedded as "external content".

Your own scripts

Scripts in a theme or code injection run only after consent when you mark them:

<script type="text/plain" data-wake-consent="marketing" src="https://example.com/pixel.js"></script>

The list for your privacy policy

Wake writes a ready-made section for the privacy policy: Wake's statistics (and whether they wait for consent), the cookies in use and every service embedded anywhere in your content. It updates itself when you embed something new or change a setting. Put it into the privacy page as a card, or into a theme template with @wakeServices:

::: privacy-details
:::

The privacy policy that Wake creates during setup already contains it. It is a starting point, not legal advice.

The privacy link

The banner links the privacy policy. Under Consent in the panel you choose which: the site's privacy policy (the page in legal.privacy, see configuration), any other page, or another address. A page is linked only once it is published, in the visitor's language if it has a translation.

Records

Every decision is sent to public/hit.php and appended to data/consent/{year}-{month}.log:

{"time":"2026-10-17T09:41:00+00:00","id":"3f9c…","categories":["necessary","statistics"],"action":"custom","version":2,"language":"de"}

The record contains a random consent id (also stored in the visitor's cookie), the time, the categories, the language and the version of the banner texts. It contains no IP address and nothing else that identifies a person. That is enough to prove that a given consent was given with a given text (Art. 7 GDPR).

Versions

Changing the banner texts raises the version in settings/consent.yml. Visitors whose stored choice has an older version are asked again.

In the panel

Consent shows the decisions of the last 30 days, the agreement per category, the latest records and the embedded services. Administrators edit the banner there, with a live preview per language.

Settings file

settings/consent.yml is written by the panel. All keys are optional:

version: 2
statistics: true          # offer the level-2 statistics cookie
marketing: false
always: true              # show the banner even if nothing needs consent (default)
position: bottom          # bottom or center
privacy_page: ''          # page for the banner's privacy link; '' = the site's privacy policy (legal.privacy)
privacy_url: ''           # or any address; wins over privacy_page
texts:
  de:
    title: Ihre Privatsphäre
    accept: Alle akzeptieren

Texts you leave out use Wake's defaults in English or German.

source: docs/concepts/consent.md