Event-centric vs contact-centric automation: behavior streams vs person records
Event-centric vs contact-centric automation: architecture table, X→Y¬Z/48h sequence, Iran tag-soup vignette, Leadara mapping, FAQ.

Amir Hosseini
Runs email, SMS, and push campaigns for acquisition, retention, and reactivation.
September 18, 2026 · 7 min read
Also available in فارسی

What is the difference between event-centric and contact-centric automation?
Contact-centric tools treat events as fields or flags on a person and excel at “entered segment A.” Event-centric tools treat events as first-class objects you can trigger, filter, and sequence — for example did X then Y but not Z within 48 hours.
One-liner for programmers: contact-centric = person record with sticky notes; event-centric = behavior stream you can query and chain. Leadara’s model is built around events feeding segments and journeys.
WooCommerce- and Digikala-style shops already emit view, add_to_cart, and purchase events. Growth teams that only sync city and tags into a CRM miss the stream those events already provide.
For journey vs realtime framing, see Journey vs realtime event campaign.
How does each architecture work?
Contact-centric automation
The unit of truth is the person. An event often becomes last_cart_at, has_purchased, or a tag. Triggers love “entered segment” and attribute thresholds. Strength: simple CRM-shaped nurture. Weakness: sequences like “viewed PDP → added to cart → no purchase in 48h” become brittle attribute gymnastics.
Event-centric automation
The unit of truth includes the event object (name, timestamp, properties) alongside the profile. Triggers fire on event arrival; filters inspect properties; sequences wait for follow-up events or their absence. Strength: timing and behavior fidelity. Weakness: noisy catalogs if every click becomes a message.
MA baseline: What is marketing automation. Journey vs campaign: Marketing journey vs campaign.
Architecture comparison table
| Dimension | Contact-centric | Event-centric |
|---|---|---|
| Primary object | Person / contact | Event (+ person) |
| Typical trigger | Entered segment, field change | Event name + property filters |
| Sequence “X then Y ¬Z /48h” | Hard / approximate | Native |
| Best for | Lifecycle stages, CRM nurture | Cart, onboarding steps, product signals |
| Failure mode | Stale flags, tag soup | Over-triggering low-value events |
| Iran shop fit | When only CRM fields exist | When site/app already emits events |
Sequence example programmers recognize
Goal: remind only if someone added to cart and did not purchase within 48 hours after a PDP view in the same session window.
Event-centric sketch:
- Trigger on
product_viewed(optional) or directly oncart_updated. - Wait 2 hours; if
order_completedfor same cart → exit (goal). - Send email with cart properties.
- Wait 22 hours; if still no
order_completedand SMS consented → SMS. - Guard: max 2 promo touches / 7 days; suppress if entered VIP win-back elsewhere.
Contact-centric approximation: set cart_flag=true, clear on purchase, segment on flag + time. It works until two carts, partial purchases, or multi-device identity make flags lie.
Iran vignette: tag soup vs event stream
“Kaveh” syncs Shopify-like tags into an eCRM: vip, abandoned, newsletter. Every Friday the abandoned tag gets a blast. Customers who bought via card-to-card DM still carry abandoned for days. Event-centric fix: journey on cart_updated with exit on order_completed (including manual order events from ops). Tags become labels for analysis, not the only trigger.
Diagnosis
| Smell | Likely cause |
|---|---|
| Bought yesterday, still in abandon blast | Flag not cleared / no purchase event exit |
| Cannot say “viewed then cart then silence” | Events collapsed to attributes |
| Eng tickets for every new path | No marketer-owned journey on events |
When contact-centric is enough
- B2B nurture with slow stages and sales ownership
- No reliable event pipeline yet (instrument first)
- Simple entered-segment welcome with one email
Do not force event theater if the only signal is “filled form last month.”
Checklist: designing from streams
- List events worth messaging (cart, purchase, signup, key activation).
- For each journey, write the sequence in
X → wait → Y ¬ Zform. - Define the goal event that exits the path.
- Add frequency and consent guards.
- Keep CRM attributes for WHO filters — do not replace the stream with tags alone.
- Measure time-to-convert after the triggering event.
Leadara mapping: events, segments, journeys, email/SMS
- Events — first-class inputs (
cart_updated,order_completed, signup). - Segments — contact-centric WHO filters when useful (active 90d, consent).
- Journeys — event-centric paths with waits, branches, goals.
- Email/SMS — actions on the path with channel consent.
- Hybrid — segment entry can start a journey; events should still drive exits.
Common mistakes
- Collapsing every event into a boolean tag
- Triggering on every
page_view - No purchase exit on cart paths
- Engineering-only ownership of sequences marketers should edit
- Judging success by send volume instead of post-event conversion
FAQ
What is event-centric vs contact-centric marketing automation?
Contact-centric centers the person record and attribute/segment triggers; event-centric centers behavior events you can filter and sequence.
Can you trigger on “did X then Y but not Z in 48 hours”?
That is the event-centric sweet spot; contact-centric tools approximate it with fragile flags.
Are segments obsolete in event-centric stacks?
No. Segments remain excellent WHO guards; events carry timing and WHAT properties.
When should you not fire on every user action?
When the action is low intent, ultra-high volume, or lacks a clear goal/exit — thresholds matter.
Does Leadara invent a separate event database product?
You work with events, segments, journeys, and channels — map only those capabilities.
How do Iranian shops get events?
From site/app pixels, checkout webhooks, and ops-entered order events when payment is offline.
What metric proves event-centric value?
Time-to-convert after trigger, path conversion, RPR vs the old tag blast — not opens alone.
Bottom line and next step
Contact-centric = person flags; event-centric = behavior streams you can sequence. This week, rewrite one abandon path as cart_updated → wait → message → exit on order_completed and retire the sticky abandoned tag as a sole trigger.
Event catalog hygiene for small teams
| Keep | Drop or downsample |
|---|---|
| signup, cart_updated, order_completed, key activation | raw mousemove, every listing impression |
| properties needed for WHAT (SKU, value) | unused PII in every payload |
| clear owner for event names | three synonyms for purchase |
Hold a 30-minute monthly catalog review with eng + growth. Renaming events without versioning breaks journeys — treat names like API contracts.
30-day migration from tags to events
Week 1: list every trigger tag (abandoned, vip, cold). For each, ask which event should replace it.
Week 2: wire cart_updated and order_completed into a cart journey; remove abandoned as a trigger but keep it for reporting.
Week 3: build an onboarding path on “activation step not finished” instead of “day 3 after signup.”
Week 4: holdout and compare time-to-convert; archive dead tags.
If the backend has no events, spend the same 30 days instrumenting — buying a logo without a stream only makes contact-centric more expensive.
Decision table: build a field or keep an event?
| Need | Field/segment | Event |
|---|---|---|
| City, language, consent | Yes | Not as a substitute |
| “Has a cart now” | Temporary flag only if no events | Prefer event + exit |
| “X then Y within 48h” | Fragile approximation | Event |
| Monthly RFM report | Segment | Purchase events underneath |
Onboarding pattern: calendar day vs product step
Many teams write: day-1 welcome, day-3 education, day-7 discount. That is still contact-centric with calendar offsets. Event-centric version:
| Step | Trigger |
|---|---|
| Welcome | signup |
| Key-feature education | activation_step_skipped or “48h without profile complete” |
| Offer help | support_intent or silence after an error |
| Exit | activation_completed or purchase |
The same day-3 copy is noise if it arrives after activation. Product signals shorten or lengthen the path.
Acceptance tests for an event-centric path
- Purchase mid-path → no further touches.
- Two carts in a row → one active path, not two parallel blasts.
- No SMS consent → SMS branch skips, does not error.
- Duplicate event within 5 minutes → dedupe, no spam.
- 10–20% holdout vs the old tag blast.
If these five tests fail, you have not changed architecture — only prettier UI.
Related reading
- Journey vs realtime event campaign — timing shapes
- What is marketing automation — system frame
- Marketing journey vs campaign — path vs blast





