🇪🇸 Español 🇬🇧 English 🇧🇷 Português
Guides

After-hours auto-reply with the Business Hours node in Omnifox

Build a workflow that replies differently during hours, after hours, and on holidays using the Business Hours condition. Step by step with real nodes.

July 11, 2026

When a customer messages you at 11 PM or on a holiday, the worst possible response is silence. An after-hours auto-reply fills that gap: it confirms you received the message, sets expectations on when you'll respond, and keeps the contact from drifting to a competitor. In Omnifox you build this with a single workflow powered by the Business Hours condition, which already sorts three situations for you.

What the Business Hours condition does

The Business Hours condition node isn't a plain yes/no. It evaluates the message time against your workspace schedule and opens three branches:

  • Within hours: inside your configured working day.
  • After hours: before you open or after you close.
  • Holiday: days flagged as holidays in the settings.

Each branch is a separate output of the node, so you can send a different message in each case without writing any date logic by hand.

The full flow, node by node

The workflow is short and direct:

  1. Trigger Message received. This is the workflow's only trigger. In its filters, turn on the channel filter (say, WhatsApp only) or the first only option if you want to reply just to the first message of the conversation instead of every line the customer sends.
  2. Business Hours condition. Wire the trigger's output into this node. It automatically branches into Within hours / After hours / Holiday.
  3. From the After hours branch, connect a Send message node: for example, "Hi {{$contact.first_name}}, thanks for reaching out. Our hours are 9 AM to 6 PM. We'll get back to you first thing tomorrow."
  4. From the Holiday branch, another Send message with its own copy: "Today is a holiday and we're closed. Leave your question and we'll handle it the next business day."
  5. The Within hours branch usually continues into your normal flow: you can leave it empty (to avoid interrupting) or chain a Transfer to an agent (handoff) so a human picks up the conversation right away.

So the order is: Message received -> Business Hours -> (After hours) Send message / (Holiday) Send message / (Within hours) Transfer to an agent.

Personalize the message with variables

A good automated message shouldn't sound robotic. Use variables: {{$contact.first_name}} to greet by name and {{$conversation.channel_name}} if you want to reference the channel. Remember the engine's rule: if a variable doesn't exist, it's replaced with an empty string, so the message never breaks even when the contact's name is missing.

Holidays: where they're set

The Holiday branch only fires if you've loaded the dates. That's done in your workspace schedule settings, not inside the workflow. Load them ahead of time (year-end, national holidays, internal closures) so the condition recognizes them automatically. If you load none, that branch simply never triggers and everything falls into Within hours / After hours.

Common mistakes to avoid

  • Not filtering the trigger: without the first only filter, a customer who fires off five lines in a row gets the same auto-reply five times. Turn it on or add a preceding condition.
  • Ignoring the Within hours branch: leaving it empty is fine, but make sure another workflow or a live agent actually covers in-hours traffic; otherwise nobody answers during the day.
  • Vague expectations: "we'll get back soon" is weak. Give a concrete window ("tomorrow before 10 AM") to reduce anxiety and repeat messages.
  • Mixing up editors: this is a chat workflow. For after-hours voice calls you use the IVR editor with nodes like Business hours/Calendar and Voicemail, which is a separate flow.

Useful variants

  • Soft escalation: on the After hours branch, after Send message, add an Add tag node (say "followup-morning") so the team prioritizes those chats when they open.
  • Data capture: use Ask a question instead of Send message if you want to capture the reason for contact while waiting for the business day.
  • Notify the team: for a VIP customer, chain Notify the team by email so someone sees it even at night.
  • Blend with AI: on the After hours branch, instead of a fixed message, you can use Assign AI agent so a text agent answers common questions overnight and only escalates what it can't solve.

How to test it before going live

Before leaving the workflow in production, verify all three branches. The simplest way: temporarily change your workspace schedule so the current moment falls "after hours" and send a test message from your own number; you should receive that branch's copy. Repeat by flagging today as a holiday to validate the Holiday branch. Also check the workflow's execution history: it shows which branch each message went through, helping you catch cases where the first only filter or the holiday list isn't set the way you expected. This two-minute check prevents the classic scenario of a customer getting the "we're closed" message in the middle of business hours.

With one trigger, one condition, and two or three Send message nodes, you cover 24/7 coverage without hiring night shifts. Build it today in Omnifox and stop losing messages after hours.

Comentarios (0)

Todavía no hay comentarios. Sé el primero en compartir tu opinión.

Dejá un comentario

Tu email nunca se publica. Los comentarios se moderan antes de aparecer.

Soporta markdown. El HTML se elimina.