Klaro Cookie Consent: Configuration
Configuring Klaro Cookie Consent for Shopware 6.7 - plugin settings, cookie services in the admin, texts via snippets, Google Consent Mode v2 and real-world examples.
Klaro Cookie Consent: Configuration
This documentation always describes the latest published version.
Plugin Settings
Navigate to Settings > Extensions > Klaro Cookie Consent Manager. All settings can be overridden per sales channel, so you can configure different shops differently.
Settings
General Settings
| Setting | Default | Description |
|---|---|---|
| Activate Cookie Consent | true |
Enables the Klaro banner in the storefront of the sales channel |
| Privacy Policy URL | /privacy |
Link to your privacy policy page, e.g. /datenschutz. The value must start with / or https://, otherwise /privacy is used |
| Automatically add Cookie Settings link to footer service menu | true |
Hides the automatically inserted footer link when disabled. Useful when placing your own link (see Storefront) |
Consent Behavior
| Setting | Default | Description |
|---|---|---|
| Must Consent (Modal blocking) | true |
Users must interact with the dialog before they can use the site. Recommended for GDPR compliance |
| Show "Accept All" button | true |
Displays a button to accept all services at once |
| Hide "Decline All" button | false |
Hides the "Decline All" button. Users can still decline individual services |
| Group services by purpose | true |
Groups services by category (Analytics, Marketing, etc.) in the dialog |
| Hide "Learn More" links | false |
Hides the "Learn More" links |
Storage Settings
| Setting | Default | Description |
|---|---|---|
| Storage Method | cookie |
Cookie (recommended) or Local Storage |
| Storage Name | klaro |
Name of the cookie or localStorage key |
| Cookie expires after (days) | 365 |
Number of days until the consent cookie expires |
Google Consent Mode v2
| Setting | Default | Description |
|---|---|---|
| Enable Google Consent Mode v2 | false |
Syncs consent with Google services (GA4, Google Ads) |
| Wait for consent update (only if Google Consent Mode v2 is enabled) | true |
Delays Google tags until consent is determined (500 milliseconds). Only takes effect when Google Consent Mode v2 is enabled |
Styling
| Setting | Default | Description |
|---|---|---|
| Accept All Button Color | #1a73e8 |
Color for the "Accept All" button and active toggles. Hex values (#rgb or #rrggbb) are accepted, otherwise the default applies |
| Save Selection Button Color | #2581c4 |
Color for the "Save Selection" button |
| Decline All Button Color | #5c5c5c |
Color for the "Decline All" button |
| Banner Position (only if "Must Consent" is disabled) | bottom |
Bottom (full width), Top (full width), Bottom Left or Bottom Right |
| Color Theme | light |
Light or Dark |
The banner position only applies when "Must Consent" is disabled. When "Must Consent" is enabled, a centered modal is shown instead.
Configuration keys
The settings are stored in the system configuration under the prefix MmdKlaroCookieConsent.config. and are read per sales channel:
| Key | Setting |
|---|---|
MmdKlaroCookieConsent.config.active |
Activate Cookie Consent |
MmdKlaroCookieConsent.config.privacyPolicyUrl |
Privacy Policy URL |
MmdKlaroCookieConsent.config.showFooterLink |
Cookie Settings link in the footer service menu |
MmdKlaroCookieConsent.config.mustConsent |
Must Consent |
MmdKlaroCookieConsent.config.acceptAll |
Show "Accept All" button |
MmdKlaroCookieConsent.config.hideDeclineAll |
Hide "Decline All" button |
MmdKlaroCookieConsent.config.groupByPurpose |
Group services by purpose |
MmdKlaroCookieConsent.config.hideLearnMore |
Hide "Learn More" links |
MmdKlaroCookieConsent.config.storageMethod |
Storage Method |
MmdKlaroCookieConsent.config.storageName |
Storage Name (allowed: letters, numbers, _ and -, otherwise klaro is used) |
MmdKlaroCookieConsent.config.cookieExpiresAfterDays |
Cookie expires after (days) |
MmdKlaroCookieConsent.config.googleConsentMode |
Enable Google Consent Mode v2 |
MmdKlaroCookieConsent.config.googleConsentModeWaitForUpdate |
Wait for consent update |
MmdKlaroCookieConsent.config.primaryColor |
Accept All Button Color |
MmdKlaroCookieConsent.config.secondaryColor |
Save Selection Button Color |
MmdKlaroCookieConsent.config.declineColor |
Decline All Button Color |
MmdKlaroCookieConsent.config.position |
Banner Position |
MmdKlaroCookieConsent.config.theme |
Color Theme |
Customizing texts via snippets
The texts of the consent categories and of the dialog are managed through Shopware snippets. This allows any number of languages, not just German and English. You find the snippet keys under Settings > Snippets with the prefix mmd-klaro.
Category texts
| Snippet key | Default (EN) | Default (DE) |
|---|---|---|
mmd-klaro.purposes.analytics.title |
Analytics | Statistik |
mmd-klaro.purposes.analytics.description |
These services collect anonymous data about website usage | Diese Dienste sammeln anonyme Daten über die Nutzung unserer Website |
mmd-klaro.purposes.marketing.title |
Marketing | Marketing |
mmd-klaro.purposes.marketing.description |
These services enable measurement and optimization of advertising campaigns on external platforms | Diese Dienste ermöglichen die Messung und Optimierung von Werbekampagnen auf externen Plattformen |
mmd-klaro.purposes.functional.title |
Functional | Funktional |
mmd-klaro.purposes.functional.description |
These services provide additional functionality | Diese Dienste bieten zusätzliche Funktionen |
mmd-klaro.purposes.security.title |
Security | Sicherheit |
mmd-klaro.purposes.security.description |
These services help protect the website | Diese Dienste schützen die Website |
mmd-klaro.purposes.other.title |
Other | Sonstiges |
mmd-klaro.purposes.other.description |
These services do not fit any other category | Diese Dienste lassen sich keiner anderen Kategorie zuordnen |
Tip: To add French, create a new snippet set for
fr-FRand translate the texts. Klaro automatically displays the language of the shop in the storefront.
Dialog texts
| Snippet key | Description |
|---|---|
mmd-klaro.consentModal.title |
Consent modal title |
mmd-klaro.consentModal.description |
Description text in the modal |
mmd-klaro.consentNotice.description |
Text of the notice banner (when "Must Consent" is disabled) |
mmd-klaro.consentNotice.learnMore |
Text of the "Learn more" link in the notice banner |
mmd-klaro.ok |
Text of the "Accept all" button |
mmd-klaro.acceptAll |
Text for "Accept all" |
mmd-klaro.decline |
Text of the "Decline all" button |
mmd-klaro.declineAll |
Text for "Decline all" |
mmd-klaro.save |
Text of the "Save" button |
mmd-klaro.acceptSelected |
Text of the "Save selection" button |
mmd-klaro.cookieSettings |
Label of the "Cookie Settings" footer link |
Managing cookie services (admin module)
The plugin includes a dedicated admin module with native Shopware UX. You find the service management under Extensions > Cookie Consent Services.
graph LR
A["Extensions"] --> B["Cookie Consent Services"]
B --> C["Service list"]
C --> D["Service detail"]
D --> E["Language switcher"]
E --> F["Title and description per language"]
Service list
The list shows all configured services with technical name, title and category, plus the "Required" and "Active" status as icons. Sorting and pagination are available, and the language switcher in the top right shows the titles in the selected language.
Creating and editing services
Click "Create service" or an existing service. In the header of the detail page you switch the language with the language switcher to manage title and description per language. This works like Shopware products or categories.
Important: The technical name cannot be changed after creation. It serves as the unique identifier in the Klaro configuration.
Service fields
| Field | Description | Required |
|---|---|---|
| Technical name | Unique identifier, e.g. google-analytics (lowercase letters, numbers, hyphens) |
Yes |
| Category | Functional / Technically required, Statistics / Analytics, Marketing, Security or Other | Yes |
| Display title | Name in the consent dialog, managed per language. A title in the default language is required when saving | Yes |
| Description | Explanation for the user, managed per language | No |
| Position | Sort order in the consent dialog (0 = top) | No |
| Active | Show the service in the consent dialog | No |
| Required | The user cannot decline the service, e.g. for session cookies | No |
| Enabled by default | Pre-checked in the consent dialog | No |
| Execute callback only once | Prevents duplicate tracking events | No |
| Sales channels | Sales channels in which the service is displayed | No |
The option "Enabled by default" is not GDPR compliant because it anticipates consent. Use it with caution.
If no sales channel is selected, the service is not shown in any sales channel.
Cookie deletion rules
For each service you can define cookies that are deleted automatically when consent is withdrawn:
| Field | Description | Required |
|---|---|---|
| Cookie name/pattern | Cookie name or pattern, e.g. _ga or ^_gid.*$ |
No |
| Path | Cookie path (default: /) |
No |
| Domain | Cookie domain, e.g. .example.com |
No |
Every rule needs a pattern. Remove rows you do not fill in.
Google Consent Mode v2
Since March 2024, Google requires Consent Mode v2 for websites that use Google Analytics or Google Ads in the European Economic Area. Enable it under Settings > Extensions > Klaro Cookie Consent Manager with the setting Enable Google Consent Mode v2.
graph TD
A["Page load"] --> B["Google consent default: denied"]
B --> C["Klaro initializes"]
C --> D{"User interaction"}
D -->|"Accepts"| E["gtag consent update: granted"]
D -->|"Declines"| F["Consent stays denied"]
E --> G["Google tags fire"]
F --> H["No data collection"]
With Google Consent Mode enabled, the following happens:
- Default state: Before any tag fires,
ad_storage,ad_user_data,ad_personalization,analytics_storage,functionality_storageandpersonalization_storageare set todenied, andsecurity_storagetogranted. If "Wait for consent update" is active,wait_for_updatewith 500 milliseconds is added. - Ads data redaction:
ads_data_redactionis set totrueon load and switched tofalseas soon as marketing consent is granted. - Consent update: As soon as the user saves a decision, the Google keys are updated based on the category of the services.
| Category of the service | Updated Google keys |
|---|---|
| Statistics / Analytics | analytics_storage |
| Marketing | ad_storage, ad_user_data, ad_personalization |
| Functional | functionality_storage, personalization_storage |
| Security, Other | none (no Consent Mode counterpart) |
The mapping depends on the category, not on the technical name of a service. A category for which no service is configured in a sales channel is left untouched and therefore does not override signals from other scripts or from Google Tag Manager.
Real-world examples
Google Analytics 4 (GA4)
| Field | Value |
|---|---|
| Technical name | google-analytics |
| Category | Statistics / Analytics |
| Title (EN) | Google Analytics |
| Title (DE) | Google Analytics |
| Description (EN) | Collects anonymous statistics about website usage |
| Description (DE) | Sammelt anonyme Statistiken über die Nutzung der Website |
| Cookies | _ga (path: /, domain: .example.com), _gid (path: /, domain: .example.com) |
Include your GA4 script with the data-name attribute so Klaro can control it:
<script data-type="application/javascript"
data-name="google-analytics"
data-src="https://www.googletagmanager.com/gtag/js?id=G-XXXXXX"
type="text/plain"></script>
YouTube (embedded videos)
| Field | Value |
|---|---|
| Technical name | youtube |
| Category | Functional |
| Title | YouTube |
| Description | Enables playback of embedded YouTube videos |
The Klaro flag for contextual consent cannot be set in the admin form, see Troubleshooting.
Facebook Pixel
| Field | Value |
|---|---|
| Technical name | facebook-pixel |
| Category | Marketing |
| Title | Facebook Pixel |
| Description | Enables measuring advertising campaigns on Facebook and Meta |
| Cookies | _fbp (path: /), _fbc (path: /) |
Shopware session (technically necessary)
This service is created automatically during installation:
| Field | Value |
|---|---|
| Technical name | session |
| Category | Functional |
| Title (EN) | Technically necessary |
| Title (DE) | Technisch notwendig |
| Description (EN) | These cookies are essential for the basic functions of the shop. They store your shopping cart and enable the checkout process. |
| Description (DE) | Diese Cookies sind für die Grundfunktionen des Shops erforderlich. Sie speichern z.B. den Warenkorb und ermöglichen den Checkout-Prozess. |
| Required | Yes |
| Enabled by default | Yes |
| Cookies | session- (path: /), sw- (path: /) |