Skip to content
GitHub
Get started →

Time zones + business hours

The AI always knows the current time and day of the week at your site’s configured location. This enables natural questions like:

  • “Are you open right now?”
  • “What time does the brunch menu end?”
  • “How long until you close?”
  • “Is the office closed today for the holiday?”

Configuration

Two fields:

  • Time zone — an IANA zone like America/Los_Angeles, Europe/London, Asia/Tokyo. Defaults to America/Los_Angeles.
  • Business hours — a structured weekly schedule with optional holiday overrides.

Time zone

  1. Dashboard → VoiceTime zone
  2. Pick from the dropdown (shows all IANA zones)
  3. Save

The time zone affects:

  • The “current time” the AI is told at session start
  • Daylight savings transitions (handled automatically)
  • Formatting of times in responses (“Opens at 9 AM” vs “09:00 UTC”)

Business hours

interface BusinessHours {
monday: { open: '09:00', close: '17:00' } | null; // null = closed
tuesday: { open: '09:00', close: '17:00' } | null;
wednesday: { open: '09:00', close: '17:00' } | null;
thursday: { open: '09:00', close: '17:00' } | null;
friday: { open: '09:00', close: '17:00' } | null;
saturday: { open: '10:00', close: '15:00' } | null;
sunday: null;
// Optional: specific date overrides
holidays?: Record<string, { open?: string; close?: string } | null>;
// e.g. { "2026-12-25": null, "2026-07-04": { open: "10:00", close: "14:00" } }
}

Edit in the dashboard → VoiceBusiness hours.

What the AI is told

The system prompt at session start looks (roughly) like this:

Current date: Friday, April 17, 2026
Current time: 2:34 PM PDT (America/Los_Angeles)
Business hours today: 9:00 AM – 5:00 PM
Status: OPEN (closes in 2 hours 26 minutes)

The AI uses this to answer questions naturally. If a visitor asks at 6 PM “can I come by now?”, the AI replies “We’re closed for the day — we open tomorrow at 9 AM.”

Holiday overrides

{
"holidays": {
"2026-12-25": null,
"2026-12-31": { "open": "09:00", "close": "15:00" },
"2026-01-01": null
}
}
  • null → closed for the day
  • { open, close } → special hours

The AI references these naturally (“We’re closed today for the holiday — we reopen Monday at 9 AM”).

Timezone math

  • We use the IANA tz database under the hood, so DST transitions are correct.
  • “Now” is computed server-side at session start and refreshed every 10 minutes for long sessions.
  • If the visitor is in a different time zone than your business, the AI speaks in your time zone (not theirs) — business hours are about your business, not about them. If you want visitor-local behavior, that’s a custom instruction.

Current time in custom instructions

You can reference {current_time}, {today}, and {is_open} in your custom instructions:

When a visitor asks about a table and we're {is_open ? 'open' : 'closed'},
suggest the next available reservation slot starting from {current_time}.

These expand at session start.

Testing

  1. Dashboard → VoicePreview prompt
  2. The preview shows the resolved system prompt including current time and open/closed status
  3. Click Test voice to try a session — ask “are you open?” or “what time is it?”

When you don’t need business hours

For purely informational sites (a law firm’s marketing site, a blog), business hours don’t matter. Leave them unset and the AI won’t reference open/closed status.

Troubleshooting

  • AI says the wrong time → your timezone config is wrong. America/Los_Angeles (with underscore, IANA format) not “Pacific Time”.
  • AI doesn’t know about holidays → you added the holiday after the session started. Restart the session (the system prompt is built at session start only).
  • AI says you’re open when you’re closed → check that business hours are saved and your timezone is correct. Preview the prompt to see what the AI is actually told.