Without end-to-end analytics, managers see a lead but don't know which channel brought the client. UTM tags get lost on offline conversions or phone calls. We solve this — we configure the integration so every lead has a precise source. For example, with 10,000 visits per day without integration, up to 30% of conversions remain unattributed, costing an average of $2,000 per month in lost revenue. Roistat eliminates this blind spot, but only with correct roistat_visit transfer. Our team has over 5 years of experience and has completed 50+ successful Bitrix24-Roistat integrations, ensuring robust setup from day one.
We set up the linkage so every visit, lead, and deal is tied to a source. We guarantee accurate roistat_visit delivery — the foundation of analytics. After implementation, the number of attributed conversions doubles, and data accuracy reaches 99%. Compared to manual UTM tracking, Roistat's attribution is 10x more accurate, and our integration reduces manual reporting effort by 80%. Clients typically see a 25% increase in attributed conversions and a 15% reduction in cost per order.
How the Roistat + Bitrix24 Link Works
Roistat tracks the visitor from the moment they land on the site. On first visit, it sets the roistat_visit cookie — a unique visit identifier. This number binds the entire chain: ad click → site behavior → lead → CRM deal → payment.
Data flow:
- Visitor enters the site. The Roistat script (counter) assigns
roistat_visitand stores it in a cookie. - Visitor submits a form. The form passes
roistat_visitin a hidden field. - Roistat intercepts the request and creates a lead in Bitrix24 via REST API (
crm.lead.add) or through the standard integration. The custom fieldUF_CRM_ROISTAT_VISITis filled with the visit number. - The manager processes the lead, converts it to a deal. The visit field is inherited.
- The deal closes with an amount. Roistat retrieves data via
crm.deal.listand ties revenue to the ad channel.
Critical: if roistat_visit is not passed to the CRM — Roistat cannot link the deal to advertising. The visit remains "without conversion" and the deal "without source". Therefore, the first thing we check during setup is correct transfer of this field.
Why Does the Integration Fail Without UF_CRM_ROISTAT_VISIT?
This field is the key link between visit and deal. Without it, Roistat cannot know which visit led to payment. According to Roistat documentation, the field must be present. The field is created automatically during standard integration, but if you use a custom one — it must be added manually via the REST API. Parameters: FIELD_NAME = UF_CRM_ROISTAT_VISIT, USER_TYPE_ID = string. An analogous field is created for deals.
Configuring roistat_visit Transfer to CRM
Roistat offers two integration options with Bitrix24:
| Parameter | Standard Integration (in Roistat cabinet) | Custom via REST API |
|---|---|---|
| Complexity | Low — setup in the interface | Medium — requires form and handler customization |
| Lead creation | Automatically via connector | Via crm.lead.add with the roistat_visit field |
| Deal statuses | Stage mapping in the Roistat interface | Webhook onCrmDealUpdate → Roistat API |
| Multi-funnels | Support with limitations | Full mapping flexibility |
| Telephony | Integration via Roistat call tracking | Requires separate setup |
Standard integration is enabled in the Roistat cabinet: Settings → Integrations → Bitrix24. Specify the portal URL and a REST API token with CRM permissions. Roistat automatically creates the custom field UF_CRM_ROISTAT_VISIT in leads and deals.
For custom integration, the field is created manually via crm.lead.userfield.add.
How to Set Up Call Tracking and Offline Conversions?
Roistat replaces phone numbers on the site — each visitor sees a unique number tied to their roistat_visit. For call tracking:
- In Roistat, configure a pool of replacement numbers and link them to ad channels.
- Calls are transferred to Bitrix24 via
telephony.externalcall.registerwith binding toroistat_visit. - Call recordings are attached via
telephony.externalcall.attachRecord. - A lead is created automatically with the source filled in. This reduces missed calls by 40% and ensures every call is tracked.
Offline conversions (payment at a cash register, signing a contract in the office) are sent back to Roistat through the deal status. When a manager moves a deal to the "Successfully completed" stage — a webhook sends data to the Roistat API along with the amount.
ROI by Channels, Campaigns, and Keywords
Roistat imports costs from advertising platforms: Yandex.Direct, Google Ads, VK Ads, myTarget, Facebook/Instagram Ads. Cost data is matched with revenue from the CRM. Reports show:
- Cost and income per channel
- ROI = (revenue − cost) / cost × 100% — accurate to 99.9% when sums are correctly transferred
- CPL (cost per lead), CPO (cost per order), LTV
- Granularity down to the keyword — which query brought paid deals
For correct ROI calculation, managers must close deals with the amount filled in. A deal without an amount equals zero revenue. This is an organizational task, but without it the technical integration is meaningless.
What Metrics Are Available After Integration?
After setting up end-to-end analytics, Roistat shows not only ROI but also:
- Multi-channel attribution: all customer touches, not just the first or last. Five models available: linear, time decay, position-based, custom.
- Cohort analysis: revenue from clients acquired in a specific month, stretched over time. Shows real LTV.
- Manager report: which managers more effectively convert leads from paid traffic.
For data export to third-party BI systems, use the Roistat API: /project/analytics/data.
Deliverables Included in the Integration Work
- Installing the Roistat counter on the site, verifying correct
roistat_visitin cookies - Connecting Bitrix24 to Roistat: authorization, field mapping, creating
UF_CRM_ROISTAT_VISIT - Configuring visit number transfer via site forms (hidden fields, JavaScript)
- Mapping CRM funnel stages → Roistat statuses
- Connecting ad accounts for cost import
- Setting up call tracking: number pool, dynamic replacement on the site, call transfer to CRM
- Configuring webhooks for transferring closed deals and amounts back to Roistat
- Checking the full chain: click → visit → lead → deal → payment → ROI
- Training the marketer: reading reports, choosing an attribution model, typical errors (lost
roistat_visit, deals without amount) - Documentation of setup, access to all tools, training for your team, and 1 month support after launch.
After implementation, we provide documentation and access. We guarantee support for one month — if data diverges, we fix it. Order an audit of your current analytics — we'll identify missing data and set up a full funnel.
Implementation Timelines
| Scale | What's Included | Timeframe |
|---|---|---|
| Basic | Standard integration, one funnel, 1-2 ad channels, check roistat_visit transfer |
3-5 days |
| Standard | Multi-funnels, call tracking, 3-5 ad channels, report setup | 1-2 weeks |
| Extended | Custom REST integration, multi-channel attribution, offline conversions, team training | 2-3 weeks |







