---
title: "Airdate Opening Hours: setup guide"
description: "Airdate Opening Hours is a free HubSpot module that shows the opening hours of a place: a shop, an office, a support desk, a venue."
---

[Skip to content](https://www.airdatethemes.com/airdate-opening-hours-docs#main-content)

[![Northwind](https://www.airdatethemes.com/hs-fs/hubfs/airdate-demo/northwind-logo.png?width=600&height=192&name=northwind-logo.png "Northwind")](https://149405016.hs-sites-eu1.com/en/growth-sessions?hsLang=en)

- [Sessions](https://www.airdatethemes.com/en/growth-sessions#sessions)
- [Replays](https://www.airdatethemes.com/en/growth-sessions#replays)
- [Speakers](https://www.airdatethemes.com/en/growth-sessions#speakers)
- [FAQ](https://www.airdatethemes.com/en/growth-sessions#faq)

- [Sessions](https://www.airdatethemes.com/en/growth-sessions#sessions)
- [Replays](https://www.airdatethemes.com/en/growth-sessions#replays)
- [Speakers](https://www.airdatethemes.com/en/growth-sessions#speakers)
- [FAQ](https://www.airdatethemes.com/en/growth-sessions#faq)

[Save my seat](https://149405016.hs-sites-eu1.com/en/growth-sessions?hsLang=en#register)

Documentation

# Airdate Opening Hours: setup guide

Airdate Opening Hours is a free HubSpot module that shows the opening hours of a place: a shop, an office, a support desk, a venue. You type the week once, with as many periods per day as you need, and add special days such as holidays, closures or late openings. Above the week, visitors read "Open now", "Closing soon" or "Closed now", with "Closes at 18:00" or "Opens tomorrow at 09:00". It is worked out in the time zone of the place, and visitors in another zone also see their own time.

It works on every HubSpot plan. No app to install, no account to create, no outside script.

## 1. Install and add the module

1. Install Airdate Opening Hours from the HubSpot Template Marketplace.
2. Open a website page, landing page or blog post in the editor.
3. In the **Add** panel, search for **Airdate Opening Hours** and drag it where you want the hours, such as a contact or "Visit us" section.
4. Type the **Time zone of the place**, check the rows of **Weekly hours**, add any **Special days**, then publish.

A new module comes with sample hours: Monday to Friday 09:00 to 18:00, Saturday 10:00 to 16:00, closed on Sunday. It has no time zone. Until you type one, a yellow note in the editor says so. Visitors never see this note.

## 2. Heading

- **Heading**: "Opening hours" by default. Leave it empty to show none, for example when the module sits under a heading of your page.
- **Heading level**: H2 (the default), H3 or H4, to fit the outline of the page. The heading also names the table of the week for screen readers.

## 3. Time zone of the place

A time zone name such as `Europe/Paris`, `Europe/London` or `America/New_York` (the names of the IANA list, the one computers use). Type the zone of the place itself. "Open now", "Closes at" and "Opens tomorrow at" are worked out in this zone, whatever the zone of the visitor. See "How time zones work" below.

The field starts empty. While it is empty, the status is worked out in each visitor's own zone, which is only right for visitors who are in the same zone as the place.

## 4. Weekly hours

One row per opening period, up to 28 rows. Each row has:

- **Day**: Monday to Sunday.
- **Opens** and **Closes**: the times, in the place's local time. See "Time formats" below.

- **A lunch break**: two rows on the same day, such as Saturday 10:00 to 13:00 and Saturday 14:00 to 18:00. They show side by side (one under the other on phones).
- **A closed day**: no row for that day. It reads "Closed" in the week.
- **Closing after midnight**: a closing time earlier than the opening time, such as 18:00 to 02:00, ends the next morning. See "Closing after midnight" below.
- **Open all day**: 00:00 to 24:00. It reads "Open 24 hours" in the week.

The rows can be in any order: the week is always shown in day order. A row with an empty opening or closing time is left out.

## 5. Special days

Holidays, closures, stocktaking, late openings: up to 40 rows. On those days, they replace the weekly hours. Each row has:

- **Name**: shown in the list of special days and under today's row, such as "Public holiday" or "Late opening".
- **First day** and **Last day**: the dates. Leave **Last day** empty for a single day. A row without a first day is ignored.
- **Closed all day**: on by default. Turn it off to type special hours in **Opens** and **Closes**, such as 09:00 to 22:00 for a late opening.

See "Special days" below for how they show and which one wins when two overlap.

## 6. Display

- **Show "Open now" or "Closed"**: on by default. The status line above the week.
- **Show the week**: on by default. Turn it off to keep the status line alone, for a header, a footer or a contact card.
- **Week starts on**: Monday (the default) or Sunday.
- **Show special days coming within (days)**: 30 by default, from 0 to 365. The special days that are on now or start within this many days are listed under the week. With 0, the list is not shown, but special days still change the status and today's row.
- **"Closing soon" from (minutes before closing)**: 60 by default, from 0 to 240. From this many minutes before closing, the status reads "Closing soon". With 0, it never does.
- **Add the visitor's own time when they are in another zone**: on by default. See "How time zones work" below.
- **Time format**: **From the page language** (the default), **24-hour** (18:00) or **12-hour** (6:00 PM). It applies to the week, the status line and the special days.

## 7. Texts

Every word the module shows is a field, in the **Texts** group. Write them in your page's language:

- the names of the days, Monday to Sunday;
- "Open now", "Closed now" and "Closing soon";
- "Closes at {time}", "Closes tomorrow at {time}", "Closes {day} at {time}" (a place open over several days), "Opens today at {time}", "Opens tomorrow at {time}" and "Opens {day} at {time}": `{time}` becomes the time, `{day}` the name of the day, or the date when it is more than a week away (such as "November 2");
- "Open 24 hours" and "Closed", used in the week, the status line and the special days;
- "{time} your time", added after a time for visitors in another zone;
- "Hours in {zone} time. It is {time} there.", the note for visitors in another zone: `{zone}` becomes the city of the time zone ("Paris" for Europe/Paris, "New York" for America/New\_York);
- "Today", the badge on today's row, and "Special hours", the heading of the special days list;
- the sign between two times ("–");
- the four editor notes (no time zone, unknown time zone, no hours, times that cannot be read). Shown in the editor only.

Times and dates follow the language of the page (without one, the visitor's browser language). The names of the days come from the fields, so they read the way you typed them. To translate the module, write the texts in the language of the page; in a multi-language site, each language version of the page has its own copy of the module and its own texts.

## 8. Appearance

In the **Style** tab:

- Colors: **Open**, **Closed** and **Closing soon** (the word and the dot of the status line), **Text**, **Secondary text**, **Today's row**, **Lines** and **Background** (transparent by default).
- **Text size**: 12 to 22 px, 16 px by default.
- **Corner radius**: 0 to 24 px, 6 px by default, for today's row and the "Today" badge.
- **Maximum width**: 240 to 1200 px, 460 px by default.

The module uses your theme's font and headings. The "Today" badge takes the **Text** color as its background and the **Today's row** color as its text, so it stays readable on light and dark designs. **Inner spacing** (0 to 48 px, 0 by default) adds room inside the block, useful with a **Background** color.

## Time formats

Opening and closing times accept the usual ways of writing an hour:

- `9:30`, `09:30`, `9.30`, `9h`, `14h00`, `12 h 30` or `0900`;
- `2 pm`, `2:15pm` or `9 a.m.`;
- an hour alone, such as `14`;
- `24:00` for midnight at the end of the day.

Whatever you type, the module shows the time in the chosen time format, such as "2:00 PM" or "14:00". A time it cannot read (such as "after lunch") is shown as typed in the week, but that period does not count for the status; in the editor, a yellow note lists these values. 00:00 to 00:00 means open all day; any other period that opens and closes at the same time is ignored. Periods of a day show in time order, whatever the order of the rows.

## Closing after midnight

A closing time earlier than the opening time ends the next morning. "Tuesday 18:00 to 02:00" means Tuesday evening until 2 am on Wednesday. On Wednesday at 00:40, the status reads "Open now · Closes at 02:00", while Wednesday is today's row.

Periods that touch are joined. Friday 18:00 to 24:00, Saturday 00:00 to 24:00 and Sunday 00:00 to 03:00 make one opening from Friday evening to Sunday 3 am: on Saturday the status reads "Open now · Open 24 hours", and after midnight on Sunday "Closes at 03:00". A place open over several days says when it closes, such as "Closes Saturday at 22:00". A place open for seven days in a row or more reads "Open 24 hours". A closing at midnight reads 24:00 in the 24-hour format.

## Special days

- On a special day, its hours (or "Closed") replace the weekly hours, for the status and for today's row. Today's row then shows the special hours with the name of the day under them.
- The other rows of the week always show the regular hours. Special days to come are listed under the week, in date order, with their date ("Thu, Oct 15", or a range for several days), their name and their hours.
- A special day is listed while it is on, and from the number of days you set before it starts. Once it is over, it leaves the list by itself.
- When two special days overlap, the shorter one wins, such as Christmas Eve inside the winter holidays (same length: the one lower in the list). A special day entirely replaced by others is not listed.
- Special hours can close after midnight too, like weekly hours. A special day has one period, from **Opens** to **Closes**: it cannot have a lunch break. Special hours the module cannot read count as closed.
- Special days carry their year. Holidays that come back every year are typed again for the next year.

## Open now, Closing soon, Closed now

The status line is worked out in the visitor's browser, from your hours and the time zone of the place:

- **Open now**, with "Closes at 19:00", or "Open 24 hours" when it is open for the whole day;
- **Closing soon**, with "Closes at 19:00", in the last minutes before closing (60 by default);
- **Closed now**, with the next opening: "Opens today at 14:00", "Opens tomorrow at 09:00", "Opens Monday at 09:00", or the day and date when it is more than a week away ("Opens Saturday, March 29 at 10:00"). If nothing opens within the next 60 days, the line says "Closed now" alone.

Special days are included: on the eve of a closure, "Opens" skips to the next day that is open. Today's row is highlighted with the "Today" badge. On a page left open, the status changes at the exact minute (opening, "Closing soon", closing, midnight). Cached pages stay right, since nothing is worked out on the server.

## How time zones work

- The week is typed and shown in the local time of the place. It is not converted: a shop that opens at 09:00 in Paris shows 09:00 to everyone.
- The status is worked out in the **Time zone of the place**. A visitor in New York at 9 am sees the Paris shop "Open now", since it is 3 pm in Paris.
- For a visitor whose zone is different from the place's at that moment, the status adds their own time after each time, such as "Closes at 19:00 (13:00 your time)", and a note under it says "Hours in Paris time. It is 15:00 there." Turn off **Add the visitor's own time** to show neither. A visitor in the zone of the place sees neither.
- Days when the clocks change are handled: each time is read with the zone's rules on that day.
- Leave the zone empty only if every visitor is in the zone of the place. The status is then worked out in each visitor's own zone: 09:00 is 09:00 wherever they are.
- **Check the spelling**. An unknown name, such as `Europe/Pariss` or `Paris`, is not used: the status is then worked out in each visitor's own zone, as if the field were empty, and there is no note for visitors elsewhere. A yellow note in the editor names the unknown zone; visitors do not see it.

## Without JavaScript

The week is written in the page itself. If a visitor's browser does not run JavaScript, or a search engine reads the page, the table of the week is there, with the times as you typed them. What is worked out in the browser is missing: the status line, the special days (neither the list nor the change to today's row), the "Today" badge, the visitor's own time and the time format. With **Show the week** turned off, only the heading is left.

## Accessibility

- The week is a real table: each day is a row header, and the heading names the table for screen readers.
- Today's row is marked as the current date for screen readers, and the "Today" badge says it in words.
- "Open now", "Closing soon" and "Closed now" are words, not only a color and a dot.
- When the status changes on an open page, screen readers are not interrupted.
- The heading level is yours to choose, to fit the outline of the page.
- Check the contrast of your colors: the three status colors and the secondary text on your background.

## Limits

- **The status comes from the visitor's browser.** It uses the clock of the visitor's device: a visitor whose clock is wrong sees the wrong status.
- **Without JavaScript, no status and no special days.** Only the week shows, as typed. See "Without JavaScript".
- **No data for search engines.** The module adds no schema.org data (such as OpeningHoursSpecification). Search engines read the week as text in the page. For the hours shown in Google Search and Maps, keep your Google Business Profile up to date: the module is not synced with it.
- **A misspelled time zone falls back to the visitor's zone**; only the editor warns. See "How time zones work".
- Up to 28 weekly periods and 40 special days. One period per special day.
- Special days are typed with their year; they do not repeat on their own.
- The next opening is looked for within 60 days.
- The week always shows the local time of the place. Only the status line adds the visitor's own time.
- A special day has one period, with no lunch break: on such a day, type the longest opening.
- A late night that goes past midnight into a closed special day keeps its hours: the special day starts at its own opening, not at midnight.
- One place per module. For several places, add one module each.

## FAQ

**Does it need Content Hub Pro?**  
No. It works on every HubSpot plan, including free.

**Does it work in emails?**  
No. It works in website pages, landing pages and blog pages (posts and listing).

**The status is wrong by one or more hours. Why?**  
Check the **Time zone of the place**: it must be the zone of the place, spelled exactly as in the IANA list (`Europe/Paris`, not `Paris` or `CET`). An unknown name is ignored and the visitor's zone is used.

**How do I close for a public holiday?**  
Add a row in **Special days** with the date, leave **Closed all day** on. For several days in a row, set a **Last day**.

**How do I show a lunch break?**  
Two rows of **Weekly hours** on the same day: 09:00 to 12:30 and 14:00 to 18:00.

**We close at 2 am. How do I type it?**  
Opens 18:00, closes 02:00, on the day the evening starts. See "Closing after midnight".

**Can I show only "Open now" in a header or footer?**  
Yes. Turn off **Show the week**, set **Show special days coming within** to 0 and leave the **Heading** empty: one line remains. Special days still count.

**Can I translate the labels?**  
Yes. All texts are fields, in the **Texts** group. Times and dates follow the language of the page.

**Can I use it more than once on a page?**  
Yes. Each module has its own place, hours and settings.

## Texts in French, German and Spanish

Every word the module shows is a field. To use the module on a page in another language, open the module in the editor and paste these texts in the matching fields. Keep the words in braces, such as `{n}`, as they are: the module replaces them. Dates, times and numbers already follow the language of the page.

### French (Français)

| Field | Text to paste |
| --- | --- |
| Heading | Horaires d’ouverture |
| Monday | lundi |
| Tuesday | mardi |
| Wednesday | mercredi |
| Thursday | jeudi |
| Friday | vendredi |
| Saturday | samedi |
| Sunday | dimanche |
| Open now | Ouvert en ce moment |
| Closed now | Fermé en ce moment |
| Closing soon | Ferme bientôt |
| Closes at | Ferme à {time} |
| Closes tomorrow | Ferme demain à {time} |
| Closes another day | Ferme {day} à {time} |
| Opens today | Ouvre aujourd’hui à {time} |
| Opens tomorrow | Ouvre demain à {time} |
| Opens another day | Ouvre {day} à {time} |
| Open all day | Ouvert 24 h/24 |
| Closed | Fermé |
| Visitor's time | {time} chez vous |
| Local time note | Horaires à l’heure de {zone}. Heure actuelle sur place : {time}. |
| Today | Aujourd’hui |
| Special days heading | Horaires exceptionnels |
| Hours between times | – |
| Editor note: no time zone | Aucun fuseau horaire défini : « Ouvert en ce moment » est calculé dans le fuseau de chaque visiteur. Indiquez le fuseau du lieu, par ex. Europe/Paris. |
| Editor note: no hours | Pas encore d’horaires hebdomadaires : ajoutez une ligne par période d’ouverture dans « Weekly hours ». |
| Editor note: times not read | Certaines heures n’ont pas pu être lues : {times}. Écrivez-les comme 09:00, 9:30, 9h, 14h00 ou 2 pm. |
| Editor note: unknown time zone | Fuseau horaire inconnu : {zone}. Utilisez un nom IANA comme Europe/Paris ou America/New\_York ; d’ici là, le fuseau de chaque visiteur est utilisé. |

### German (Deutsch)

| Field | Text to paste |
| --- | --- |
| Heading | Öffnungszeiten |
| Monday | Montag |
| Tuesday | Dienstag |
| Wednesday | Mittwoch |
| Thursday | Donnerstag |
| Friday | Freitag |
| Saturday | Samstag |
| Sunday | Sonntag |
| Open now | Jetzt geöffnet |
| Closed now | Jetzt geschlossen |
| Closing soon | Schließt bald |
| Closes at | Schließt um {time} |
| Closes tomorrow | Schließt morgen um {time} |
| Closes another day | Schließt am {day} um {time} |
| Opens today | Öffnet heute um {time} |
| Opens tomorrow | Öffnet morgen um {time} |
| Opens another day | Öffnet am {day} um {time} |
| Open all day | 24 Stunden geöffnet |
| Closed | Geschlossen |
| Visitor's time | {time} bei Ihnen |
| Local time note | Zeiten in Ortszeit {zone}. Aktuelle Uhrzeit dort: {time}. |
| Today | Heute |
| Special days heading | Sonderöffnungszeiten |
| Hours between times | – |
| Editor note: no time zone | Keine Zeitzone festgelegt: „Jetzt geöffnet“ wird in der Zeitzone jedes Besuchers berechnet. Legen Sie die Zeitzone des Ortes fest, z. B. Europe/Paris. |
| Editor note: no hours | Noch keine Wochenzeiten: Fügen Sie unter „Weekly hours“ eine Zeile pro Öffnungszeitraum hinzu. |
| Editor note: times not read | Einige Uhrzeiten konnten nicht gelesen werden: {times}. Schreiben Sie sie z. B. als 09:00, 9:30, 9h, 14h00 oder 2 pm. |
| Editor note: unknown time zone | Unbekannte Zeitzone: {zone}. Verwenden Sie einen IANA-Namen wie Europe/Paris oder America/New\_York; bis dahin gilt die Zeitzone des jeweiligen Besuchers. |

### Spanish (Español)

| Field | Text to paste |
| --- | --- |
| Heading | Horario de apertura |
| Monday | lunes |
| Tuesday | martes |
| Wednesday | miércoles |
| Thursday | jueves |
| Friday | viernes |
| Saturday | sábado |
| Sunday | domingo |
| Open now | Abierto ahora |
| Closed now | Cerrado ahora |
| Closing soon | Cierra pronto |
| Closes at | Cierra a las {time} |
| Closes tomorrow | Cierra mañana a las {time} |
| Closes another day | Cierra el {day} a las {time} |
| Opens today | Abre hoy a las {time} |
| Opens tomorrow | Abre mañana a las {time} |
| Opens another day | Abre el {day} a las {time} |
| Open all day | Abierto 24 horas |
| Closed | Cerrado |
| Visitor's time | {time} en su zona |
| Local time note | Horario en hora de {zone}. Hora actual allí: {time}. |
| Today | Hoy |
| Special days heading | Horarios especiales |
| Hours between times | – |
| Editor note: no time zone | No hay zona horaria definida: «Abierto ahora» se calcula en la zona de cada visitante. Indique la zona del lugar, p. ej., Europe/Paris. |
| Editor note: no hours | Aún no hay horario semanal: añada una fila por cada periodo de apertura en «Weekly hours». |
| Editor note: times not read | Algunas horas no se pudieron leer: {times}. Escríbalas como 09:00, 9:30, 9h, 14h00 o 2 pm. |
| Editor note: unknown time zone | Zona horaria desconocida: {zone}. Use un nombre IANA como Europe/Paris o America/New\_York; mientras tanto, se usa la zona de cada visitante. |

## Support

Questions or a bug? Email [support@airdatethemes.com](mailto:support@airdatethemes.com), in English or French. We answer within two business days.

## Going further

This module shows the hours of one place. Our themes do the same kind of work for a whole site, from dates you type once.

For recurring webinars, **Airdate Webinar** (199 $) shows the next session with a countdown, the agenda and the replays. [See it on the marketplace](https://ecosystem.hubspot.com/marketplace/website/airdate-webinar-theme-by-emilien-poinsot).

**Almanac**, our premium theme for training organisations, academies and event teams, has programmes with dated sessions, statuses that update themselves and a calendar. Coming soon to the marketplace.

[Follow us on Facebook](https://www.facebook.com/) [Follow us on LinkedIn](https://www.linkedin.com/) [Follow us on Twitter](https://www.twitter.com/) [Follow us on Instagram](https://www.instagram.com/)

© 2026 All rights reserved.