commvita
Connected care platform
Communications & CRM

Communications and CRM: WhatsApp, SMS, Teams, telephony and email, in the core

One record of every communication with a patient, a member of staff, a board member, a supplier or a journalist, on seven channels, honouring each person’s recorded preference. What is live, what is demonstrated, and exactly what leaves the building.

Live vs demonstrated: Live — real, API-backed platform logic (wired end-to-end today) Demonstrated — representative control surface with seeded data / illustrative UI mock-up
© 2026 Commvita Digital Health Solutions Ltd. All rights reserved.

1 The CRM is part of the product

Most clinical systems treat communication as somebody else’s problem. The letters go out of a document tool, the texts go out of a messaging gateway, the phone system is a separate contract, the campaigns run in a marketing product and the internal announcements go out on email. Five suppliers, five audit trails, and no single answer to “what have we sent this person?” commvita holds all of it in the core: letter, email, SMS, WhatsApp, phone, portal and Teams, for patients and for staff, board members, stakeholders, suppliers and press.

Ahead of the field
A campaign studio inside the record rather than beside it. Campaigns carry the cohort they went to, the delivered and bounced counts, the open and click rates and the effect on did-not-attend, and they live in the same product as the clinical record and the appointment book. Every competing product we assessed runs patient campaigns in a separate marketing tool with a patient list exported into it, which is a second data controller relationship, a second contract and a list that’s stale the day it’s cut.From commvita’s own competitive assessment of this module against the systems it competes with. Our assessment, not an independent one.
Communications CRM dashboard headed Integrated Communications Platform, describing one CRM record of every communication across letter, email, SMS, WhatsApp, phone, portal and Teams, for patients and staff, board members, stakeholders and press. Tabs for Dashboard, Patient Comms, Staff and Internal, External and Press, Cohort / Broadcast, Internal Broadcasts, Phone System and Preferences. Counters read 395 total communications, 315 outbound, 80 inbound, 60 preferences recorded and 0 do-not-contact. By channel: letter 52, email 74, SMS 61, WhatsApp 67, phone 62, portal 61, Teams 18. By party: patient 309, staff 58, board member 18, stakeholder 4, press or media 4, supplier 1, partner 1.
Communications CRM · every channel, every partyCaptured from the running system, build B-591 · seeded data

Patients

Timeline · preferences · cohorts

Every letter, text, call, WhatsApp message and portal message against the person, inbound and outbound, with the module that generated it. Their recorded channel preferences sit on the same screen and are enforced when somebody presses send.

Staff and board

Teams · preferred channel · quiet hours

Staff hold their own preferences from the staff portal: which channel to reach them on, whether out-of-hours contact is urgent only, and the quiet hours window. Board members get pack notifications that carry no pack content.

External and press

Stakeholders · suppliers · media

A stakeholder, a supplier, a partner organisation and a media enquiry each get a party record with the same timeline shape. A media enquiry logged by the communications lead is on the same audit as a text to a patient.

2 One person, one line of contact

Open a person and you get everything the organisation has sent them and everything they have sent back, in one column, whatever the channel. That’s the thing that’s hard to buy and easy to describe.

Patient Comms tab of the Communications CRM for one person. A line reads
Patient Comms · six channels, one historyCaptured from the running system, build B-591 · seeded data

Three details on that screen do the work. The preferred channel is printed above the compose box, so the person sending sees it before choosing. Each row carries the module that generated the message, so a recall, a screening invitation and an ad hoc reply are told apart. And inbound is on the same timeline as outbound, which is the only way a query from a patient and the answer to it end up next to each other.

Staff get the same thing about themselves. A member of staff can open their own communications from the staff portal, set the channel they want to be reached on and their quiet hours, and read the timeline of what the organisation has sent them. A missed message becomes something you can check instead of something you argue about.

3 Permission has a basis, and the basis is recorded

Most systems answer “can we text this person?” with true or false. That isn’t enough to act on. Somebody who was asked and said no needs their decision respected. Somebody nobody has ever asked needs a conversation. A single boolean sends staff to the wrong remedy, so this platform records which of the two it is.

Cohort and broadcast communication panel in the Communications CRM. A cohort builder bar with a link to build a cohort from criteria. Toggles for patient cohort or staff / internal broadcast, then channel buttons for letter, email, SMS, WhatsApp, phone, portal and Teams with WhatsApp selected. Fields for patient IDs, cohort or campaign name, subject and message body, and a Send WhatsApp to cohort button. Beneath it a note reads: SMS and WhatsApp cohort sends skip anybody who has opted out of that channel and anybody whose permission has never been recorded — an absent preference is not consent on a channel that arrives on a personal device. Letter, phone, email and portal are routine direct care and are not blocked by a missing preference. Every send is written to each recipient's CRM timeline.
Cohort / Broadcast · the consent rule printed on the screenCaptured from the running system, build B-591 · seeded data
1

