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.
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.
- 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. - Point the carrier at everymessage. Set the carrier URL to the everymessage send endpoint we give you, with form-encoded requests.
- Map the outbound fields. NetSapiens’ from, to and text values map to the everymessage
sender,numbersandmessagefields. - Add your API key. Your everymessage API key is added as a custom outbound field, so it’s included in every request.
- Set the number format. everymessage expects international numbers without a leading +, for example
447700900123, so the outbound plus options are turned off. - 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 setting | everymessage field | What it holds |
|---|---|---|
outboundFrom | sender | Your sender ID or number |
outboundTo | numbers | The recipient’s number |
outboundText | message | The message text |
inboundTo | inboxNumber | Your everymessage number that received the reply |
inboundFrom | sender | The customer’s mobile number |
inboundText | content | The 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:
FQDNin 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 formusername: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
| Symptom | Likely cause | Fix |
|---|---|---|
| Outbound fails with no error | Carrier name has capital letters | Use an all-lowercase carrier name |
| Outbound fails with HTTP 401 | API key is wrong | Check the API key in the custom outbound field |
| Outbound fails with HTTP 400 | A field is missing | Check the from, to and text mappings |
| Numbers rejected | Wrong number format | Send international numbers without a + |
| Replies don’t arrive | Webhook URL incomplete | Check the URL includes your carrier name and server address |
| Replies arrive empty | Inbound fields not mapped | Check 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.
