Advent Calendar | Christmas calendar with coupon doors and no cache clearing
Description
Highlights
- Doors open on time, no more clearing the cache first thing in the morning
- Closed doors give nothing away, their content is not in the page source
- A coupon, product, category or your own content behind every door
- Five design templates from Christmas to Easter, no image licences needed
- Logged-in customers only or by rule: you decide who can take part
Features
- Six door types: Custom content, Link (URL), Product, Category, Landing page, Coupon (promotion)
- Coupon doors show the code with “Copy code” and “Redeem in cart”
- Direct link per door: one click goes straight to the target, no door window
- Per door: Image closed, Image opened, Highlight, Open in new window
- 1 to 100 doors per calendar, interval in days (1 = daily, 7 = weekly)
- Time zone and opening time per calendar, independent of where your visitors are
- Display mode “In order” or “Random”, the current door is marked
- Past doors: can still be opened, always shown open or locked
- Logged-in customers only, a rule from the Rule Builder and per sales channel
- Design templates Classic, Winter, Nordic, Easter and Minimal, combinable with your own colours
- Columns for desktop, tablet and smartphone, door format, door style and snow effect
- Notice texts before the start with countdown, after the end and for locked doors
- Admin preview with a simulated point in time, test mode and calendar duplication
- Opening statistics per door without personal data, resettable and switchable off
- Shopping experience block “Advent calendar” in “Commerce” plus Store API for Composable Frontends
About the Extension
It is 6 am on 1 December. Your newsletter has gone out and the first customers click on door 1. It is still shut, because the calendar page comes from the cache and has not noticed the new day. An advent calendar that jams on the very first morning is worse than no calendar at all.
The problem
An advent calendar is a page that changes every day. Shopware serves pages from its HTTP cache to keep your shop fast. If the door status is baked into that page, you end up clearing the cache every morning and again after every edit. And anyone who peeks into the page source can find the coupon code for 24 December on day one.
The solution
The plugin separates what stays the same from what changes. The grid with numbers, images and colours is allowed to sit in the cache. Which doors are open is fetched live from the server when the calendar loads. The content behind a door only leaves the server once date, time, sales channel, login and rule have been checked. Save a calendar in the administration and the plugin refreshes the cache of the affected pages by itself. Shopware does this with a short delay, within five minutes by default.
What's in it for you
- No more cache clearing. Every door opens at the time you set, in the calendar's own time zone. If a customer keeps the page open, the next door unlocks without a reload.
- No spoilers in the page source. The title, content, link and coupon code of a closed door are not in the page HTML. Curious visitors only find numbers and images.
- Coupons that go straight into the cart. A coupon door shows the fixed code of a Shopware promotion, together with “Copy code” and “Redeem in cart”. Nobody has to type anything.
- Every door can do something different. Custom content, Link (URL), Product, Category, Landing page or Coupon (promotion). With Direct link, one click takes the customer straight to the target, and empty doors show a friendly placeholder while you are still filling the calendar.
- Test it before it counts. The preview in the administration simulates any point in time, unsaved changes included. Your shop stays untouched and nothing is counted.
- Looks good without a designer. Five design templates are pure CSS, so there are no image files and no image licences to sort out. Minimal picks up the colours of your theme.
How the plugin works
You create calendars under Marketing > Advent calendar, as many as you like. For each one you set the start date, the number of doors (1 to 100), the interval in days, the opening time and the time zone. A door's number defines its opening date, while the “Random” display mode only shuffles the order in the grid. Under “Past doors” you decide whether earlier doors can still be opened, are always shown open or stay locked.
In the “Access” card you limit the calendar to certain sales channels, to logged-in customers or to a rule from the Rule Builder, such as a customer group or a country. Visitors who are not logged in see a notice with a login button and come back to the calendar page after logging in.
You place the calendar through shopping experiences: drag the “Advent calendar” block from the “Commerce” category onto the page, pick your calendar, save. Notice texts before the start (with a countdown), after the end and for locked doors are maintained per language. Columns for desktop, tablet and smartphone, door format, door style and the snow effect live in the “Design” tab. The snow only falls in the storefront and stays off for visitors who have switched on “reduce motion” in their operating system.
Doors are real buttons with labels for screen readers and can be opened with the keyboard. The “Statistics” tab shows how often each door was opened. For next year, simply duplicate the calendar: the start date of the copy is prefilled one year later.
Typical use cases
- Classic advent calendar: 24 doors from 1 December at 6 am. A £5 off coupon on 6 December, a product of the day behind every other door.
- Twelve Days of Christmas: 12 doors from 25 December to 5 January, so the calendar keeps customers coming back right through the Boxing Day sales.
- Members only: “Logged-in customers only” plus a rule on your trade customer group. The calendar runs in your B2B sales channel only, your retail shop never shows it.
- Easter instead of Christmas: the Easter template with 14 doors up to Easter Monday. Next year you duplicate it and only swap the content.
Technical facts for your IT team
- Shopware 6.7, tested with 6.7.15.1, PHP 8.2 or higher.
- Five dedicated tables for calendars, doors, translations and the sales channel assignment. Shopware's original tables stay untouched.
- The plugin sends no data to external servers. It sets no cookies and stores nothing in your visitors' browsers.
- Opening statistics only count how often a door was opened, with no IP address and no link to a customer. Switch them off per sales channel with the “Count door openings” setting. Test mode never counts.
- Caching: the grid is stored with the page in the HTTP cache. Status and door content come uncached via the Store API. Changes to a calendar invalidate the cache entries of the affected pages automatically, via Shopware's delayed cache invalidation (every five minutes by default).
- HTML in door content is sanitised on output, scripts and embedded iframes are not possible. Links only accept addresses starting with https:// or http:// and shop paths.
- Store API with two routes for calendar and door, ready for Composable Frontends. The components are called CmsBlockSwpAdventCalendar and CmsElementSwpAdventCalendar.
- Dedicated permissions (View, Edit, Create, Delete) for your administration roles.
- The plugin can be switched on and off per sales channel.
- Uninstalling: keep the plugin data and all calendars stay. Otherwise the plugin removes its tables and its shopping experience blocks, and calendar elements in other blocks become empty text elements.
To be honest
This is a calendar, not a prize draw. There is no entry form and no winner selection. Discounts are still set up as Shopware promotions, the plugin only shows their fixed coupon code and never hands out individual codes per customer. Doors open via JavaScript, so without JavaScript visitors only see a notice. A calendar has 100 doors at most, which in our view is plenty for Advent, Easter or a promotion week. Test mode opens every door for every visitor, so only use it before launch. The preview is the better way to check things: give it a go before the first door opens.
Legal notice
We accept no liability for legal requirements. Please check the use of this plugin with a qualified legal advisor.
It is 6 am on 1 December. Your newsletter has gone out and the first customers click on door 1. It is still shut, because the calendar page comes from the cache and has not noticed the new day. An advent calendar that jams on the very first morning is worse than no calendar at all.
The problem
An advent calendar is a page that changes every day. Shopware serves pages from its HTTP cache to keep your shop fast. If the door status is baked into that page, you end up clearing the cache every morning and again after every edit. And anyone who peeks into the page source can find the coupon code for 24 December on day one.
The solution
The plugin separates what stays the same from what changes. The grid with numbers, images and colours is allowed to sit in the cache. Which doors are open is fetched live from the server when the calendar loads. The content behind a door only leaves the server once date, time, sales channel, login and rule have been checked. Save a calendar in the administration and the plugin refreshes the cache of the affected pages by itself. Shopware does this with a short delay, within five minutes by default.
What's in it for you
- No more cache clearing. Every door opens at the time you set, in the calendar's own time zone. If a customer keeps the page open, the next door unlocks without a reload.
- No spoilers in the page source. The title, content, link and coupon code of a closed door are not in the page HTML. Curious visitors only find numbers and images.
- Coupons that go straight into the cart. A coupon door shows the fixed code of a Shopware promotion, together with “Copy code” and “Redeem in cart”. Nobody has to type anything.
- Every door can do something different. Custom content, Link (URL), Product, Category, Landing page or Coupon (promotion). With Direct link, one click takes the customer straight to the target, and empty doors show a friendly placeholder while you are still filling the calendar.
- Test it before it counts. The preview in the administration simulates any point in time, unsaved changes included. Your shop stays untouched and nothing is counted.
- Looks good without a designer. Five design templates are pure CSS, so there are no image files and no image licences to sort out. Minimal picks up the colours of your theme.
How the plugin works
You create calendars under Marketing > Advent calendar, as many as you like. For each one you set the start date, the number of doors (1 to 100), the interval in days, the opening time and the time zone. A door's number defines its opening date, while the “Random” display mode only shuffles the order in the grid. Under “Past doors” you decide whether earlier doors can still be opened, are always shown open or stay locked.
In the “Access” card you limit the calendar to certain sales channels, to logged-in customers or to a rule from the Rule Builder, such as a customer group or a country. Visitors who are not logged in see a notice with a login button and come back to the calendar page after logging in.
You place the calendar through shopping experiences: drag the “Advent calendar” block from the “Commerce” category onto the page, pick your calendar, save. Notice texts before the start (with a countdown), after the end and for locked doors are maintained per language. Columns for desktop, tablet and smartphone, door format, door style and the snow effect live in the “Design” tab. The snow only falls in the storefront and stays off for visitors who have switched on “reduce motion” in their operating system.
Doors are real buttons with labels for screen readers and can be opened with the keyboard. The “Statistics” tab shows how often each door was opened. For next year, simply duplicate the calendar: the start date of the copy is prefilled one year later.
Typical use cases
- Classic advent calendar: 24 doors from 1 December at 6 am. A £5 off coupon on 6 December, a product of the day behind every other door.
- Twelve Days of Christmas: 12 doors from 25 December to 5 January, so the calendar keeps customers coming back right through the Boxing Day sales.
- Members only: “Logged-in customers only” plus a rule on your trade customer group. The calendar runs in your B2B sales channel only, your retail shop never shows it.
- Easter instead of Christmas: the Easter template with 14 doors up to Easter Monday. Next year you duplicate it and only swap the content.
Technical facts for your IT team
- Shopware 6.7, tested with 6.7.15.1, PHP 8.2 or higher.
- Five dedicated tables for calendars, doors, translations and the sales channel assignment. Shopware's original tables stay untouched.
- The plugin sends no data to external servers. It sets no cookies and stores nothing in your visitors' browsers.
- Opening statistics only count how often a door was opened, with no IP address and no link to a customer. Switch them off per sales channel with the “Count door openings” setting. Test mode never counts.
- Caching: the grid is stored with the page in the HTTP cache. Status and door content come uncached via the Store API. Changes to a calendar invalidate the cache entries of the affected pages automatically, via Shopware's delayed cache invalidation (every five minutes by default).
- HTML in door content is sanitised on output, scripts and embedded iframes are not possible. Links only accept addresses starting with https:// or http:// and shop paths.
- Store API with two routes for calendar and door, ready for Composable Frontends. The components are called CmsBlockSwpAdventCalendar and CmsElementSwpAdventCalendar.
- Dedicated permissions (View, Edit, Create, Delete) for your administration roles.
- The plugin can be switched on and off per sales channel.
- Uninstalling: keep the plugin data and all calendars stay. Otherwise the plugin removes its tables and its shopping experience blocks, and calendar elements in other blocks become empty text elements.
To be honest
This is a calendar, not a prize draw. There is no entry form and no winner selection. Discounts are still set up as Shopware promotions, the plugin only shows their fixed coupon code and never hands out individual codes per customer. Doors open via JavaScript, so without JavaScript visitors only see a notice. A calendar has 100 doors at most, which in our view is plenty for Advent, Easter or a promotion week. Test mode opens every door for every visitor, so only use it before launch. The preview is the better way to check things: give it a go before the first door opens.
Legal notice
We accept no liability for legal requirements. Please check the use of this plugin with a qualified legal advisor.
Details
- Available: English, German
- Latest update: 27 October 2026
- Publication date: 28 October 2026
- Version: 6.7.0
- Category: Shopping Experiences
Resources
Reviews (0)
About the Extension Partner
BuI Hinsche GmbH
Partner Status
-
Shopware
Bronze Partner -
Shopware
Premium Extension Partner
Details
-
Ø-Rating:
4.3
Average rating of 4.3 out of 5 stars
- Partner since: 2014
- Extensions: 110
- Certifications: 2
Support
- Based in: Germany
- Speaks: German, English
- Response time: Very quickly
- Frontend:
- Go to demo
- Frontend:
- Go to demo
6.7.0 6.7.0.0 - 6.7.15.1
- Advent calendars for shopping experiences: any number of calendars with any number of doors, managed under Marketing in the administration.
- Door types: own content, URL, product, category, shopping experience (landing page) and coupon code from a promotion with a fixed code.
- Schedule per calendar: start date, interval between doors, opening hour and time zone; past doors stay openable, stay open or are locked.
- Door contents are delivered by the server only after the opening time, sales channel, login and rule checks have passed; locked doors never appear in the page source.
- The calendar grid is cache-safe: door states load live, and changes in the administration invalidate the cache automatically.
- Access control per calendar: sales channels, rule from the Rule Builder and optional login requirement with a login link that returns to the calendar.
- Design templates Classic, Winter, Nordic, Easter and Minimal as pure CSS, combinable with own colours, background image and position, layout per device, door format and door style.
- Snow effect that respects reduced motion, highlighted doors, marking of the current door and a countdown before the start.
- Direct link per door, open in a new window, closed and opened images per door, door titles with fallback to the target name.
- Coupon doors with copy button and redemption in the cart.
- Admin preview with a freely selectable date, duplicating calendars and an opening statistic per door that can be reset.
- Accessible doors: buttons with labels, keyboard operation, focus handling in the dialog and a live region.
- Store API routes for headless frontends and a Symfony event after a door has been opened.
- Plugin can be switched on and off per sales channel; counting of door openings can be switched off per sales channel.