GLOSSARY

What is a Unified Inbox?

A unified inbox is a single queue where messages from every channel (email, Telegram, WhatsApp, Instagram, X and live chat) land in one thread per person, under one assignment model, one status model and one SLA clock.

Free forever plan · No credit card required · Cancel anytime

Quick definition

A unified inbox is a single queue where messages from every channel (email, Telegram, WhatsApp, Instagram, X and live chat) land in one thread per person, under one assignment model, one status model and one SLA clock.

The test: one person, one thread, whichever app they used.

What it means

The word unified is doing a lot of work in this term, and most products that use it have not earned it. Five tabs labelled Email, WhatsApp, Instagram, Telegram and Chat, each with its own list and its own unread badge, is a multi-inbox. The operator still has to remember which tab a conversation started in, and the customer who emailed on Monday and messaged on WhatsApp on Thursday is still two strangers.

A real unified inbox has to satisfy five conditions. Fail any of them and you have a nicer-looking multi-inbox.

  • One thread per person, not per channel. Messages from the same human appear in one timeline in time order, annotated with which channel each arrived on.
  • One ownership model. A conversation has one assignee, and that assignment survives a channel switch. If the customer moves from email to WhatsApp, the owner does not change.
  • One status model. Open, pending, snoozed, closed. The same vocabulary everywhere, so a queue filter means something.
  • One SLA clock. A conversation is waiting for a reply or it is not, regardless of which app the last message landed in.
  • One search. Searching for a phrase finds it in email bodies, Telegram messages and WhatsApp attachments alike.

Why the channels do not behave the same

The unified UI is the easy half. Underneath it, every channel has its own transport, its own identifier scheme and its own rules about when you are allowed to speak. The table further down lists the constraints we work with. Three of them shape the product more than the rest.

WhatsApp has a clock. The Cloud API allows free-form replies for 24 hours after the customer's last message. Outside that window you can only send a template that Meta approved in advance, which means a conversation left unanswered overnight becomes a conversation you have to restart with pre-written words. A unified inbox that does not surface that countdown in the composer is hiding the single most operationally important fact on the screen.

Instagram ids are scoped. The user id you receive is issued per app. The same person messaging two different businesses, or the same business through two different app integrations, is two different ids. There is no global Instagram identifier you can key on, and no way to look up an email address from one.

Telegram has no window but has a reputation. You can reply whenever you like. What you cannot do is message people who never contacted you, at volume, without collecting rate limits and reports. That is a different failure mode from a closed window and it is covered in flood wait and account warm-up.

Everything in that table is our current understanding of platform behaviour and platform rules change without much warning. Treat the structure as durable and the specific numbers as things to verify against the current API documentation before you design around them.

Identity resolution is the hard part

One thread per person requires knowing which messages belong to which person, and the identifiers do not cooperate. A Telegram numeric id, an Instagram app-scoped id, a WhatsApp phone number and an email address share no common key and cannot be derived from one another. Matching them is a real algorithm with real failure modes, and it has its own page: deduplication.

The short version for inbox design: never fuse two identities on similarity alone. Fusing threads that belong to two people is far worse than showing two threads for one person, because the operator reads a stranger's history and may reply into it. Show a suggested link, let a human confirm it, and record who confirmed it.

Outbound echo, or the inbox that quietly lies

An inbox that only shows messages it sent is wrong within a day of going live. Someone will reply from the WhatsApp app on their phone. Someone will answer an email from their laptop mail client. Someone will open Telegram and type. If those messages never appear in the shared queue, the customer looks unanswered, the SLA clock keeps counting, and a second agent sends a duplicate reply.

Making the echo work is per-channel plumbing:

  • Email: sync the Sent folder as well as the inbox, with its own independent cursor, and match on Message-ID so a message the system sent itself is recognised rather than stored a second time.
  • Telegram: read back your own outgoing messages from the account session. They arrive as updates like any other message and have to be attributed to the operator, not the contact.
  • WhatsApp and Instagram: echo depends on the integration. When the platform does not report messages sent outside your app, say so in the UI rather than presenting a partial thread as complete.

The general rule: a thread that might be missing messages should be labelled as such. Silent incompleteness is the failure that destroys operator trust, and trust is the only reason anyone uses a shared queue instead of their own phone.

Collision handling

Two agents open the same conversation and both start typing. The common design is an alert: a banner appears once both have begun, telling them what has already gone wrong. That is a notification of a mistake rather than a prevention of one.

