GDPR-compliant Cookie Consent Manager for Shopware 6.6 - 6.7 using the open-source Klaro library (v0.7.21).
Live Demo: Try all OXID eShop and Shopware plugins by Markus Michalski live — no installation, no risk. demo.markus-michalski.net
Unlike cloud-based consent managers (Cookiebot, OneTrust, etc.), Klaro runs entirely on your own server. No data is sent to third parties, no external scripts are loaded, and you have full control over the consent flow. This makes it the ideal choice for privacy-conscious shop owners who take GDPR seriously.
| Feature | Description |
|---|---|
| Klaro Library | Open-source consent management — no vendor lock-in, full transparency |
| Google Consent Mode v2 | Automatic integration with Google Analytics 4 and Google Ads (required since March 2024) |
| Multi-Sales-Channel | Different configurations per Sales Channel — one plugin, multiple shops |
| Admin UI | Manage cookie services directly in the Shopware Admin — no code required |
| Customizable Styling | Button colors, position (bottom/top/corner), light/dark theme |
| Cookie Deletion | Automatic cleanup of cookies when user withdraws consent |
| Contextual Consent | Per-embed consent for YouTube, Vimeo, Google Maps, etc. |
| Purpose Categories | Group services by purpose (Analytics, Marketing, Functional, Security) with editable texts |
| Multi-Language | German and English out of the box |
| Footer Link | Automatic "Cookie Settings" link in the storefront footer |
| GDPR Opt-In | All services default to opt-in — no tracking before consent |
| Must Consent Mode | Optional blocking modal that requires user interaction before using the site |
Add the private Composer repository to your shop's composer.json:
{
"repositories": [
{
"type": "composer",
"url": "https://packeton.markus-michalski.net"
}
]
}
The repository credentials will be provided upon purchase. Credentials are managed via Packeton.
composer require mmd/sw67-klaro-cookie-consent
When prompted for authentication, enter the credentials provided with your license.
bin/console plugin:refresh
bin/console plugin:install --activate MmdKlaroCookieConsent
bin/console cache:clear
Update to the latest version:
composer update mmd/sw67-klaro-cookie-consent
bin/console cache:clear
When installing via the Shopware Store, updates are available directly from Extensions > My Extensions.
Navigate to Settings > Plugins > Klaro Cookie Consent to configure the plugin. All settings are per Sales Channel — you can have different configurations for different shops.
| Setting | Default | Description |
|---|---|---|
| Active | true |
Enable/disable consent banner per Sales Channel |
| Privacy Policy URL | /privacy |
Link to your privacy policy page |
| Setting | Default | Description |
|---|---|---|
| Must Consent | true |
Blocking modal — user must interact before using the site |
| Show "Accept All" | true |
Display the "Accept All" button |
| Hide "Decline All" | false |
Hide the "Decline All" button (users can still decline individually) |
| Group by Purpose | true |
Group services by category (Analytics, Marketing, etc.) |
| Hide "Learn More" | false |
Hide the "Learn More" links per service |
| Setting | Default | Description |
|---|---|---|
| Storage Method | cookie |
How consent is stored: Cookie (recommended) or Local Storage |
| Storage Name | klaro |
Name of the cookie/localStorage key |
| Cookie Expires | 365 days |
Consent cookie expiration in days |
| Setting | Default | Description |
|---|---|---|
| Enable | false |
Sync consent with Google services (GA4, Google Ads) |
| Wait for Update | true |
Delay Google tags until consent is determined |
| Setting | Default | Description |
|---|---|---|
| Accept All Button | #1a73e8 |
Color for the "Accept All" button and active toggles |
| Save Selection Button | #2581c4 |
Color for the "Save Selection" button |
| Decline All Button | #5c5c5c |
Color for the "Decline All" button |
| Position | bottom |
Banner position: bottom, top, bottom-left, bottom-right (only in non-modal mode) |
| Theme | light |
Color scheme: light or dark |
Since v1.1.0, purpose category titles and descriptions are fully editable in the plugin settings. Each purpose has configurable texts for German and English:
| Purpose | Default Title (EN) | Default Description (EN) |
|---|---|---|
| Analytics | Analytics | These services collect anonymous data about website usage |
| Marketing | Marketing | These services enable measurement and optimization of advertising campaigns on external platforms |
| Functional | Functional | These services provide additional functionality |
| Security | Security | These services help protect the website |
Navigate to Marketing > Klaro Cookie Services (or via the plugin settings) to manage services.
Each service represents a third-party tool or tracking script that requires user consent. A service has the following fields:
| Field | Required | Description |
|---|---|---|
| Technical Name | Yes | Unique identifier used in Klaro config (lowercase, alphanumeric, hyphens only, e.g. google-analytics) |
| Purpose | Yes | Category: analytics, marketing, functional, or security |
| Title | Yes | Display name shown in the consent dialog (translatable) |
| Description | No | Explanation shown to the user (translatable) |
| Required | No | Service cannot be disabled by user (e.g. session cookies) |
| Default Enabled | No | Pre-checked in consent dialog |
| Active | No | Show in consent dialog |
| Cookies | No | Cookies to delete when user opts out |
| Only Once | No | Execute callback only once |
| Contextual Consent Only | No | For embedded content (YouTube, etc.) — shows placeholder until consent |
| Position | No | Sort order in the consent dialog |
| Sales Channels | Yes | Assign to specific Sales Channels |
When a user withdraws consent for a service, Klaro can automatically delete its cookies. Configure cookie deletion rules as JSON:
[
{"pattern": "_ga", "path": "/", "domain": ".example.com"},
{"pattern": "_gid", "path": "/", "domain": ".example.com"}
]
Each rule supports:
/| Field | Value |
|---|---|
| Technical Name | google-analytics |
| Purpose | analytics |
| Title | Google Analytics |
| Description | Collects anonymous data about website usage to help us improve the shopping experience. |
| Required | No |
| Default Enabled | No |
| Cookies | [{"pattern": "_ga", "path": "/", "domain": ".example.com"}, {"pattern": "_gid", "path": "/", "domain": ".example.com"}, {"pattern": "_gat", "path": "/", "domain": ".example.com"}] |
| Field | Value |
|---|---|
| Technical Name | youtube |
| Purpose | functional |
| Title | YouTube |
| Description | Loads embedded YouTube videos. A connection to Google is established when you consent. |
| Contextual Consent Only | Yes |
| Cookies | [{"pattern": "YSC", "path": "/", "domain": ".youtube.com"}, {"pattern": "VISITOR_INFO1_LIVE", "path": "/", "domain": ".youtube.com"}] |
| Field | Value |
|---|---|
| Technical Name | facebook-pixel |
| Purpose | marketing |
| Title | Facebook Pixel |
| Description | Measures the effectiveness of advertising campaigns on Facebook and Instagram. |
| Cookies | [{"pattern": "_fbp", "path": "/", "domain": ".example.com"}, {"pattern": "fr", "path": "/", "domain": ".facebook.com"}] |
This service is created automatically during plugin installation:
| Field | Value |
|---|---|
| Technical Name | session |
| Purpose | functional |
| Title | Technically necessary |
| Description | These cookies are essential for the basic functions of the shop. They store your shopping cart and enable the checkout process. |
| Required | Yes |
| Default Enabled | Yes |
| Cookies | [{"pattern": "session-", "path": "/"}, {"pattern": "sw-", "path": "/"}] |
Since March 2024, Google requires Consent Mode v2 for any website using Google Analytics or Google Ads in the European Economic Area (EEA).
When enabled, the plugin automatically:
Sets default consent to "denied" for all Google consent categories before any tags fire:
ad_storage: deniedad_user_data: deniedad_personalization: deniedanalytics_storage: deniedfunctionality_storage: deniedpersonalization_storage: deniedsecurity_storage: grantedEnables ads data redaction to prevent personal data from being collected before consent.
Listens for Klaro consent changes and updates Google consent accordingly:
google-analytics, ga4, or gtag is accepted: analytics_storage is grantedgoogle-ads or google-tag-manager is accepted: ad_storage, ad_user_data, ad_personalization are grantedyoutube, vimeo, or maps is accepted: functionality_storage, personalization_storage are grantedTo use Google Consent Mode v2, enable it in the plugin settings and make sure your Google Analytics/Ads service technical names match the expected names (
google-analytics,google-ads, etc.).
The plugin automatically adds a "Cookie Settings" link to the storefront footer service menu. When clicked, it reopens the Klaro consent dialog so users can change their preferences at any time. No additional configuration is required.
Commercial License — single-installation license including:
For multiple production installations, a separate license is required for each.
For licensing inquiries: support@markus-michalski.net
Markus Michalski