Налаштування автоматизації маркетингових процесів через веб-додаток
Маркетингова автоматизація об'єднує відстеження дій користувачів, сегментацію аудиторії та автоматичні комунікації в єдину систему. Замість ручної розсилки — ланцюги, які запускаються за конкретними подіями.
Архітектура системи
Сайт (події) Брокер подій Автоматизація
───────────────── ─────────────── ──────────────
Реєстрація ─────────► Kafka/Redis ──► Email ланцюги
Перегляд сторінки ───► Stream ──► Push-повідомлення
Додавання в кошик │ ──► SMS
Покупка │ ──► Сегментація
Відписка ▼
CDP (Customer
Data Platform)
Інструменти
| Інструмент | Тип | Автоматизація |
|---|---|---|
| Customer.io | SaaS | Email, push, SMS, webhooks |
| Brevo (Sendinblue) | SaaS | Email, SMS, WhatsApp |
| Klaviyo | SaaS | Email, SMS (e-commerce) |
| Mautic | Self-hosted | Email, SMS, landing pages |
| PostHog | Self-hosted | Product analytics + automation |
Відстеження подій
// analytics.ts — єдине відстеження подій
class MarketingTracker {
constructor(
private customerIo: CustomerIO,
private posthog: PostHog
) {}
async track(userId: string, event: string, properties: Record<string, unknown>) {
// Відправляємо в Customer.io для автоматизації
await this.customerIo.track({
id: userId,
name: event,
data: properties
});
// Відправляємо в PostHog для аналітики
this.posthog.capture({
distinctId: userId,
event,
properties
});
}
async identify(userId: string, traits: UserTraits) {
await this.customerIo.identify({
id: userId,
...traits,
last_seen: new Date().toISOString()
});
}
}
// Використання в обробнику подій
await tracker.track(userId, 'checkout_started', {
cart_value: cart.total,
items_count: cart.items.length,
currency: 'UAH'
});
await tracker.track(userId, 'page_viewed', {
page_name: 'pricing',
plan_viewed: 'pro'
});
Сегментація через Customer.io
// Створення сегмента через API
const segment = await customerio.createSegment({
name: 'High-Intent Pro Users',
filter: {
and: [
{ attribute: { field: 'plan', operator: 'eq', value: 'free' } },
{ event: { name: 'pricing_viewed', timeframe: { days: 7 }, count: { min: 2 } } },
{ attribute: { field: 'total_orders', operator: 'gte', value: 1 } }
]
}
});
Автоматичний ланцюг: Забутий кошик
[Подія: checkout_started]
│
[Чекаємо 1 годину]
│
[Перевіряємо: була покупка?]
│ │
Так Ні
│ │
[Вихід] [Email: "Ви забули кошик"]
│
[Чекаємо 24 години]
│
[Перевіряємо: покупка?]
│
Ні
│
[Email: знижка 10%]
│
[Чекаємо 48 годин]
│
Ні
│
[Вихід з ланцюга]
Персоналізація контенту
// Шаблон листа з динамічним контентом
const emailData = {
to: user.email,
templateId: 'abandoned-cart',
dynamicTemplateData: {
firstName: user.firstName,
cartItems: cart.items.map(item => ({
name: item.productName,
imageUrl: item.imageUrl,
price: formatPrice(item.price),
quantity: item.quantity
})),
cartTotal: formatPrice(cart.total),
discountCode: isHighValueCart(cart) ? 'CART10' : null,
checkoutUrl: `https://example.com/checkout?cart=${cart.id}&source=email`
}
};
UTM-відстеження та атрибуція
// Додаємо UTM-параметри до всіх посилань у листах
function addUtmParams(url: string, campaign: string, medium = 'email'): string {
const params = new URLSearchParams({
utm_source: 'customer-io',
utm_medium: medium,
utm_campaign: campaign,
utm_content: 'link'
});
return `${url}?${params}`;
}
Строки реалізації
Базова автоматизація (welcome + забутий кошик) — 1 тиждень. Повний набір ланцюгів з сегментацією та A/B-тестами — 2–4 тижня.







