Unifying Voice, Chat, Email and WhatsApp in Dynamics 365 Without Losing Messages
A technical guide for service leaders: record every message before routing, connect each channel the supported way, make one customer one record, and rescue an omnichannel setup that was bought and never finished.
If previous attempts half-worked and agents now answer customers on personal WhatsApp, start with one non-negotiable: every inbound message must land as a durable record in Dataverse before any routing decision, so nothing is lost when a channel, rule or agent fails. Then build around it. Connect each channel through its supported route, such as a WhatsApp Business number through Azure Communication Services rather than the consumer app. Use automatic record creation rules for email, resolve identity so one customer is one record across channels, route through workstreams, queues, presence and capacity, and keep one conversation archive with a written retention period. Rescue a half-built setup one channel at a time, and close personal messaging accounts as you go.
Why do omnichannel projects in Dynamics 365 lose messages?
Messages are rarely lost inside a working channel. They are lost in the gaps around it: a routing rule that matches nothing, a queue nobody is assigned to, an email that never becomes a case, a chat that ends when an agent signs out, or a WhatsApp message that arrives on a phone that is not connected to anything. When the first place a message is recorded is also the point where a decision about it is made, any failure of that decision leaves no trace.
The setups that half-work share a pattern. Channels were switched on one by one, each by a different project, with routing designed around the channel rather than around the customer. When agents found the result unreliable, they built their own side doors, and personal WhatsApp became the fastest way to reach them. If chats are disconnecting mid conversation, that is a separate problem with its own fix in our guide to Omnichannel agent disconnections and chat timeouts.
- Routing rules with no fallback queue, so unmatched work sits unassigned.
- Shared mailboxes that are not synchronised, or that are synchronised without rules to create cases.
- Capacity and presence never tuned, so work is offered to agents who cannot take it.
- One contact per channel for the same person, so history is split and agents ask the customer to repeat themselves.
- No agreed archive, so transcripts, recordings and emails live in different places with different retention.
- Agents answering on personal devices, where nothing is recorded at all.
What does a durable ingest record before routing mean in practice?
It is an architectural principle: a message is written to Dataverse as a record the moment it enters the platform, and only then does anything decide who should handle it. If routing fails, the record is still there, visible in a view, countable and recoverable. If routing succeeds, the record is where the transcript, the case link and the outcome accumulate.
Dynamics 365 Customer Service is built this way for its native channels, provided you do not undermine it. Chat, messaging and voice interactions create conversation records before they are assigned, and synchronised email arrives as an email activity before any rule turns it into a case. The design work is making sure every channel you add follows the same rule, and that someone watches the records that routing did not pick up.
| Channel | Record that must exist first | What then acts on it |
|---|---|---|
| An email activity in Dataverse, received through server-side synchronisation of the support mailbox or queue. | An automatic record creation and update rule creates or links the case, then unified routing assigns it. | |
| Live chat | A conversation record created when the customer starts the chat. | A messaging workstream and its routing rules pick a queue; the transcript is stored against the conversation. |
| WhatsApp and other messaging | A conversation record created when the inbound message reaches the channel. | The same messaging workstream pattern, with identity resolution on the phone number. |
| Voice | A conversation record for the call, created when the call reaches the voice channel. | A voice workstream routes the call; recording and transcription follow the settings you choose. |
| Web forms and integrations | A case or custom intake record written by the form or integration before any assignment logic runs. | Record routing through unified routing, never an assignment coded inside the integration. |
Which licences and channel prerequisites do you need before you build?
Check entitlements before you design, because the most common reason a bought omnichannel investment sits unused is that the channel the business wanted is not covered by what was bought. Dynamics 365 Customer Service covers case management, email and routing of records. Live chat and other digital messaging channels, and the voice channel, are separate add-on entitlements on top of it. Microsoft has also been moving its contact centre capabilities under the Dynamics 365 Contact Center name, so read the current Microsoft licensing guide or ask your licensing partner which product and add-on covers each channel for your tenant. We do not quote licence costs.
- WhatsApp needs a WhatsApp Business account and a business phone number connected through a supported provider. Microsoft documents Azure Communication Services for this, and many existing setups run through Twilio. The consumer WhatsApp app on a phone cannot be connected to Dynamics 365.
- The number used for WhatsApp Business is dedicated to it. Plan whether that is a new number or an existing one moved off the WhatsApp app, and tell customers before you switch.
- Voice runs on Azure Communication Services: numbers acquired through it, or your existing carrier connected through direct routing. The carrier relationship and number porting are handled with your telephony partner; Solzet configures the Dynamics 365 side.
- Email needs server-side synchronisation for the support mailboxes and queues, with the mailboxes approved and tested.
- Live chat needs the chat widget placed on your website or app, and a decision on whether customers sign in first, which changes how identity can be resolved.
- Each channel has its own consent, template and message window rules from the provider, such as WhatsApp rules on business-initiated messages. Design notifications around them rather than discovering them in the pilot.
How should automatic record creation rules handle email?
Email is the channel most likely to lose work quietly, because a mailbox can look healthy while messages pile up unconverted. Automatic record creation and update rules, configured in the Customer Service admin center, turn incoming email activities into cases and link replies to existing ones. Configure them deliberately rather than accepting a default that creates a case for everything.
- Create one rule per support queue and keep the conditions visible to the service lead, not only to an administrator.
- Decide what happens to email from unknown senders: create a contact, create the case without one, or hold it in a queue for review. Never let it be silently ignored.
- Make sure replies to an existing case thread link to that case instead of creating a new one, and test it with forwarded and replied messages from common mail clients.
- Exclude automatic replies, bounces and internal notifications so they do not create cases.
- Build a view of email activities in each support queue that have no related case, and review it daily; it is the backlog that no dashboard shows.
- Retire routing inside mail clients and personal inbox rules once the queue rules are trusted, so there is only one way in.
How do you make one customer one record across every channel?
Identity resolution decides whether the agent sees the whole customer or a stranger. A person who emails from one address, chats anonymously on the website and messages on WhatsApp from a phone number will become three contacts unless you design for it. Dynamics 365 Customer Service can identify customers on conversations using information the channel supplies, such as the phone number on a WhatsApp or voice conversation, a signed-in chat user, or answers to a pre-chat survey, and match them to existing contacts and accounts.
- Choose the identifiers per channel: email address for email, phone number for WhatsApp and voice, an authenticated user for chat where customers can sign in.
- Store phone numbers in one consistent format, including the country code, or matching on number will fail.
- Decide what an agent does when there is no match or several matches: link manually, create a contact, or leave the conversation unlinked with a reason.
- Keep duplicate detection rules on contacts and accounts and clean existing duplicates before go-live; our duplicate data cleanup guide covers merging safely.
- Do not treat an unauthenticated chat name or email address as proof of identity for anything sensitive; verify before disclosing account details.
How do workstreams, queues, presence and capacity fit together?
Unified routing in Dynamics 365 Customer Service works in layers, and most routing that does not work has a mistake in one layer blamed on another. A workstream defines how one kind of work is handled, a queue groups the agents who can handle it, presence says whether an agent can take work now, and capacity says how much work they can hold at once. Design them from how your teams actually split work, not from the list of channels.
| Component | What it does | Design rule |
|---|---|---|
| Workstream | Groups work of one channel type (messaging, voice or records) and holds routing, assignment and work distribution settings. | Few workstreams, split by genuinely different handling, not one per department. |
| Routing rules and classification | Route incoming work to a queue, optionally after classifying it by attributes such as language, product or customer tier. | Always end with a fallback queue that a named person watches. |
| Queue | Holds work and the agents who can pick it up, with an assignment method such as highest capacity or round robin. | Every queue has members, an owner and operating hours that match reality. |
| Presence | An agent status such as Available, Busy or Away that decides whether work is offered. | Keep the custom presence list short, and make sure it matches what agents are really doing. |
| Capacity profiles | Limit how many items of each kind an agent can hold, for example one call or several chats. | Set limits from observed handling, and review them after the pilot, not before it. |
Where should transcripts, recordings and emails be retained, and for how long?
A single canonical conversation archive means one place, Dataverse, where every interaction with a customer can be found against that customer, with one retention rule per record type agreed with your compliance team. Chat and messaging transcripts are stored against the conversation, email activities against the case and contact, and voice recording and transcription follow the settings on the voice channel. Confirm where each is held for your configuration before promising a retention period to anyone.
- Write the retention period for each record type down, with the legal or business reason, and get it signed off before go-live.
- Decide how records past retention are handled: deleted by scheduled bulk deletion, or moved out of active use with Dataverse long term data retention where that fits your obligations.
- Restrict who can read transcripts and recordings through security roles; conversations often contain personal data agents should not browse.
- Plan how you will answer subject access and deletion requests across every channel, including attachments sent through messaging.
- Remember that anything handled on a personal device is outside this archive, which is why the next section matters.
What compliance gap do staff using personal WhatsApp create?
When agents answer customers from personal WhatsApp accounts, the organisation has customer conversations it cannot see, search, retain or delete. It cannot produce them for a complaint or a subject access request, it cannot remove them when an employee leaves, and it has no record that advice was given. Banning personal use without offering a working alternative does not stop it; customers simply keep messaging the numbers they already have.
- Launch the official WhatsApp channel first, then tell customers the new number from the personal accounts they already use, with a fixed date after which personal numbers stop replying.
- Give agents the official channel on the device they work on, so it is faster than their own phone.
- Agree with compliance how existing personal conversations are handled; history on personal phones cannot be reliably imported into Dynamics 365, so the realistic aim is a clean break with a documented cut-off.
- Update the acceptable use policy and the leaver process once the official channel is live, not before.
How do you rescue an omnichannel setup that was bought but never finished?
Do not switch everything off and start again, and do not add another channel on top. Salvage runs in a fixed order, and each step leaves the operation safer than before.
If records are already being lost between Dynamics 365 and other systems, rather than between channels and agents, follow the layer-by-layer method in our integration and omnichannel emergency triage guide first. And if the question is whether Dynamics 365 is the right service platform at all, the comparison with Zendesk, Freshdesk and Microsoft 365 tools is in Dynamics 365 Customer Service vs Zendesk.
| Step | What to do | Done when |
|---|---|---|
| 1. Inventory | List every channel, entitlement, workstream, queue, mailbox and routing rule that exists, and every side door customers actually use, including personal numbers. | One table everybody agrees is complete. |
| 2. Make ingest durable | Confirm every channel creates a record before routing, add fallback queues, and build views of unrouted conversations and unconverted email. | Nothing can arrive without appearing in a view someone owns. |
| 3. Fix identity | Standardise identifiers and clean duplicates on the contacts that matter. | Agents see one customer history on a new conversation. |
| 4. Simplify routing | Reduce workstreams and queues to how teams really work, set presence and capacity from observation. | Work is offered to agents who can take it, and unmatched work reaches the fallback queue. |
| 5. Pilot one channel | Run the channel the business needs most with one team, measured against the old way. | The team prefers it, and no message is unaccounted for over an agreed period. |
| 6. Expand and retire side doors | Add the next channel and team only after the previous one is stable, closing side doors as you go. | Every channel runs through the platform, and personal accounts are retired. |
Is Dynamics 365 the right place to unify every channel?
For most organisations already on Microsoft 365, Teams and Dataverse, yes, because the conversation, the case and the customer record live in one place. It is not the only answer. We recommend the right solution - whether that's Microsoft Dynamics 365, Power Platform, or a custom-built CRM. Some businesses need the Microsoft ecosystem. Others need full control without licensing. We deliver both.
Where per-user licensing does not match how many people handle conversations, or where hosting requirements rule out the Microsoft cloud, a custom-built service platform on React, Node.js, PostgreSQL or .NET can apply the same principle: record first, then route, with one customer record and one archive. The architecture on this page does not change; only who owns the code does.
Should unified customer service run on Dynamics 365 or a custom-built platform?
Can afford licensing and want the Microsoft ecosystem
Dynamics 365
Microsoft 365, Teams and Outlook integration, a mature partner ecosystem, Copilot, and apps for sales, service and field operations that are configured rather than built.
Need full control and zero licensing
Custom CRM
A CRM built on React, Node.js, PostgreSQL or .NET that you own outright: your data model, your hosting, no per-user subscription, and features shaped exactly to your process.
Not sure which fits
We help you decide
A short discovery weighs licensing budget, process complexity, integrations and long-term ownership, then recommends one path. We deliver both, so the recommendation has no reason to lean.
How does Solzet deliver a unified omnichannel implementation?
We start with the inventory and a written design: channels and entitlements, the ingest record for each channel, identity rules, workstreams, queues, presence and capacity, and retention agreed with your compliance team. Then we pilot one channel with one team and expand only on evidence, as part of our Dynamics 365 Customer Service implementation.
Solzet configures and extends the Dynamics 365 side: Customer Service and its contact centre channels, unified routing, automatic record creation, Dataverse, Power Automate and the plug-ins around them. Telephony carriers, number porting and WhatsApp Business account approval are handled with your carrier and provider, and we work alongside them. We deliver remotely from Yerevan, Armenia, with senior consultants and full-stack developers and 8+ years of Dynamics 365 Customer Engagement and Power Platform work, directly or white-label for Microsoft partners.
What do people ask us?
How do we add live chat and WhatsApp to Dynamics 365 Customer Service?
Confirm you hold the digital messaging entitlement, then set up the chat widget on your site and a WhatsApp Business account with a business phone number connected through Azure Communication Services. Create a messaging workstream with routing rules, queues and capacity, configure identity so conversations match existing contacts, and pilot one channel with one team before expanding.
Can we connect the normal WhatsApp app to Dynamics 365?
No. Dynamics 365 connects to WhatsApp through a WhatsApp Business account and a business phone number via a supported provider, which Microsoft currently documents as Azure Communication Services. The consumer app, and the Business app on a phone, cannot be connected. Messages agents exchange on personal WhatsApp stay outside the platform and outside your retention and access controls.
How do we make sure no customer message is lost in Dynamics 365 omnichannel?
Make every inbound message a record before anything routes it: conversation records for chat, messaging and voice, email activities for email, and a record for every form or integration. Add a fallback queue to every routing rule, build views of unrouted conversations and email without a case, and give each view a named owner who reviews it daily.
Are voice and chat included in Dynamics 365 Customer Service?
Case management, email and record routing are part of Dynamics 365 Customer Service. Live chat and other digital messaging channels, and the voice channel, are separate add-on entitlements. Microsoft has been moving contact centre capabilities under the Dynamics 365 Contact Center name, so check the current licensing guide or your licensing partner for which product covers each channel in your tenant.
We pay for omnichannel but barely use it. Where do we start?
Start with an inventory of what you own and what customers actually use, including side doors such as personal numbers. Make ingest durable with fallback queues and unrouted work views, fix customer identity, and simplify workstreams and queues. Then pilot the one channel the business needs most with one team, and expand only once it is stable.
How long should chat transcripts and call recordings be kept?
As long as your legal, regulatory and business obligations require, and no longer. Agree a written retention period for each record type with your compliance team, restrict who can read transcripts and recordings, and schedule deletion or long term retention for records past that period. Solzet implements the retention design; the periods themselves come from your compliance team.
Does Solzet provide the phone lines and carrier for the voice channel?
No. Solzet delivers the Dynamics 365 side: Customer Service channels, unified routing, workstreams, queues, identity, automatic record creation and retention. Numbers are acquired through Azure Communication Services or connected from your existing carrier through direct routing, and that carrier relationship and any number porting stay with your telephony partner, who we work alongside.
Where should you go next?
Dynamics 365 Customer Service implementation
Case management, routing, SLAs, knowledge and omnichannel configured for your service team.
Replacing a failing contact centre
Stabilise the current platform and prove the target before any cutover.
Agent desktop unification
One agent surface over legacy systems of record without replacing them.
Customer service stabilisation
The fixed-order path when service is failing and the platform cannot be replaced yet.
Fix Omnichannel agent disconnections
Diagnosing chats that drop, time out or vanish from an agent session.
Integration and omnichannel emergency triage
Detecting and containing records lost between Dynamics 365 and other systems.
Dynamics 365 Customer Service vs Zendesk
How the platforms compare for organisations already on Microsoft 365.
Duplicate data cleanup
Merging duplicate contacts and accounts safely so one customer is one record.
Custom CRM Development
A service platform on React, Node.js, PostgreSQL and .NET for organisations that need full control without Microsoft licensing.
Which solution is right for your business?
Tell us what you need. A senior consultant replies within one business day with a recommendation - Dynamics 365, Power Platform, or a custom-built CRM - not a sales script.