Skip to main content
The Contacts section is your customer directory. Every person who’s messaged on any channel appears here. Keloa never merges two contacts on its own: see Identity matching and merging.

The Contacts list

Open Contacts from the sidebar. Each row shows:
  • Name (or “unknown” until the contact provides one)
  • Email and phone if known
  • Channels where you’ve talked
  • Last message timestamp
  • Conversation count
  • Tags
Search by name, email, or phone at the top.

Where contacts come from

A contact is created the first time we see someone:
  • Webchat — a new browser session starts its own contact. An email the visitor types into the chat is saved on that contact only if it has no email yet, marked Typed in chat (unverified). It never joins or merges with an existing contact that has the same address.
  • Signed-in website user — with identity verification, your backend vouches for the user. Keloa joins an existing contact only by an exactly matching email your site verified; otherwise it creates a new contact. The user’s conversations follow them across devices.
  • Email — from the From header.
  • WhatsApp — the sender’s phone number and WhatsApp profile name.
  • Instagram / Messenger — the contact’s Meta user ID for your Page. Keloa fills in their name and profile picture from Meta when it can.
  • Telegram — the contact’s Telegram user ID, with the name, username and language from their Telegram profile. The phone number is only known if the contact shares their contact card in the chat.
  • Slack — the person’s Slack user ID, with the name from their Slack profile. Their email address is saved when Slack shows it (never for people from another organization in a Slack Connect channel), marked From Slack: Slack doesn’t confirm it’s theirs, so Keloa never uses it to look up orders or invoices.
Shopify isn’t a channel, but the Shopify integration can show a contact’s orders by matching their email.

Identity matching and merging

Keloa never merges two existing contacts on its own. It only decides which contact a new message belongs to:
  • Email. Mail from an address goes to the contact that earlier mail from that address went to. For a first email, Keloa looks for the oldest contact with that email address, skipping contacts whose address was only typed into a website chat. If there is none, Keloa creates a new contact.
  • An address typed into a website chat. Mail from that address joins the website contact only after the owner of the address replied to an email your team sent there, and their mail domain vouches for the sender. Until then, their mail goes to another contact with that address, or starts a new one. See Addresses typed into the chat.
  • Signed-in website users. With identity verification, a user joins an existing contact only by an exactly matching email your site verified. See Contact profile.
So the same person can end up as two contacts, for example a website chat and an email contact with the same address. You can merge them manually:
  1. Open one of the two contacts.
  2. Click ⋯ → Merge into another contact.
  3. Pick the target.
Merges are irreversible — double-check first. Where the two contacts disagree, you pick the value to keep. The dialog starts on the contact you keep, with one exception: an email address a visitor typed into a website chat that nobody confirmed (Typed in chat) never wins over an address Keloa trusts unless you pick it. If you do, the dialog warns you, because emails to the contact then go to that address, and it stays marked as typed in chat. Under the email choice the dialog says whether the other address stays on the contact as an extra address (mail from it still arrives here) or isn’t kept (only typed into the chat and never confirmed). Every conversation moves with the merge, and email conversations are answered at the address you keep. Check an address typed into the chat before you merge or correct it: see Addresses typed into the chat.
Only merge a website contact into another contact once the person has confirmed who they are, for example by answering your team’s email. Anyone can type any address into the chat, and a merge puts the visitor’s conversations on the other person’s profile for your team. In the widget, each anonymous website conversation stays with the browser that started it, so a merge doesn’t show the visitor the other person’s chats. If your team also merges conversations, the widget still only shows the visitor what was written in their own website conversations, and a website conversation your team mixed with another person’s conversation in a merge before Keloa refused such merges is never shown to the visitor again (see Website conversations merged before the rule). Website conversations from before Keloa recorded which browser started them are the exception: after a merge, the visitor’s browser can open those on the contact you keep, until your team merges a newer conversation of that visitor into one of them, which ties it to that visitor. See Contact data on website conversations.

Tags on contacts

Separate from conversation tags. Contact tags stick around forever (vip, german-speaking, wholesale-partner) — conversation tags are thread-level. Add contact tags from the contact’s profile. They’re available as fields in flow Conditions.

Companies

Contacts can optionally belong to a Company. Useful for B2B where you’re supporting multiple people at the same customer. See Companies.

Exporting

Contacts → ⋯ → Export CSV exports the filtered list. GDPR note: Data & privacy exports all data for a single contact on request.

Deleting a contact

For GDPR deletion requests: Settings → Data & privacy → Delete contact. All conversations, messages, and the contact record itself are removed. See Data & privacy.