Розробка кастомних email-шаблонів для CMS та CRM

Наша компанія займається розробкою, підтримкою та обслуговуванням сайтів будь-якої складності. Від простих односторінкових сайтів до масштабних кластерних систем, побудованих на мікро сервісах. Досвід розробників підтверджено сертифікатами від вендорів.

Розробка та обслуговування будь-яких видів сайтів:

Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 2062 послуг
Розробка кастомних email-шаблонів для CMS та CRM
Простий
від 1 дня до 3 днів
Часті запитання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1363
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1253
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    958
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1190
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    932
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    949

Кастомні email-шаблони для CMS та CRM

Розсилка листів через Mailchimp, Klaviyo, HubSpot або Salesforce Marketing Cloud — рутина. Але стикалися з ситуацією, коли лист в Outlook роз'їжджається, а змінні {{ first_name }} не підставляються? Вбудовані drag-and-drop редактори зручні для простих листів, але коли потрібен строгий брендинг, складна логіка умов або адаптивність під мобільні пристрої — без кастомного HTML-шаблону не обійтися.

Ми розробляємо email-шаблони під ключ: від верстки до інтеграції з CRM. Гарантуємо сумісність з усіма популярними клієнтами (Outlook, Gmail, Apple Mail) та оптимізацію для Core Web Vitals. Оцініть наш підхід на прикладі роботи з Klaviyo — однією з найгнучкіших платформ для e-commerce розсилок.

Чому кастомні шаблони краще готових?

Припустимо, у вас інтернет-магазин на Shopify. Стандартний шаблон листа про покинутий кошик — це кнопка «Повернутися до покупок» та список товарів. Але якщо додати блок з персональною знижкою на основі суми кошика ({% if cart.total_price > 5000 %}) та відгуки клієнтів — конверсія відновлення зростає на 20-30%. Кастомна верстка дозволяє реалізувати такі сценарії без обмежень редактора.

Порівняйте: drag-and-drop шаблон за 15 хвилин проти кастомного за 2 дні. Перший підходить для разової акції, другий — для транзакційних листів, які працюють роками і формують враження про бренд. Наш досвід показує: компанії, що перейшли на кастомні шаблони, скорочують кількість скарг на криву верстку на 80%.

Як забезпечити сумісність з Outlook та мобільними клієнтами?

Головна проблема email-верстки — Outlook. Він рендерить HTML через Word, тому Flexbox і Grid не працюють. Наше рішення — таблична верстка з inline-стилями та явними width атрибутами. У <head> додаємо медіа-запити для мобільних пристроїв: контейнер стає гумовим, колонки — блочними. Всі зображення обов'язково з alt текстом — без картинок лист має залишатися читабельним.

Приклад базового каркасу шаблону для Mailchimp:

<!DOCTYPE html>
<html lang="ru">
<head>
  <meta charset="utf-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1" />
  <title>*|MC:SUBJECT|*</title>
  <style>
    @media only screen and (max-width: 600px) {
      .container { width: 100% !important; }
      .column { display: block !important; width: 100% !important; }
      .mobile-padding { padding: 16px !important; }
    }
  </style>
</head>
<body style="margin:0;padding:0;background:#f3f4f6">

  <table width="100%" cellpadding="0" cellspacing="0" border="0">
    <tr>
      <td align="center" style="padding:24px 16px">

        <!-- Основний контейнер -->
        <table class="container" width="600" cellpadding="0" cellspacing="0" border="0"
          style="background:#fff;border-radius:12px;overflow:hidden">

          <!-- Шапка -->
          <tr>
            <td style="background:#1e40af;padding:24px 32px">
              <img src="https://example.com/logo-white.png" width="120" alt="Кастомний email-шаблон" />
            </td>
          </tr>

          <!-- Контент -->
          <tr>
            <td class="mobile-padding" style="padding:32px">
              <h1 style="margin:0 0 16px;font-size:24px;color:#111827">
                Привіт, *|FNAME|*!
              </h1>
              <!-- Контент -->
            </td>
          </tr>

          <!-- Футер -->
          <tr>
            <td style="padding:16px 32px;background:#f9fafb;text-align:center">
              <p style="margin:0;font-size:12px;color:#9ca3af">
                <a href="*|UNSUB|*" style="color:#9ca3af">Відписатися</a>
                &nbsp;·&nbsp;
                <a href="*|UPDATE_PROFILE|*" style="color:#9ca3af">Налаштування</a>
              </p>
            </td>
          </tr>

        </table>
      </td>
    </tr>
  </table>

