Know the person behind the next interaction.
Closer to a customer data record than an address book, and directly usable for targeting.
A record you read before you send.
A contact with a low score and a clear channel preference is not one to message harder. It is one to message once, on the right channel.
Everything below exists to make that judgement possible: complete history, a stable identity, fields derived from behaviour rather than declared, consent that travels with the person, and audiences whose membership you can see change.
Every event, from day one or from years of history.
SDKs for Android, iOS, Flutter and React Native, plus a web tracker. Queued ingest that absorbs spikes. Batch and file paths that backfill history while live traffic keeps arriving.
- Four mobile SDKs and a web tracker
- Spikes queue, nothing is dropped
- History backfills alongside live traffic
Know the browsing that led to the signup.
Anonymous visits accumulate against a stable ID. When the person registers, their whole prior history joins their record, usable in segments and journeys. Stitching runs as a backfill, so a journey that must act on the registration itself should trigger on that event.
- A stable ID before anyone signs in
- Prior history joins on registration
- Usable in segments and journeys, not just reports
No schema to declare.
The event catalogue is derived from real traffic and drift is visible. Sample values exclude identity fields by construction and reject anything shaped like an email, a phone number or a token.
- Derived from what actually arrives
- New events and changed properties are flagged
- Identity never appears in a sample
A record that tells you when and where to send.
Each contact carries a cross-channel timeline, a best time to send, the channel they actually respond to, and an engagement score that falls when you over-message them.
- Best time, computed from their own opens and replies
- Preferred channel, observed rather than declared
- A score that punishes over-messaging, usable as a segment condition
Consent as part of the record.
Opt-in is per channel, with a full history of when each state changed. Journeys read and write it directly.
- Per channel, not one flag
- Every state change kept, with its source
- Read and written by journeys as steps
Audiences you see before you commit.
Combine six condition families in one segment. Preview the size and a sample before saving. Read every recomputation: added, removed, retained, so "the same segment" never quietly becomes different people.
- Attribute, behaviour, engagement, delivery, consent and RFM, in one definition
- Size and a sample before you save
- Every recomputation explained as a diff
RFM on your definitions.
As many named models as you need, each with its own events, windows and thresholds. Champions, Loyal, At Risk and Lost are created and maintained automatically.