Seasonal Hours: How to Stop the "Are You Open?" Phone Calls
Show seasonal farm hours so customers stop calling: status banners, Google hours in sync, closed-for-season pages, weather closures and opening-hours markup.
If your phone rings forty times on a fall Saturday and half the calls are "are you open?" and "do you still have pumpkins?", the website is not doing its job. Customers call because they do not trust what they can find online, or cannot find it at all. This guide is about making hours so clear, so current and so consistent across your site and Google that the question stops being asked.
Why people call instead of looking
Walk through what a customer sees. They search "pumpkin patch near Stillwater". Google shows your listing with "Open · Closes 6 PM", pulled from the Google Business Profile you set in May. They tap through to the website. The homepage says "Open weekends September–October". Facebook has a post from Tuesday saying the lower field is closed for mud. Three sources, three answers. So they call.
The fix is not more information. It is one answer, in one place, that is right today, and that every other place copies from.
The status banner: one line that answers today's question
The single most useful element on a seasonal farm's website is a status line at the top of every page, above the menu, that says what is true right now:
Open today 9am–6pm · Picking: Honeycrisp, Haralson · Corn maze open · Lower pumpkin field closed (mud)
or
Closed for the season. Thanks for a great fall. CSA shares for next year go on sale February 1.
or
Closed today — rain. Back open Sunday 10–5. Pre-booked tickets are valid any day this week.
Rules for a banner that works:
- It says today. Not "open weekends in October". Today. If you cannot commit to today, say "Closed" and update when you can.
- It takes ten seconds to change from a phone. If updating it means opening a laptop and finding a text block in a page editor, it will be wrong by the second weekend. This is the main thing we built our own status control for; whatever platform you are on, test the update from the field before the season starts.
- It appears on every page, not just the homepage. Visitors arrive on your Tickets page from a Facebook link and never see the homepage.
- It covers the three questions: are you open, what is available, anything unusual.
- It is near the top but not the whole screen. A banner, not a pop-up.
Most agritourism farms we work with change the banner 2–4 times a week in season. CSA farms change it weekly ("Pickup this Tuesday at the Northfield lot moved to 4–6pm"). Meat farms change it monthly ("Next drop point run: Nov 8. Beef bundles back in stock").
The Visit / Hours page: the full schedule
The banner handles today. A Visit page handles the whole season, for the person planning next weekend. It should contain:
- Season dates. "Open Saturdays and Sundays from Labor Day weekend through October 27, 2026, and Fridays in October." Give the actual dates. "Fall season" is not a date.
- Weekly hours in a table, per season if they differ.
- Holiday and special hours listed by date.
- Weather policy, in plain words: "We close for lightning and for heavy rain. Check the banner at the top of this page or our Google listing before you drive out; we update both by 8am."
- Address, directions, parking, the "Get directions" button, and what to bring.
- Last entry time if it differs from closing time. A corn maze that closes at 6 with last entry at 5 should say both.
Example table for an orchard:
| Period | Mon–Thu | Fri | Sat | Sun |
|---|---|---|---|---|
| Aug 22 – Sep 4 (early apples) | Closed | Closed | 9–5 | 10–5 |
| Sep 5 – Oct 26 (peak) | Closed | 12–6 | 9–6 | 10–6 |
| Oct 27 – Nov 2 (last week) | Closed | Closed | 9–4 | 10–4 |
| Nov 3 onward | Closed for the season |
For a CSA or meat farm the table is about pickup windows and drop points rather than public hours, but the principle is the same: every day and every location on one page, with dates.
Keeping Google in sync
Google Business Profile shows hours right in search results, and many customers never click past them. If the profile says "Open" and the banner says "Closed — rain", the profile wins, because they saw it first.
Three habits keep the two matched:
- Regular hours on the profile are the current season's hours. Change them on the season boundary dates from the table above. Put those dates in your calendar now.
- Special hours for one-offs. Holidays, the harvest festival, the Friday you close for a wedding. Add them a week ahead.
- Weather closures on Google use "Temporarily closed" or special hours for the day, plus a Google Post with a photo. Takes two minutes in the app.
The full profile setup is in Google Business Profile for farms. If you are on a plan where we manage the site, the banner and the Google hours update are one action; otherwise, do them back to back and never one without the other.
The closed-for-season page
When the season ends, the worst thing you can do is leave the site as it was. "Open weekends 9–6" in January generates calls, wasted drives and bad reviews. The second worst thing is taking the site down, because Google forgets you and the next spring you start from nothing.
Instead:
- Switch the banner to "Closed for the season" with the expected reopening month.
- On the homepage, replace the "Buy tickets" button with "Get notified when we open", an email signup. The off-season list is how a pumpkin patch sells out opening weekend.
- Keep the Visit page live with next year's expected dates ("We expect to open the weekend after Labor Day, 2027. Exact dates posted in August.").
- Mark the Google profile temporarily closed or set hours to closed every day, and post once a month so the listing is not stale.
- Leave product and information pages up. "What does a quarter beef cost" gets searched in January; that page should still rank.
A good off-season homepage sells next year: last season's photos, a thank-you, the signup, and what is coming. It is also the right time to update anything that was wrong last season while you still remember.
Weather closures: the fast path
Rain-outs are the hardest case because they happen at 7am on a Saturday with 300 people planning to come. You need a routine, decided in advance:
- Decide the cutoff. "We decide by 7:30am and post by 8." Tell customers this on the Visit page so they know when to check.
- One person owns the decision and the posting. Not "whoever is up".
- Post in this order: website banner, Google (special hours or temporary closure plus a post), Facebook and Instagram story, then email or text to anyone with a booking for that day.
- Say what happens to tickets. "All timed-entry tickets for today are valid any day through next Sunday, no action needed." Put this policy on the ticket confirmation email in advance so people are not emailing you at 8:15.
- Say when you will update again. "We'll post by 3pm about Sunday."
If you sell timed tickets, the ticketing system should let you cancel a day and automatically email the holders. Ask before you pick the platform; it matters more than the fee. See how to sell timed-entry tickets for a pumpkin patch.
Structured data: telling Google your hours directly
Beyond the profile, your website can state hours in a format Google reads: openingHoursSpecification inside a LocalBusiness block of JSON-LD. Google uses it to confirm the profile hours and sometimes shows them in results. Here is a working example for a weekend-only orchard in peak season:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "Hollow Oak Orchard",
"url": "https://www.hollowoakorchard.com",
"telephone": "+1-507-555-0142",
"address": {
"@type": "PostalAddress",
"streetAddress": "12400 County Road 9",
"addressLocality": "Northfield",
"addressRegion": "MN",
"postalCode": "55057",
"addressCountry": "US"
},
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": "Friday",
"opens": "12:00",
"closes": "18:00",
"validFrom": "2026-09-05",
"validThrough": "2026-10-26"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": "Saturday",
"opens": "09:00",
"closes": "18:00",
"validFrom": "2026-09-05",
"validThrough": "2026-10-26"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": "Sunday",
"opens": "10:00",
"closes": "18:00",
"validFrom": "2026-09-05",
"validThrough": "2026-10-26"
}
],
"specialOpeningHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": "Saturday",
"opens": "00:00",
"closes": "00:00",
"validFrom": "2026-10-10",
"validThrough": "2026-10-10"
}
]
}
</script>
Notes on that block:
validFromandvalidThroughlet you declare a seasonal schedule. Add one set per season period from your hours table.specialOpeningHoursSpecificationwithopensandclosesboth00:00means closed on that date. Use it for holidays and known closures.- Use
"@type": "Winery","Store"or"TouristAttraction"instead ofLocalBusinessif it fits; they are all sub-types. - The hours here must match the Google profile and the Visit page. Three sources, one answer.
- Test it with Google's Rich Results Test after you add it. One missing comma and the whole block is ignored.
If your website platform manages hours as data rather than text, this block can be generated automatically from the same hours that drive the banner. That is how ours works, and it is the reason we insist the banner, the Visit page, Google and the structured data all come from one place.
Checklist before the season opens
| Done | Item |
|---|---|
| ☐ | Status banner on every page, tested from a phone in the yard |
| ☐ | Visit page has a dated hours table for the whole season |
| ☐ | Holiday and special hours listed, on the site and on Google |
| ☐ | Google regular hours set for the opening period; season boundaries in the calendar |
| ☐ | Weather policy written, with decision time and where to check |
| ☐ | Rain-out routine agreed: who, when, in what order |
| ☐ | Ticket confirmation email states the rain policy |
| ☐ | Voicemail greeting script written and someone assigned to update it |
| ☐ | Structured data added and passes the Rich Results Test |
| ☐ | Off-season homepage planned: signup, thank-you, next year's dates |
What this means for your website
Hours are not content you write once. They are data that changes, and the website should treat them that way: one place to update, pushed to the banner, the Visit page, the structured data and, ideally, Google. If your current site makes hours a paragraph of text in three places, that is the thing to fix before anything else, because every other improvement is wasted if the customer drives out to a closed gate.
Every plan we offer, starting with Roadside at $1,495 + $49/mo, includes the seasonal hours and status banner you update yourself from a phone, with Google Business Profile set up to match. On Harvest and Homestead, weather and crop alerts push to the site and your Google listing in one action. See how it works for agritourism farms, CSAs and farm stands, ranches selling meat direct and wineries, nurseries and creameries, and compare plans on the pricing page.