- A go-live or cutover, when you want to test the new site before shoppers can reach it.
- A planned outage, such as a back-end system upgrade that stops orders from flowing.
- A data migration or catalog load that leaves the site in an inconsistent state for a while.
Option 1: Request an Edge Maintenance Page from Kibo Support
For storefront domains that Kibo serves, Kibo can show a maintenance page in front of your storefront, at the network edge. Shoppers get the maintenance page before their request reaches your storefront, so the page keeps working even when the storefront itself is unavailable. Kibo uses this approach during platform cutovers and go-lives. When the edge page is on:- Every request to the domains you list gets the maintenance page.
- The response is HTTP
503 Service Unavailablewith aRetry-Afterheader, so search engines treat the outage as temporary. - The page is not cached, so shoppers see your live site again as soon as the page is removed.
- Kibo can let your team through to the real site during the window from IP addresses you provide, so you can test before you open the site to shoppers.
Request the Page
Open a Support case as early as you can before the window. Include:- Your tenant ID and site ID.
- Every storefront domain that should show the page, for example both
www.example.comandexample.com. - The start and end time of the window, with the time zone.
- The page to show. Kibo can show a generic “under maintenance” page. If you want your own branding, send a self-contained HTML file or the URL of a maintenance page you host. If you send a URL, shoppers are redirected to it instead of seeing a page at your storefront address.
- The IP addresses, if any, that should bypass the page so your team can test.
- A contact who can confirm when the page should come down.
Remove the Page
Kibo removes the page at the end time in your request. To bring your site back earlier or keep the page up longer, update your Support case or open a new one and say when the page should come down.The edge page only covers domains whose traffic Kibo serves. If your storefront is hosted outside Kibo, for example a headless storefront on your own hosting provider, use Option 2 or your hosting provider’s maintenance feature instead.
Option 2: Add a Maintenance Flag to a Headless Storefront
In a headless storefront, the maintenance page belongs to your front-end application. A common pattern is a flag that, when set, makes the app answer every page request with a maintenance page and a503 status, while letting your own team through.
The example below is Next.js middleware. It reads the flag from an environment variable, lets through requests from allowlisted IP addresses or with a preview cookie, and returns a small maintenance page for everyone else.
middleware.ts
- Add the middleware to your storefront and deploy it with
MAINTENANCE_MODEunset or set tofalse. - To start the window, set
MAINTENANCE_MODE=true. To let your team in, setMAINTENANCE_ALLOW_IPSto a comma-separated list of IP addresses, or setMAINTENANCE_BYPASS_TOKENand have testers add amaintenance_bypasscookie with that value. - To end the window, set
MAINTENANCE_MODE=false.
- Changing an environment variable may need a redeploy. On many hosting providers, a new environment variable value only takes effect after the next deployment. If you need to switch maintenance mode on and off without a deploy, read the flag from a source your app can change at runtime instead, such as your hosting provider’s edge configuration store or a record in a Kibo entity list. Cache the value for a short time so the check does not add an API call to every request.
- Check how your host reports the client IP. The example reads the first address in
x-forwarded-for. Confirm which header your hosting provider sets before you rely on the IP allowlist. - Keep API routes in mind. The matcher above also covers your app’s API routes. If a payment provider or other system calls your storefront’s API routes during the window, exclude those paths from the matcher.
Option 3: Override the Core Theme
If your storefront runs on a Kibo core theme, you can show a maintenance page from the theme. The storefront must be running for this option to work, so it does not help during an outage of the storefront itself.- Use a theme setting as the flag. Add a setting such as
maintenanceModeto your theme’s settings, then add a condition to the page template (page.hypr) that renders a maintenance layout instead of the normal page whenthemeSettings.maintenanceModeis on. You can then switch the page on and off from the theme settings in Admin. - Use a separate maintenance theme. Build a theme whose page template always renders the maintenance layout, and apply it for the window. Apply your regular theme again to end the window. See Preview and Apply Themes.
503 status. For a window longer than a few hours, or when search ranking matters, request the edge maintenance page instead.
Protect Your Search Rankings
Search engines treat a maintenance page differently depending on the HTTP status code it returns.- Return
503 Service Unavailable. A503tells crawlers the outage is temporary, so they keep your pages in their index and come back later. - Send a
Retry-Afterheader. The header tells crawlers when to try again, either as a number of seconds (Retry-After: 3600) or as an HTTP date. - Don’t return
200 OKfor the maintenance page. If crawlers get a200, they can index the maintenance page in place of your real pages. - Don’t redirect every URL to a maintenance URL for long. A redirect to one page that returns
200has the same effect as serving the maintenance page with200. - Keep windows short. If crawlers keep getting a
503for an extended period, typically more than a day or two, they may start to drop pages from their index.