An absent preference isn’t consent on a personal device

SMS and WhatsApp arrive unbidden on a phone, and a wrong or shared number reaches a stranger. Where no contact preference has been recorded, those two channels are refused. Letter, phone, email and portal aren’t refused, because writing to somebody at their registered address or ringing them is ordinary direct care and blocking it for everyone who has never stated a preference would break routine correspondence across the platform.

POST /crm/patients/{id}/log
2

A refusal says which kind of refusal it is

When a send is blocked the response names the basis: the person opted out, the person recorded do-not-contact, or no permission has been recorded and nobody has asked them. An override exists for clinically essential contact, and taking it’s a decision somebody is recorded as making against the record.

basis: opted_outbasis: no_permission_recorded
3

A cohort send reports its skips apart

Send to a cohort and the result gives you the number sent, the people skipped because they opted out, the people skipped because nobody has asked them, and the people who were sent to on a channel whose permission was assumed not recorded. One number covering all of that would let a campaign present assumed consent as recorded consent.

POST /crm/cohort/send
Ahead of the field
WhatsApp is refused without a recorded opt-in. The messaging gateway holds per-person consent for SMS and WhatsApp separately, and a WhatsApp send to somebody with no recorded opt-in is refused outright instead of warned about. No system we assessed distinguishes a person who declined a channel from a person nobody has asked, and that distinction is the difference between respecting a decision and inventing one.From commvita’s own competitive assessment of this module against the systems it competes with. Our assessment, not an independent one.

4 Campaigns, templates and what came back

A campaign is a named piece of work with a cohort, a template, a channel, a schedule and a result. The library keeps drafts, scheduled sends and sent campaigns in one list with the sent and delivered counts on the row.

Campaign library in the Patient Comms Design Studio. Six campaigns with type, template, target cohort, sent and delivered counts, date, status and channel. LTC Annual Review for the diabetes cohort is a draft on NHS Notify. Health Check Invitation Summer 2026 targets NHS Health Check eligible patients aged 40 to 74 with no check in five years, 6,847 recipients, scheduled for 15 September 2026 by email. Medication Review June Cohort targets polypharmacy patients on five or more medications, 1,147 of 1,203 delivered, sent 7 June. Bowel Cancer Screening Invitation Q2 targets those eligible aged 50 to 74, 5,612 of 5,847 delivered. May Appointment Reminder Campaign targets scheduled appointments in the next 48 hours, 2,714 of 2,847 delivered by direct SMS. Spring Flu Vaccination Recall 2026 targets at-risk adults 65 and over, 3,201 of 3,518 delivered.
Campaign Library · cohort, channel, sent and deliveredCaptured from the running system, build B-591 · seeded data

Underneath, an analytics view computes the month’s totals, the average open and click rates and the average did-not-attend reduction from the campaign rows themselves. The cohort definitions the studio offers are fixed with illustrative population sizes; the campaign counts against each one are real. Separately, the CRM will resolve an ad hoc cohort from the patient register by age band, condition and risk tier and send to it.

Message template library in the Messaging Hub. Seven templates with name, category, channels, preview, character count, whether consent is required and whether the template is active. appointment_reminder_24h and appointment_reminder_1h go out on both SMS and WhatsApp under the WhatsApp utility category. annual_recall, test_result_ready and medication_review_due are SMS only. flu_vaccine_invite is a health alert on SMS and WhatsApp under the WhatsApp marketing category. general_message is a general SMS template with no consent requirement. Previews show merge fields such as patient name, clinic and review type, with character counts from 50 to 135.
Messaging Hub · templates, channels and consent requirementCaptured from the running system, build B-591 · seeded data

Two columns there are the governance. The WhatsApp category tells you whether a template is a utility message or a marketing one, which is what the platform rules turn on. The consent column marks the templates that can’t go without a recorded opt-in. A character count next to each is the mundane thing that stops a two-part text being sent by accident.

5 The phone, and the record it should leave

The telephone is still the busiest channel in most organisations and the least recorded. A call happens, and the only trace is a line in a phone system nobody in the clinical service can search. The telephony hub puts the call on the same timeline as everything else and gives the clinician a button to code it into the record.

Integrated Telephony Hub with click-to-call, inbound routing and call recording. Tiles show one active call, one missed today, average duration six minutes 25 seconds per completed call, three of six calls coded to record, and seven WhatsApp messages of which three inbound and four read. Tabs for Active Calls, Call Log with six entries, Routing Rules with five, Mobile Mode and WhatsApp. An active outbound call to Emma Davis on +44 7700 900555 with Dr Sarah Johnson offers Code to Record and End. A recent calls table lists a missed inbound call from an unrecognised number, and completed or voicemail calls for Abi Osei, Bob Smith, Carol White and George Brown with direction, status, duration, clinician and whether the call has been coded to the record.
Telephony Hub · three of six calls coded to recordCaptured from the running system, build B-591 · seeded data

