Configuring Mailing Analytics in Bitrix24
The built-in statistics of the sender module in Bitrix24 show Open Rate, Click Rate, unsubscribes, and delivery errors. But for decision-making, this data is usually insufficient: it is unclear which of those who opened the email subsequently placed an order or filled out a form. Setting up comprehensive analytics means building an end-to-end connection from the email to the CRM deal.
What the sender module collects out of the box
Statistics are stored across several tables:
-
b_sender_mailing_chain_table— each sent email: status (SENT,ERROR,UNSUBSCRIBED), send date, contact ID -
b_sender_mailing_chain_table_click— link clicks with tracking labels -
b_sender_posting_recipient— mailing recipients with read flags
Open Rate is calculated based on the tracking pixel load event. An important limitation: Apple Mail Privacy Protection (iOS 15+) pre-loads pixels — this artificially inflates Open Rate for iOS users. In lists with a large share of Apple users, Open Rate can be overstated by 15–25%.
Click Rate is more accurate but depends on whether redirects are configured correctly. If the email contains links without tracking (direct URLs), clicks are not counted.
End-to-end analytics: from email to deal
Bitrix24's built-in statistics do not link an email open to the contact's subsequent actions in CRM. For end-to-end analytics, configure several layers:
UTM tagging of all links. Every link in the template must contain UTM parameters. The minimum set: utm_source, utm_medium, utm_campaign. The variable #{LETTER_ID} allows the email ID to be inserted into utm_content — so in analytics you can see which specific email a user came from.
Goals in Google Analytics. Set up goals on key actions: order placement, form submission, call via call tracking. The utm_medium=email segment in reports will show the email channel's contribution to conversions.
CRM automation. In Bitrix24 via CRM Marketing, you can configure a trigger: if a contact opened the email and did not respond within 3 days — create a task for the manager. This is set up in the Chains section of the sender module without any code.
Setting up reports and dashboards
Standard reports from the sender module are available under CRM Marketing → Statistics. For custom queries — for example, "Open Rate by audience segment for the quarter" — use direct database queries or export to BI tools (Power BI, DataLens, Google Looker Studio).
Example query to retrieve Open Rate by mailing:
SELECT
ml.NAME,
COUNT(DISTINCT mr.ID) AS sent,
COUNT(DISTINCT CASE WHEN mr.DATE_READ IS NOT NULL THEN mr.ID END) AS opened,
ROUND(COUNT(DISTINCT CASE WHEN mr.DATE_READ IS NOT NULL THEN mr.ID END) * 100.0 / COUNT(DISTINCT mr.ID), 2) AS open_rate
FROM b_sender_mailing ml
JOIN b_sender_posting_recipient mr ON mr.MAILING_ID = ml.ID
GROUP BY ml.ID, ml.NAME
ORDER BY open_rate DESC;
For integration with external BI tools, connect PostgreSQL/MySQL directly via a read-only user, or use the Bitrix24 REST API: the crm.marketing.email.stat.get method (available in cloud Bitrix24).
Common analytics problems
Delivery errors are not reviewed. In b_sender_mailing_chain_table, some records have the status ERROR with an SMTP error code. Failing to clean the list of invalid addresses causes Bounce Rate to grow, and the ESP starts penalising the domain's reputation — directly affecting inbox placement.
Unsubscribes are not synced to CRM. A contact unsubscribed from the mailing — the flag in b_sender_contact was updated, but the EMAIL_MARKETING field in the CRM contact card still shows "Subscribed". Configure a handler for the OnSenderMailingUnsubscribe event to synchronise the two.
| Task | Timeline |
|---|---|
| UTM tagging setup and basic reports | 4–8 hours |
| Connecting a BI tool to mailing statistics | 1–3 days |
| End-to-end analytics: email → CRM → sales | 3–7 days |
Pricing is calculated individually after auditing the current mailings and analytics infrastructure.







