Skip to main content
This guide builds a complete IVR — the menu callers hear when they dial in. By the end you’ll have a “press 1 for sales, press 2 for support” auto-attendant with time-based routing for after-hours, holiday handling, and a tested call flow. Plan for 20-30 minutes if recording your own prompts; 10 minutes if using text-to-speech.

Before you start

You’ll need:

Step 1: Plan the menu

Sketch the flow before you build. A good first IVR has 3-4 options max.
"Thanks for calling Acme."
1 — Sales (Ring Group "Sales")
2 — Support (Queue "Support Hold")
3 — Billing (Extension 200)
0 — Operator (Extension 100)
[after 8 sec of silence] — replay menu, max 2 retries
If you have more than 5 options, use sub-menus (1 for sales, then 1.1 for new customers, 1.2 for existing). Flat menus over 5 options exhaust callers’ attention.

Step 2: Create the IVR

1

Open the IVRs tab

/dashboard/communications/ > IVRs > New IVR.
2

Name it

“Main Menu” is fine. If you’ll have separate after-hours, holiday, and main flows, name accordingly.
3

Set the time zone

Defaults to your account TZ. This drives time-condition matching.

Step 3: Add the greeting and menu prompts

Type the greeting and menu scripts. Pick a voice (preview each).Greeting: “Thanks for calling Acme.” Menu: “For sales, press 1. For support, press 2. For billing, press 3. For an operator, press 0.”TTS regenerates instantly when you change the script — you can iterate freely.
Start with TTS while you’re iterating, then re-record the final version with a human voice once you’re sure you like the script.

Step 4: Map the menu keys

For each digit (0-9, *, #), pick a destination.
1

Add key 1

Destination: Ring Group “Sales”. Failover: Voicemail.
2

Add key 2

Destination: Queue “Support Hold”. Failover: handled by the queue’s overflow.
3

Add key 3

Destination: Extension 200 (Billing). Failover: Voicemail to billing@.
4

Add key 0

Destination: Extension 100 (Operator).

Step 5: Configure timeout and invalid

1

Timeout

Default 8 seconds (no key pressed in 8 sec). On timeout, replay the menu — set max retries to 2. After max retries, route to a fallback (voicemail or operator).
2

Invalid key

Caller pressed an unmapped digit (e.g., 5). Play “That’s not a valid option” and replay the menu.

Step 6: Add time-based routing

For after-hours, you want a different menu (or the same menu pointing at voicemail instead of ring groups).
Add a time condition to the IVR: during business hours, key 1 → Sales ring group. After hours, key 1 → Voicemail to sales@. Caller experience is the same; routing changes silently.Pros: simpler, one IVR. Cons: only routes change, not prompts.
For most teams, the second approach (separate after-hours IVR) is clearer because callers hear “we’re closed” instead of being routed to voicemail without knowing why.

Step 7: Add a holiday calendar

Override the routing on specific dates.
1

Open Holiday Calendar

From the IVR’s detail page > Holidays.
2

Add holidays

Hiveku ships a US federal holiday preset. Add or remove dates as needed.
3

Pick the holiday IVR

Either route holidays to the after-hours IVR, or create a holiday-specific IVR with a “We’re closed for the holiday” message.

Step 8: Point your DID at the IVR

1

Open the DID's detail page

/dashboard/communications/ > Numbers > pick the DID.
2

Set inbound destination to your IVR

Replace whatever was there (extension, ring group) with IVR > Main Menu.
3

Save

The new routing is live within ~30 seconds.

Step 9: Test from your own phone

1

Call your DID

Use your cell phone — different from the destination extensions.
2

Listen to the greeting and menu

Confirm both play and the audio is clean.
3

Press each digit

Test 1, 2, 3, 0. Confirm each routes to the right destination.
4

Test timeout

Stay silent for 8 seconds. Confirm the menu replays.
5

Test invalid

Press 5 (or any unmapped digit). Confirm the “not a valid option” message.
6

Test after-hours (or wait until after-hours)

Either temporarily change your business-hours window to “exclude now”, or wait. Confirm the after-hours flow runs.

Best practices

Lead with the action

“For sales, press 1” beats “Press 1 for sales” — callers listen for the verb.

Keep it under 30 seconds

Long greetings make callers hang up. Cut every word that doesn’t earn its place.

Always offer 0 for operator

A live human escape hatch reduces abandon and frustration.

Don't use IVR for one-route lines

If everyone’s going to the same place, skip the menu. Just route the DID directly.

Troubleshooting

Some carriers buffer the first second of audio. Add 200-500 ms of silence at the start of your greeting recording, or pre-pad the TTS prompt.
Check the DTMF mode in the IVR’s advanced settings. Default is RFC2833. If callers from a specific carrier can’t reach options, switch to in-band detection.
Check the IVR’s time zone setting. It defaults to your account TZ but can be overridden. Daylight savings is handled automatically.
Confirm the holiday is on the IVR’s calendar (not just the DID’s). Time conditions are evaluated bottom-up: per-IVR > per-DID > account default.

Next steps

Queues

Add hold music and callback for IVR overflow.

AI voice agent

Replace the menu with a conversational AI.