Your site needs downtime. Visitors need to know.
You're migrating the database. Or restructuring the product catalog. Or deploying a major update that takes 20 minutes. During that window, visitors see broken pages, missing images, or PHP errors.
WordPress has a built-in maintenance mode that shows "Briefly unavailable for scheduled maintenance" — an unstyled white page that looks like the site crashed. Not exactly the message you want to send.
What most people do instead
A better way: branded maintenance page, one command
Open the navigator. Type maintenance mode with an optional headline and message. Every frontend request returns a clean 503 page with your text. Logged-in admins bypass it and see the real site so they can keep working.
Returns proper 503 status. Search engines see "temporarily unavailable" and come back later. Your rankings aren't affected by short maintenance windows.
How it works
maintenance mode or maintenance mode -headline=Upgrading -message=Back in 10 minutes| Detail | Value |
|---|---|
| Command name | maintenance mode |
| Custom headline | -headline=We'll be right back |
| Custom message | -message=Upgrading to serve you better |
| HTTP response | 503 Service Unavailable (SEO-safe) |
| Bypasses | Logged-in users, wp-admin, REST API, AJAX, cron |
| Can be used in |
Real example
It's 2am. You're migrating a client's WooCommerce database to a new server. The migration takes 15 minutes and during that time, product pages will show errors and the checkout will break.
Before starting, you enable maintenance mode with a custom message: "We're upgrading our store. Back in 15 minutes." Every visitor sees a clean page. Google gets a 503 and knows to come back later. Your SEO rankings stay untouched.
You finish the migration, verify everything works from your logged-in session (you never saw the maintenance page), and remove the startup command entry. The store is live again. Zero customer complaints, zero broken checkout screenshots.