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

# Week of 14 September 2026

> Route callers to their nearest location, choose what happens when an endpoint is closed, precise end reasons, and a visual automation canvas.

## New features

**Route callers to their nearest location.** A new **Routing settings** button on the **Endpoints** tab lets you choose **Nearest location by distance** or **Explicit rules only**. In distance mode, callers are offered the nearest placed location, and you set a **Max distance (km)**, a **Choice radius (km)** for offering several nearby locations, and **Max choices**. Each endpoint has a new **Coverage** setting to include or exclude it and give it its own service radius. **Try a lookup** previews which endpoints a suburb would be offered without dialling anything. See [Location routing](/routing/location-routing).

**A new tool finds the right branch from the caller's suburb.** **Routing | Service Location - v0.2** asks the caller which state and suburb they need service in, reads the match back to confirm it, and finds the endpoint that covers that area. It never dials itself: a following **Handoff** step dials `{{route.endpoint_id}}`. If nothing matches it can ask for a nearby larger suburb or a postcode, and if there's still no match it finishes false with a fallback destination you choose for the next step to hand over to. It writes the result to `route.*` variables such as `route.status` and `route.destination_name`. See [Service location routing](/tools/service-location-route).

**Choose what happens when an endpoint is closed.** Each endpoint now has a **Fallback** setting, headed **When closed**, with three choices. **Forward** sends the call to another endpoint, whose own schedule and fallback then apply, up to five hops. **Voicemail** ends the chain with voicemail, and **Message** ends it with a line of your choosing before hanging up. New endpoints default to **Voicemail**, which was the only behaviour before. A transfer from a script follows **Forward** chains. See [Endpoints](/routing/endpoints).

**End reasons are now precise.** Calls now end with one of a larger, fixed set of end reasons with readable labels. For example, **Transfer - Team Hangup**, **Take Over - User Hangup**, **Dial Busy**, **Dial No Answer**, **User Declined**, **Invalid Destination**, **Telephony Provider Unavailable**, **Error - LLM** and **Dropped - Telephony**. **Handoff** is now **Transfer**, and **Failed** is split into specific dial outcomes and errors. The **Edit end reason** pencil in call details now offers every reason, not just four. The API's `end_reason` field returns the underlying code, such as `agent_hangup` or `dial_no_answer`. Older calls keep their original values. See [Statuses and end reasons](/calls/statuses).

## Improvements

**The automation builder is now a visual canvas.** Automations are laid out as a zoomable, pannable diagram, with the trigger at the top and conditions splitting into side-by-side **Then** and **Otherwise** branches. Add a step with the **Add step** placeholder at the end of a branch or the **+** on any connecting line, and drag a step onto a **+** to move it. The lines around a **Create Call** step are labelled **Call started** and **Call completed**. See [Automation steps](/automations/steps).

**Switch a script's voice from any tab.** The script's name and description now sit above the toolbar on every tab, next to a new voice chip. Click the chip to preview and pick a different voice without going to **Settings**. See [Editor guide](/scripts/editor-guide).

**Locations are edited inline, with a contact email and map placement.** The Locations table now has **Name**, **Address**, **Email**, **Timezone** and **Default schedule** columns, all edited in place. An address that can't be placed on the map carries a **Not placed** tag, because only placed Australian addresses take part in distance routing. See [Locations](/routing/locations).

**Schedule presets.** The **Weekly hours** section of a schedule has a **Presets** menu: **Business hours**, **All hours**, **Outside business hours** and **Invert current hours**. The two after-hours presets also treat public holidays as open, so an after-hours schedule covers them. See [Schedules](/routing/schedules).

**Retries follow the exact end reason.** Retries now go by the call's precise end reason: a voicemail is retried as **Voicemail**, an unanswered dial as **No answer** and a busy line as **Line busy**. Declined calls, invalid numbers, calls marked as spam, carrier faults and platform errors are never retried, and a carrier outage is recorded separately from a "no answer". See [Calling rules](/batches/calling-rules).

**Long calls run to completion.** A call is only closed by the platform's safety net if it's still in progress two hours after it started, with the end reason **Error - AI Lost**, so long warm handoffs carry on uninterrupted. See [Statuses and end reasons](/calls/statuses).

**Contacts without a name show their phone number.** Contacts stored with a placeholder name such as "Unknown Unknown" now show their phone number in the Call Log, call details and the player. See [Call history](/calls/history).
