Business-hours CTAs are lying to half your visitors.
Every "we're open/closed" component out there checks one thing: is it currently business hours, in one timezone, for one person.
That's exactly what Conditional CTA v1 does — and does well. DST-safe timezone detection (no manual offset math, handles daylight saving automatically), custom active-day scheduling (weekdays, every day, or fully custom), a dynamic "back at" message that correctly calculates your next opening hour even across non-contiguous schedules, and smooth state transitions between online/offline. It's solid for solo operators and single-location businesses, and it's stayed that way — that mode isn't going anywhere.
But it had one hard limit: it only ever checks one schedule, for one person.
If your co-founder's in London and you're in Lagos, that single-schedule model shows "closed" for 8+ hours a day — even while someone on your team is wide awake and ready to talk. Visitors don't know that. They just see "closed" and leave.
None of the business-hours components I could find solve this. They tell you the status. They don't route the person.
So I've been building v2 on top of the same engine, adding a team mode:
→ Same DST-safe timezone logic, now checked per team member, in their own local time → Routes the CTA to whoever's actually available right now — button dynamically reads "Speak to {name}" → Picks fairly when more than one person's online, so leads don't all stack on one inbox → The "back at {time}" calculation now spans the whole team — shows the earliest anyone's back, not just one person's schedule → Solo mode still exists as a simple on/off toggle — team routing is additive, not a replacement
Also used this update to fix some accessibility gaps in the original: full keyboard navigation, screen-reader announcements on status changes, and respect for reduced-motion preferences.
Business-hours CTAs are lying to half your visitors.
Every "we're open/closed" component out there checks one thing: is it currently business hours, in one timezone, for one person.
That's exactly what Conditional CTA v1 does — and does well. DST-safe timezone detection (no manual offset math, handles daylight saving automatically), custom active-day scheduling (weekdays, every day, or fully custom), a dynamic "back at" message that correctly calculates your next opening hour even across non-contiguous schedules, and smooth state transitions between online/offline. It's solid for solo operators and single-location businesses, and it's stayed that way — that mode isn't going anywhere.
But it had one hard limit: it only ever checks one schedule, for one person.
If your co-founder's in London and you're in Lagos, that single-schedule model shows "closed" for 8+ hours a day — even while someone on your team is wide awake and ready to talk. Visitors don't know that. They just see "closed" and leave.
None of the business-hours components I could find solve this. They tell you the status. They don't route the person.
So I've been building v2 on top of the same engine, adding a team mode:
→ Same DST-safe timezone logic, now checked per team member, in their own local time → Routes the CTA to whoever's actually available right now — button dynamically reads "Speak to {name}" → Picks fairly when more than one person's online, so leads don't all stack on one inbox → The "back at {time}" calculation now spans the whole team — shows the earliest anyone's back, not just one person's schedule → Solo mode still exists as a simple on/off toggle — team routing is additive, not a replacement
Also used this update to fix some accessibility gaps in the original: full keyboard navigation, screen-reader announcements on status changes, and respect for reduced-motion preferences.