Настройка автоматизации маркетинговых процессов через веб-приложение
Маркетинговая автоматизация объединяет отслеживание действий пользователей, сегментацию аудитории и автоматические коммуникации в единую систему. Вместо ручной рассылки — цепочки, запускающиеся по конкретным событиям.
Архитектура системы
Сайт (события) Брокер событий Автоматизация
───────────────── ─────────────── ──────────────
Регистрация ─────────► 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: 'RUB'
});
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 } }
]
}
});
Автоматическая цепочка: Abandoned Cart
[Event: checkout_started]
│
[Ждём 1 час]
│
[Проверяем: был ли purchase?]
│ │
Да Нет
│ │
[Выход] [Email: "Вы забыли корзину"]
│
[Ждём 24 часа]
│
[Проверяем: purchase?]
│
Нет
│
[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 + abandoned cart) — 1 неделя. Полный набор цепочек с сегментацией и A/B-тестами — 2–4 недели.