</body>
</html>

Формати шаблонів за платформами

Кожна CRM/ESP використовує свій синтаксис мержів та умов. Ми врахували це при верстці:

Платформа Синтаксис змінних Умови
Mailchimp *|FNAME|* *|IF:FNAME|* ... *|END:IF|*
Klaviyo {{ first_name }} {% if first_name %} ... {% endif %}
HubSpot {{ contact.firstname }} {% if contact.firstname %}
Customer.io {{ customer.first_name }} {% if customer.attributes.plan == 'pro' %}
Brevo (Sendinblue) {{ params.firstname }} {% if params.plan %}

У шаблоні ми використовуємо синтаксис цільової платформи. Якщо планується міграція — можна підготувати декілька варіантів.

Що входить у розробку кастомного шаблону

  1. Аналіз вимог: брендбук, типи листів (транзакційні, маркетингові), список змінних.
  2. Прототип у Figma: враховуємо адаптивність та брендові кольори.
  3. Верстка на таблицях з підтримкою Outlook 2010–365, Gmail, Apple Mail, Samsung Mail, Яндекс.Пошта.
  4. Налаштування змінних та умовних блоків за документацією платформи.
  5. Тестування в сервісах Litmus або Email on Acid — перевірка в 20+ клієнтах.
  6. Інтеграція: завантаження шаблону в CRM через веб-інтерфейс або API (приклад для Klaviyo нижче).
  7. Документація: опис всіх блоків та змінних для вашого маркетолога.
  8. Підтримка після запуску: безкоштовні правки протягом місяця.

Імпорт у платформу

Після верстки шаблон завантажується через інтерфейс або API:

// Приклад: створення шаблону через Klaviyo API
const response = await fetch('https://a.klaviyo.com/api/templates/', {
  method: 'POST',
  headers: {
    'Authorization': `Klaviyo-API-Key ${process.env.KLAVIYO_PRIVATE_KEY}`,
    'Content-Type': 'application/json',
    'revision': 'latest',
  },
  body: JSON.stringify({
    data: {
      type: 'template',
      attributes: {
        name: 'Order Confirmation UK',
        html: templateHtml,
        text: plainTextVersion,
      }
    }
  })
});

Терміни та як замовити

Розробка одного адаптивного шаблону з тестуванням — від 1 до 2 днів. Вартість розраховується індивідуально в залежності від складності та кількості шаблонів. Щоб отримати консультацію та точну оцінку вашого проекту — зв'яжіться з нами. Ми гарантуємо, що листи виглядатимуть ідеально на всіх пристроях та клієнтах. Отримайте консультацію по ваших шаблонах вже сьогодні.

Технічні вимоги для CRM-шаблонів

  • Тільки inline-стилі або <style> у <head> — зовнішні CSS не підтримуються більшістю клієнтів.
  • Всі зображення — абсолютні URL (Mailchimp хостить їх на своєму CDN після завантаження).
  • Таблиці замість Flexbox/Grid — Outlook використовує Word-рендерер.
  • width атрибути у <img> та <table> — окрім CSS.
  • alt тексти на всіх зображеннях — частина листів відкривається з вимкненими картинками.
Типові помилки при верстці листів
  • Використання CSS-властивості display з нестандартними значеннями — багато клієнтів не підтримують.
  • Надмірна вкладеність таблиць — збільшує вагу листа та час завантаження.
  • Відсутність явного width у зображень — в Outlook картинки можуть масштабуватися непередбачувано.
  • Ігнорування alt тексту — втрачається сенс листа при вимкнених зображеннях.
