> ## Documentation Index
> Fetch the complete documentation index at: https://help.withallo.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Route by Schedule and by Caller

> Send calls down different paths depending on the time of day or on who is calling

<iframe src="https://www.youtube.com/embed/ZgBl-6bShTc" title="YouTube video player" frameborder="0" className="w-full aspect-video rounded-xl" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen />

Two steps split a call without asking the caller anything. **Business hours** looks at the clock. **Contact property** looks at who is calling.

## Business hours

The **Business hours** step splits your flow into **Open** and **Closed**, using the schedule already set on that line.

<Steps>
  <Step title="Add the step">
    Add **Business hours** where the call should split, usually straight after Incoming call.
  </Step>

  <Step title="Check the schedule">
    The step reads this line's own opening times. Set them in the line's Business hours settings if you have not already.
  </Step>

  <Step title="Fill in both paths">
    **Open** normally rings the line. **Closed** normally goes to voicemail or the AI receptionist.
  </Step>
</Steps>

### Worked example

> **Incoming call** → **Business hours**
>
> **Open** → Ring this line → if missed, Voicemail
>
> **Closed** → Play announcement ("We're closed, our hours are…") → Voicemail

### Things to know

* **One per path.** You cannot put a Business hours step underneath another one. Both would check the same schedule, so one of the two paths could never run, and Allo blocks the save with an explanation.
* **Two on separate branches are fine.** A Business hours step inside the Sales branch and another inside the Support branch never meet, so they are allowed.
* **If business hours are switched off on the line**, every call takes the **Open** path, whatever the time.

## Contact property

The **Contact property** step branches on something Allo knows about the person calling. It splits into **Match** and **No match**.

You pick a property and the value it has to have. On the call, Allo looks up the caller's number in your contacts and compares.

### Which properties you can use

The picker has two groups.

**Contact fields** are built in and available to everyone:

| Field             | Notes                                          |
| ----------------- | ---------------------------------------------- |
| Company           | Matched on the company name                    |
| Job title         | Free text                                      |
| Interaction level | None, Low, Medium or High                      |
| Website           | Free text                                      |
| Deal status       | Free text, whatever your CRM pipeline calls it |

**Custom properties** are the contact properties your own workspace has. If a property has a fixed list of options, you pick the value from that list. Otherwise you type it.

### Worked example

Send your best customers straight to their account manager, and everyone else through the normal menu:

> **Incoming call** → **Contact property**: Interaction level matches High
>
> **Match** → Ring this line (the account manager) → if missed, Voicemail
>
> **No match** → Phone menu

### No match is where most callers land

<Warning>
  Anything Allo cannot confirm takes the **No match** path: an unknown caller, a withheld number, a first-time caller with no contact record yet, a contact whose property is empty, or a value that simply differs. Always give No match a real destination.
</Warning>

### How values are compared

* Text is compared without case sensitivity, and spaces around the value are ignored. "acme" matches "Acme".
* Values you pick from a list are matched exactly, so there is nothing to get wrong.
* Interaction level is one of None, Low, Medium or High.

### Things to know

* **Do not test the same property twice on one path.** The answer is already settled by the first step, so the second one has a dead branch and the save is blocked. Two steps testing *different* properties are fine.
* **If you rename or delete a property in your CRM**, a flow using it stops saving until you pick another one. The message names the property so you know which step to open.

## Related pages

<CardGroup cols={2}>
  <Card title="Business hours" icon="https://mintcdn.com/themobilefirstcompany/RgYoir1kmfhXIZ06/media/allo-icons/Clock.svg?fit=max&auto=format&n=RgYoir1kmfhXIZ06&q=85&s=0549952791657ba192d9e67766625168" href="/en/features/business-hours" width="24" height="24" data-path="media/allo-icons/Clock.svg">
    Set the schedule this step reads
  </Card>

  <Card title="Call flows overview" icon="https://mintcdn.com/themobilefirstcompany/8QXaFZIztUCZ-MxU/media/allo-icons/Subnode.svg?fit=max&auto=format&n=8QXaFZIztUCZ-MxU&q=85&s=add7e572f2906143c977e33577e94ef3" href="/en/features/call-flows" width="24" height="24" data-path="media/allo-icons/Subnode.svg">
    Steps, saving and limits
  </Card>
</CardGroup>
