NetSapiens SMS: add two-way business SMS with everymessage as your carrier

Written by

in

NetSapiens is a unified communications (UCaaS) platform used by service providers to deliver voice, video and messaging to their business customers. Its SMS Advanced API lets you plug in your own SMS carrier, and everymessage can be that carrier. This guide explains how the integration works, what you need, how it’s set up and how to test it, so your NetSapiens users can send and receive business SMS through a UK messaging platform.

In short: add everymessage as a carrier in your NetSapiens SMS Advanced API configuration. Outbound texts are posted to the everymessage send API, and inbound replies are forwarded to your NetSapiens server by webhook. It’s configuration only, with no code, and works with NetSapiens v43 and later.

How the integration works

NetSapiens treats everymessage like any other SMS carrier. When a user sends a text, NetSapiens posts it to the everymessage gateway, which sends it to the mobile networks and records delivery. When a customer replies to one of your everymessage numbers, we forward the message to your NetSapiens server, which routes it to the right user.

Outbound
NetSapiens userSends a text from their NetSapiens app or portal
NetSapiens coreSMS Advanced API posts it to the everymessage carrier
everymessageChecks, sends and tracks delivery
Customer’s mobileReceives the SMS
Inbound
Customer’s mobileReplies to your everymessage number
everymessageReceives the reply and calls your webhook
NetSapiens coreReads the message and routes it
NetSapiens userSees the reply in the conversation
Outbound SMS uses the NetSapiens SMS Advanced API; inbound replies arrive by webhook.

What you need

  • NetSapiens v43 or later with the SMS Advanced API enabled (v44 or later if you want to keep the + on inbound numbers)
  • An everymessage account with API credentials
  • CLI or SSH access to your NetSapiens core server, where the carrier settings live
  • SMS-enabled numbers provisioned on everymessage, for customers to text and reply to

Setting it up

The integration is a short block of carrier settings on the NetSapiens core server, plus a webhook we set against your numbers. These are the steps; the complete configuration follows.

  1. Choose a carrier name. NetSapiens carrier names must be lowercase and 16 characters or fewer, for example everymessage. A name with capital letters makes outbound messages fail silently.
  2. Point the carrier at everymessage. Set the carrier URL to the everymessage send endpoint we give you, with form-encoded requests.
  3. Map the outbound fields. NetSapiens’ from, to and text values map to the everymessage sender, numbers and message fields.
  4. Add your API key. Your everymessage API key is added as a custom outbound field, so it’s included in every request.
  5. Set the number format. everymessage expects international numbers without a leading +, for example 447700900123, so the outbound plus options are turned off.
  6. Set up inbound. Send us your NetSapiens inbound webhook URL, including your carrier name, and we’ll set it against your numbers. On the NetSapiens side, map the inbound number, sender and message fields, and tell NetSapiens where to find them in our payload.
NetSapiens settingeverymessage fieldWhat it holds
outboundFromsenderYour sender ID or number
outboundTonumbersThe recipient’s number
outboundTextmessageThe message text
inboundToinboxNumberYour everymessage number that received the reply
inboundFromsenderThe customer’s mobile number
inboundTextcontentThe reply text

Carrier API configuration

This is the complete carrier configuration. Add it to /etc/netsapiens/api_config.php on your NetSapiens core server (or nsconfig_include.php, depending on your deployment), and replace the values in capitals:

  • FQDN in the URL: the everymessage API address we give you.
  • BASE64_ENCODED_USERNAME_PASSWORD: your everymessage API key, which is your API username and password in the form username:password, Base64-encoded.
// everymessage SMS carrier configuration

// API endpoint
Configure::write('NSCarrier.everymessage.url',
  "https://FQDN/send");

// Content type
Configure::write('NSCarrier.everymessage.content_type',
  'application/x-www-form-urlencoded');

// Outbound parameter mapping
Configure::write('NSCarrier.everymessage.outboundFrom', "sender");
Configure::write('NSCarrier.everymessage.outboundTo', "numbers");
Configure::write('NSCarrier.everymessage.outboundText', "message");

// Number formatting (no plus prefix)
Configure::write('NSCarrier.everymessage.outboundToPlus', false);
Configure::write('NSCarrier.everymessage.outboundFromPlus', false);

// Authentication via apiKey form field
Configure::write('NSCarrier.everymessage.customOutboundJsonFields',
  "apiKey");
Configure::write('NSCarrier.everymessage.customOutboundJsonFields.apiKey',
  "BASE64_ENCODED_USERNAME_PASSWORD");

