Freeze one DID, one attempt and the expected delivery order
Record the owned DID, trunk group, account location, timestamp and timezone, configured registration or peer-to-peer mode, primary and secondary gateway state, registered Contact and public address, per-DID and global failover values, first SIPStation attempt, any next attempt, delivered Request-URI and source, first FreePBX match, destination, answer, media and caller result. Redact credentials, Authorization values, personal numbers and packet payloads before sharing evidence.
Classify the symptom before changing anything: no provider attempt, no packet at the PBX edge, rejected request, unmatched DID, wrong destination, failed endpoint or media-only failure. Registration, delivery, routing, answer and two-way audio are separate outcomes.
Establish the selected SIPStation identity model
Sangoma says SIPStation trunks use registration style by default: the PBX registers to the SIPStation edge and the registered address becomes the inbound destination. Its access-restriction guide separately documents optional peer-to-peer mode, where Require Registration is disabled and outbound calls authenticate with the SIP username and password. Prove the account setting and running PBX objects rather than diagnosing every deployment from a REGISTER indicator.
For registered service, keep the account key, SIP credentials, PJSIP endpoint, registration, AoR Contact, expiry and observed public source mapping separate. For peer-to-peer service, keep configured address policy, digest challenge and inbound target separate. A working outbound call does not prove the inbound identity or destination.
Reconstruct primary, secondary and configured failover behavior
Sangoma says that without configured failover it normally tries trunk1.freepbx.com, then trunk2.freepbx.com when the first attempt cannot reach the PBX. Its inbound-DID failover guide adds an important boundary: when a DID has account-level or per-DID failover, the first trunking server does not pass the call to the other trunking server; it follows the configured failover path instead.
Preserve whether a per-DID number overrides the global number, whether a failover PBX or trunk group is configured, and which provider server made the first attempt. Do not treat secondary-gateway fallback, backup-PBX delivery and PSTN-number forwarding as interchangeable or infer that every SIP response advances.
Prove whether FreePBX received and matched the request
Inspect an authorized packet capture and Asterisk log for the exact timestamp, source, Request-URI, To identity, response and channel. The SIPStation module can show DID configuration and recent inbound-call information, but a portal row or active registration does not prove the request crossed the firewall or entered the loaded dialplan.
If a request reaches Asterisk, compare the delivered DID format with the loaded inbound routes. Sangoma documents that a specific DID must match the format sent by the provider; CID conditions and route priority can also change selection. Preserve the first matched context, extension and destination instead of broadening a route until the symptom disappears.
Separate signaling reachability, route handling and media
If no request reaches the PBX, verify current DNS answers, provider source addresses, listening transport and port, external firewall, FreePBX Firewall zone, NAT mapping and public-address ownership. Do not disable the firewall or widen a trusted zone without a captured source and an approved rollback. A request from a secondary gateway or restored NAT mapping is a new observation, not proof of a complete call.
If the PBX answers signaling but audio is absent or one-sided, keep that as a media-path case. Sangoma's troubleshooting material links no-audio symptoms to port forwarding and provides a bounded packet-capture example. Compare negotiated SDP and RTP endpoints rather than changing registration or inbound-route matching to repair media.
Correct the earliest proven mismatch and exercise restoration
Correct only the demonstrated owner: account mode, current registration, gateway reachability, configured failover, DID assignment, firewall rule, NAT mapping, inbound-route match or destination. Use the supported FreePBX module or configuration owner, apply the change deliberately and preserve the previous state.
Repeat an authorized primary-path call, the documented secondary or configured failover case, the intended FreePBX destination and return to normal. Record every provider attempt, SIP result, route match, answer and two-way media separately. Remove temporary captures and access, and do not infer active-call survival, service availability, capacity, emergency behavior or compatibility from one successful new-call exercise. No SIPStation service, PBX or live call was tested for this diagnostic.
Sources & applicability
Primary references for the technical details above. Operational examples and planning checklists are VoIP.info editorial guidance.
- Sangoma: Troubleshooting SIPStation ↗
- Sangoma: Failover of inbound SIPStation DIDs ↗
- Sangoma: SIPStation notifications and access restrictions ↗
- Sangoma: FreePBX SIPStation module ↗
- Sangoma: SIPStation PJSIP trunk setup ↗
- Sangoma: FreePBX inbound-route user guide ↗
- Sangoma: Configuring a PBX or device with SIPStation ↗
Examples require adaptation to your topology. No live PBX or hardware testing is claimed.