/* BEGIN BLOG-CLOSE-CHAT */ /* END BLOG-CLOSE-CHAT */
View Categories

SMS and Messaging

4 min read

EE only. SMS messaging is an Enterprise Edition feature. It does not appear in Community Edition builds.

ICTPBX supports two-way SMS, so you can send and receive text messages directly from the portal. Delivery runs over SignalWire (the same vendor used for SIP trunking), so voice and SMS share one provider. There are two surfaces:

  • Messaging (Inbox): a threaded, 1:1 conversation view for everyday texting.
  • Send SMS (Campaign): bulk SMS to a whole contact group in one operation.

Both write to a single unified message history, so a text you send from the Inbox and a text sent by a campaign show up in the same record.


Messaging Inbox #

Menu: Messaging → Inbox

The Inbox is a conversation view: threads on the left, the selected conversation in the center, and a composer at the bottom.

Messaging inbox

Each thread row shows the remote party’s number, a preview of the last message, the timestamp, and a direction arrow:

  • ↑ (up arrow): an outbound message you sent.
  • ↓ (down arrow): an inbound message received from that number.

Click a thread to open the conversation. Messages appear as bubbles with a status badge:

Badge Meaning
Delivered Carrier confirmed delivery (via SignalWire status callback)
Sent / Queued Accepted by the provider, awaiting a delivery report
Received An inbound message from the remote party
Failed The provider rejected or could not deliver the message

The Inbox polls for new messages every 15 seconds, so inbound replies show up automatically without a page reload.

Send a new message #

  1. Click New Message (top right).

New message composer

  1. Enter the recipient in the Recipient number field in E.164 format (e.g. +12015550123).
  2. Type your text in the Type a message… box.
  3. Click the Send button (it stays disabled until you have typed some text).

The message is sent immediately, an outbound record is written, and a new thread appears for that number. Replies from the recipient land in the same thread.

Reply in an existing conversation #

  1. Click the thread in the left list.
  2. Type in the composer and click Send. The recipient number is already set from the thread.

Send SMS Campaign (Bulk) #

Menu: Messaging → Send SMS

Campaigns send the same message to every contact in a group. Before creating a campaign you need two things: a Text message template and a Contact Group.

Step 1: Create a Text template #

Go to Fax/Messaging → Text (the Text message store) and create the message body you want to send. Templates are reusable, so you can save common messages once and pick them for many campaigns.

Text templates

Step 2: Create the campaign #

  1. Go to Messaging → Send SMS and click Add (or open the list and create a new one).

SMS campaign list

  1. Fill in the campaign form:

Create SMS campaign

Field Required Description
Text The saved Text template to send
Groups The contact group to send to (every contact receives one message)
Retry How many times to retry a failed recipient (1, 2, or 3)
Delay b/w SMS Minutes to wait between each send, which throttles the blast to stay within provider limits
  1. Click Submit.

The system queues one send per recipient. Each recipient’s message is written to the same unified history as the Inbox, so campaign sends are visible and billed the same way as 1:1 messages.


Billing (EE) #

Each outbound SMS is metered under the standard Option-A billing model, the same way fax pages are counted:

  • SMS uses service flag 4 and its own rate.
  • A monthly free quota of SMS messages is included per package (resource 18). Credit is only deducted for messages sent above the free quota.
  • Inbound (received) messages are not charged.

Admins set the per-SMS rate on the Rate form by selecting the SMS service.

SMS rate

Tenants can watch SMS usage on the Billing → Quota page alongside voice minutes and fax pages.


How receiving works #

  1. A text arrives at your SignalWire number (a DID assigned to your tenant).
  2. SignalWire posts the inbound message to ICTPBX over a secured webhook.
  3. ICTPBX resolves the destination number to the owning tenant/user and records the message.
  4. The message appears in that user’s Inbox thread within the next poll (15 seconds or less).

For inbound routing to work, the receiving number must be a DID owned by the tenant. If a number has no specific owner, inbound texts fall back to the tenant default.


Requirements & limits #

  • SignalWire account: SMS delivery uses SignalWire’s REST/LaML Messaging API. Credentials (space, project ID, API token, default from-number) are configured at the server level during install.
  • A2P 10DLC registration: US carriers require application-to-person (A2P) 10DLC brand/campaign registration before long-code SMS will deliver. Until your SignalWire number’s 10DLC campaign is approved, outbound messages may be filtered by carriers even though ICTPBX shows them as Sent. This is an account-side carrier requirement, not an ICTPBX setting.
  • E.164 numbers: always address recipients in full international format (+ and country code).