Customer Intelligence
Messages (Retention → Messages) is the outbound ledger: everything this brand sent across email, SMS and WhatsApp – journeys, the send API, campaigns and tests – filterable by channel, type and source, searchable by recipient. One person's complete history stays on their Customer 360 profile.
Who your customers are becoming – and who's slipping away. Customer Intelligence reads your purchase history and turns it into segments, risks, and movements you can act on, with every insight one click from a campaign or journey.
One calendar rules the page: the date range you pick in the header drives every number on it, and it's the same range picker (and the same warehouse) as your Dashboard, so figures always agree.
Two views
- Acquisition – where customers come from and what each one costs: channel performance, spend vs revenue, a channel efficiency matrix, and the conversion funnel by channel, with plain-language insight cards ("Spend up, revenue flat") that carry an action button.
- Retention – everything below.
How customers are grouped
Every customer is scored on how recently they bought, how often, and how much – the classic RFM analysis – and placed in one of eight stages:
| Stage | Meaning |
|---|---|
| Champions | Recent, frequent, high spend |
| Loyal | Regular buyers with strong engagement |
| Potential Loyalists | Recent customers with growth potential |
| New | Recently acquired, low frequency |
| At Risk | Declining engagement – needs attention |
| Can't Lose | High value showing warning signs |
| Hibernating | Low activity for an extended period |
| Lost | No activity, likely churned |
Stages are computed directly from purchase history, so they're always current – there's nothing to configure or refresh.
The Retention tabs
Overview – the segment distribution and the headline numbers: customers, revenue, average CLV, champions, at-risk.
RFM Segments – the full customer list with each person's stage, recency, frequency, monetary value, and health score.
Cohort Retention – the retention heatmap: each row is a first-purchase month, each column shows how much of that cohort came back over time. The honest answer to "do customers stick?"
Churn Risk – who to save first. The headline is expected loss – each at-risk customer's lifetime value weighted by their churn probability – with the customers no campaign has touched in 30 days called out. A ranked "save these first" table (risk × lifetime value, with Reached/Untouched badges), a CSV of that list, behavior groups (High-Value Dormant, Lapsed Regulars, One-and-Done, Fading Away) each with a one-click Win-Back Campaign, and Build the save play in Journeys, which opens the journey builder pre-wired to trigger the moment someone becomes At Risk. Blacklisted and opted-out customers are excluded from these lists automatically. On a large book the tab works from your top 5,000 at-risk customers, ranked by risk × value, and says so on screen – the CSV carries that same working set.
Audiences – your saved segments. New audience opens the audience builder – conditions on what people did, what their profile says and the audiences they are in, with the size counted live while you build (see Building an audience below). Or import a contact CSV. Every card shows its rules in short, its size and how membership moved ("+N / −N last refresh"), and refreshes itself every few minutes and before each journey run.
Blacklist – who must never be reached. Every list with its tier (blocks everything, marketing opt-out, or watch list), its identities and where each came from – added by hand, imported, pulled from a gateway such as ProfiSMS, or sent by your systems – plus the suppressed-send evidence: how many sends the lists stopped in the last 30 days, each one logged. New blacklist, bulk import, copy to another brand, and the Block action on any customer row all land here. Enforcement happens on every send, enrollment and audience build, whichever tab you are on. See Unsubscribes, opt-outs, and the blacklist.
How large an audience can get. One audience holds up to 500,000 people. A segment saved from the RFM or churn lists holds up to 250,000, and one push to Meta or Google carries up to 500,000. These are safety ceilings rather than something a plan buys, and they are high enough that most accounts never meet them. If a refresh matches more people than the ceiling holds, the card says so rather than quietly looking complete, and the push tells you how many stayed behind – split the segment if the rest matter. If you need more room, ask us and we will raise it for your account. The blacklist – your do-not-contact lists – is managed here too.
Movement – how customers flow between stages over the period: the transition matrix, the flow diagram, the money that slipped downward ("N of them never heard from you"), and the campaigns behind the upward moves. Click any flow to open its full page: the cohort's stats, its people (searchable, sortable, exportable), the split between natural and campaign-influenced moves – and Build the play in Journeys, seeded for that exact transition.
Building an audience
Describe who belongs, and watch the number change as you do. New audience (or Edit on an audience card) opens the builder: your conditions on the left, the live count on the right.
People who match All / Any of these. All means every condition must hold; Any means one is enough. Conditions are lettered A, B, C… so you can talk about them, and each card shows how many people it matches on its own.
Add condition offers six kinds:
- Did something – Did or Did not, then the event. The list is every event your brand collects or sends – logins and signups on your site, form submits, website behaviour such as scrolling 75 % down a page or abandoning a form, purchases, support, lifecycle movement, the messages you sent and anything your systems push. Search it by name or by the stored event name; each event shows how many times it arrived, from how many people, and when it was last seen. Events with no data yet are listed in grey at the end of their group. Then how often (at least, at most, exactly or between N and M times) and when (in the last N minutes, hours or days – up to two years –, ever, between N and M days ago, or from one date to another).
- Did things in order – + Then on an event adds a next step: signed up, then made a purchase within 7 days. Each step can have its own filters and a "how soon after the step before"; every step has to fall inside the condition's time window. Up to six steps.
- Profile – any field of the person's contact record or their customer record, in one list: tier, country, balance, a date, anything you imported. Dates compare before, after, within the last N days or more than N days ago.
- Total of a value – the total, average, highest, lowest or number of different values of one field across an event: deposits totalling more than 500 in the last 90 days, an average order over 80. Money is in your brand's currency.
- In another audience – in or not in another audience of the same brand.
- Group – a box of conditions with its own All / Any / None of these, for rules like A and (B or C).
+ Refine narrows an event on any field it carries: the page, the form, the conversion type, where the visitor came from, the device, and the event's own value – amount, currency, channel, source and campaign. The field list is grouped (Event · Page · Source · Device · Message · Value) and shows how often each field is filled. The comparisons fit the field – text (is, is any of, is none of, contains, does not contain, starts with, ends with), numbers (more than, at least, less than, at most, between), true / false, and has a value / has no value – and the value box suggests what the event really contains, with counts. Paste a list into is any of to add many values at once. "is not", "is none of" and "does not contain" also count events that do not carry the field at all.
Except people who… – anyone who matches any condition here is left out, whatever else they match. Exclude instead on a card's menu moves a condition there (and Include instead moves it back); the same menu duplicates a condition or puts it in a group.
The live panel recounts a moment after every change:
- Estimated size – how many people match, as a share of your contacts.
- Who you can reach – how many can be e-mailed and texted, how many the blacklist leaves out, and visitors we cannot name (website activity from people who never identified themselves – they never join an audience).
- How it narrows – each condition's own count and how many people are left after it, so you can see which one shrinks the audience (How it adds up when the audience matches Any).
- In words – the rule as a sentence, and as a formula such as A and (B or C), except D.
- A few of them – up to eight of the people, so you can check the rule finds who you meant.
- Size over time – when you edit a saved audience, how its size moved and who entered and left at each refresh.
An audience holds up to 20 conditions, and one list of values up to 100. The name is suggested from the rules until you type your own. A condition that is not finished is marked, and saving waits for it. People who match but are not contacts yet become contacts of the brand when you save. Blacklisted people never enter.
An audience never quietly fills with the wrong people: if a "did not" condition cannot be read in full, or the person who built the audience can no longer change the brand, the audience keeps its last members and its card says why.
Journeys use the same builder – see Journeys.
Pushing an audience to Meta or Google Ads
Push to Meta or Push to Google Ads, on an audience card's menu, sends the audience to your own ad account so your ads can reach the people in it. Before anything goes, you see how many people will go, how many the blacklist keeps back, and how many are skipped because they have no e-mail address or have unsubscribed. Only e-mail addresses go.
- Google Ads gets a Customer Match list. Each address is turned into a SHA-256 hash on our side, and only the hash goes to Google.
- Meta gets a Custom Audience. The addresses go to the partner your Meta Ads connection runs through, which turns each one into a SHA-256 hash before it reaches Meta.
A lookalike on Meta. Create a lookalike on Meta asks Meta to find people who resemble the ones in an audience you pushed to Meta, in the country you choose, at a size from 1% to 10%. Meta builds it from the audience it already holds, so nobody leaves here for it. The audience must have reached Meta in full, with at least 100 people. If someone in it has been blacklisted since the push, push it again first. Lookalikes work on Meta only.
Someone blacklisted after a push. A push leaves out everyone the blacklist holds at that moment, whether they are listed by e-mail address, phone number or customer ID. For someone in a pushed audience who is added to a blacklist later, by any of the three:
- Google Ads – they are taken out of the list overnight.
- Meta – Meta can't take one person out of an audience, so the whole audience is deleted on Meta overnight, with any lookalike made from it, and whoever pushed it gets an alert. This happens for anyone added to a blacklist that keeps people out of marketing, whatever kind of list it is. Push it again to rebuild it without them.
Seeing one customer across your brands (optional)
By default, every brand keeps its own books: a customer who exists on two of your brands appears as two separate relationships, and each brand's view shows only its own history. That stays true no matter what.
If your brands belong to the same legal entity, the owner or an admin can turn on Cross-brand customer view under Organization settings → Data & privacy. With it on, a customer's profile gains an "Also on other brands" panel listing their separate relationship on each sibling brand – stage, spend in that brand's currency, loyalty points – side by side. Three things never change:
- Team members only see brands they already have access to. The toggle widens nothing for a seat scoped to one brand.
- It's a view, not a merge. Balances, loyalty points and history stay per brand; points earned on one brand can never be spent on another.
- Messaging, personalization and automation always work from one brand's data only, whether the toggle is on or off.
Only enable it if you're authorized to combine the brands' customer data – for agencies, brands run for different clients are different data controllers, and combining their views is a decision for those clients, not a convenience setting.
Every insight ends in an action
That's the design rule of the page. A behavior group becomes a win-back campaign in chat. A stage transition becomes a journey trigger ("someone becomes At Risk", "someone becomes a Champion") that runs the save or the reward play by itself, forever. A cohort becomes a CSV for anything external. Nothing here is a report for a drawer.
Adding a customer by hand
Sometimes you want a person on record before any data flows – to test a journey, a send, or a segment. On Customers, use New customer: one identifier (your own customer ID or an e-mail) is enough; name, phone, company and attributes are optional. Tick the consent the person has given – marketing sends need it and nothing is assumed. Leave Marketing e-mail unticked and the record reads "Not granted": the person gets service e-mail but no marketing e-mail until consent is given (tick it later on their record, or they tick a landing page's consent box). This applies to test customers too, so tick it for a test customer who should receive a journey's marketing e-mails. Adding an e-mail to a customer who has none (one you had only by your customer ID, or whose address was cleared) works the same way: unless you tick Marketing e-mail in the same save, that address starts "Not granted". Changing an address keeps a "Not granted" customer "Not granted": the corrected address starts "Not granted" too, unless you tick the box in the same save. A customer who was reachable stays reachable at the new address. A phone number works the same way for marketing texts: a new customer's number, a number you add to a customer who had none, or a changed number of a "Not granted" customer starts "Not granted" unless you tick Marketing SMS in the same save. People who arrive through your data – files, stores, audiences, forms, surveys, the API – follow the same rule; see Connecting your data. The customer is stored on the active brand's record exactly like a CSV row, and anyone with an owner-level role on the brand's organization sees it.
Answering a data request
When someone asks what you hold about them, open their record and use Export data, next to Edit. It downloads a single JSON file with everything held for that person – their profile, the identifiers we resolved to them, their events, what you sent them and what they did with it, promos, support conversations, survey answers, their consent history and the journeys they walked through.
It answers the access request in Article 15 of the GDPR. Two things worth knowing: it reads the person's whole identity, so records that were merged into theirs are included, and someone already erased has nothing to export – erasure leaves a tombstone, not a copy.
Editing a customer
Open the customer's record (Customers → the row, or any link to their 360) and use Edit in the Identity panel. Everything on the record can change: e-mail, external ID, phone, names, company, attributes, the Test switch, and consent you record now (what is already on the ledger stays as it is).
E-mail and external ID are hard identifiers: each belongs to one customer on a brand. Changing one keeps the history under the old value on this customer. If the new value already belongs to another customer on the same brand, the two records become one – the customer who already had the identifier stays, and the record you were editing is merged into theirs: their values win, their blanks fill from yours. The page then shows the customer who remains and says so.
Merging two records
When two records look like the same person, the Identity panel lists the other one under Possibly the same person with the reason (a shared device, the same name). Merge joins them: the record you are looking at stays, the other is absorbed – its identifiers, devices and history resolve here from now on, its segment memberships and conversations follow, and its old address forwards to this record. Merging cannot be undone, and it stays within one brand: the same e-mail on two brands is two customers.
Test profiles
A whole business profile can be a test profile – Settings → Brand → Workspace → Test profile, or in the admin console under Business Profiles → edit → Workspace (test profiles carry a Test pill in that list). Everyone in it counts as a test customer: they never appear in the cross-brand customer view or in organization-wide numbers, and the profile is labelled Test in the profile switcher. Journeys and sends inside it work as usual, so your team can test them end to end.
Test customers
A customer added by hand is a test customer by default (you can switch it off in the form), and any customer can be marked or unmarked as test from their Customer 360 page ("Mark as test").
What "test" means:
- They stay out of the cross-brand customer view – when your organization has turned that view on, a test customer never appears as a relationship on another brand, and a person who is a test customer on the brand you are viewing shows no other-brand section at all.
- They stay out of Customer Intelligence's lists and predictions – the RFM and at-risk lists, churn and value scores, and the movement chart.
- They carry a Test pill on the Customers list; Hide test customers takes them out of the list while you work.
- They can enter journeys and receive sends you approve – that is the point of a test customer. Consent and suppression rules apply as usual.