FreePBX

FreePBX Inbound Routes: DID Mapping, Time Conditions, and Destinations

MYLINEHUB Team • 2026-02-12 • 11 min

Screenshots + clean steps to configure this FreePBX module in a production-safe way.

FreePBX Inbound Routes: DID Mapping, Time Conditions, and Destinations

FreePBX Inbound Routes: DID Mapping, Time Conditions, and Destinations

Inbound Routes are the entry gate of FreePBX. When someone calls your business number (DID), FreePBX matches the called number (and optionally CallerID) and then sends the call to a destination like: IVR, Queue, Extension, Conference, Announcement, or a Time Condition.

  • DID mapping = “When this number is called, go here.”
  • Destination = the caller journey (IVR/Queue/etc.).
  • Production best practice = Inbound Route → Time Condition → (Open: IVR/Queue) (Closed: voicemail/announcement).

Where Inbound Routes Fit in the Call Flow

SIP Provider / PRI / GSM Gateway
        ↓
     Trunk (FreePBX)
        ↓
  Inbound Route (DID/CID match)
        ↓
  Destination (IVR / Queue / Extension / Conference / Announcement / Time Condition)
        ↓
   Agent / Bot / Voicemail / Callback

If inbound calls are failing, most of the time it’s one of these: trunk isn’t delivering DID the way you expect, your inbound route doesn’t match the DID format, or destination/fallback is incorrect.

Open Inbound Routes

Go to: Connectivity → Inbound Routes

Inbound Routes list showing DID, CID, Description, Destination and Actions
Inbound Routes list: each row maps a DID (and optional CID) to a destination like IVR, Queue, Extension, Conference, or Announcement.

How matching works (simple): FreePBX tries to match the incoming DID/CID to a route. If you create very specific routes (DID + CID), only those calls will match. If you keep CID = “Any”, the route matches all callers for that DID.

Step 1: General Tab (The Core Fields That Matter)

When you click edit on a route, the General tab contains the fields that decide what number you are matching and where you send the call.

Inbound Route General tab showing Description, DID Number, CallerID Number and Set Destination
General tab: set Description, DID Number, optional CallerID Number, and most importantly Set Destination.

Field-by-field (based on what is visible in the screenshot)

  • Description: a human-friendly label. Use the DID itself or purpose, e.g. +911144930004 - Main.
  • DID Number: the called number you want to match (e.g. +911144930004). This must match the format your trunk delivers.
  • CallerID Number: set to ANY (or blank) for normal use. Only lock it down if you intentionally want CallerID-based routing.
  • CID Priority Route (Yes/No): controls whether CallerID-based matching should take priority when it exists. If you don’t use CID-specific routes, keep your setup simple (DID + ANY).
  • Alert Info: rarely needed. Used in special SIP interop cases.
  • Ringer Volume Override: optional. Useful if you need louder/softer ring behavior on some endpoints.
  • CID name prefix: adds a prefix to the CallerID name shown on phones. Example: [MAIN] so agents instantly know which DID was called.
  • Music On Hold: used if the chosen destination causes waiting/hold behavior. Keep Default unless you have a reason.
  • Set Destination: the actual target (IVR/Queue/Conference/Announcement/Extension/etc.). In the screenshot it is set to Conferences → 1234 Main Conference.

Production tip: name + prefix strategy

  • Description: store DID + purpose (easy to search later).
  • CID name prefix: show DID type to agents, e.g. [SALES], [SUPPORT], [MAIN].

Step 2: Advanced Tab (Call Signaling Behavior)

The Advanced tab is about low-level behavior like ringing signaling and answering rules. Most people leave these defaults unless they have a very specific trunk/provider behavior to satisfy.

Inbound Route Advanced tab showing indication zone and ringing/answer controls
Advanced tab: Indication Zone, whether to signal ringing, reverse charges handling, and whether to force-answer or pause before answer.

What these options generally mean

  • Indication Zone Country: controls tones (ring/busy/congestion) country style. Keep Default unless needed.
  • Signal RINGING (Yes/No): whether Asterisk sends a ringing indication early. Usually keep Yes.
  • Reject Reverse Charges: rarely used; depends on carrier features. Most setups keep defaults.
  • Force Answer: forces the call to be answered by the PBX before sending to destination (careful: impacts billing/answer supervision).
  • Pause Before Answer: inserts a short delay before answering (used for some carrier/recording interop cases).

