Call Flow Studio: a live visual map of your VitalPBX dial plan

Wanted to share something I’ve been working on that some of you might find useful.

Call Flow Studio draws your whole VitalPBX dial plan as one diagram, from the inbound route down to voicemail. Working out where a call actually ends up usually means clicking through inbound routes, time conditions, IVRs, queues and ring groups and holding the whole chain in your head. This just shows you the full flow for any number on one screen.

On VitalPBX it’s read-only. It pulls from the same data VitalPBX uses to route calls and never writes anything back, so there’s nothing to set up and no way for it to touch your config. You install it and it draws what’s already there.

What it does:

  • Multi-tenant aware. Each tenant gets its own canvas and you switch between them in a click.

  • Shows live state on the diagram: extension registration, queue agents, night mode, call forwarding. You can also simulate a date and time and see which path a call would take then.

  • Exports clean PNG or vector SVG, which is handy for documentation or handing a setup off to a client.

I built it, and it’s a paid product. It installs free, and the first 30 days are a full trial with every tenant unlocked. After that it settles to a free version that keeps visualizing your first couple of tenants for good, and a one-time per-PBX license reopens all of them whenever you want. Runs on both VitalPBX 3 and 4.

Tenant screenshot:

An export:

More info and the free install are at callflowstudio.io.

Curious what folks here think, and what you’d want it to show or make easier.

Thanks,
Adam

5 Likes

A few weeks on, a quick update on what’s changed. Most of it came out of VitalPBX boxes in the field rather than my own list.

Search now spans every tenant at once. When you know a call flow is on the box but can’t remember which tenant it lives in, the search looks across all the tenants you have access to and takes you straight to it, instead of opening them one at a time.

Flip to “All tenants” and you’ll see those results as well.

Custom contexts now draw as real destinations instead of an “unsupported module” placeholder, so a flow that routes into one keeps going instead of stopping dead.

Selecting a node shows that module’s configuration in the side panel, using the same field names and grouping VitalPBX uses.

There’s also hide-a-branch, which collapses everything downstream of a node and remembers it per tenant.

That’s all in 1.0.13. Let me know if you run into anything or have suggestions.

Thanks,
Adam