Подарки по подписке на рассылку

Добавляем в строку для подтверждения необходимые параметры чтобы не терять пользователя, и фича работала вне зависимости от крошек и устройств.

пишем наследника в init.php
в confirmUrl добавляем необходимые нам дополнительные параметры.

CModule::IncludeModule("sender");

class sender_maxyss extends \Bitrix\Sender\Subscription {
    public static function sendEventConfirm($email, $mailingIdList, $siteId){
        global $APPLICATION;
        $mailingNameList = array();
        $mailingDb = MailingTable::getList(array('select' => array('NAME'), 'filter' => array("IS_TRIGGER" => "N", 'ID' => $mailingIdList)));
        while($mailing = $mailingDb->fetch())
        {
            $mailingNameList[] = $mailing['NAME'];
        }

        $subscription = array(
            'EMAIL' => $email,
            'SITE_ID' => $siteId,
            'MAILING_LIST' => $mailingIdList,
        );
        $confirmUrl = static::getLinkSub($subscription);
        $confirmUrl.='&pattern='.$_COOKIE['SUBSCRIBE_ID'].'&rost='.$_COOKIE["SUBSCRIBE_ROST"].'&og='.$_COOKIE["SUBSCRIBE_OG"].'';
        $date = new DateTime;
        $eventSendFields = array(
            "EVENT_NAME" => "SENDER_SUBSCRIBE_CONFIRM",
            "C_FIELDS" => array(
                "EMAIL" => $email,
                "DATE" => $date->toString(),
                "CONFIRM_URL" => $confirmUrl,
                "MAILING_LIST" => implode("\r\n",$mailingNameList),
            ),
            "LID" => is_array($siteId)? implode(",", $siteId): $siteId,
        );
        \Bitrix\Main\Mail\Event::send($eventSendFields);
    }
}



далее после перехода пользователя на страницу подтверждения подписки мы воспользуемся дополнительными параметрами, и осуществим необходимые нам дествия.