Local fix

How to add opening hours (and hours schema)

When your hours are published as both visible text and structured data, Google can show a live “Open now” or “Closes 5 PM” label on your listing — the kind of detail that turns a search into a visit.

Opening hours schema (openingHoursSpecification) is JSON-LD that states, for each day, when you open and close in 24-hour format. It usually lives inside your LocalBusiness markup.

Pair it with the same hours shown as visible text on your contact page or footer — Google wants the structured data to match what a visitor can see.

Why it matters

Accurate hours schema lets Google display “Open now,” closing time, and special-hours notices directly in the local pack and Maps. That real-time context influences whether a nearby searcher chooses you, and stale or missing hours are a common reason customers arrive to a closed door and leave a bad review.

How to tell if this is you

Abby flags “Opening Hours” when a local business page has no openingHoursSpecification in its schema (or no visible hours). The fix is publishing hours in both places, consistently.

Not sure if your site has this?

Run Abby's free scan — it checks this and 25 other on-page, technical, and structured-data signals in about 60 seconds, no signup.

Scan my site free

The fix

Publish your hours as visible text AND in openingHoursSpecification JSON-LD (dayOfWeek plus opens/closes in 24-hour format). Consistent hours let Google show "Open now" and closing time in the local pack and Maps.

Before

<!-- Hours not in schema: Google cannot show an Open-now label -->

After

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "LocalBusiness",
  "openingHoursSpecification": [{
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday"],
    "opens": "08:00",
    "closes": "17:00"
  }]
}
</script>

Fix it on your platform

WordPress

Yoast Local SEO and Rank Math can output opening-hours schema from your settings; also display the hours in a footer or contact-page block.

Shopify

Add an opening-hours section to your contact page and include openingHoursSpecification in your LocalBusiness JSON-LD.

When this doesn’t apply

Applies to businesses with customer-facing hours (storefronts, clinics, restaurants). By-appointment-only, 24/7, or online-only businesses may have no fixed hours to publish.

Fix every issue at once.

Abby's free scan finds which of 26 checks your site fails. The $8.99 fix guide turns each one into a copy-ready fix for your exact pages — prioritized, with code — or bundle it with a security fix guide for $19.99.

Get my fix plan

FAQ

What time format does opening hours schema use?

24-hour HH:MM format (e.g. 08:00, 17:00) in the opens/closes fields, with dayOfWeek naming the days. Google converts it to the visitor's local display format.

How do I mark special or holiday hours?

Use a separate OpeningHoursSpecification entry with validFrom and validThrough dates for the special period. Keeping holiday hours current prevents customers arriving to an unexpectedly closed business.

Do my visible hours and schema hours need to match?

Yes. Google expects the structured data to reflect what a visitor sees on the page. Update both together whenever your hours change.