Integration of life:) SMS (Belarus) with Bitrix24
The company works in Bitrix24, the client database is in the CRM, and SMS notifications are sent manually through the life:) account. A manager opens a deal card, copies the phone number, goes to the life:) interface, pastes the number, writes the text, sends it. Delivery status is somewhere in the life:) account; the CRM doesn't know about it. There are no automated notifications by funnel stages. Integration directly connects Bitrix24 and life:) SMS: sending from CRM, automation via robots, delivery status returned to the card.
life:) SMS API and SMPP: Protocol Choice
life:) (Turkcell brand, operator #3 in Belarus) provides an SMS gateway through two protocols:
HTTP API — REST interface for sending SMS via HTTP/HTTPS requests. Simple integration: one request—one message. Suitable for transactional SMS and small volumes (up to a few hundred messages per day).
SMPP (Short Message Peer-to-Peer) — binary protocol with persistent TCP connection. Advantages: higher sending speed (100+ SMS/sec), built-in delivery reports on the same connection, lower latency. Suitable for mass distributions.
For integration with Bitrix24, the choice depends on volume:
| Criterion | HTTP API | SMPP |
|---|---|---|
| Volume | Up to 500 SMS/day | From 500 SMS/day |
| Speed | 5–10 SMS/sec | 50–100+ SMS/sec |
| Delivery reports | Callback URL | Inline over connection |
| Infrastructure | Simple handler (PHP/Node.js) | SMPP client (daemon, persistent process) |
| Implementation cost | Lower | Higher (requires server with daemon) |
For most implementations, we use HTTP API. SMPP is connected for mass distributions via CRM marketing, when a campaign sends 5000+ messages.
Registering a Provider in Bitrix24
Connection via the messageservice module:
messageservice.sender.add({
CODE: "life_sms_by",
TYPE: "SMS",
HANDLER: "https://your-domain.com/handler/life-sms.php"
})
The handler receives requests from Bitrix24 and translates them to the life:) API:
- Receives POST from Bitrix24:
message_to,message_body,message_id. - Normalizes the number to
+375XXXXXXXXXformat (life:) API requires international format). - Sends a request to the life:) API: endpoint, authorization data, number, text, Sender ID.
- Receives a response: message identifier, queuing status.
- Saves the mapping
message_id(Bitrix24) ↔msg_id(life:)). - Returns confirmation to Bitrix24.
Sender ID: Registration with life:)
life:) Belarus requires registration of an alphabetic sender name. Procedure:
- Request via life:) manager or corporate client personal account.
- Name — up to 11 Latin characters. Cyrillic is not supported in Sender ID.
- Attached: copy of organization's registration certificate, description of distribution purpose.
- Approval time — 5 to 10 business days.
- Possible to register multiple names: one for transactional, another for marketing SMS.
Without a registered Sender ID, the life:) API rejects the send request.
Delivery Reports: Obtaining Delivery Status
life:) supports delivery reports (DLR) in two ways:
Via HTTP callback:
- The handler URL is specified in life:) settings.
- When the status changes, life:) sends POST with
msg_idandstatus. - The handler finds the associated
message_idin Bitrix24 and updates the status.
Via SMPP (when using SMPP protocol):
- DLR arrives over the same SMPP connection as
deliver_smPDU. - Parsing:
id,stat(DELIVRD, EXPIRED, UNDELIV, REJECTD). - Faster than HTTP callback — status arrives almost instantly.
life:) statuses:
| Status | Description | In Bitrix24 |
|---|---|---|
| DELIVRD | Delivered | Delivered |
| EXPIRED | Delivery deadline expired | Not delivered |
| UNDELIV | Unavailable | Not delivered |
| REJECTD | Rejected | Error |
| ACCEPTD | Accepted, awaiting delivery | Sent |
Without DLR processing, all messages in the CRM show "Sent", even if the subscriber is unavailable for a week.
Belarusian Phone Number Format
The handler normalizes numbers from the Bitrix24 database:
-
+375251234567— no changes -
80251234567→+375251234567 -
375 25 123-45-67→+375251234567 -
25 1234567→+375251234567
Mobile operator codes in Belarus: 25, 29, 33, 44 — life:) historically uses 25 and 29 (partially). SMS via life:) gateway are sent to numbers of any operator—not just life:).
Automation via CRM Robots
Typical scenarios:
Sales funnel:
- New lead → SMS "{NAME}, request received. We'll contact you within 15 minutes"
- Deal "Awaiting payment" → SMS with payment link (ERIP or bank acquiring)
- Deal closed → SMS with thanks
Service and reminders:
- Appointment booking → reminder one day before
- Missed call → automatic SMS
CRM field substitution in text: #CONTACT_NAME#, #DEAL_TITLE#, #DEAL_UF_XXX#.
Cost Optimization
- Message length: Cyrillic — 70 characters per segment (67 when concatenating). Each character beyond 70 — second segment. Templates should fit 70 characters.
-
Duplicate filtering: add a condition to the robot—send only if
UF_CRM_SMS_SENTfield is empty. - Number verification: before mass distribution, run the database through normalization and remove invalid numbers.
Implementation Timeline
| Scope | What's included | Timeline |
|---|---|---|
| Basic (HTTP API) | life:) SMS connection, manual sending, one robot | 3–5 days |
| Standard | 3–5 robots, callback DLR, phone number normalization | 1 week |
| Extended (SMPP) | SMPP client, mass distributions, inline DLR, analytics | 2–3 weeks |
What We Configure
- Registration of life:) SMS as a provider via
messageservice.sender.add - Handler for requests from Bitrix24 → life:) SMS API (HTTP or SMPP)
- Assistance with Sender ID registration with life:)
- Normalization of Belarusian phone numbers
- Processing delivery reports (callback or SMPP inline)
- CRM robots for transactional SMS by funnel stages
- Mass distributions via CRM marketing
- SMS templates with CRM field substitution
- Testing: manual sending, robots, DLR, mass distribution to test segment







