Уявіть: інтернет-магазин з 10 000 замовлень на місяць втрачає до 15% підтверджень через потрапляння до спаму. Кожне втрачене замовлення — це втрачена виручка та незадоволений клієнт. Ми зіткнулися з такою ситуацією на проекті та впровадили SendGrid. Інтеграція зайняла 2 дні, доставляльність зросла до 99,5%, а витрати на email-інфраструктуру знизилися на 30% завдяки відмові від власного SMTP-сервера. SendGrid обробляє мільйони листів на день, забезпечуючи uptime 99,9% та вбудовану аналітику. Отримайте консультацію щодо вашого проекту — ми допоможемо з інтеграцією.
Як SendGrid вирішує проблему доставляльності?
Доставляльність напряму залежить від репутації відправника. SendGrid автоматизує управління репутацією: виділені IP-пули, автоматична обробка скарг на спам, suppression list. Згідно з документацією SendGrid, правильне налаштування SPF, DKIM та DMARC знижує ймовірність потрапляння до спаму на 90%. Ми налаштовуємо Event Webhook, щоб у реальному часі відстежувати доставку, відмови та кліки. Це дозволяє оперативно реагувати на проблеми. SendGrid у 2 рази швидше інтегрується, ніж Amazon SES, завдяки готовим SDK та динамічним шаблонам.
Чому варто використовувати динамічні шаблони?
Динамічні шаблони на Handlebars дають гнучкість: ви змінюєте вміст листа без зміни коду. Наприклад, для підтвердження замовлення ми передаємо масив товарів, і шаблон сам рендерить таблицю. Це прискорює розробку та спрощує підтримку. Згідно з документацією SendGrid, динамічні шаблони підтримують вкладені блоки та умовну логіку. Статичні шаблони вимагають правок у коді при кожній зміні дизайну — динамічні вирішують цю проблему, скорочуючи час на внесення змін у 2–3 рази.
Порівняння SendGrid з іншими ESP
| Параметр | SendGrid | Amazon SES | Mailgun |
|---|---|---|---|
| API простота | 5/5 | 4/5 | 4/5 |
| Динамічні шаблони | Так (Handlebars) | Ні | Ні |
| Event Webhook | Детальні події | Базові | Детальні |
| Початковий ліміт | 100 листів/день (free) | 62 000/міс (free) | 5 000/міс (free) |
| Вбудована аналітика | Так | Частково | Так |
SendGrid виграє за простотою інтеграції та наявністю динамічних шаблонів — це скорочує час розробки на 30% порівняно з Amazon SES.
Типи відправок та рекомендації
| Сценарій | Рекомендований тип відправки | Частота |
|---|---|---|
| Підтвердження замовлення | Транзакційне (single send) | Одинично |
| Маркетингова розсилка | Маркетингова кампанія | Раз на тиждень |
| Скидання пароля | Транзакційне | При запиті |
| Сповіщення про статус | Транзакційне (batch) | По події |
Як проходить інтеграція SendGrid?
- Аналітика — аудит поточної схеми відправки, перевірка DNS (SPF, DKIM, DMARC).
- Проектування — вибір типу шаблонів, налаштування категорій для статистики.
- Реалізація — встановлення пакету
@sendgrid/mail, написання коду відправки, налаштування шаблонів. - Тестування — відправка тестових листів, перевірка доставляльності через Email Test.
- Деплой — запуск у production, моніторинг через Webhook та Dashboard.
Що входить у роботу
- Аудит поточної схеми відправки та рекомендації щодо покращення.
- Створення та налаштування домену для відправки (SPF/DKIM/DMARC).
- Інтеграція з кодом: одиничні відправки, батчеві розсилки, динамічні шаблони.
- Налаштування Event Webhook для відстеження подій.
- Документація по API та навчання вашої команди.
- Тестування доставляльності на різних поштових клієнтах.
Приклади інтеграції з API
Встановлення та приклад коду
npm install @sendgrid/mail import sgMail from '@sendgrid/mail'; sgMail.setApiKey(process.env.SENDGRID_API_KEY!); await sgMail.send({ to: '[email protected]', from: { email: '[email protected]', name: 'Acme' }, subject: 'Підтвердження замовлення #12345', html: '<p>Ваше замовлення прийнято!</p>', categories: ['transactional', 'order-confirmation'], trackingSettings: { clickTracking: { enable: true }, openTracking: { enable: true }, }, }); Динамічні шаблони
await sgMail.send({ to: user.email, from: '[email protected]', templateId: 'd-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', dynamicTemplateData: { subject: `Замовлення #${order.id} підтверджено`, customer_name: user.name, order_id: order.id, items: order.items.map(item => ({ name: item.name, quantity: item.quantity, price: formatCurrency(item.price), })), total: formatCurrency(order.total), order_url: `https://app.example.com/orders/${order.id}`, }, }); Батчева розсилка через Marketing Campaigns API
import axios from 'axios'; const { data: campaign } = await axios.post( 'https://api.sendgrid.com/v3/marketing/singlesends', { name: 'Квітнева розсилка', email_config: { subject: 'Новини квітня від Acme', html_content: newsletterHtml, sender_id: 123, suppression_group_id: 456, }, send_to: { list_ids: ['list-uuid-1', 'list-uuid-2'], }, }, { headers: { Authorization: `Bearer ${process.env.SENDGRID_API_KEY}` } } ); await axios.post( `https://api.sendgrid.com/v3/marketing/singlesends/${campaign.id}/schedule`, { send_at: 'now' }, { headers: { Authorization: `Bearer ${process.env.SENDGRID_API_KEY}` } } ); Webhooks (Event Webhook)
app.post('/api/webhooks/sendgrid', async (req, res) => { const events = req.body as Array<{ event: string; email: string; timestamp: number; sg_message_id: string; }>; for (const event of events) { switch (event.event) { case 'delivered': await updateEmailStatus(event.sg_message_id, 'delivered'); break; case 'bounce': await handleBounce(event.email); break; case 'unsubscribe': await handleUnsubscribe(event.email); break; case 'spamreport': await handleSpamReport(event.email); break; } } res.status(200).end(); }); Управління suppression list
SendGrid дозволяє керувати suppression list через API. Приклад додавання адреси до глобального suppression list:
await axios.post( 'https://api.sendgrid.com/v3/asm/suppressions/global', { recipient_emails: [email] }, { headers: { Authorization: `Bearer ${process.env.SENDGRID_API_KEY}` } } ); Типові помилки при роботі з SendGrid
- Не налаштовані SPF/DKIM/DMARC — листи потрапляють у спам (до 90% листів).
- Ігнорування suppression list — повторні відправки на адреси, що відмовилися, погіршують репутацію.
- Занадто великі листи > 10 MB — можуть бути відхилені.
- Відсутність обробки webhook — пропускаєте відмови та скарги.
- Неправильне налаштування категорій — аналітика стає марною.
Терміни та вартість
Терміни інтеграції: від 2 до 5 днів залежно від складності. Вартість розраховується індивідуально після аудиту. Отримайте консультацію щодо вашого проекту — ми підберемо оптимальну конфігурацію. Замовте інтеграцію під ключ — ми гарантуємо uptime 99,9% та повну підтримку після запуску.
Завдяки досвіду понад 5 років інтеграції поштових сервісів, ми гарантуємо стабільну роботу та повну документацію після завершення проекту.