Платформа Складність шаблону Термін розробки
Транзакційний лист Базова 1 день
Маркетинговий лист з умовами Середня 2 дні
Багатомовний шаблон з A/B-тестами Висока 3-4 дні

У підсумку ви отримуєте не просто HTML-код, а готове до відправлення рішення, яке працює швидше та надійніше вбудованих редакторів. Замовте кастомні шаблони — і ваші email-розсилки перестануть бути головним болем.

Інтеграція email розсилок: чому вона часто ламається?

Ми стикалися з тим, що тригерний лист через 10 хвилин після реєстрації конвертує в 4–5 разів краще, ніж той самий лист через 24 години. Це не маркетинговий міф — це механіка: поки користувач теплий, поки пам'ятає контекст. Але більшість інтеграцій з розсильниками зроблені так: форма сабмітиться → синхронний HTTP-запит до API → якщо API гальмує, користувач чекає 3 секунди → лист йде або не йде, ніхто не знає.

Якщо ви зіткнулися з втраченими листами або потраплянням у спам, замовте аудит існуючої інтеграції — ми знайдемо вузькі місця за 2 дні.

Провайдери та їх API

Unisender — російський провайдер, популярний у сегменті SMB. REST API, простий. Додавання контакту: importContacts, відправка транзакційного листа: sendEmail. Важливо: для транзакційних листів (підтвердження замовлення, скидання пароля) Unisender Go — окремий сервіс з іншим API та окремою ціною. Змішувати масові розсилки та транзакційні в одному потоці — погана ідея для репутації домену.

SendPulse — надає email, SMS, web push, Viber, Telegram-боти через єдиний API. Для проєктів, де потрібен омніканал, це зручно. Automation 360 — візуальний конструктор ланцюжків, можна запустити автоматизацію через API event. SDK для PHP (sendpulse/rest-api-php-sdk) підтримується, але оновлюється нерегулярно — краще використовувати напряму через Guzzle.

Mailchimp — вибір для міжнародної аудиторії та маркетингових команд, звиклих до екосистеми Mailchimp. Transactional email — через Mandrill (дочірній сервіс). Marketing API v3 для управління списками, тегами, кампаніями. Webhook для подій: відкриття, клік, відписка, bounce.

