Можно использовать исходящий и входящий вебхуки.
Триггер исходящего вебхука - ONCRMDEALUPDATE.
В ответе придет идентификатор измененной сделки.
При срабатывании триггера делаете запрос на получение данных сделки crm.deal.get.
Дальше пишете свой обработчик по проверке нахождения сделки на определенной стадии и если поле, куда пишите дату изменения стадии пустое, то пишете в него время изменения стадии с помощью метода crm.deal.update.
это вариант 1 - сложный.
Можно попробовать вариант полегче.
Только входящий вебхук, метод crm.stagehistory.list.
Файл можно запускать на исполнение по cron с нужными интервалами
пс
Выше пишут про БП
кстати, можно и через БП попробовать сделать - бп на добавление/изменение сделки.
И также по условиям проверять поля и заполнять их - в облаке такое можно сделать