3CX SMS: send and receive business texts in 3CX with everymessage

Written by

in

3CX is a business phone system used by thousands of UK organisations, and it can send and receive SMS through a messaging provider. everymessage supports the 3CX generic SMS provider interface, so your 3CX users can text customers from the same web client and apps they use for calls, on UK numbers, with delivery reports and replies in the conversation. This guide explains how it works, what you need and how to set it up.

In short: add everymessage as the SMS provider in 3CX using our PBX messages URL and your API key, then send us the webhook URL 3CX gives you. Outbound texts go from 3CX to everymessage, and replies and delivery reports come back to 3CX by webhook. No code and nothing to install.

How the integration works

3CX sends each outgoing text to everymessage as a simple request with your API key. We send it to the mobile networks and track delivery. When the message is delivered, or a customer replies to your number, we post it straight back to your 3CX system, which shows it in the right conversation.

Outbound
3CX userSends a text from the 3CX web client or app
3CXPosts it to everymessage with your API key
everymessageSends it and tracks delivery
Customer’s mobileReceives the SMS
Inbound and delivery reports
Customer’s mobileReplies to your number
everymessagePosts the reply, and each delivery report, to your 3CX webhook
3CXShows the reply and delivery status in the conversation
3CX sends messages to the everymessage API; replies and delivery reports come back by webhook.

What you need

  • A 3CX system that supports SMS through a generic provider
  • An everymessage account with an API key
  • An SMS-enabled number from everymessage for customers to text and reply to, set up in 3CX
  • Your 3CX webhook URL, which 3CX shows when you add the SMS provider

Setting it up

  1. Get your API key. We provide your everymessage API username and password. Your API key is username:password, Base64-encoded.
  2. Add the SMS provider in 3CX. In your 3CX SMS settings, choose the generic provider, enter the everymessage messages URL below, and paste in your API key.
  3. Add your number. Set up your everymessage SMS number in 3CX and choose which users or queues handle its texts.
  4. Send us your webhook URL. Copy the webhook URL 3CX shows for the provider and send it to us. We set it against your number in the 3CX / Yeastar (PBX) format, for both replies and delivery reports.
  5. Test. Send a text from 3CX, check it arrives and shows as delivered, then reply from the mobile and check the reply appears in 3CX.
3CX settingValue
ProviderGeneric SMS provider
Messages URLhttps://api.everymessage.com/v1/pbx/messages
API keyYour everymessage API key (username:password, Base64-encoded)
Number formatInternational E.164 with a +, for example +447700900123

Picture messages (MMS)

When someone sends a picture, video or document from 3CX, everymessage delivers it as an ordinary SMS with a personal, secure link. The link opens a page showing the message and the media, so it works on every phone and network. MMS itself is still patchy on many UK phones and networks.

  • Up to 10 files per message, each up to 5 MB: images (JPEG, PNG, GIF, WebP, HEIC), video (MP4, MOV, 3GP, WebM), audio (MP3, M4A, AAC, AMR, OGG, WAV), PDF and contact cards (vCard).
  • Private by default. Files are copied to UK storage and only shown through the recipient’s own link, which can’t be guessed. Links stay live for 30 days.
  • Text is optional. If a message has no text, we add a short line such as “You’ve been sent a picture. View it here:”.
  • Delivery reports work as normal, because the message itself is an SMS.
  • Simple pricing. A picture message is charged as an SMS plus a media hosting fee.

If any file can’t be fetched or isn’t a supported type, nothing is sent and 3CX gets error 10003 with the reason.

Sending from your company name

3CX always sends from the number set on the extension. If you’d rather customers see your company name, you can set a sender name of up to 11 characters on that number, for example BrightDent, in the everymessage portal (Numbers → edit the number → PBX sender name), or ask us and we’ll set it for you. Texts sent from that number then go out from the name instead, and 3CX keeps the conversation under your number.

  • One-way only. Customers can’t reply to a name, so use it for numbers that send notifications, not conversations.
  • UK sender ID rules apply. Letters, numbers and spaces, at least one letter, and no restricted generic names such as Verify or OTP. See UK SMS sender ID rules.
  • Per number. Your other numbers keep sending from the number, so two-way conversations carry on as normal.

API reference

You don’t need this to use 3CX, but it shows exactly what 3CX and everymessage exchange, which helps if you’re testing or troubleshooting. The full reference, with code examples, is in our developer docs: Phone systems (PBX) API.

Send a message

3CX posts each text as JSON, with your API key as a Bearer token. from, to and text are all required, and numbers are in E.164 format.

curl -X POST "https://api.everymessage.com/v1/pbx/messages" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{"from": "+447700900456", "to": "+447700900123", "text": "Your engineer is on the way."}'