SMS. Для Росії: СМСЦ, МТС Exolve, Devino Telecom, SMS Aero. API у всіх схожий: метод send, параметри phone, message, sender (ім'я відправника — потрібно реєструвати окремо у оператора). Один нюанс: ім'я відправника має бути зареєстровано через агрегатора з договором — без цього SMS не відправляться на мережі МТС/МегаФон/Білайн.

Провайдер Тип Транзакційні листи Маркетингові Особливості
Unisender email+SMS Unisender Go (окремо) так Популярний в РФ, простий REST
SendPulse email+SMS+web push+Viber так так Єдиний API, омніканальність
Mailchimp email Mandrill так Аналітика, міжнародний
Twilio SMS+email так ні Глобальний, дорогий в РФ

Як побудувати інтеграцію, щоб не втрачати листи?

Розділяємо транзакційні та маркетингові потоки

Транзакційні листи (підтвердження замовлення, скидання пароля, статус доставки) — через окремий домен-відправник або субдомен tx.example.com. Маркетингові розсилки — через mail.example.com або news.example.com. Якщо маркетингова розсилка отримає багато скарг на спам, це не повинно зачепити репутацію транзакційного потоку. Згідно з документацією SendGrid, транзакційні повідомлення слід відправляти через виділений IP-пул для запобігання перехресному впливу.

Черга та retry

Будь-який виклик до email API — через чергу (Laravel Queue, Bull, Celery). Якщо Unisender повернув 503 — задача йде в retry через 5 хвилин, потім 15, потім 60. Після 5 невдалих спроб — у dead letter queue з алертом. Користувач при цьому вже отримав свій 200 OK і не знає про проблему. Завдяки цьому підходу bounce rate на проєктах знижується до 0.5%.

Приклад job для Laravel:

public function handle(): void
{
    try {
        $response = Http::post(config('services.unisender.email_url'), $this->params);
        if ($response->failed()) {
            $this->release(300); // retry через 5 хв
        }
    } catch (\Throwable $e) {
        $this->release(300);
    }
}

Шаблони

Зберігаємо шаблони в коді (Blade, Twig, React Email), не в інтерфейсі провайдера. Причини: версіонування через Git, preview у браузері без відправки, можливість тестування. Для складних шаблонів з динамічним контентом — react-email з експортом в HTML через @react-email/render.

Валідація та згоди

Перед додаванням контакту до списку — double opt-in (лист з підтвердженням). Зберігати факт підтвердження з timestamp у своїй БД. При відписці — синхронно відписуємо і у провайдера, і в своїй базі. Ігнорувати webhook відписки — прямий шлях до блокування акаунта у провайдера. Всі процеси відповідають ФЗ-152 про персональні дані.

Як налаштувати DKIM для домену-відправника?

DKIM дозволяє підписувати листи цифровим підписом, що підвищує довіру поштових серверів.

  1. Згенеруйте пару ключів (наприклад, через OpenSSL: openssl genrsa -out private.key 2048).
  2. Опублікуйте публічний ключ у DNS як TXT-запис для селектора (наприклад, mail._domainkey.tx.example.com).
  3. Вкажіть селектор у провайдера (SendGrid, Mailgun, Unisender).
  4. Перевірте командою dig TXT mail._domainkey.tx.example.com.

Моніторинг доставності

Підключаємо webhook від провайдера на події bounce (жорсткий і м'який), spam_complaint, unsubscribe. Жорсткий bounce — негайно позначаємо email як невалідний у своїй БД, більше не відправляємо. М'який bounce 3 рази поспіль — те саме. Метрики: open rate, click rate, bounce rate, unsubscribe rate — дивимося не рідше разу на тиждень. Наші сертифіковані інженери налаштовують алерти в Grafana/Prometheus.

Чому важливо розділяти потоки?

Якщо відправити маркетингову розсилку з того ж домену, що й транзакційні листи, отримавши скарги на спам, ви ризикуєте заблокувати домен — і користувачі перестануть отримувати навіть підтвердження замовлень. SPF, DKIM, DMARC (Wikipedia SPF, Wikipedia DKIM) повинні бути налаштовані окремо для кожного потоку. Ми використовуємо субдомени з різними DNS-записами.

Обсяг робіт з інтеграції

  • Аудит поточних потоків комунікації та репутації домену (SPF, DKIM, DMARC)
  • Вибір провайдера та схеми: транзакційний vs маркетинговий трафік
  • Налаштування DNS-записів SPF, DKIM, DMARC (Wikipedia DMARC)
  • Розробка шаблонів листів (HTML + динамічний контент)
  • Інтеграція з бекендом через черги та API
  • Налаштування webhook для доставності та скарг
  • Документація з експлуатації та навчання команди
  • Гарантія доставності та підтримка після запуску

Терміни та вартість

Сценарій Термін (робочі дні) Примітка
Базові транзакційні листи (один провайдер) 5–7 днів Ціна розраховується індивідуально після аудиту
Тригерні ланцюжки + SMS + веб-пуши 10–20 днів Ціна розраховується індивідуально після аудиту
Повна омніканальна автоматизація 20–40 днів Ціна розраховується індивідуально після аудиту

Вартість розраховується індивідуально після аудиту. Ми працюємо під ключ: від аналізу до моніторингу в продакшені. Отримайте консультацію інженера — оцінимо проєкт безкоштовно та скажемо точні терміни. Досвід більше 7 років в інтеграції поштових сервісів, реалізовано 50+ проєктів. Замовте безкоштовний аудит поточної інтеграції — отримайте звіт з рекомендаціями.