Custom Business Process Actions for Bitrix24: Turnkey Development
Standard Bitrix24 Business Process actions — send email, update field, create task. That's not enough for integration tasks. For example, when a approval process needs to fetch data from 1C, create a document in SharePoint, or send a message to Telegram. Our engineers with 10+ years of experience develop custom actions for business processes turnkey. Over 10 years we have completed more than 500 automation projects. A custom action is a PHP class inheriting \Bitrix\Bizproc\Activity\BaseActivity or CBPActivity. It is registered as a handler for the OnBizProcActivityList event. Unlike CRM robots, a custom action is available in all business process editors — for lists, disk, CRM. We develop both simple synchronous actions and asynchronous ones with retry logic. Get a consultation — we will assess your task and propose the optimal solution.
Why Custom Actions?
A custom action is a PHP class inheriting \Bitrix\Bizproc\Activity\BaseActivity (modern API) or CBPActivity. It is registered as a handler for the OnBizProcActivityList event. Unlike CRM robots, a custom action is available in all business process editors — for lists, disk, CRM. We develop both simple synchronous actions and asynchronous ones with retry logic.
How to Choose: REST API or PHP Module?
| Criterion |
REST API |
PHP Module |
| Cloud |
Yes |
No |
| On-premise |
Yes |
Yes |
| Execution time |
5 sec limit (sync) |
Unlimited |
| Deployment complexity |
Low (webhook) |
High (file modification) |
| Return values |
Via callback |
Directly |
| Version management |
Automatic |
Manual |
For quick integration, REST API is better; for complex logic inside on-premise, PHP module is better. We will assess your scenario for free.
How to Develop a Custom Action via REST API?
Register using the bizproc.activity.add method according to the official Bitrix24 documentation. Example:
$client->call('bizproc.activity.add', [
'CODE' => 'GET_1C_PRICE',
'HANDLER' => 'https://my-server.com/bp-activity-handler',
'AUTH_USER_ID' => 1,
'NAME' => [
'ru' => 'Получить цену из 1С',
'en' => 'Get price from 1C',
],
'USE_SUBSCRIPTION' => 'Y',
'PROPERTIES' => [
'article' => [
'Name' => ['ru' => 'Артикул товара'],
'Type' => 'string',
'Required' => 'Y',
],
],
'RETURN_PROPERTIES' => [
'price' => [
'Name' => ['ru' => 'Цена из 1С'],
'Type' => 'double',
],
'available' => [
'Name' => ['ru' => 'В наличии'],
'Type' => 'bool',
],
],
]);
USE_SUBSCRIPTION: Y — mandatory if the action takes longer than 5 seconds. Bitrix24 returns 200 immediately, and the handler asynchronously sends the result via bizproc.event.send. Without this token, the workflow will hang.
Development steps:
- Define the code and parameters — set a unique
CODE and describe PROPERTIES, RETURN_PROPERTIES.
- Call
bizproc.activity.add — pass the HANDLER URL, set USE_SUBSCRIPTION to Y for async actions.
- Implement the handler — a script on your server receives a POST request from Bitrix24, executes business logic, and sends the result via
bizproc.event.send with the correct event_token.
- Test — run the process with various scenarios, check error handling and timeouts.
Developing a PHP Action for On-Premise Bitrix24
The class is registered in the file system. Structure:
class My1CPriceActivity extends \Bitrix\Bizproc\Activity\BaseActivity
{
protected function execute(array &$arProperties)
{
$article = $this->getFieldValue('article');
$result = \My1CConnector::getPrice($article);
if ($result->isSuccess()) {
$this->setResultValue('price', $result->getPrice());
$this->setResultValue('available', $result->getAvailable());
} else {
$this->writeToTrackingService(
'Ошибка запроса к 1С: ' . $result->getErrorMessage()
);
}
return \CBPActivityExecutionStatus::Closed;
}
public static function getPropertiesDialog($params)
{
// Render configuration form
}
}
The writeToTrackingService method writes to the BP log — important for debugging.
Real Case: Automating approval of requests with credit limit verification
Task: a distributor, process for approving shipment requests with deferred payment. Need to get the credit limit and debt from CRM, then automatically approve or route to manual approval.
Solution: developed a custom PHP action CheckCreditLimitActivity. Parameters: company ID in CRM, request amount. It queries the internal API of the financial system via HTTP, returns variables available_limit and approval_required. Then in the BP, a condition: if approval_required = true — task to financial director, otherwise — automatic approval.
Challenge: the financial system was unavailable in 3–5% of cases. Added retry logic: the action repeats the request for up to 30 minutes via agent, if unavailable — transfers the request to manual approval with notification.
Result: the approval cycle reduced from 4 hours to 20 minutes for automatic requests (68% of cases). The cost of developing this case was 45,000 rubles.
Common Mistakes in Development
- Timeout without USE_SUBSCRIPTION — synchronous handler longer than 5 seconds, process hangs.
- Missing event_token — result does not reach the BP, workflow waits indefinitely.
- Unhandled exception in PHP action — crashes the entire workflow. Always use try-catch.
What's Included?
- Analysis — breakdown of business process and integration requirements.
- Design — architecture choice (REST/PHP), protocol agreement.
- Implementation — coding, action registration, parameter form configuration.
- Testing — on a test process with edge cases.
- Documentation — installation and usage instructions.
- Support — 30-day warranty support.
Development Timeline
| Task |
Time |
| Simple synchronous action |
2–3 days |
| Asynchronous action with retry |
4–6 days |
| PHP action with UI form |
5–7 days |
| Testing, debugging, documentation |
2–3 days |
Turnkey custom action development takes 1–2 weeks depending on complexity. Savings from implementation — up to 100,000 rubles per month. Project assessment is free. Contact us to discuss your task — get a consultation and commercial offer.
How Choosing the Wrong 1C-Bitrix Edition Breaks Your Project
You bought Small Business, launched a store, traffic grew to 5,000 unique visitors per day — and the site crashed. Composite cache is only available in Business, web cluster too. An upgrade costs the difference in license price plus work to configure new modules. Choosing and configuring the right 1C-Bitrix edition upfront saves up to 40% on licensing. It also avoids unplanned upgrade costs — saving on average 15,000–30,000 RUB when upgrading from Small Business to Business in advance instead of urgently. Over 8 years of working with Bitrix, we have performed over 200 upgrades and seen all typical mistakes: from buying Start for a 50,000-product catalog to using Business for a landing page with 100 visits per day. Our principle is to select the edition that matches your real needs and configure it so you do not overpay for unnecessary modules — and also do not hit a ceiling at the first traffic spike.
1C-Bitrix Editions: Site Management
Four editions, and the difference lies not in the number of features but in the available core modules. The official 1C-Bitrix documentation states that composite cache is only available in Business and above.
| Module / Feature |
Start |
Standard |
Small Business |
Business |
| Information blocks |
+ |
+ |
+ |
+ |
| Web forms |
+ |
+ |
+ |
+ |
| Basic SEO |
+ |
+ |
+ |
+ |
| Blog, forum, social network |
– |
+ |
+ |
+ |
sale (e-store) module |
– |
– |
+ |
+ |
1C exchange (catalog) |
– |
– |
+ |
+ |
Composite cache (main.composite) |
– |
– |
– |
+ |
Web cluster (cluster) |
– |
– |
– |
+ |
| Multisite |
– |
– |
– |
+ |
| REST API |
– |
– |
– |
+ |
Start is minimal, only content modules: iblock, form, basic SEO. For business card sites and landing pages. No sale module — cannot build a store.
Standard adds communication: blog, social network, forum, extended tech support. For corporate sites and portals with user-generated content.
Small Business is the first edition with e-commerce: the sale module appears. Comfortable ceiling is up to about 10,000 products without serious optimization. For small stores and catalogs with ordering.
Business is the full set: composite cache (TTFB drops from 800 ms to 50–80 ms — 10–15 times faster), web cluster, multisite, multi-warehouse, REST API. For large stores, marketplaces, projects with 10,000+ visitors per day.
How Does Composite Cache Reduce Server Load?
Composite cache (main.composite) speeds up page loading 10–15 times compared to dynamic generation. For a store with 3,000+ visitors per day, without composite the server starts struggling: average response time increases, database overload, checkout pages time out. Composite solves this radically — HTML is served by nginx without running PHP. It is important to correctly configure exclude masks for cart, personal account, and pages requiring real-time data. We configure this on every upgrade to Business.
1C-Bitrix official documentation: "Composite cache is available only in Business edition and higher."
Avoiding Common Mistakes in Edition Selection
Typical Mistakes
- Buying Start for an online store — no
sale module, you either need to upgrade immediately or hack a custom ordering system.
- Choosing Small Business for a project that will grow to 10,000 products in six months — composite cache cannot be enabled, upgrading to Business costs the license difference plus configuration work.
- Using Business for a landing page — overpaying for features that will never be used.
Choosing an Edition for an Online Store
| Store Type |
Recommended Edition |
Key Limitation |
| Up to 1,000 products, traffic up to 500 unique visitors/day |
Small Business |
No composite cache (TTFB > 500 ms at peaks) |
| 1,000–10,000 products, 500–5,000 unique visitors/day |
Small Business with tuning or Business (immediately) |
Load hits PHP-FPM limit |
| 10,000+ products, 5,000+ unique visitors/day |
Business |
Need composite + cluster |
| Marketplace, 100,000+ products |
Business + web cluster |
Horizontal scaling mandatory |
Hard Criteria for Edition Selection
By modules:
- 1C exchange (
catalog) → at least Small Business
- Composite cache (
main.composite) → only Business
- Web cluster (
cluster) → only Business
- Multisite → only Business
- REST API → only Business
By load:
- Up to 1,000 unique visitors/day — any edition can handle
- 1,000–10,000 unique visitors/day — Small Business with nginx/php-fpm tuning hits a ceiling. Business with composite cache is the right choice
- 10,000+ unique visitors/day — only Business with composite and cluster
By budget:
- The price difference between editions is 2-5x
- Upgrade at any time — pay the difference in license cost
- Our principle: take the minimum sufficient. But if you know you will need composite in six months, get Business immediately, because an upgrade also involves configuration work. The total upgrade cost (license difference + setup) typically ranges from 10,000 to 50,000 RUB.
What Happens If You Ignore License Renewal?
An active license provides updates — new versions, security patches, bug fixes, marketplace access, and vendor tech support. When it expires, the site continues to work but remains without updates. For stores this is dangerous — security patches fix vulnerabilities in sale, catalog, main modules. Data leaks from b_sale_order or b_user are just a matter of time. Renewal costs a fraction of buying a new license — typically 20–30% of the full price. Regular renewal is insurance against unpatched CVEs.
Cost Benefits of Planned Edition Upgrades
1C-Bitrix allows upgrading without reinstallation — data is preserved. Process:
- Pay the difference in license cost
- Activate new key: Settings → Updates → Registration
- Install newly available modules via admin panel
- Configure new functionality
- Test compatibility
What we do during an upgrade:
- Check custom code for conflicts with new modules — especially custom event handlers like
OnBeforeOrderAdd, OnSaleBasketSaved
- Enable and configure composite cache — correct exclude masks for dynamic pages (cart, checkout, personal account)
- Configure multi-warehouse if needed —
b_catalog_store, warehouse selection rules
- Run full functional testing on staging
- Document changes
As a result, you get:
- A working site on the new edition with no data loss
- Configured composite cache (if upgraded to Business)
- Testing report and recommendations for further optimization
- Access to staging and documentation of changes
Integrating Site Management with Bitrix24
A common scenario: site on 1C-Bitrix + CRM in Bitrix24. Orders from b_sale_order automatically become leads or deals, unified authorization, client base synchronization. Site forms (form or custom) feed into the CRM funnel. These are two separate licenses and two separate products — integration between them is standard and stable.
Practical Recommendations
- Do not skimp on the edition if you know the functionality will be needed in six months. Upgrading costs the same difference plus configuration and testing.
- Business for projects with growth ambitions — composite cache pays for the price difference at the first traffic spike. Without composite, 3,000+ unique visitors/day will strain the server.
- Bitrix24 and Site Management are different products with different licenses. Confusion here costs money.
- Renew your license annually — renewal is much cheaper than buying a new one, and without updates you risk unpatched CVEs.
What We Offer: Turnkey Selection and Configuration
We do not just consult — we handle the full cycle: analyze your current project, select the edition, purchase the license (if needed), migrate, configure all modules, and train your team. As part of the service, you get:
- An edition selection report with justification
- Migration plan (if upgrading)
- Fully set up staging with the new edition
- Composite cache and cluster configuration (if necessary)
- Documentation of the new configuration
- Guarantee of site functionality after the transition
Contact us today — we can assess your project within one business day and propose the optimal configuration. Receive a personalized cost estimate for selecting and configuring your 1C-Bitrix edition right now.