diff --git a/server/src/lib/notifications/templates/telegram-templates.js b/server/src/lib/notifications/templates/telegram-templates.js
new file mode 100644
index 0000000..e4e5120
--- /dev/null
+++ b/server/src/lib/notifications/templates/telegram-templates.js
@@ -0,0 +1,36 @@
+export function renderOrderCreatedTg({ orderId, totalCents, itemsCount }) {
+ const total = (totalCents / 100).toLocaleString('ru-RU')
+ return `📦 Новый заказ #${orderId.slice(0, 8)}\nТоваров: ${itemsCount} | Сумма: ${total} ₽`
+}
+
+export function renderOrderStatusChangedTg({ orderId, oldStatus, newStatus }) {
+ const labels = {
+ DRAFT: 'Черновик', PENDING_PAYMENT: 'Ожидает оплаты', IN_PROGRESS: 'В работе',
+ READY_FOR_PICKUP: 'Готов к выдаче', SHIPPED: 'Отправлен', DONE: 'Выполнен', CANCELLED: 'Отменён',
+ }
+ return `🔄 Заказ #${orderId.slice(0, 8)}\n${labels[oldStatus] || oldStatus} → ${labels[newStatus] || newStatus}`
+}
+
+export function renderOrderMessageTg({ orderId, preview }) {
+ const truncated = preview.length > 300 ? preview.slice(0, 297) + '...' : preview
+ return `💬 Сообщение к заказу #${orderId.slice(0, 8)}\n\n${truncated}`
+}
+
+export function renderPaymentStatusChangedTg({ orderId, paymentStatus }) {
+ const labels = { pending: 'Ожидает', confirmed: 'Подтверждён', rejected: 'Отклонён' }
+ return `💳 Оплата заказа #${orderId.slice(0, 8)}: ${labels[paymentStatus] || paymentStatus}`
+}
+
+export function renderAdminOrderCreatedTg({ orderId, userEmail, totalCents, itemsCount }) {
+ const total = (totalCents / 100).toLocaleString('ru-RU')
+ return `🛒 Новый заказ #${orderId.slice(0, 8)}\nОт: ${userEmail}\nТоваров: ${itemsCount} | Сумма: ${total} ₽`
+}
+
+export function renderAdminNewReviewTg({ rating, text, productTitle, userName }) {
+ const stars = '⭐'.repeat(rating)
+ return `📝 Новый отзыв ${stars}\nТовар: ${productTitle}\nАвтор: ${userName}${text ? '\n\n' + text : ''}`
+}
+
+export function renderAuthCodeTg({ code }) {
+ return `🔐 Код входа: ${code}`
+}