Mass push notifications with a 0.5% CTR and growing unsubscribe rates — a consequence of lacking segmentation. A push with a relevant offer (a discount on a category the user browsed) yields a 4–8% CTR. That's the difference in approach: not "everyone about everything," but a specific message to a specific segment. Our experience shows that properly configured segmentation increases retention by 15–20% and saves up to 40% of the ad budget. For a store with a $10,000 monthly ad budget, savings reach $4,000 per month. Contact us — we've implemented such projects for 50+ stores.
Mass mailings annoy users. When a person receives a notification about a product they never searched for, they unsubscribe. Segmented pushes outmass mass blasts by 8 times in CTR (4-8% vs 0.5%). This has been proven across dozens of projects with a base of 5,000+ subscribers.
The push notification infrastructure in Bitrix is built on Firebase Cloud Messaging (FCM) for web and Android, Apple Push Notification Service for iOS (if there's a mobile app), and third-party platforms like OneSignal, Pushwoosh, or SendPulse. For Bitrix integration, the most practical option is OneSignal or a custom token store plus FCM API.
What push notification infrastructure to choose for Bitrix?
The standard 1C-Bitrix module does not include push notifications for an online store. You have to build infrastructure from scratch. We use a proven architecture: storing tokens in a custom table, updating segmentation attributes via Bitrix events. This provides full control and flexibility.
Token and user attribute storage
Push subscription tokens are stored in a user table:
CREATE TABLE custom_push_tokens (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT,
token TEXT NOT NULL,
platform ENUM('web', 'android', 'ios') DEFAULT 'web',
created_at DATETIME,
last_active DATETIME,
INDEX idx_user (user_id),
INDEX idx_platform (platform)
);
Attributes for segmentation are stored separately:
CREATE TABLE custom_push_user_attrs (
user_id INT,
attr_key VARCHAR(100),
attr_value VARCHAR(255),
updated_at DATETIME,
PRIMARY KEY (user_id, attr_key)
);
Attributes are updated via Bitrix events: category view → last_category_viewed, purchase → last_purchase_date and total_orders, cart value → cart_value. According to 1C-Bitrix documentation, the OnSaleOrderSaved event is triggered when an order is saved — this is the perfect trigger for updating attributes. We also use OnSaleBasketItemSaved for the cart and a custom event when a catalog section is viewed. All handlers are subscribed via \Bitrix\Main\EventManager.
To clean expired tokens, an agent runs every 24 hours, deleting records with last_active older than 90 days. This prevents sending to inactive devices and reduces API load.
More details on setting up attribute update triggers
Attribute update triggers are configured by registering handlers in init.php or local/php_interface/init.php. Each handler must be registered using \Bitrix\Main\EventManager::getInstance()->addEventHandler(). For example, to update total_orders we use the OnSaleOrderSaved event. The handler code checks that the order is paid and the status is final, then executes REPLACE INTO custom_push_user_attrs.
Typical push campaign segments
| Segment |
Criteria |
Example Notification |
| Abandoned Cart |
cart_value > 0, last_cart_update > 2h |
"Your cart is waiting. Checkout now" |
| Active Buyers |
total_orders >= 3 in 90 days |
Exclusive offer for loyal customers |
| New Users |
registration_date < 7 days |
Promo code for first order |
| Category Interest |
last_category_viewed = 'electronics' |
Discount on electronics today |
| Lapsed Users |
last_purchase_date > 60 days |
"We miss you" + special offer |
Each segment has its own strategy. Abandoned cart campaigns convert 3 times better than standard reminders, increasing conversion by up to 15%. The "lapsed users" segment brings back up to 8% of customers. Segmented campaigns save budget: instead of mass mailings, you pay only for the target audience.
Sending via FCM
Wrapper class for sending:
class PushSender {
private const FCM_URL = 'https://fcm.googleapis.com/fcm/send';
public function sendToSegment(array $filter, string $title, string $body, array $data = []): void {
$tokens = $this->getTokensByFilter($filter);
// FCM accepts no more than 500 tokens per request
foreach (array_chunk($tokens, 500) as $chunk) {
$this->sendBatch($chunk, $title, $body, $data);
}
}
private function sendBatch(array $tokens, string $title, string $body, array $data): void {
$payload = [
'registration_ids' => $tokens,
'notification' => [
'title' => $title,
'body' => $body,
'icon' => '/favicon-192.png',
'click_action' => $data['url'] ?? '/',
],
'data' => $data,
];
$http = new \Bitrix\Main\Web\HttpClient();
$http->setHeader('Authorization', 'key=' . FCM_SERVER_KEY);
$http->setHeader('Content-Type', 'application/json');
$http->post(self::FCM_URL, json_encode($payload));
}
}
Service comparison: OneSignal simplifies segmentation twice as fast compared to FCM due to built-in filters, but FCM is free for any volume. We help choose the optimal option based on budget and base size.
Which push notification segments drive the most sales growth?
According to our data, leaders by ROI are abandoned cart and personalized recommendations. For example, on a project with an electronics catalog, the "category interest" segment boosted sales by 12% in a month. And the "active buyers" segment increased LTV by 18%. The key is not to overload the user: max 2–3 pushes per week per segment.
Project workflow
-
Analytics: study current base, user behavior, define segments.
-
Design: choose service (FCM/OneSignal), design tables and triggers.
-
Implementation: write code for token storage, attribute updates, sending.
-
Testing: verify segments, CTR, deliverability.
-
Deployment and support: deploy to production, train the team.
Contact us to discuss your project — get a consultation on setting up push notifications. Our engineers will help you choose the optimal solution. Typical project cost starts at $1,500 and saves up to $5,000 annually.
What's included in the result
- Documentation on architecture and API
- Source code with comments
- Configuration of 5–7 segments
- Integration with FCM or OneSignal
- Consultation and support after launch
Timeframes
| Scope |
Timeline |
| Token storage + basic sending |
1–2 days |
| Attributes + 5–7 segments |
2–3 days |
| UI management + delivery analytics |
+2 days |
With proper segmentation, average order value increases by 15%, and ad savings up to 40%. Our implementation experience on 50+ projects guarantees results. Order segmented push notifications in 1C-Bitrix.
What Professional 1C-Bitrix Installation Includes
We start by checking innodb_buffer_pool_size. The default MySQL value (128 MB) is a death sentence for an online store with a catalog of 10,000+ items. We set 70–80% of available RAM on a dedicated server, 50% on VPS. This single setting speeds up the site by 2–3 times compared to the default. We'll assess your project in one day — get a consultation. Contact us to order turnkey installation with performance guarantee.
How to Choose Hosting and Edition for 1C-Bitrix Installation?
BitrixVM is a virtual machine with a pre-installed stack: nginx + Apache, PHP-FPM, MySQL/MariaDB, Sphinx, Push server. For VPS — the best start. Everything is already configured for Bitrix, including OPcache, log rotation, and firewall. Management via web panel on port 8890. Bitrix documentation recommends starting with BitrixVM for predictable performance.
VPS/VDS is the sweet spot. Minimum configuration for a medium online store: 2 vCPU, 4 GB RAM, SSD. Optimal: 4 vCPU, 8 GB RAM. OS: Ubuntu 22.04 or Debian 12. If not BitrixVM, we configure the stack manually for the task. Virtual hosting — only for business cards and landing pages. Requirements: PHP 8.0+, MySQL 5.7+ / MariaDB 10.0+, 512 MB RAM, .htaccess. 1C-Bitrix hosting partners guarantee compatibility. Dedicated server — for highload. Typical architecture: web server separate, database separate, Redis/Memcached separate. For Enterprise edition — web cluster with load balancer. Cloud (Yandex Cloud, VK Cloud, Selectel) — when load spikes: sales, seasonal peaks. Autoscaling via Managed Kubernetes or simple VM vertical scaling.
Choosing the edition is equally important. A common mistake: choosing "Small Business" for a store that grows to B2B with wholesale prices and three warehouses in six months. Upgrading to "Business" — pay the difference, data is not lost, but it's better to plan ahead. Our specialists select the edition for current tasks and with room for growth. For example, the "Business" license (about 35,000 RUB) pays off through multi-warehouse and 1C exchange, while the wrong choice can lead to a loss of up to 30,000 RUB monthly on excess resources.
| Edition |
For Whom |
Key Limitation |
| Start |
Business cards, landing pages |
No infoblocks 2.0, no trade catalog |
| Standard |
Corporate sites |
No e-commerce module |
| Small Business |
Small stores |
1 price type, 1 warehouse, no 1C exchange |
| Business |
Medium stores, B2B |
Multi-warehouse, multicurrency, CommerceML |
| Enterprise |
Highload, cluster |
Web cluster, CDN, multisite |
What Server Settings Are Critical for 1C-Bitrix?
Web Server and PHP
nginx as reverse proxy + Apache (mod_php) or nginx + PHP-FPM directly. The second option saves memory — Apache is not needed. But some Bitrix modules use .htaccess, so for compatibility we sometimes keep Apache. nginx configuration: fastcgi_read_timeout 300 — for long operations (1C import), client_max_body_size 1024m — large file uploads. Block access to .settings.php, .settings_extra.php, bitrix/.settings.php — they contain database passwords. Rewrite rules from urlrewrite.php — Bitrix generates them, but with nginx + PHP-FPM they need to be duplicated. PHP 8.0–8.2 with extensions: mbstring, curl, gd, xml, json, opcache, redis/memcached. Key php.ini settings: opcache.memory_consumption=256, opcache.max_accelerated_files=20000, max_execution_time=300, memory_limit=512M, upload_max_filesize=100M, post_max_size=128M.
Database and Caching
MySQL/MariaDB. Key my.cnf parameters: innodb_buffer_pool_size — 70–80% RAM, innodb_log_file_size=256M, tmp_table_size=256M, max_heap_table_size=256M, thread_pool_size — number of CPU cores. Encoding utf8mb4 mandatory, otherwise emoji and special characters break. Redis is preferable to Memcached for Bitrix — supports persistent connections and is more reliable. In production, Redis handles concurrent writes three times faster than Memcached under typical load. Configure in .settings_extra.php:
'cache' => ['value' => ['type' => ['class_name' => '\\Bitrix\\Main\\Data\\CacheEngineRedis']]]
'session' => ['value' => ['mode' => 'default', 'handlers' => ['general' => ['type' => 'redis']]]]
Example Redis configuration for Bitrix
sudo apt install redis-server
sudo systemctl enable redis
Add to .settings_extra.php as above.
SSL, Email, and Cron
SSL — Let's Encrypt via certbot in 90% of cases. Redirect HTTP → HTTPS (301), HSTS, TLS 1.2/1.3, OCSP Stapling. In Bitrix, switch to HTTPS in the main module settings. Email: abandon mail() — connect SMTP (Yandex.Mail for domain, Mail.ru for Business). Be sure to configure SPF, DKIM, DMARC. Without SPF, emails go to spam. Test deliverability via mail-tester.com — score 9+/10. Cron: Bitrix agents switch to system cron — * * * * * /usr/bin/php /var/www/bitrix/modules/main/tools/cron_events.php. Schedule 1C exchange (15–60 min), search reindex, backups (mysqldump + rsync, rotation 7+4), temporary file cleanup.
Security and Administration
File system: owner www-data, directories 755, files 644, upload 775. nginx blocks access to configuration files. Enable Bitrix Proactive Protection — WAF, activity control (block after 5 failed attempts), kernel integrity check. For admin panel: two-factor authentication via Google Authenticator or OTP, restrict access by IP via nginx for paranoid.
How Long Does 1C-Bitrix Installation and Configuration Take?
| Task |
Timeline |
| Installation on virtual hosting |
2–4 hours |
| Installation on VPS with stack configuration |
1–2 days |
| Installation on dedicated with architecture design |
2–5 days |
| SSL + email + cron + security |
1–2 days |
| Backup and monitoring setup |
0.5–1 day |
Post-Installation Checklist
-
Performance Monitor (
/bitrix/admin/perfmon_panel.php) — aim for 30+ points. Below 20 means serious configuration issues.
- System Check — automatic check of all parameters. Red items must be fixed, yellow — case by case.
- Security Scanner — check for typical vulnerabilities.
- PageSpeed Insights — TTFB < 200ms on VPS, LCP < 2.5s.
- Test 1C exchange — if integration is planned, verify CommerceML exchange before launch.
Additionally, check software versions, caching settings, cron operation, SSL certificate, SPF/DKIM/DMARC, access rights, delete default users and pages. For projects with 54-FZ, ensure fiscalization is configured via OFD provider.
Deliverables
- Fully configured server for 1C-Bitrix with MySQL, PHP, nginx optimization.
- Installed and activated license of the required edition.
- SSL certificate, email settings, cron and backups.
- Documentation: all configuration parameters, access credentials, cron tasks.
- Content manager training: how to log into admin panel, add products, upload images.
- Post-installation support for 30 days — consultations on settings.
Why Trust Professionals with Installation?
Incorrect installation means lost time and money. We've seen projects where a store on "Start" couldn't handle 50 visitors because innodb_buffer_pool_size wasn't configured. After migrating to VPS with correct configuration, the site "flew". Incorrect configuration can cost 30,000 RUB monthly due to excessive resource consumption. You get a ready-made architecture that scales. Order turnkey 1C-Bitrix installation — get a reliable platform for business growth. Contact us for a free consultation: we'll calculate the cost and time for your project. Over 7 years of experience, 120+ Bitrix projects implemented, including highload stores with million-item catalogs. Get in touch — we'll help configure Bitrix for your project.