Marketing Automation in Web Applications: Setup, CDP Integration
A marketer spends two days segmenting a base in Excel, and a week later the data is already outdated. Clients changed their tariff, but emails go to the wrong people. In an online store with a catalog of 5,000 products, this results in a loss of up to 20% of potential sales. Manual segmentation of 5,000 contacts takes 4 hours, which at a marketer's hourly rate of 2,000 rubles costs 8,000 rubles per campaign. Marketing automation via a web application eliminates the problem — every user action (registration, browsing, purchase) becomes an event that triggers personalized scenarios. After system setup, segmentation takes 15 minutes, and conversion in deferred chains grows by 25–30% per quarter. We have configured such systems for e-commerce and SaaS projects: average revenue increase from repeat sales is 25% over 3 months, and unsubscribe rates drop by 15-20%. Experience: 5+ years, over 30 implementations.
Technical Challenges and Their Solutions
Disparate Data
CRM, email service, analytics — each stores its own piece of the profile. Without a unified CDP, building cross-channel attribution is impossible. The result — emails go to the wrong segments.
Complex Chains
Abandoned cart requires checking whether the customer made a purchase between deferred emails. Manual escalation leads to spam and unsubscribes.
Lack of A/B Testing
You cannot know which email subject line increases conversion if randomization is not built into automation.
How to Avoid Data Loss in Chains?
The key is a transactional event broker (Kafka, Redis Streams). It guarantees at-least-once delivery of each event, preserves order, and allows replaying failures. Example: in the abandoned cart purchase check, we use idempotency — the order.placed event is processed only once, even if a duplicate arrives.
System Architecture and Tools
Architecture
Website (events) Event Broker Automation
───────────────── ─────────────── ──────────────
Registration ─────────► Kafka/Redis ──► Email chains
Page view ───────────► Stream ──► Push notifications
Add to cart │ ──► SMS
Purchase │ ──► Segmentation
Unsubscribe ▼
CDP (Customer
Data Platform)
Tool Selection
| Tool | Type | Automation |
|---|---|---|
| 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 |
Customer.io is 2x faster to set up for small businesses compared to Segment, while Kafka is better for high-load projects.
Implementing Tracking and Segmentation
Event Tracking
// analytics.ts — unified event tracking
class MarketingTracker {
constructor(
private customerIo: CustomerIO,
private posthog: PostHog
) {}
async track(userId: string, event: string, properties: Record<string, unknown>) {
// Send to Customer.io for automation
await this.customerIo.track({
id: userId,
name: event,
data: properties
});
// Send to PostHog for analytics
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()
});
}
}
// Usage in event handler
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'
});
Segmentation via Customer.io
// Create segment via 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 } }
]
}
});
Automated Chain: Abandoned Cart
[Event: checkout_started]
│
[Wait 1 hour]
│
[Check: was there a purchase?]
│ │
Yes No
│ │
[Exit] [Email: "You forgot your cart"]
│
[Wait 24 hours]
│
[Check: purchase?]
│
No
│
[Email: 10% discount]
│
[Wait 48 hours]
│
No
│
[Exit chain]
Why CDP Is the Foundation for Personalization?
CDP (Customer Data Platform) collects all events into a unified profile: views, purchases, support inquiries. Without a CDP, emails will be irrelevant: a customer bought a product, but receives an abandoned cart reminder for the same product. We help choose a CDP: for small businesses, Customer.io is suitable; for enterprise, Segment or mParticle.
How to Integrate CDP into an Existing Web Application?
CDP integration begins with setting up event tracking. You need to define key events (registration, page view, add to cart, purchase) and send them to the CDP via API or SDK. To do this, we install a client-side JavaScript SDK and a server-side HTTP client. The typical pattern: all events are duplicated to the CDP and the main database. This ensures no action is lost, even if the CDP is temporarily unavailable.
Why Implement A/B Testing in Chains?
Without A/B tests, you are flying blind. For example, a welcome email with different subject lines yields different CTR. We set up randomized experiments directly in Customer.io or PostHog. The sample size must be at least 1,000 contacts for statistical significance. Result: conversion to target action increases by 20-40% by selecting the best variant.
Implementation Process
| Stage | Duration | Result |
|---|---|---|
| Channel and data audit | 1–2 days | Report, recommendations |
| Event and segment design | 1 day | Documentation |
| Tracking integration | 2–3 days | Working tracking |
| Chain and template setup | 2–4 days | Automated scenarios |
| A/B testing and deployment | 1–2 days | Pilot launch |
What Is Included in the Work
- Comprehensive audit of marketing channels and customer data
- Design of event model and segments
- Tracking integration into the web application (with documentation provided)
- Setup of automated chains (welcome, abandoned cart, post-purchase, etc.)
- A/B testing of email hypotheses
- UTM tagging setup via link templates
- Training your team in the automation interface (1–2 days)
- Support during the first month after launch
Timelines and Cost
Basic automation (welcome chain + abandoned cart) — 1 week. Full set of chains with segmentation and A/B tests — 2–4 weeks. Cost is calculated individually after the audit.
Common Automation Mistakes
- Mismatch of data types in events (string instead of number) — breaks segmentation.
- Lack of a unique customer identifier — events are not linked to a profile.
- Incorrect timezone handling — emails arrive at 3 AM.
Contact us for an audit of your project. Get a consultation on marketing automation — we will assess how much time and budget you can save. Request an audit today — we will offer the optimal solution.







