One contact profile, every brand you can see.
Open a ticket and see who you are talking to: their previous tickets across every brand you are permitted to access, grouped neatly by brand. History a teammate is not allowed to see is never exposed. You get the context to answer faster, without crossing a permission line.
The short answer
The same person, the whole picture you are allowed to see
A customer rarely contacts you once, and rarely about one thing. Contact history in Solves gathers a person's previous tickets into a single profile, so the teammate answering today can see what came before. When you run several brands, that profile spans every brand you are permitted to access, grouped by brand, with nothing shown from brands outside your access.
The profile sits alongside the ticket you are working. At a glance you see the contact's name and the brands they have dealt with, then their recent tickets under each brand, each with its subject, state and when it last moved. You are not hunting through inboxes or asking a colleague what happened last time. The history is right there, ready to inform the reply you are about to send.
Crucially, the profile is built from your permitted scope, not the customer's entire footprint. If your access covers two of the organisation's five brands, the profile shows those two and only those two. A colleague with wider access would see more of the same person's history; you see exactly what your brand access and ticket visibility allow, which keeps the feature genuinely useful without ever becoming a back door around permissions.
What a profile shows
One contact, their recent tickets, grouped by brand
Picture a contact, Priya, who has written to two of the brands you support: Harbour and Kiln. When you open her latest Harbour ticket, her profile lays out both threads of her story, each under its own brand heading, so you never confuse a Harbour order with a Kiln return.
Recent tickets, under the right brand
Each brand section lists that brand's recent tickets for the contact: the subject, the current state (New, Open, Waiting for Customer, Snoozed, Resolved or Closed), the assignee and when it last changed. You can open any of them you have visibility of, so following a thread back is one click, not a search.
- Open the ticket you have been assigned or have picked up from the queue.
- Read the contact profile beside it: their name, the brands you can see, and their recent tickets grouped under each brand.
- Reply with the context already in hand, on the correct brand, with that brand's signature and saved replies.
History you are not permitted to see is never exposed
If the same person has also contacted a brand you have no access to, that part of their history simply is not on your profile. There is no count, no greyed-out row, no subject line and no hint that more exists. The profile is assembled from queries scoped to your organisation and filtered through your brand access and ticket visibility, so a teammate cannot infer hidden tickets from what the page chooses to show. The boundary is enforced where the data is fetched, not papered over in the layout.
What you get
Context that respects every permission line
One profile per contact
A single record for each customer, matched on their email address, so a returning enquiry links to the history you already hold.
Grouped by brand
Tickets are organised under each brand the contact has dealt with, so a multi-brand history reads clearly instead of as one jumbled list.
Scoped to your access
The profile assembles only the brands and tickets your access permits. Brands you cannot see never appear, not even as a placeholder.
States and timing in view
Each past ticket shows its state, assignee and last movement, so you can tell at a glance what is settled and what is still open.
Encrypted at rest
Contact name, email and company are encrypted with per-organisation keys before storage, and matched by blind index rather than plain text.
Works with notes and replies
Read the history, then reply publicly or add a private note for the team, with the hard separation that keeps internal context off the customer thread.
How it comes together
From a fresh email to a profile that already knows the customer
Every step stays inside your permitted scope, so the profile is helpful without ever widening anyone's reach.
A message arrives and becomes a ticket
An email lands on one of your brand mailboxes and Solves turns it into a ticket on that brand. The sender address is matched, using a blind index rather than plain text, against the contacts you already hold, so a returning customer is recognised without their address ever being stored in the clear.
Their history is linked to one contact
If that person has written to you before, the new ticket joins their existing contact record rather than starting a stranger from scratch. All of that contact's tickets, across every brand, hang off the same profile, ready to be assembled the moment a teammate opens the ticket.
The profile is built to your permitted scope
When you open the ticket, Solves assembles the profile from queries scoped to your organisation and filtered through your brand access and ticket visibility. Brands you cannot see are never fetched, so the profile beside the ticket holds only the history you are entitled to read, grouped by brand.
You reply with the context already in hand
Their recent tickets sit alongside the message you are answering, each with its subject, state, assignee and last movement. You scan what came before, reply on the correct brand with that brand's signature and saved replies, and the new exchange becomes part of the same history for next time.
Why it helps
Faster, warmer replies, without crossing a line
Context is what turns a generic reply into a useful one. When you can see that a customer asked about the same order last week, or that another brand already resolved a related issue you are allowed to see, you skip the back-and-forth and answer the real question. Contact history puts that context in front of the person replying, at the moment they need it.
Context for the team, not a free-for-all
The same feature that helps your team answer faster could, done carelessly, expose history a teammate has no business seeing. Solves treats that as a permission question, not a presentation one. Because the profile is scoped to brand access and ticket visibility at the point the data is read, the helpful version and the safe version are the same version. You give people context without widening anyone's reach.
Kept honest about what Solves is
Contact history is email-first, like the rest of Solves. It draws on the tickets and messages that came in by email across your brands. It does not pull in chat transcripts, call recordings or social messages, because Solves does not run those channels. What it gives a small multi-brand team is a clear, permission-safe view of every email conversation it is allowed to see with a given customer, which is usually exactly the context a reply needs.
The boundary is in the query, not the layout
A contact profile is built from data scoped to your organisation and filtered through your brand access and ticket visibility before it reaches the page. Brands and tickets outside your access are never fetched, so there is nothing on the page to hide and nothing to leak.
FAQ
Contact history questions
What is cross-brand contact history?
Cross-brand contact history is a single profile for a customer that pulls together their previous tickets across all of your brands, not just the one brand they happen to be writing to today. If the same person has contacted two of your brands, you see both histories in one place, grouped by brand, so you can answer with full context instead of starting cold each time.
How is cross-brand history scoped by permission?
It is scoped by the same brand access and ticket-visibility rules that govern the rest of Solves. A contact profile only ever assembles tickets from brands you are permitted to see, and only the tickets your visibility scope allows. The history is built from queries scoped by your organisation and filtered through your access, so the profile you see is exactly the history you are entitled to see, no more.
Does it leak tickets from brands I cannot access?
No. If you have no access to a brand, that brand and its tickets do not appear on the contact profile at all: not the count, not the subject, not a placeholder hinting that something is hidden. The profile is assembled from your permitted scope only, so there is nothing to leak. A teammate with wider access sees more of the same contact's history, and a teammate with narrower access sees less, from the same underlying record.
Is customer contact data encrypted?
Yes. Contact name, email address and company, along with message subjects and bodies, are encrypted at rest with per-organisation keys before they touch the database, and access is restricted to authorised teammates within your organisation. Logs are metadata only, so contact details and message text never appear in them.
Does contact history work across multiple mailboxes for one brand?
Yes. A brand can own more than one support address, and a contact's tickets for that brand are grouped together under the brand regardless of which mailbox they arrived through. You see the brand-level story for that person, with each ticket still linked to the mailbox and state it belongs to.
How does Solves match a returning customer to their history?
Solves matches on the contact's email address using a blind index, so it can recognise a returning customer without storing their address in plain text. When someone writes in, their existing tickets across your permitted brands are linked to the same contact, so their history is there the moment you open the ticket.
Answer with the full context you are allowed to see
Start at £29, or let us help you set up your brands, mailboxes and team access.