The counter that says three of six calls coded to record is the useful one. It measures the gap between the calls that happened and the calls that left a clinical trace, and it’s a number a practice manager can work on. Routing rules, a mobile mode for staff working away from a desk phone, and a WhatsApp thread view sit alongside it. Click-to-call writes the call to the person’s CRM timeline as it dials.

6 What leaves the building, and what doesn’t

This is the part of a communications module where suppliers are least honest, so here is the position plainly. In this environment no transport is provisioned. Nothing you press send on goes to a phone or an inbox.

1

Recorded, queued and audited; never transmitted

A message written through the CRM, the messaging gateway or the campaign studio is validated against the person’s permissions, written to their timeline with a channel, a direction, a status and a timestamp, and given a provider reference. The provider reference in the demo is generated locally. A campaign marked sent has its delivered and bounced counts modelled and not reported back by a carrier.

2

The platform refuses to call a queued message a sent one

Where the platform does dispatch on behalf of another module, it distinguishes three outcomes: a transport accepted the message, nothing left commvita, or the dispatch failed. Those are never collapsed into one count, because a board reading “members notified” over work that didn’t happen is worse than a board reading nothing.

3

The connectors are adapters waiting for credentials

The phone system panel shows the connected platform as not connected and says on the screen that it’s an integration adapter needing provider credentials at deployment. The messaging gateway ships a provider list with none active. The WhatsApp leg of the patient messaging screen posts to an external business adapter and records a failure when that adapter isn’t reachable. Switching them on is configuration, and until it’s done the platform says so.

What the seeded demo shows, and what it doesn’t. The CRM carries 395 logged communications across seven channels and seven party types, so the timeline, the preference enforcement and the cohort behaviour can all be exercised. The messaging gateway dashboard is empty in this data set: no messages have been sent through it, so its delivery log reads zero. The campaign library, the template library and the telephony hub all carry seeded content and are API-backed.

Where it lives in commvita

CapabilityRouteModel / APIStatus
Unified timeline: patients and every other party/comms-crmAPI /crm/patients/{id}/timeline · /crm/parties/{type}/{id}/timeline● Live
Patient contact preferences, per channel/comms-crm · patient portalAPI /crm/patients/{id}/preferences · enforced on send● Live
Staff preferences and quiet hours/staff-portalAPI /crm/me/preferences · /crm/me/timeline● Live
Permission basis on refusal and on send/comms-crmAPI /crm/patients/{id}/log · recorded, assumed, opted out, never asked● Live
Cohort send with skips reported apart/comms-crmAPI /crm/cohort/send · /crm/resolve-cohort● Live
Campaign library, schedule and send/comms-hubAPI /comms/campaigns · schedule · send● Live
Campaign templates and analytics/comms-hubAPI /comms/templates · /comms/analytics computed from campaign rows● Live
Campaign cohort catalogue/comms-hubFixed cohort definitions with illustrative population sizes; campaign counts are real☉ Demonstrated
SMS and WhatsApp templates, consent, delivery log/sms-gatewayAPI /sms/templates · /sms/consent · /sms/messages● Live
WhatsApp opt-in enforced on send/sms-gatewayAPI POST /sms/send refuses WhatsApp with no recorded opt-in● Live
Messaging provider configuration/sms-gatewayAPI /sms/providers · provider slots present, none active in this environment● Live
Calls, routing rules, code-to-record/telephonyAPI /telephony/calls · /telephony/routing-rules · /telephony/stats● Live
Cloud phone system and click-to-call/comms-crmAPI /crm/telephony/config · /crm/telephony/click-to-call · adapter, no call placed here● Live
Patient WhatsApp and secure portal message/patient-commsAPI /patient-comms/send · /patient-comms/messages · WhatsApp via an external adapter● Live
Actual transmission to a carrier or inboxTransport is switched on by configuration; nothing is provisioned in this environment☉ Demonstrated
It isn’t a marketing platform. It isn’t a bulk marketing platform and it won’t pretend a message was delivered. It holds the record of what was sent, on which channel, by whom and under what permission, and it hands the actual carriage to a configured provider. It carries no medical-device claim and gives no clinical advice: the content of every message is written or approved by a person, and a refusal to send on a channel is a prompt to have a conversation with the patient instead of a technical obstacle to route around.
© 2026 Commvita Digital Health Solutions Ltd. All rights reserved. UK GDPR Art.6(1)(e) & 9(2)(h)PECRICO direct marketing guidance National Data Opt-OutWhatsApp Business messaging policyAccessible Information Standard Non-SaMD