A claim model works better. Opening a conversation takes a soft lock that everyone else sees in the list view, typing extends it, and the lock expires on its own after a few minutes because agents close laptops and go to lunch. A second agent who opens the conversation sees who holds it and can take it deliberately. The cost is one extra piece of realtime state; the benefit is that the customer never receives two different answers to the same question.

Routing

Once every channel lands in one queue, the queue needs a policy for who picks things up.

  • Round robin is the simplest and works for teams with interchangeable skills. It ignores current load, so a conversation can be assigned to someone already handling five.
  • Load based assigns to the agent with the fewest open conversations. Better in practice, needs a definition of open that everyone agrees on.
  • Skill or language based routes by what the conversation needs. This is the one that matters most in multilingual markets, where the wrong assignment costs a handoff and a delay.
  • Channel to pipeline routing sends conversations from a channel into a specific sales or support pipeline, so that an Instagram DM about pricing enters the sales board while a support email enters the support board.

The metrics that only exist once the inbox is unified

Before unification, response time is per tool and mostly unmeasured. After it, four numbers become available.

  • First response time, from the first inbound message to the first human reply.
  • Resolution time, from open to closed.
  • Reopen rate, the share of closed conversations the customer restarts. High reopen rate usually means agents are closing to clear the queue rather than because the issue ended.
  • Per-agent load, open conversations per person, which is the number that predicts response time better than any other.

One warning about the first of those. Averaging first response time across a WhatsApp conversation governed by a 24 hour window and a Telegram chat where the person is watching for a typing indicator produces a figure that is arithmetically correct and operationally meaningless. Report it per channel, target it per channel, and aggregate only for an audience that knows the mix.

Honest limits

A unified inbox smooths differences it cannot remove, and the responsible design shows the seams rather than hiding them.

  • Read receipts and typing indicators are not available everywhere, and where they exist they are not equally reliable. An interface that shows a grey tick on a channel that never reports one is inventing information.
  • Reactions, edits and deletions exist on some channels and not others. When a customer edits a message on a channel that reports edits, the thread should show it. When the channel does not report edits, the thread is quietly stale.
  • Attachments differ. Size caps, permitted MIME types and whether voice notes arrive as audio files or as a platform-specific object are all channel-specific. Voice messages in particular need transcription to be searchable at all.
  • History before connection is usually unavailable. Connecting a channel today rarely backfills last year, so early threads start mid-conversation.

Degrading gracefully means the composer disables what the channel cannot do and says why, rather than offering a button that fails after the operator presses it.

Related concepts

  • Deduplication: the matching machinery that decides what counts as one thread.
  • Omnichannel CRM: the unified inbox is the part of it the operator actually looks at.
  • Flood wait: what happens when outbound from a shared inbox exceeds platform limits.
  • Deliverability: the email channel's version of a messaging window, measured in reputation.
  • Contact enrichment: gives the inbox the context that makes a fast reply a good reply.
  • Drip campaign: the outbound counterpart, and the thing that must stop the moment a reply lands in the inbox.

How Pinlyx handles it

Pinlyx runs one inbox across Telegram, X, WhatsApp, Instagram, email and the live chat widget. Conversations are threaded per contact rather than per channel, assignment and status are shared across every channel, and the composer shows the constraints of the channel it is about to send on, including the WhatsApp window state. Sent-folder sync gives email its own cursor and matches on Message-ID, and outgoing Telegram messages sent from a phone are read back into the thread. Voice messages are transcribed so search covers them. Routing supports round robin, load based and channel-to-pipeline rules, and every conversation carries its own SLA clock so first response time is reported per channel rather than as one misleading average.

Channel constraints · what the API gives you

Every channel has a different idea of when you may speak.

Our current understanding of platform behaviour. Platform rules change, so verify against the live API documentation before designing around a specific number.

