Можно сделать через обработчик события
OnBeforeEventAdd. Оно вызывается в момент добавления почтового события в таблицу
b_event.
Можно отловить в обработчике почтовое событие типа SALE_NEW_ORDER. В нём, имея ID заказа, получить всю дополнительную информацию и добавить ее в новое поле в массив $arFields, например $arFields["DELIVERY_INFO"]. И уже в почтовом шаблоне вывести эту информацию по аналогии с другими полями #DELIVERY_INFO#.
В ссылке на документацию есть пример работы с этим событием. Так же я решал другую задачу (добавление ссылки на отслеживание), но принцип тот же будет:
public static function addTrackingUrlToMail(&$event, &$lid, &$arFields)
{
if ($event == "SALE_ORDER_TRACKING_NUMBER") {
$order = \Bitrix\Sale\Order::load($arFields["ORDER_REAL_ID"]);
$shipmentCollection = $order->getShipmentCollection();
/* @var $shipmentColletion \Bitrix\Sale\ShipmentCollection */
$deliveryId = 0;
foreach ($shipmentCollection as $shipment) {
/* @var $shipment \Bitrix\Sale\Shipment */
if (!$shipment->isSystem()) {
$delivery = $shipment->getDelivery();
$deliveryId = $delivery->getParentId();
$arFields["DELIVERY_NAME"] = $delivery->getNameWithParent();
}
}
$urlTemplate = "<a href='%s'>%s</a>";
$trackMessage = "";
if (\Gricuk\Sale\Delivery\Helper::isRussianPostDelivery($deliveryId)) {
$trackUrl = "https://www.pochta.ru/tracking#{$arFields["ORDER_TRACKING_NUMBER"]}";
$trackMessage = sprintf($urlTemplate, $trackUrl, $trackUrl);
} else {
switch ($deliveryId) {
case Conf::ID_DELIVERY_CDEK://ID службы доставки СДЕК
$trackUrl = "https://www.cdek.ru/track.html?order_id={$arFields["ORDER_TRACKING_NUMBER"]}";
$trackMessage = sprintf($urlTemplate, $trackUrl, $trackUrl);
break;
}
}
$arFields["TRACK_URL"] = $trackMessage;
}
}