// Inbound: messages arrive inside a "list" array
Configure::write('NSCarrier.everymessage.customNestedInboundFields',
  ["list", 0]);

// Inbound parameter mapping
Configure::write('NSCarrier.everymessage.inboundTo', "inboxNumber");
Configure::write('NSCarrier.everymessage.inboundFrom', "sender");
Configure::write('NSCarrier.everymessage.inboundText', "content");

Inbound sender numbers arrive in international format with a +, for example +447700900123. If your deployment expects the +, NetSapiens v44 and later can keep it:

// Keep the + on inbound numbers (v44 and later)
Configure::write('NSCarrier.everymessage.inboundToPlus', true);
Configure::write('NSCarrier.everymessage.inboundFromPlus', true);

Inbound webhook URL

Send us your NetSapiens inbound webhook URL and we’ll set it against your everymessage numbers. Replace FQDN with your NetSapiens server’s address, and use the same carrier name as in your configuration:

https://FQDN/ns-api/?object=sms&action=create&inboundSMS=true&nsCarrier=everymessage

Replies are delivered inside a list array, which is why the configuration tells NetSapiens to read the first item with ["list", 0]:

{
  "list": [
    {
      "type": "INBOUND_MESSAGE",
      "messageId": 987,
      "sender": "+447700900123",
      "inboxName": "support",
      "inboxNumber": "447700900456",
      "content": "Yes, please book me in",
      "dateTime": "2026-10-13T09:15:04.511Z"
    }
  ]
}

Test your credentials

Before testing through NetSapiens, check your API key with a direct request in test mode. test=true validates the request without sending the message or using credit, and a successful response includes "status": "success".

curl -X POST "https://FQDN/send" \
  -d "apiKey=BASE64_ENCODED_USERNAME_PASSWORD" \
  -d "sender=YourCompany" \
  -d "message=Test from NetSapiens" \
  -d "numbers=447700900123" \
  -d "test=true"

Then send a text from NetSapiens and check the messaging log (tail -f path-to-api/tmp/logs/messaging.log) for NS_SMS200. For replies, look for (Messages.dispatch) create1, which shows the webhook arrived.

Common problems and fixes

SymptomLikely causeFix
Outbound fails with no errorCarrier name has capital lettersUse an all-lowercase carrier name
Outbound fails with HTTP 401API key is wrongCheck the API key in the custom outbound field
Outbound fails with HTTP 400A field is missingCheck the from, to and text mappings
Numbers rejectedWrong number formatSend international numbers without a +
Replies don’t arriveWebhook URL incompleteCheck the URL includes your carrier name and server address
Replies arrive emptyInbound fields not mappedCheck the nested inbound setting and the inbound field mappings

Why use everymessage as your NetSapiens SMS carrier

UK numbers and sender IDs

Two-way UK numbers for replies, and branded sender IDs for one-way messages, checked against UK network rules at set-up.

Built for volume

Multiple carrier routes and sending that can burst to 1 million SMS per hour, for everything from one-to-one conversations to large campaigns.

Delivery tracking

Delivery reports for every message in the everymessage portal and through the API, so you can see what reached each customer.

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 also provides RCS, WhatsApp and email, so you can grow your messaging with one supplier.

UK support

Our own UK team helps you configure the carrier, set up your numbers and test the integration.

Using a different platform? See our Business SMS page for every way to connect, including the SMS API, SMPP, email-to-SMS and Amazon Connect.

Frequently asked questions

Can NetSapiens send SMS through everymessage?

Yes. NetSapiens v43 and later can use everymessage as an SMS carrier through the NetSapiens SMS Advanced API. Outbound messages are sent to the everymessage gateway, and inbound messages are forwarded to NetSapiens by webhook.

Which version of NetSapiens do I need?

NetSapiens v43 or later with the SMS Advanced API enabled. Keeping the + on inbound numbers needs v44 or later.

Does it support two-way SMS?

Yes. Customers’ replies to your everymessage numbers are forwarded to your NetSapiens server by webhook, so users see them in NetSapiens alongside their outbound messages.

Do I need to write any code?

No. The integration is configuration only: a block of carrier settings on the NetSapiens core server, plus an inbound webhook URL that we set against your numbers.

What number format does everymessage use?

Outbound numbers are sent in international format without a leading +, for example 447700900123. Inbound sender numbers arrive in international format with a +, for example +447700900123.

Can I test without sending messages?

Yes. The everymessage send API has a test mode that checks a request is valid without sending the message or using credit, so you can confirm your credentials and settings before going live.

Add SMS to your NetSapiens platform

Get your API credentials, numbers and our full NetSapiens integration guide, and we’ll help you test it end to end.