Visual drag-and-drop IVR phone tree designer — build call flows and export Plivo-compatible XML/JSON.
- 🔢 Menu Nodes — Build phone menus with digit options (press 1→X, press 2→Y)
- 🔊 Play Audio — Insert audio playback with loop control
- 📞 Transfer & Connect — Route calls to phone numbers with optional caller ID
- 📴 Hangup — End-call actions
- 🎨 Visual Canvas — Drag nodes freely, connections drawn as curved lines
- 🔗 Connection Lines — SVG arrows between nodes show call flow
- 📝 Properties Panel — Click any node to edit its config
- 📄 Plivo XML Export — Generates Plivo-compatible XML (GetDigits, Play, Dial, Hangup)
- 📋 JSON Export — Full flow data for programmatic use
- ⚡ Zero Dependencies — Single file, no frameworks or build tools
git clone https://github.com/soumendrak/ivr-flow-builder.git
cd ivr-flow-builder
open index.htmlDrag a Menu node from the left palette onto the canvas to start building your IVR flow.
- Add nodes — Drag from the palette (Menu, Play Audio, Transfer, Connect, Hangup) onto the canvas
- Connect nodes — In the properties panel, select a target for each menu option
- Edit properties — Click any node to edit its name, audio URL, phone numbers, etc.
- Reposition — Drag nodes freely on the canvas
- Export — Click "Export XML" for Plivo-compatible XML, or "Export JSON" for raw data
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<GetDigits action="1" numDigits="1">
</GetDigits>
<Speak>Sales</Speak>
<Dial><Number>+123****7890</Number></Dial>
<Speak>Support</Speak>
<Dial><Number>+198****4321</Number></Dial>
</Response>ivr-flow-builder/
├── index.html # The entire app
├── logo.svg # App logo
├── LICENSE # MIT
└── README.md # You are here
Single-file vanilla HTML/CSS/JS. Drag-and-drop via HTML5 Drag API + mouse events. Connection lines drawn with SVG overlays. No frameworks, no CDNs, no build tools.
PRs welcome! Keep the zero-dependency constraint.
MIT © 2026 Soumendra