The first forward-building dial-plan editor

See your dial plan.
Finally.

The first forward-building editor for the FreePBX family. Drop the inbound, wire the next node, save, instead of building backward through dropdowns to make destinations exist before the routes that point at them. Trace any DID from inbound to voicemail, with live registration and queue-agent status on every node, simulate any time of day, and export a clean diagram for the handoff.

Running VitalPBX? The same live canvas spans every tenant. Switch between them in a click and read each one’s whole flow end to end, registration and queue state included.

FreePBX family & VitalPBX Free visualizer for good. Editor optional, no card Self-hosted. Your data never leaves
FreePBX 14, 15, 16, 17 VitalPBX (multi-tenant) Live registration status In-Use-By reverse walk Self-hosted No usage telemetry Build dial plans forward Undo / redo edits FreePBX 14, 15, 16, 17 VitalPBX (multi-tenant) Live registration status In-Use-By reverse walk Self-hosted No usage telemetry Build dial plans forward Undo / redo edits
The problem

You build it backward, trace it across 14 tabs, then dial in to find out if it worked.

WITHOUT_CFS · BUILDING

FreePBX's destination dropdowns only contain modules that already exist. So to wire a new flow you build it backward: queue first, then the IVR that points to the queue, then the time condition that points to the IVR, then the inbound route that points to the time condition.

Or you go top-down with placeholder destinations, then circle back through every node to fix them once the real downstream module exists. Miss one and a holiday call lands in terminate.

Either way, building a 12-node call flow takes an afternoon and three context switches.

And there's no undo. Every fix is a fresh manual edit through the same backward chain.

WITH_CFS · BUILDING

Drop the inbound. Drop the next node, wire it. Drop the next, wire it. CFS resolves destinations as you go and saves the whole flow in a single transaction.

The first forward-building dial-plan editor for any Asterisk-based PBX front-end. Build the way you actually think about a call: from "the call comes in" toward "this is what answers."

Change your mind? Ctrl-Z. Linear undo on destination edits, plus an Activity Log that shows who changed what, and when.

WITHOUT_CFS · TRACING

You click into Inbound Routes. Then Time Conditions. Then the IVR. Then another Time Condition. Then a Ring Group that points to a Queue. Each screen tells you one step.

To answer "where does the main number go at 6:47pm on a holiday?" you open five tabs, build the path in your head, and hope you didn't miss a CFC toggle.

New engineer joining the team? Schedule a week.

WITH_CFS · TRACING

Pick a DID. The full graph renders in under a second: every route, every branch, every failover. Day/night overrides are visible. Holiday conditions are visible.

Simulate a time, the graph dims the paths that wouldn't fire. Click any node, edit it, save. Drag to rewire. Export as PNG for the customer handoff.

New engineer joining? Open the page.

WITHOUT_CFS · VERIFYING

You changed the time condition. Now you call the main number to hear what a caller hears. Then again from a cell, because the first call landed somewhere you didn't expect and you're not sure why.

The paths you can't dial are the ones worth worrying about. You can't call the main number at 6:47pm on Christmas. So you either wait for Christmas, or you roll the clock forward on a production PBX and misroute live calls to find out.

Usually it's fine. You find out it wasn't when the customer calls you.

WITH_CFS · VERIFYING

Make the change, then look at it. The flow you just edited is on the canvas, and the graph shows where a call lands.

Set the clock to 6:47pm on December 25th and the paths that wouldn't fire dim out. Nothing gets dialed, nothing on the PBX changes, and you don't wait until Christmas to learn the holiday route pointed at an extension whose owner left in March.

Wrong turn somewhere? You see it before the caller does.

New customer, new dial plan

Build the flow while they're still describing it.

A customer signs. On the kickoff call they tell you how calls should work: press 1 for sales, ring the front desk first, roll to the owner's cell after six, closed the week of Christmas. Normally you take notes, go build it backward through dropdowns, and send a screenshot two days later.

On the call

Drop the nodes in the order they say them.

Inbound, time condition, IVR, queue, voicemail. Each one goes on the canvas as it comes up in the conversation, wired to the one before it. Save, hit Apply Config, and it's live. What you drew with them is the dial plan that's running, not a diagram of it that drifts out of date by month two.

Before you hang up

Show them exactly what a caller gets.

Pick the DID and the whole journey renders: which greeting answers, what each key press does, which queue it lands in, who's sitting in that queue, and where the call goes when nobody picks up. Set the clock to 6:47pm, or to Christmas morning, and watch the path change. Most owners have never once seen their own phone system do this.

