How to Add Holiday Opening Hours to Your Website
Show Christmas and New Year opening hours on your site, Google Business Profile and structured data, so customers and Google see the same times.
· 7 min read
To show holiday opening hours properly, change them in three places that customers actually check: a short notice on your website (a banner plus an updated hours table), the Special hours section of your Google Business Profile, and the opening hours in your site's structured data. Do it a few weeks before the holidays, keep the times identical everywhere, and set a reminder to take the notice down afterwards. It takes about half an hour, and it saves you from customers turning up to a locked door or phoning when nobody's there.
Why now#
The busiest stretch of the year for changed hours is coming up. In England and Wales, Christmas Day 2026 is on Friday 25 December, and because Boxing Day falls on a Saturday, the bank holiday moves to Monday 28 December; New Year's Day is Friday 1 January 2027 (GOV.UK bank holidays). Check the same page for Scotland and Northern Ireland, which have different days. Many businesses also open longer around late-November sales and the Christmas run-up, which is just as much a change of hours as a closure.
People plan their visits early, so the sooner the new hours are up, the fewer surprises.
Step 1: Decide your hours and write them down once#
Before touching anything, write a single list of every date that differs from normal, with the exact times:
| Date | Hours |
|---|---|
| Thu 24 December | 9am – 2pm |
| Fri 25 December | Closed |
| Sat 26 December | Closed |
| Mon 28 December | 10am – 4pm |
| Thu 31 December | 9am – 3pm |
| Fri 1 January 2027 | Closed |
This is an example; use your own. Every place you update later copies from this list, so the website, Google and your phone message never disagree. Include the days you're open as normal on a bank holiday too: "open as usual" is useful information.
Step 2: Add a notice to your website#
Visitors need to see changed hours without hunting for them. Two changes cover it.
A short banner at the top of every page, or at least the home and contact pages:
<div class="bg-amber-100 px-4 py-2 text-center text-sm text-amber-900" role="note">
Christmas hours: closed 25–26 December and 1 January. <a href="/contact#hours" class="underline">See all
holiday hours</a>.
</div>Keep it to one line with a link. A pop-up that covers the page is more likely to be dismissed unread, and it's
harder to use with a keyboard or screen reader. The role="note" tells assistive technology this is
supplementary information rather than the main content.
The full list next to your regular hours, usually on the contact or visit page. Add a "Holiday hours" heading under the normal hours table and paste in your list from Step 1. Don't overwrite the regular hours: people looking at January opening times still need them.
If your site is a WordPress block theme, a banner like this is easiest as a pattern in the header template part, so it appears everywhere and you remove it in one place (see how to install and edit a block theme). For an HTML, Astro or Next.js template, put it in the shared header or layout file.
Step 3: Fix any "open now" badge#
Many local-business sites show a live "Open now" or "Closed" badge worked out from the weekly hours. On Christmas Day that badge will cheerfully say "Open now" unless you tell it otherwise.
In the Bistro template, the HTML version keeps the weekly hours in a HOURS object at the top
of assets/js/main.js, and businessNow() already returns today's date as YYYY-MM-DD in the business's time
zone. Add a list of closed dates and check it first:
// Dates the business is closed all day, in the business's time zone.
var CLOSED_DATES = ['2026-12-25', '2026-12-26', '2027-01-01'];
function openStatus(now) {
if (CLOSED_DATES.indexOf(now.iso) !== -1) {
return { open: false, text: 'Closed today for the holiday' };
}
// ...the existing checks continue here
}The same HOURS object also feeds the reservation form's time slots, so check that a booking can't be made for a
day you're closed, or add a line to the form saying which dates aren't available. Other templates with opening
hours, such as Fade, have their own scripts; look for the hours in each template's DOCS.md.
Step 4: Set special hours on Google Business Profile#
Many people see your hours on Google Search or Maps without ever opening your website, so this step matters as much as the site itself. Google's help page on setting special hours describes the steps at the time of writing:
- Go to your Business Profile and choose Edit profile, then Hours.
- Next to Special hours, choose Edit.
- Either Review a date Google suggests (it often suggests upcoming holidays) or Add a date yourself.
- For a closed day, leave Closed ticked. For changed hours, untick it and enter the times.
- Choose Save.
A few rules from the same page are worth knowing:
- Special hours cover closures of up to six days in a row. For seven days or more, Google says to mark the business as temporarily closed instead.
- Special hours replace that day's regular hours, so re-enter any regular hours you still want to show.
- Your profile's hours must be set to "Open with main hours" for special hours to appear.
- Google recommends confirming your hours for official holidays even when they're the same as usual, so customers know the hours are accurate.
If you also list the business on Apple Maps, Bing Places, Facebook or a booking platform, update those too, from the same list.
Step 5: Update your structured data#
Structured data is the block of JSON-LD in your page's <head> that tells search engines your business name,
address and opening hours. Our SEO docs explain where it lives in the templates. Google's
local business structured data guide
documents openingHoursSpecification for regular hours and shows how to use validFrom and validThrough
(dates in YYYY-MM-DD format) for hours that only apply on certain dates. To show a business closed all day, it
says to set both opens and closes to "00:00".
Add the holiday dates alongside your regular hours:
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "09:00",
"closes": "17:30"
},
{
"@type": "OpeningHoursSpecification",
"opens": "00:00",
"closes": "00:00",
"validFrom": "2026-12-25",
"validThrough": "2026-12-26"
},
{
"@type": "OpeningHoursSpecification",
"opens": "09:00",
"closes": "14:00",
"validFrom": "2026-12-24",
"validThrough": "2026-12-24"
}
]Schema.org also has a separate
specialOpeningHoursSpecification property, which it
describes as a way to "explicitly override general opening hours". Google's guide doesn't mention it, so the
dated entries above are the safer choice if Google is your main concern.
When you're done, paste the page's URL into Google's Rich Results Test, which the guide recommends for validating local business markup, and fix any critical errors it reports.
Structured data is a hint, not a guarantee: Google decides what to show, and your Business Profile is what usually appears in the panel beside the results. That's why Step 4 matters most.
Step 6: The rest of the checklist#
A few smaller places often get missed:
- Contact form autoreply. If your form service sends an automatic reply, add a line saying when you'll answer messages sent over the holidays. Our guide to contact forms covers where those settings live for Formspree, Netlify Forms and Basin.
- Email out-of-office and voicemail. Use the same wording as the website.
- Delivery cut-off dates. If you post orders, say clearly when the last date for Christmas delivery is.
- Social posts. Pin a post with the holiday hours, linking back to your contact page.
Step 7: Take it all down in January#
Holiday notices left up until February make a site look neglected. Put a reminder in your calendar for the first working day of January to:
- Remove the banner and the holiday hours list.
- Delete past dates from
CLOSED_DATES(or leave them; they do nothing once they've passed, but a tidy list is easier to update next year). - Remove the dated entries from your structured data.
Google Business Profile special hours apply only to the dates you set, so they don't need removing, but it's a good moment to add any closures you already know about for the coming year, such as Easter.
Summary#
Write your holiday hours down once, then copy them to a site-wide banner, your contact page, any "open now" script, Google Business Profile special hours and your structured data. Check them with the Rich Results Test and by searching for your business on Google, and remove the website notice in January. If you're still putting your site together, our guide to making a small business website and the launch checklist cover the rest.