Skip to content
Dialer & Setup

FreePBX Setup for a Small Outbound Team: 5 to 25 Agents

Small outbound teams often over-engineer their telephony stack or under-configure it — this guide covers the exact setup that fits a team your size without wasted complexity.

1. What "Small Team" Means for FreePBX Architecture

A 5–25 agent outbound team has specific characteristics that shape the right FreePBX configuration:

  • Peak concurrent calls: 15–75 (at a 3:1 pacing ratio on a power dialer)
  • Required trunk channels: 25–100 simultaneous SIP sessions
  • Storage for recordings: 5–20 GB per month (wav49 compressed)
  • Server requirements: 4–8 vCPU, 8–16 GB RAM, SSD storage — a mid-range VM handles this comfortably
  • Dialer type: typically a power or preview dialer rather than a predictive dialer, because predictive dialers require 20+ agents to reach statistical efficiency on abandon rates

At this scale, FreePBX Community Edition with a single PJSIP trunk to a flat-rate provider like UnlimCall is the correct and complete stack. You do not need a clustered Asterisk deployment, a commercial telephony platform, or multiple SIP providers unless your uptime requirements are exceptionally high.

2. Server Sizing and Baseline Configuration

For a 25-agent team, provision your Asterisk server with:

  • CPU: 4 vCPU minimum, 8 recommended (codec transcoding is CPU-bound)
  • RAM: 8 GB minimum (FreePBX + Asterisk + MariaDB + PHP comfortably fit in 6 GB; 8 GB gives headroom for recording buffers)
  • Storage: 100 GB SSD (OS + FreePBX + 3 months of wav49 recordings for a 25-agent team)
  • Network: 100 Mbps uplink minimum; 25 simultaneous G.711 calls consume approximately 16 Mbps

Install FreePBX using the official ISO or the FreePBX installation script on CentOS/RHEL or Debian. Set your hostname, configure a static IP or a reliable DHCP reservation, and complete the post-install wizard before configuring trunks.

Run the FreePBX security module post-install:

`` fwconsole module install firewall fwconsole firewall enable ``

3. Trunk Configuration for a Small Team

Configure a single PJSIP trunk to UnlimCall following the steps in FreePBX PJSIP trunk setup. For a 25-agent team at a 3:1 pacing ratio, you need 75 simultaneous outbound channels.

Set the maximum channel limit on your trunk endpoint:

In the PJSIP trunk settings (Advanced tab), set Maximum Channels to 100 — 25% above your expected peak. This prevents a pacing algorithm miscalculation from overloading your trunk connection while preserving capacity for peak periods.

For a team of 5–10 agents with a power dialer, 30 maximum channels is sufficient. Scale the limit as your headcount grows; there is no minimum channel commitment on UnlimCall's flat-rate seats.

4. Extension Configuration for Outbound Agents

For a small outbound team, each agent needs one PJSIP extension. Configure extensions in Applications > Extensions > Add Extension > Add New PJSIP Extension.

Key settings per agent extension:

  • Secret: Generate a strong random password (20+ characters) — do not use name-based passwords
  • Maximum Contacts: 1 (agents use one device at a time)
  • Codecs: match your trunk codec list (ulaw primary, alaw secondary)
  • Voicemail: disable for outbound-only agents — agents do not receive calls from external numbers and voicemail boxes consume storage without purpose

For remote agents connecting from home or distributed offices, enable TLS transport for the agent's softphone connection to your FreePBX server:

`` [agent-endpoint-template] type=endpoint transport=transport-tls media_encryption=sdes ``

This encrypts signaling and media between the remote agent's softphone and your Asterisk server. Verify your softphone (Zoiper, Bria, MicroSIP) supports SDES-SRTP with PJSIP before deploying to agents.

5. Outbound Route and Caller ID for a Small Team

Create one outbound route covering the markets your team dials. For a US-only team, one route with the patterns NXXNXXXXXX and 1NXXNXXXXXX covers all domestic dials.

Caller ID for a small outbound team is straightforward: provision one or two numbers per target area code through your UnlimCall account and rotate them at the campaign level. For a team of 10–25 agents dialing one geographic market, two to four numbers is typically sufficient to avoid concentration risk on a single DID.

Set the CallerID at the outbound route level with Override Extension enabled. See FreePBX caller ID per outbound campaign for per-campaign configuration when you eventually run parallel lists.

6. Cost Model for a 5–25 Agent Team

At $99/seat/month in the US and Canada, a 25-agent team pays $2,475/month for unlimited outbound calling — no per-minute charges, no DID rental stack on top.

Comparable per-minute billing at an industry average of $0.008/minute for a team averaging 6 hours of connected talk time per agent per workday:

  • 25 agents × 360 minutes/day × $0.008 = $72/day
  • Monthly (22 workdays): $1,584/month

At that volume, per-minute is cheaper. The flat-rate break-even on per-minute billing at $0.008/min is approximately 220 connected minutes per seat per day — roughly 3.7 hours of connected talk time. Teams above that threshold benefit from flat-rate; teams below may not.

For teams using a predictive or power dialer with high pacing ratios, total dialed minutes (ring time + connected) amplify the per-minute cost significantly. At a 4:1 pacing ratio, you are paying for 4 minutes of dial time for every 1 minute of connected time. Flat-rate eliminates that amplification entirely.

During the LAUNCH50 promotional period, first-month seats are 50% off — $49.50/seat for month 1. The break-even calculation shifts accordingly.

Takeaways

A 5–25 agent outbound team runs cleanly on a single FreePBX server with one flat-rate SIP trunk. Size the server for your peak concurrent channel count, configure PJSIP with IP authentication and a per-trunk channel limit, keep caller IDs simple at small scale, and run the math on flat-rate vs. per-minute before committing to either model.

Purpose-Built for Outbound Teams of Every Size

UnlimCall flat-rate seats are available per-seat with no minimum commitment. Start with 5 seats, scale to 250. Activate at /pricing/ — use code LAUNCH50 for 50% off month 1.