Уявіть: інтернет-магазин з 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 років інтеграції поштових сервісів, ми гарантуємо стабільну роботу та повну документацію після завершення проекту.