Next month

A new tech reads routing instead of memorizing tabs.

Your new hire opens the customer's graph and reads how the account is routed straight off the canvas. What used to be a week of shadowing whoever built it is one screen now.

A license is one-time and per PBX. It goes in with the rest of the build.

What's in the box

Not a diagram tool. A dial plan IDE.

Every feature is built for one job: understanding and modifying production call routing without breaking it.

Build forward

Drop the inbound, drop the next node, wire it, save. The first forward-building dial-plan editor for the FreePBX family. No more starting at the queue and walking backward through dropdowns to make destinations exist before the routes that point at them.

Live status, on every node

Extension nodes paint a registration dot in real time: green for registered, red for offline, amber for DND, purple for call forward. Queue and ring-group rows show the same dots per member. Pulled live on every graph load, on both platforms.

Time travel

Simulate any date and time. The graph dims paths that wouldn't fire and highlights the one that would. "What happens during the company event next Tuesday afternoon?" Pick the time and the graph shows you, instead of tracing it by hand.

Hide any branch

Big call flows get unreadable. Collapse everything downstream of a node, from the node itself, and the diagram shrinks to the path you actually care about. A hidden branch is remembered by what it points at, so it stays hidden in every call flow that reaches it, not only the one you hid it from. Nothing is deleted, and you can reveal it any time. On the FreePBX family and VitalPBX alike.

In-Use-By reverse walk

Pick any destination and CFS walks every module's destination columns backwards, rendering every node that points at it as a dashed reference card. Phantom references stop being phantoms.

Export for humans

PNG with a destination + timestamp stamp. Full quality, or sanitized: PII blacked out for diagrams that travel beyond the PBX owner. One button from canvas to attachment.

See all 15 features →

See it work

Real dial plans. Real screenshots.

Three production-shaped call flows: a law firm, a medical practice in normal hours, the same practice after-hours. Sticky notes, multi-user attribution, time-of-day simulation. All on one canvas.

pbx.bridgewaterlaw.com/cfstudio/?ext=8005550234
Sticky notes with multi-user attribution. Every note shows who wrote it and when.

Try the live demo → More screenshots

Who it's for

Built for the people actually maintaining the PBX.

Telecom consultants

Stop re-discovering the dial plan every site visit.

Walk into a new customer's PBX, render their graph, get oriented in a minute. Export clean, branded diagrams for the handoff. Bill for understanding, not archaeology.

MSPs & resellers

Put a second pair of eyes on it without handing over the keys.

The graph is the documentation, so it can't go stale in a wiki nobody updates. When a "why isn't my phone ringing?" call comes in, create a read-only login for whoever's helping: a junior tech, a teammate, or the customer if they can reach it. You both look at the same picture and walk the dial plan together on the phone while you fix it live. No PBX admin access changes hands.

In-house sysadmins

Finally hand off on-call without guilt.

Your backup admin doesn't need to learn every FreePBX tab. They just open the graph. Time conditions, holiday rules, CFC toggles: all visible. No tribal knowledge.

Pricing

Free to start. Pay only when you scale.

On the FreePBX family, the complete read-only visualizer is free for good. Editing is the part a license buys, and you get it free for your first 30 days, no card. On VitalPBX, where Call Flow Studio is read-only for everyone, the free tier covers your first two tenants and the license is about scale.

$79 for a limited time ($129 standard) · one-time · per PBX · or buy a license →

Questions

The ones we always get.

Which PBX platforms does CFS support?

FreePBX 14, 15, 16, 17 and FreePBX-based distributions: full editor (read + write), including commercial distros like PBXact and ClearlyIP and the community Incredible PBX. VitalPBX ships as a first-class read-only visualizer. The platform is auto-detected at install. Self-hosted only. CFS installs over SSH as root. Don't see your PBX? Email support@callflowstudio.io.

Is Call Flow Studio really free? What does a license cost?

Yes, and it stays free. On the FreePBX family the complete read-only visualizer is yours for good, no credit card and no expiry. Editing is the optional part: you get it for your first 30 days, and one Call Flow Studio license ($79 for a limited time, $129 standard, one-time and per-PBX) keeps it after that. On VitalPBX the free tier covers your first two tenants and the license opens the rest. No paywall, no locked-out screen. We never delete your data.

Does CFS send my call data anywhere?

No. It runs entirely on your server. No telemetry, no analytics, no outbound API calls once activated. License activation is the only optional online check, and it's a single HTTPS POST at install time. CFS works fully offline after that.

All questions →