Maintenance Mode & Coming Soon Page — Complete guide
Install and configure the maintenance / coming soon page: countdown, IP and token tester access, country-based soft launch, email capture and SEO settings.
Maintenance Mode & Coming Soon Page (dfmaintenancepro) shows a designed waiting page to unauthorized visitors — countdown, email capture, tester access by IP or token and country-based soft launch — without ever enabling PrestaShop’s native maintenance mode. The store stays technically online: the back office, payment webhooks and scheduled tasks keep working normally.
Installation
- In the back office, open Modules > Module Manager > Upload a module.
- Upload the
dfmaintenancepro.ziparchive and click Install. - Click Configure to open the module panel.
Installation creates the dfmp_subscriber table (captured emails), registers the hidden “Subscribers” tab and automatically generates a unique access token. No overrides are installed: the module relies on the single actionDispatcherBefore hook.
The module is disabled by default after installation: configure your page at your own pace, preview it, then enable it when you are ready.
Information panel
At the top of the configuration page, a panel sums up the essentials:
- Status — green “ACTIVE” badge when the page is being served to visitors, neutral badge otherwise.
- Tester URL — the
https://yourstore.com/?dfmp_token=XXXXlink to share: it sets an access cookie in the tester’s browser. - Regenerate token — instantly invalidates every access cookie already granted.
- Preview — renders the maintenance page even while the module is disabled (
dfmp_previewparameter). - Captured emails — direct access to the subscriber list with its count.
General configuration
- Enable maintenance page — the master switch. Once enabled, every unauthorized visitor sees the waiting page.
- Mode — “Coming soon (pre-launch)” or “Maintenance (temporary downtime)”. This only changes the badge displayed on the page; SEO behavior is set in the SEO section.
- Launch date —
YYYY-MM-DD HH:MMformat, server timezone. Feeds the countdown and theRetry-Afterheader. - Show countdown — the days/hours/minutes/seconds counter hides automatically once the date is reached.
Test access (IP & token)
IP whitelist
One entry per line (or comma-separated). Three formats are accepted:
- Exact IPv4 or IPv6 addresses:
82.64.12.7 - CIDR ranges:
192.168.1.0/24or2001:db8::/32 - IPv4 wildcards:
192.168.1.*
Token tester link
Share the URL shown in the information panel. When opened, an HMAC SHA-256 signed cookie is set in the tester’s browser for the configured lifetime (72 hours by default): they then browse the real store as if nothing was happening. The Access cookie lifetime field controls this validity.
A link leaked? Click “Regenerate token”: the token changes and every cookie already set becomes invalid immediately.
Payment webhooks
The Allow module front controllers option (enabled by default) lets every fc=module request through: payment IPNs and callbacks (PayPal, Stripe, etc.) are never blocked, even during maintenance.
Employees logged into the back office always see the real store, with zero configuration: the admin session is enough.
Country-based soft launch
This mode turns the waiting page into a progressive rollout tool:
- Enable Soft launch.
- Fill in the allowed ISO 3166-1 alpha-2 country codes, comma-separated:
FR,BE,CH,LU. - Choose the behavior for an undetermined country: show the maintenance page (default, safe) or let them in.
Country detection follows this order:
- CDN geolocation headers:
CF-IPCountry(Cloudflare),CloudFront-Viewer-Country(AWS),X-Vercel-IP-Country,X-Geoip-Country(nginx). - PrestaShop’s GeoLite2 database when geolocation is configured under International > Geolocation.
Without a CDN or a GeoLite2 database, the country cannot be determined: every visitor then follows the “unknown country” rule. Check your setup before enabling a soft launch in production.
Content & design
- Title, subtitle, message — translatable language by language via the flags; the message accepts simple HTML.
- Logo — absolute URL of an image (PNG/SVG recommended). Empty, the shop name is displayed as text.
- Colors — background, accent (countdown, button, badge) and text, via color pickers.
- Social links — Facebook, Instagram, X, LinkedIn, YouTube: only fill in the ones to display, SVG icons are embedded.
- Custom CSS — injected at the end of the styles for fine-grained adjustments.
The generated page is 100% self-contained: inline CSS and JavaScript, no third-party fonts or scripts, zero external requests. It respects prefers-reduced-motion and adapts to mobile.
Use the “Preview the maintenance page” button after each adjustment: it works while the module is disabled, so you design safely before going live.
Email capture
- Enable capture — displays the form under the countdown.
- Placeholder, button label, success message, GDPR notice — all translatable per language.
The form works over AJAX with an invisible honeypot field that neutralizes bots. Every signup records the email, language, detected country, IP and date, with uniqueness per address and per store.
Subscriber list and CSV export
From the information panel, open Captured emails: the list can be filtered per column, sorted, bulk-cleaned and exported to CSV via the Export CSV button — ready to import into your emailing tool on launch day.
SEO
- HTTP 503 status (recommended) — tells Google the downtime is temporary. The
Retry-Afterheader is computed from the time remaining until the launch date (capped at 7 days); without a future date, the Retry-After field value is used. - HTTP 200 status — for a long-lived, indexable coming soon page.
In every case, the page sends a noindex, nofollow tag and no-cache headers: your catalog stays indexed, the waiting page does not.
How it works
On every front request, the module evaluates authorizations in this order and lets the visitor through at the first match:
- Employee logged into the back office (
psAdmincookie). - Valid
dfmp_tokenparameter in the URL (sets the access cookie). - Still-valid signed access cookie.
- IP present in the whitelist.
- Allowed country when soft launch is active.
Otherwise, the maintenance page is rendered and execution stops before the front controller. Multistore: configuration and subscriber list are scoped per store.
Troubleshooting
- I still see the store although the module is active — you are probably logged into the back office in the same browser, or an access cookie is still valid. Test in private browsing.
- A tester sees the maintenance page despite the token link — the token may have been regenerated since the link was sent; resend the URL shown in the information panel.
- Soft launch blocks everyone — no CDN header and no GeoLite2 database available: the country is undetermined and the default rule blocks. Switch “Unknown country” to “Allow” or configure geolocation.
- The countdown does not appear — check that the launch date uses the
YYYY-MM-DD HH:MMformat and is in the future. - Uninstall — removes the subscriber table: export the CSV first if you want to keep the addresses.