ChannelMessaging windowIdentity keyWhat you do not get
WhatsApp (Cloud API)24 hour customer service window from the last inbound message. Outside it, only pre-approved template messages send.Phone number in E.164, plus a per-business WhatsApp id.No typing indicator from the business side in every setup, no message editing, template approval is asynchronous and can be rejected.
Instagram (Graph API)A limited response window after the last inbound message, extendable only under specific human-agent conditions.App-scoped user id. The same person has a different id in a different app, so ids are not portable.No access to the person's email or phone, no history from before the integration was connected, limited attachment types.
Telegram (MTProto)No time window. The constraint is different: messaging people who never contacted you is rate limited and report sensitive.Numeric user id, plus an access hash that is valid only for the account that fetched it.Usernames change and are not stable identifiers, phone numbers are hidden by privacy settings, group scraping is restricted.
Telegram (Bot API)No window, but a bot can only message users who pressed start, and it cannot initiate contact at all.Numeric user id issued to the bot.No way to reach a user who never started the bot, no visibility of the user's other Telegram activity.
X (Twitter) DMsNo formal window. Whether you can send at all depends on the recipient's open-DM setting and on your own account limits.Numeric user id. Handles change, ids do not.Delivery is silently constrained by the recipient's settings, and per-account send limits are not exposed as a readable quota.
Email (IMAP or Gmail API)No window at all. The constraint is reputation, not time. See deliverability.Address, threaded by Message-ID with In-Reply-To and References headers.No read receipts you can trust, opens are unreliable since Apple Mail Privacy Protection, and some phone clients break threading by dropping References.
Live chat widgetSession-bound. The visitor is present or they are gone, and they are usually anonymous.A cookie or session id until the visitor gives you an email or a phone number.Identity, until the person hands it over. A returning visitor on a different device is a new person as far as the widget knows.
The five-condition test

Is it unified, or is it five tabs?

  • One thread per person, in time order, annotated by channel.
  • One assignee, and the assignment survives a channel switch.
  • One status vocabulary, so a queue filter means the same thing everywhere.
  • One SLA clock per conversation, not per channel.
  • One search that covers email bodies, DMs and transcribed voice notes.

Fail any one of the five and the operator is still doing the unification in their head, which is where it was before you bought a tool.

Claim, do not alert

Two agents, one conversation.

A banner that appears once both agents are typing reports a collision rather than preventing one. Opening a conversation should take a soft lock that the whole team sees in the list, typing should extend it, and it should expire by itself because people close laptops mid-thread.

The customer never sees the lock. What they see is one answer to their question instead of two slightly different ones.

Watch out for

An inbox that hides what it does not know.

The tempting design shows every channel identically: same tick marks, same typing dots, same complete-looking history. The honest one disables what the channel cannot do, labels a thread that may be missing messages sent from elsewhere, and shows the WhatsApp window countdown in the composer. Operators forgive a tool that says it does not know. They stop using one that turned out to be wrong.

Unified inbox: FAQ

What teams ask before consolidating five apps into one queue.

No, and the distinction is worth keeping. A shared inbox is one mailbox that several people can open, which solves ownership but only for a single channel. A unified inbox solves the channel problem too: email, Telegram, WhatsApp, Instagram, X and live chat all land in one queue, threaded per person rather than per channel. Most tools sold as unified inboxes are actually tabbed multi-inboxes, which is a different and much weaker product.
Identity resolution and per-channel asymmetry. Identity resolution because a Telegram user id, an Instagram-scoped id and an email address share no key, so merging them into one thread requires evidence rather than guesswork. Asymmetry because every channel has different rules: WhatsApp has a 24 hour window and template approval, Instagram has scoped ids and a response window, Telegram has non-contact rate limits, and email has none of those but has reputation instead. A UI that pretends they are the same channel will lie to the operator.
Because otherwise the inbox is wrong. If a colleague replies to a customer from the WhatsApp app on their phone and the shared inbox never sees it, the thread shows an unanswered customer, the SLA clock keeps running, and a second agent replies to a question that was already answered. For email this means syncing the Sent folder with its own cursor and matching on Message-ID so the message is not stored twice. For Telegram it means reading back your own outgoing messages from the account session.
With a claim model rather than an alert model. When an agent opens a conversation they take a soft lock that is visible to everyone else in the list, and typing extends it. An alert that appears after both agents have already typed is a notification of a mistake, not a prevention of one. The lock has to expire on its own, because agents close laptops.
Not as a single average, no. A WhatsApp conversation that must be answered inside a 24 hour window and a Telegram chat where the person is watching the typing indicator are different products with different expectations. Averaging them produces a number that is true and useless. Report first response time per channel, set the target per channel, and only aggregate when the audience understands the mix.
Probably not yet, but the threshold is lower than teams expect. The moment a customer starts a conversation in one place and continues it in another, someone is reading half a story. Two channels with clean handoff is fine. Two channels plus a phone number people also message on WhatsApp is already the problem this solves.
Ready to ship

Six channels. One queue.

Pinlyx threads Telegram, X, WhatsApp, Instagram, email and live chat per contact, with shared assignment, per-channel SLA clocks and a composer that knows what each channel allows.

Free forever plan · GDPR-ready · No credit card required

We value your privacy

We use cookies to improve our site, analyze traffic, and personalize ads. You can accept all, reject non-essential, or customize your choices. Read our Cookie Policy.