Maintenance Page
v2.0.14
Maintenance Page
- Updates and support included for 12 months
- Full documentation included
- Compatible with Hyvä themes
- Composer-ready installation
Maintenance — Free Edition
Replace Magento's default 503.php page with a real, branded CMS page during maintenance windows. The free edition is the no-frills option: pick a CMS page, set a bypass secret or whitelist your office IPs, and your customers see a clean page instead of a raw error template the moment you flip maintenance mode on.
The plugin hooks Magento's catchException flow, so it triggers exactly when the native bin/magento maintenance:enable would have shown the 503 — no extra cron, no scheduling, no surprises. A built-in English fallback template covers the case where the configured CMS page is missing.
Who it's for
- Merchants who want a polished maintenance page without paying for the Pro edition
- Stores that schedule maintenance manually via
bin/magento maintenance:enableand want a better customer-facing screen - Agencies preparing deploys for clients who care about brand consistency even during downtime
Key benefits
- Custom CMS page — pick any CMS page in the admin; the module renders it with frontend area code so blocks and widgets work.
- IP whitelist (exact match) — let your office, monitoring, or CI bypass maintenance. CIDR ranges are a Pro feature.
- Bypass secret URL — share a
?maintenance_bypass=YOUR_SECRETlink with staff and external testers. Stored encrypted in admin config. - Admin access toggle — optionally keep the admin panel reachable during maintenance so you can finish the work.
- HTTP status configurable — return 503 (default, correct for SEO), 200, or 302 depending on use case. Configurable
Retry-Afterheader. - Production-quiet logging — internal traces gated behind an admin debug toggle so
system.logdoesn't get spammed by PHP 8.2/8.3 deprecation notices caught defensively by the plugin. - MIT licensed — install on as many stores as you want, modify the template freely.
Compatibility
- Magento 2.4.x / Mage-OS equivalent
- PHP 8.1, 8.2, 8.3
- Requires
wimakeit/module-core3.0.9 or later - Built-in English template — multilingual templates, scheduled maintenance, pre-maintenance banner, Hyvä/Breeze support and CIDR whitelist are in
wimakeit/module-maintenance-pro
Install this module via Composer. Make sure your auth.json is configured with your Wimakeit credentials.
$ composer require wimakeit/module-maintenance:^2.0.14
$ bin/magento setup:upgrade
$ bin/magento setup:di:compile
Installation notes
The standard composer require + setup:upgrade + setup:di:compile flow applies. The points below cover what's specific to this module.
Required dependency
This module requires wimakeit/module-core 3.0.9 or later. Composer will pull it automatically from the Wimakeit registry as long as the registry is declared in your project's composer.json.
ACL permissions
After installation, one ACL resource is registered under System → Permissions → User Roles:
| Resource | Default |
|---|---|
Wimakeit_Maintenance::config (edit module configuration) | granted to Administrator role only |
Default CMS page
A CMS page with identifier site-under-maintenance is created automatically by the install patch (chosen to avoid url_rewrite collisions with existing categories/products named "maintenance"). You can:
1. Edit it in Content → Pages to customize the look 2. Create your own CMS page and select it in the admin config 3. Leave it empty and let the built-in English fallback template render
Configuration
The module ships disabled (opt-in). Go to Stores → Configuration → Wimakeit → Maintenance.
General settings
| Setting | Default |
|---|---|
| Enable Custom Maintenance Page | No (opt-in) |
| CMS Page | site-under-maintenance |
| Use Fallback Template | Yes |
| HTTP Status Code | 503 |
| Retry-After (seconds) | 3600 |
| Allowed IPs | (empty — exact match only; CIDR in Pro) |
| Bypass Secret Key | (empty; min 8 characters recommended, stored encrypted) |
| Apply to Admin Panel | No (admin remains accessible) |
| Enable Debug Logging | No — leave off in production |
Usage
# Enable maintenance (native Magento command)
bin/magento maintenance:enable
# Enable with IP whitelist on the fly
bin/magento maintenance:enable --ip=192.168.1.100 --ip=10.0.0.1
# Disable
bin/magento maintenance:disable
# Status + troubleshooting (Wimakeit-specific)
bin/magento wimakeit:maintenance:status
Bypass during maintenance
Add your bypass secret to any URL:
https://yourstore.com/?maintenance_bypass=YOUR_SECRET_KEY
The check is timing-attack safe.
Custom template
Override the default template by creating one in your theme:
app/design/frontend/<Vendor>/<theme>/Wimakeit_Maintenance/templates/maintenance/content/en.phtml
app/design/frontend/<Vendor>/<theme>/Wimakeit_Maintenance/templates/maintenance/styles/default.phtml
- Version
- v2.0.14
- License
- Perpetual
- Support
- 12 months
- Last updated
- Jun 11, 2026
- Magento
- Magento 2.4.4 Magento 2.4.5 Magento 2.4.6 Magento 2.4.7 Mage-OS 2.0 Mage-OS 2.1
- PHP
- PHP 8.1 PHP 8.2 PHP 8.3
- Hyvä
- Compatible
- Package
-
wimakeit/module-maintenance
Compatibility checker
Pick your stack to see if this module fits.
Compatibility 4
Pricing & licensing 4
bin/magento module:disable; uninstall cleanup is automatic via the module's setup patch revert. vendor/wimakeit/ once you composer require the package, so you can read it, audit it, and patch it locally for your own Magento install. You may NOT redistribute it, sublicense it, publish it on a public package registry, or sell it on. One licence = one production domain + one staging/dev domain (see terms for the full EULA). Wimakeit modules are NOT part of Magento's open-source repository on packagist.org — they are distributed exclusively via the private Composer registry packages.wimakeit.be. Installation & updates 6
composer require wimakeit/module-maintenance:^2.0.12, then bin/magento setup:upgrade, bin/magento setup:di:compile, and finally bin/magento cache:flush. The Installation tab on this page lists every configuration step (ACLs, cron jobs, default values) so a deploy takes minutes, not hours. If you need a hand, Wimakeit offers Magento installation services from our Wallonian office (Presles, between Charleroi and Namur). auth.json: {"http-basic": {"packages.wimakeit.be": {"username": "YOUR-EMAIL", "password": "YOUR-TOKEN"}}}. Step 3: register the repo: composer config repositories.wimakeit composer https://packages.wimakeit.be. Step 4: composer require wimakeit/module-maintenance:^2.0.12. In CI/CD pipelines, inject COMPOSER_AUTH as a JSON env var instead of committing auth.json. composer require, same module code, same database schema — no fork to maintain, no licence change. composer update is safe within a major. app/design/frontend/{YourVendor}/{theme}/Wimakeit_{Module}/templates/ keeping the same relative path. Blocks, ViewModels and Helpers are overridable via DI preference in your own custom module — declare <preference for="Wimakeit\…\OriginalClass" type="YourVendor\Override\Class" /> in etc/di.xml. Layout XML is extended (preferred) or overridden the standard Magento way. Wimakeit modules never use the final keyword on classes you might reasonably want to override — overriding is a first-class scenario, not a hack. Support & security 3
contact@wimakeit.com with the module name, version, Magento/Mage-OS version and the steps to reproduce. Fixes ship in the next patch release. Wimakeit support is staffed in French, English and Dutch on business days (CET working hours). contact@wimakeit.com with a clear [SECURITY] subject prefix — please include the module name, version and the steps to reproduce. We acknowledge promptly on business days and credit reporters in the Changelog if they wish. Wimakeit is a Belgian SRL (société à responsabilité limitée) bound by Belgian and EU privacy and disclosure law. About Wimakeit 1
Found something not covered by the FAQ?
Report a bug or ask a question — the form is prefilled with this module.
Changelog
Categories: Security, Feature, Fix, Perf, Admin, Deps.
[2.0.14] - 2026-06-05
Deps
- Marketing documentation refreshed to list PHP 8.4 in the supported PHP range.
[2.0.13] - 2026-06-05
Deps
- PHP 8.4 certified — constraint widened to
>=8.1 <8.5.
[2.0.12] - 2026-05-26
Fix
- Default CMS page identifier changed from
maintenancetosite-under-maintenanceto avoid url_rewrite collisions with categories/products commonly named "maintenance". - Install patch now checks for existing url_rewrite entries before saving; on conflict it logs a warning and skips gracefully instead of crashing
setup:upgradewith a duplicate-URL-key error.
Admin
- Existing installs keep their previous CMS page; only fresh installs get the new safer default identifier.
[2.0.10] - 2026-05-26
Fix
- CMS page creation patch reduced to the essential fields, removing legacy attributes that could cause
setup:upgradeto fail on stores with stricter EAV validators.
[2.0.9] - 2026-05-10
Admin
- Debug logging now routes through a shared
Wimakeit\Maintenance\Logger\DebugLoggervirtualType — cleaner code, no behavior change. The toggle pathwimakeit_maintenance/general/debug_modeis unchanged. - The defensive
\Throwablecatch in HttpPlugin no longer writescriticallines for upstream PHP deprecation notices; demoted towarningand gated behind the debug toggle.
Deps
- Requires
wimakeit/module-core3.0.9+ for the shared debug logger and inheritedgetConfigSection()helper.
[2.0.8] - 2026-05-10
Feature
- New Enable Debug Logging admin toggle (General → Settings, default off). Keeps
var/log/system.logquiet in production by gating internal info/debug/warning traces.
Fix
- HttpPlugin no longer writes a CRITICAL line on every backend error path. PHP 8.2/8.3 dynamic-property deprecations in
pub/errors/processor.php, caught defensively byaroundCatchException, are now gated behind the debug toggle. Hard errors that block functionality are still logged.
[2.0.2] - 2026-03-04
Admin
- Breaking: Removed redundant
wimakeit:maintenance:enableandwimakeit:maintenance:disableCLI commands. Use nativebin/magento maintenance:enable/:disable. Diagnostics live inwimakeit:maintenance:status. - Default
enabledchanged from1to0(opt-in). The module must now be explicitly enabled in admin config before it intercepts requests.
[2.0.1] - 2026-03-04
Feature
- New
wimakeit:maintenance:statusCLI command for status output and troubleshooting tips.
Fix
- Plugin interception point moved from
launchtocatchExceptionto correctly handle the maintenance exception thrown by Magento's Bootstrap. - Frontend area code is now set before rendering CMS content (fixes "area code not set" errors).
- HttpResponse singleton pollution fixed via a factory pattern.
- Added Cache-Control headers to prevent caching of the maintenance response.
[2.0.0] - 2026-03-03
Feature
- Freemium split: free edition keeps the essentials, Pro edition adds scheduled maintenance, pre-maintenance banner, Hyvä/Breeze themes, multilingual templates, CIDR whitelist and license management.
- License changed from proprietary to MIT for the free edition.
Admin
- IP whitelist now supports exact match only (CIDR moved to
wimakeit/module-maintenance-pro). - Single English template (multilingual templates moved to Pro).
- Default Luma styling only (Hyvä/Breeze moved to Pro).
[1.1.0] - 2026-03-03
Feature
- Scheduled maintenance with start/end date-time.
- Pre-maintenance warning banner on the frontend.
- Admin preview button to render the maintenance page without enabling maintenance.
- New cron job
wimakeit_maintenance_schedule_checkrunning every minute.
[1.0.0] - 2026-03-03
Feature
- Initial release.
- Custom CMS page rendered during maintenance instead of
503.php. - Admin configuration panel at Stores → Configuration → Wimakeit → Maintenance.
- IP whitelist with CIDR notation (IPv4 and IPv6).
- Bypass secret URL parameter (timing-attack safe).
- Configurable HTTP status codes (503, 200, 500, 502, 504) and
Retry-Afterheader. - CLI commands
wimakeit:maintenance:enable/:disable. - Multilingual CMS pages per store view.
- Theme-specific styling for Luma, Hyvä and Breeze.
Found a bug? Tell us about it.
A short form opens in a new tab — the module name and your language are already filled in. Share what you tried, what went wrong, and we will get back to you within one business day.
Report a bug for Maintenance PageNeed help?
Our team is available to assist with integration.