What a contact holds
Identity
Email, phone, first/last name, timezone and locale.
Consent
Per-channel state (email / SMS / push) with timestamp and source.
Tags
Free-form labels for grouping and segmentation.
Custom properties
Anything from the property catalog that isn’t a native column — stored in
a flexible JSON bag.
Predictive scores
Purchase likelihood, churn risk, VIP likelihood and responsive channel,
scored daily.
RFM tier
Recency / frequency / monetary tier derived from order behaviour.
The property catalog
Contact properties come from a single catalog shared by the UI and the CSV importer. Each property has a scope:native
Has its own column on the contact (name, phone, timezone, locale…).
custom
Lands in the custom-properties JSON bag (city, date of birth, job title…).
computed
Read-only, set by analytics rollups (RFM, predictive scores). Never imported.
Accepts Marketing, Klaviyo $timezone) resolve to the right property automatically on import.
The contact profile
Open any contact to see a two-pane profile:- Left — identity, channel-consent badges and tags.
- Right — notes (autosaved), recent products viewed/carted, an editable properties panel, and a unified activity feed.
Activity feed
The activity feed unifies five sources into one timeline, newest first:1
Consent changes
Every subscribe/unsubscribe with its source and channel.
2
Messages
Campaign and flow sends to this contact.
3
Engagement
Delivered, opened, clicked, bounced, complained, unsubscribed, orders.
4
Store events
Product views, cart adds, checkouts — with product thumbnails inline.
5
Audit
Actions taken on the contact.
Storefront product events
When your store’s pixel is connected, identified visitors’ product activity (viewed, added to cart, checkout started, collection viewed, search) is captured with rich product metadata — image, price, product ID. This powers the “recent products” card and browse-abandonment flows.Product-event metadata (image, price, handle) is kept separate from the
tight analytics fact store, so product detail never bloats your KPI
aggregates.