Errors return a JSON errors list with a code, title and detail; the codes are listed under common problems below. A successful request returns HTTP 200 with the message details. The id is the everymessage message id, which 3CX uses to match the delivery report:

{
  "data": {
    "record_type": "message",
    "direction": "outbound",
    "id": "123456",
    "type": "SMS",
    "from": { "phone_number": "+447700900456" },
    "to": [ { "phone_number": "+447700900123", "status": "queued" } ],
    "text": "Your engineer is on the way.",
    "encoding": "GSM-7",
    "parts": 1
  }
}

Send a picture message

Add media_urls with up to 10 public file URLs. text is optional when media is included. The response is the same as for a text message.

{"from": "+447700900456", "to": "+447700900123", "text": "Here's the quote you asked for.",
 "media_urls": ["https://files.example.com/quote-1042.pdf"]}

Replies

Customer replies are posted to your 3CX webhook as a message.received event:

{
  "data": {
    "event_type": "message.received",
    "record_type": "event",
    "payload": {
      "id": "123789",
      "direction": "inbound",
      "type": "SMS",
      "from": { "phone_number": "+447700900123" },
      "to": [ { "phone_number": "+447700900456" } ],
      "text": "Thanks, see you soon",
      "received_at": "2026-10-13T09:15:04.511Z"
    }
  }
}

Delivery reports

When a message is delivered or fails, a message.finalized event is posted to the same webhook. payload.id is the id returned when the message was sent, and to[].status is delivered or delivery_failed.

Common problems and fixes

SymptomLikely causeFix
HTTP 401, error 10004API key is wrongCheck the key is username:password, Base64-encoded, with no spaces
HTTP 402, error 10005Not enough creditTop up your account, or contact us
HTTP 422, error 10001Number can’t be sent toCheck the to number is a valid mobile number in E.164 format
HTTP 422, error 10005Sender not allowedCheck the from number is one of your everymessage numbers
HTTP 422, error 10003A picture or file couldn’t be usedCheck each file is reachable, a supported type and no more than 5 MB, with at most 10 per message
Customers can’t replyThe number sends from a sender nameNames are one-way. Use a number without a sender name for conversations
HTTP 429, error 10006Daily sending limit reachedWait for the limit to reset, or ask us to raise it
Replies don’t appear in 3CXWebhook not setSend us the webhook URL 3CX shows for the provider
Messages stay unconfirmedDelivery reports not setAsk us to check delivery reports go to the same 3CX webhook

Why use everymessage for 3CX SMS

UK numbers

Two-way UK numbers that customers can text and reply to, set up and supported by our UK team.

Delivery reports

Every message is tracked, and its final status is sent back to 3CX so users can see what was delivered.

Sent as typed

Emoji and accented characters are kept, with Unicode used only when a message needs it, so nothing a user types is lost.

Built for volume

Multiple carrier routes and sending that can burst to 1 million SMS per hour.

Secure and UK-hosted

Hosted in UK data centres with high availability across the UK and EU, and ISO 27001 certified since 2009.

More than SMS

The same platform provides RCS, WhatsApp, email and AI voice assistants.

Using Yeastar? The same everymessage PBX API works with it too: see Yeastar SMS. Using a different phone or contact centre platform? See NetSapiens SMS, Amazon Connect and every other way to connect on our Business SMS page.

Frequently asked questions

Can 3CX send SMS through everymessage?

Yes. everymessage supports the 3CX generic SMS provider interface, so 3CX users can send and receive business SMS on everymessage numbers, with delivery reports shown in 3CX.

What do I enter in 3CX?

The everymessage PBX messages URL and your everymessage API key. 3CX sends the key as a Bearer token on every message, so there’s nothing else to install.

How do replies reach 3CX?

3CX gives you a webhook URL for the trunk. We set it against your everymessage numbers in the 3CX / Yeastar (PBX) format, and every customer reply and delivery report is posted to it.

Does it support MMS?

Yes. Pictures, videos and documents sent from 3CX are delivered as an SMS with a personal, secure link that opens the message and media on any phone. Up to 10 files per message, each up to 5 MB.

Can 3CX send texts from our company name?

Yes. 3CX always sends from a number, but you can set a sender name of up to 11 characters on that number in the everymessage portal (Numbers, then PBX sender name), or ask us to, so texts from it go out from your name instead. Customers can’t reply to a name, so use it for notification numbers.

Can users send emoji and accented characters?

Yes. Messages are sent exactly as typed. Plain text uses the standard SMS alphabet, and a message containing emoji or other characters is sent as Unicode automatically.

What number format does 3CX use?

3CX sends and expects numbers in international E.164 format with a leading +, for example +447700900123. everymessage accepts and returns numbers in that format.

Add SMS to your 3CX system

Get your API key and numbers, and we’ll help you connect 3CX and test it end to end.