E-commerce8 min read

1C-Bitrix stores: order email that arrives

1C-Bitrix runs the checkout pipeline for a large chunk of Russian e-commerce. Its event-driven mail module is powerful and notoriously easy to misconfigure. Here is the order-notification path that survives Mail.ru and Yandex filtering.

1C-Bitrix ("Bitrix24 Sites" is separate, this article is about the on-premise/self-hosted "1C-Bitrix: Site Management" with the Online Store module) sends mail via PHP mail() unless you intervene. Unlike Shopify or CS-Cart, the intervention is not a single toggle — you need to install an SMTP module and configure it per mail event type.

Order notifications in Bitrix are events (SALE_NEW_ORDER,SALE_STATUS_CHANGED, SALE_ORDER_PAID,SALE_ORDER_CANCEL) bound to mail templates in Settings → System → Mail and SMS → Mail templates. Each template is customisable but each can also be silently broken by a theme update.

The Bitrix-specific fix

Install Bitrix.SMTP or Mail.ru's official Bitrix connector. Point at Unisender, SendPulse or Mail.ru for Business. Publish SPF/DKIM/DMARC. Audit every order-event template individually — do not assume one test covers all.

Bitrix mail events for stores

  • SALE_NEW_ORDER — fires on checkout completion. Template: "Новый заказ" / "New order".
  • SALE_NEW_ORDER_USER — the copy sent to the customer. Separate template, sometimes forgotten.
  • SALE_STATUS_CHANGED — fires for every status transition. One template, variables for the new status.
  • SALE_ORDER_PAID — post-payment receipt. Often missed in tests because payment is mocked in staging.
  • SALE_ORDER_CANCEL — cancellation notice. Low volume but high emotional weight.

Install a real SMTP module

Bitrix Marketplace has several SMTP modules. The ones that work reliably:

  • bitrix.mail (official): ships with 1C-Bitrix editions from version 20+. Basic SMTP only.
  • Pnr.SMTPmail: community module, handles per-event routing.
  • Unisender API integration: uses the Unisender transactional API rather than SMTP. Better error surface.
  • Mail.ru for Business / Yandex 360 connectors: for stores where your whole workspace already lives there.

Configuration example (bitrix.mail + Unisender)

# /bitrix/.settings.php or admin UI
return [
  'email' => [
    'value' => [
      'smtp' => [
        'host' => 'smtp.unisender.com',
        'port' => 587,
        'protocol' => 'tls',
        'login' => 'your_login',
        'password' => getenv('UNISENDER_SMTP_PASSWORD'),
      ],
      'from' => 'orders@yourstore.ru',
      'from_name' => 'Your Store',
    ],
  ],
];
Do not put SMTP password into .settings.php

Bitrix places .settings.php under version control in many deployment setups. Pull secrets from environment variables or a secrets service. If the password ever was in git, rotate it and force-push-overwrite is not enough — assume leaked.

DNS for .ru stores

; yourstore.ru apex, Unisender as relay
yourstore.ru.                      TXT   "v=spf1 include:unisender.com -all"
us._domainkey.yourstore.ru         CNAME  us._domainkey.unisender.com.
_dmarc.yourstore.ru                TXT   "v=DMARC1; p=none; rua=mailto:dmarc@yourstore.ru; adkim=r; aspf=r"

Register the domain with Mail.ru Postmaster and Yandex Postoffice. Both require a verification TXT that you publish once, then ingest DMARC reports to give you visibility you do not otherwise have.

Template review for Bitrix stores

  1. Settings → System → Mail and SMS → Mail templates. Open every SALE_* template.
  2. For each: verify UTF-8 encoding, check the From address is your domain (not #DEFAULT_EMAIL_FROM# if default is wrong), verify plain-text body is present.
  3. Avoid inline style overrides that bloat the message over 100 KB. Bitrix default templates are fine; customisations often break.
  4. Remove marketing blocks (upsells, coupons, reviews CTA) from transactional templates. Put them in a separate post-purchase flow.

Test every event type

Bitrix's admin lets you trigger test emails per template but with synthetic data. That is useful for layout. For real deliverability, walk through an actual order:

  1. Place a test order as a customer against your seed mailbox.
  2. Verify new-order email to admin and to customer arrived.
  3. Change status in admin. Verify status-change email.
  4. Mark as paid (manual, or via the payment processor sandbox). Verify paid receipt.
  5. Cancel. Verify cancellation email.
  6. Run the seed list across Mail.ru, Yandex, Gmail, Outlook for each step.
Seed-test 1C-Bitrix events across RU mailboxes

Our seed set covers Mail.ru, Yandex, Rambler, Gmail and Outlook. Catch misaligned DKIM and Promotions-tab drift before the next release.

→ Run Free Test · → Bitrix integration beta

FAQ

Does Bitrix24 (cloud SaaS) need this too?

Bitrix24 is different — a SaaS CRM. It has its own sending infra for workflow emails. This article covers 1C-Bitrix (the CMS with the Online Store module). The two products are often confused.

Why does my SALE_ORDER_PAID email never get sent?

Usually the event is not actually firing. Some payment gateways in Bitrix only set the order to paid on a separate webhook. Check the event log and confirm the event fired before debugging the mail layer.

Can I use Gmail SMTP from Bitrix for a small RU store?

Technically yes, but Mail.ru is stricter about mail originating from Google Workspace that claims to be from a .ru domain without a clean DMARC alignment. Use a RU-local relay.

How do I debug encoding issues in Bitrix mail?

View the source of a received message. If subject contains =?UTF-8?B? and decodes correctly, encoding is fine. If it decodes to mojibake, the issue is at the template or the mail module's header builder — often a CP1251/UTF-8 mismatch.
Related reading

Check your deliverability across 20+ providers

Gmail, Outlook, Yahoo, Mail.ru, Yandex, GMX, ProtonMail and more. Real inbox screenshots, SPF/DKIM/DMARC, spam engine verdicts. Free, no signup.

Run Free Test →

Unlimited tests · 20+ seed mailboxes · Live results · No account required