Safe approach: change Advanced settings only if you have a measured issue (carrier requires it, recording needs it, or answer supervision problems).

Step 3: Privacy Tab (Caller Privacy / Screening)

The Privacy tab controls whether you run a privacy manager flow. This is used when you want to screen/handle callers with blocked/anonymous CallerID.

Inbound Route Privacy tab showing Privacy Manager, max attempts, min length
Privacy tab: enable/disable Privacy Manager and configure basic rules like attempts and minimum length.

What noted fields typically do

  • Privacy Manager: if enabled, FreePBX may prompt callers for information or apply rules for blocked CallerID (depends on module behavior).
  • Max attempts: how many retries before sending to a fallback behavior.
  • Min Length: minimum digits expected in caller-provided data (for screening flows).

If you don’t explicitly need screening, keep Privacy Manager No to avoid unexpected caller experience.

Step 4: Fax Tab (Detect Faxes)

If your DID might receive fax calls (legacy businesses), FreePBX can attempt to detect fax tones. If you do not use fax at all, keep it off to reduce complexity.

Inbound Route Fax tab detect faxes
Fax tab: toggle Detect Faxes (Yes/No).
  • Detect Faxes = Yes: only if you truly route faxes somewhere.
  • Detect Faxes = No: recommended for modern voice-only setups.

Step 5: Other Tab (Recording, Lookup, Language)

The Other tab is where you control features like allowlist screening, call recording policy, caller name lookup, and language behavior.

Inbound Route Other tab showing allowlist screening, call recording, CID lookup, language, superfecta options
Other tab: Enable Allowlist Screening, Call Recording, CID Lookup Source, Language, and Superfecta lookup options.

How to think about these fields

  • Enable Allowlist Screening: if enabled, only trusted callers (allowlist) are treated differently. Use only if you maintain allowlists.
  • Call Recording (Force / Yes / Don’t Care / No / Never): set policy per DID. Example: Force for support lines, Never for sensitive lines.
  • CID Lookup Source: choose a lookup source if you want caller names to be resolved (CRM/phonebook sources if configured).
  • Language: set to Default unless you run multi-language announcements/IVRs and want this DID to default to a language.
  • Enable Superfecta Lookup + Superfecta Scheme: controls caller ID name resolution using the Superfecta module (if installed/configured).

Even though the screenshots show direct destinations (like Conference), the most stable production design is:

Inbound Route (DID)
   → Time Condition (Business Hours)
        → Open: IVR or Queue
        → Closed: Announcement + Voicemail / Callback
  • Open hours: customers reach the right team fast.
  • Closed hours: customers hear a clear message + can leave voicemail or request callback.
  • No silent drops: every path ends somewhere intentional.

Troubleshooting (Most Common Real-World Issues)

1) Calls hit the wrong route (or don’t match)

  • DID format mismatch (provider sends +91... vs 0... vs last digits only)
  • You accidentally used CID filtering (CallerID not matching)
  • You forgot Apply Config

2) Call reaches destination but user experience is bad

  • IVR timeout/invalid not configured (loops or drops)
  • Queue failover not configured
  • Ring group “no-answer destination” missing

3) Recording / lookup behaves unexpectedly

  • Recording set to “Don’t Care” while extension has different policy
  • Superfecta enabled but no scheme/source configured

CLI quick checks when needed:

asterisk -rvvvvv
pjsip set logger on
; make an inbound test call
pjsip set logger off

Production Checklist

  • DID Number matches trunk-delivered format exactly
  • CallerID Number left as ANY unless intentionally required
  • Destination is intentional (IVR/Queue/Time Condition)
  • Recording policy decided per DID (Other tab)
  • Language set only when you use multi-language routing
  • Test externally with real mobile numbers

Next recommended articles after this: FreePBX IVR, FreePBX Queues, and FreePBX SIP Settings (NAT/RTP) to make the entire inbound journey stable end-to-end.

Try it

Want to see API-driven CRM + Telecom workflows in action? Try the WhatsApp bot or explore the demos.

💬 Try WhatsApp Bot ▶️ Watch CRM YouTube Demos
Tip: Comment “Try the bot” on our YouTube videos to see automation in action.
M
MYLINEHUB Team
Published: 2026-02-12
Quick feedback
Was this helpful? (Yes 0 • No 0)
Reaction

Comments (0)

Be the first to comment.