PHPackages                             blackbricksoftware/civicrm-sms-chat - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. blackbricksoftware/civicrm-sms-chat

ActiveCivicrm-ext

blackbricksoftware/civicrm-sms-chat
===================================

SMS Chat — Google Messages-style real-time SMS conversation tab on CiviCRM contact records

00PHP

Since Aug 24Pushed todayCompare

[ Source](https://github.com/blackbricksoftware/civicrm-sms-chat)[ Packagist](https://packagist.org/packages/blackbricksoftware/civicrm-sms-chat)[ RSS](/packages/blackbricksoftware-civicrm-sms-chat/feed)WikiDiscussions master Synced today

READMEChangelog (1)DependenciesVersions (1)Used By (0)

SMS Chat for CiviCRM
====================

[](#sms-chat-for-civicrm)

A Google Messages-style, real-time SMS conversation tab on the contact record. Click a contact, open **SMS Chat**, see the whole thread (inbound and outbound, across all of your SMS lines), type, send, and watch replies appear without refreshing.

Built on CiviCRM's native SMS machinery — messages are ordinary `Inbound SMS` / `SMS delivery` activities, so everything remains visible in the activity list, reports, and SearchKit. No parallel message store.

- **Provider-agnostic** with Twilio support included; other providers plug in via a small line-resolver extension point.
- **Multi-line aware**: each active SMS provider is a "line" (named by its provider title); conversations can be filtered per line or viewed merged.
- **No new permission model**: if you can view the contact's activities you can read the thread; if you hold `send SMS` you can send.
- **Safety-conscious**: non-production environments deny sending except to an allowlist (settings, pinnable via `$civicrm_setting`).

This is an [extension for CiviCRM](https://docs.civicrm.org/sysadmin/en/latest/customize/extensions/), licensed under [AGPL-3.0](LICENSE.txt).

Status
------

[](#status)

Early development. See [DESIGN.md](DESIGN.md) for the full architecture, research notes, and build plan.

Requirements
------------

[](#requirements)

- CiviCRM 6.10+ (PHP 8.0+)
- A configured SMS provider (e.g. org.civicrm.sms.twilio) for sending; the tab works read-only without one

Configuration
-------------

[](#configuration)

Administer › System Settings › SMS Chat. Every setting can also be pinned by an environment variable (env wins over the database, and the form shows the field read-only):

Env varSettingNotes`CIVICRM_SMSCHAT_ENVIRONMENT_LOCKDOWN``smschat_environment_lockdown`Default on. Outside a `Production` CiviCRM environment, only allowed recipients can be texted (deny-all when the list is empty).`CIVICRM_SMSCHAT_ALLOWED_RECIPIENTS``smschat_allowed_recipients`Comma-separated E.164 numbers or prefixes. Always enforced when set.`CIVICRM_SMSCHAT_TEST_MODE``smschat_test_mode`Record sends as activities but never hand them to the provider.`CIVICRM_SMSCHAT_DETAILS_PREAMBLE``smschat_details_preamble`Default on. Prepend "From/To" to inbound activity details.Set the CiviCRM environment (Administer › System Settings › Misc, or `CIVICRM_ENVIRONMENT`) to anything but `Production` on dev/staging copies of production data — that is what arms the lockdown.

Development
-----------

[](#development)

The UI lives in `ui/` (Vue 3 + Vite) and builds to `dist/smschat.js` (an IIFE — CiviCRM's AJAX tab pipeline cannot load ES modules). `dist/` is not in git: the tag-triggered release workflow builds it into the release zip and publishes `smschat.js` as a release asset, which composer installs fetch via `civicrm/composer-downloads-plugin`.

```
cd ui && npm install && npm run build

```

Extensions live outside the web root; static assets are served from the published copy. With the extension installed through composer (`civicrm/civicrm-asset-plugin`), `composer civicrm:publish` copies `dist/`to `web/assets/smschat/`. While iterating from a plain checkout, copy `dist/`there yourself after each build.

###  Health Score

20

—

LowBetter than 12% of packages

Maintenance65

Regular maintenance activity

Popularity0

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity11

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/49ef798c46472a4224ac686d224ee867915858ae5325a60f5feee5c1cb833928?d=identicon)[redbeanbananas](/maintainers/redbeanbananas)

---

Top Contributors

[![davidjosephhayes](https://avatars.githubusercontent.com/u/9373380?v=4)](https://github.com/davidjosephhayes "davidjosephhayes (2 commits)")

### Embed Badge

![Health badge](/badges/blackbricksoftware-civicrm-sms-chat/health.svg)

```
[![Health](https://phpackages.com/badges/blackbricksoftware-civicrm-sms-chat/health.svg)](https://phpackages.com/packages/blackbricksoftware-civicrm-sms-chat)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
