DivisionDesk is now a product at divisiondesk.com

← Modules

Module

Communications

Multi-channel communications, campaigns, notifications, SMS, Web Push, website messaging, contact forms and unified conversations.

About

DivisionDesk Communications provides deliverability-conscious email campaigns and transactional messages, SMS provider adapters, standards-oriented Web Push subscriptions, on-site notifications, contact forms, a unified Conversations Inbox, preferences, suppressions, templates, rules and reporting.

What's New in 1.0.6

Campaign reliability/UX release: fixes envelope sender fallback and makes campaign Save/Test fetch-based so errors and results are shown inline without clearing entered fields.

View full package changelog
# DivisionDesk Communications Changelog

## 1.0.6 — 2026-08-14

### Fixed
- Fixed `SMTP host and a valid envelope/From email are required` when Core has a valid From address but the optional envelope sender is blank.
- Empty `envelope_from` now correctly falls back to Core `from_email`.

### Changed
- Campaign **Send Email Test** and **Save Campaign** now use `fetch()` and display success/errors in place.
- Transport/validation errors no longer refresh the Campaigns page or clear the composer.
- Non-AJAX fallback restores posted campaign fields after a server-rendered error.
- Submit buttons show a busy state and duplicate submissions are prevented.

### UX direction
- Fetch/AJAX-style in-place actions are the preferred DivisionDesk interaction model where practical.
- User-entered form data should survive errors rather than returning to blank forms.

## 1.0.5 — 2026-08-14

### Fixed
- Fixed campaign test failure `List-Unsubscribe must be HTTPS or mailto.`
- Core relative/base-path URLs are no longer inserted directly into email headers.
- HTTPS web requests automatically establish a canonical DivisionDesk public site URL for Communications.
- Background campaign jobs reuse the stored canonical HTTPS site URL.
- Local/LAN/non-HTTPS installations fall back to a standards-valid `mailto:` List-Unsubscribe target instead of emitting an invalid relative URL.
- `List-Unsubscribe-Post: List-Unsubscribe=One-Click` remains limited to actual HTTPS unsubscribe endpoints.
- Avoids duplicating the Core base path when building absolute unsubscribe URLs.

### Diagnostics
- Communications Providers and Deliverability now show whether bulk email is using HTTPS one-click unsubscribe or the mailto fallback.

## 1.0.4 — 2026-08-14

### Fixed
- Communications now reads the existing DivisionDesk Core **Email Delivery** configuration for SMTP and From settings.
- Campaign Email Test no longer incorrectly reports SMTP as unconfigured when Core SMTP is already working.
- SMTP password is consumed from Core Mailer configuration; Communications no longer expects a duplicate `communications.smtp.password`.
- Blank EHLO/HELO remains blank in configuration and is resolved automatically by the mail transport at connection time.
- Campaign and queued email failures now identify the specific missing Core Email Delivery setting.

### Changed
- Communications → Providers no longer presents a second SMTP configuration form.
- The Providers page shows Core email readiness/status and links directly to the global Email Delivery page.
- Communications-owned provider settings are now limited to SMS and Web Push.

## 1.0.3 — 2026-08-14

### Fixed
- Fixed Campaigns buttons appearing to do nothing with Chrome error `An invalid form control with name='push_url' is not focusable`.
- Push URL, image, icon and badge fields now accept DivisionDesk template variables such as `{{site.url}}` without HTML5 URL validation blocking form submission.
- **Send Email Test** now uses `formnovalidate` so hidden/unrelated campaign channel fields cannot prevent a transport/template test from reaching PHP.

## 1.0.2 — 2026-08-14

### Fixed
- Built-in templates now self-heal if a previous installation or upgrade left `communications_templates` empty.
- Added upgrade migration 002 so 1.0.2 reliably invokes the idempotent template seeder after upgrading.
- Module registration, Campaigns, and Templates defensively restore missing built-ins without overwriting existing customized templates.
- Corrected Campaign list column rendering for topic, channels, schedule, deliveries and actions.

### Added
- Rebuilt Campaigns as a polished multi-channel composer.
- Template selection now immediately loads the template subject, styled HTML, plain-text version, SMS text and push payload into the composer.
- Rich HTML email editor with formatting controls and HTML-source toggle.
- Sandboxed email preview and push-notification preview.
- Immediate single-recipient SMTP campaign test using the production Communications email builder, including multipart HTML/text, Date, Message-ID, List-Unsubscribe and one-click unsubscribe headers.
- Improved channel cards/tabs, SMS character count, audience/timing controls and contextual deliverability guidance.
- Redesigned Template Library with cards, statistics, editor, and Restore Missing Built-ins control.
- Upgraded built-in Newsletter, Receipt, Donation Receipt, Announcement, Official Notice, Events, Dues Renewal, Welcome, Login Code, Application Status and Contact Response templates with polished inline email styling.

### Compatibility
- Requires DivisionDesk Core 3.6.0 or newer; Core 3.6.1 is recommended.

## 1.0.1 — 2026-08-14

### Fixed
- Fixed fresh installation failure: `SQLSTATE[HY000]: General error: 1 no such table: communications_templates`.
- Communications now ensures its schema exists before seeding built-in templates.
- Install, enable and update entry points are safe against a partially completed 1.0.0 installation.
- Existing `CREATE TABLE IF NOT EXISTS` migration statements make recovery non-destructive.

### Compatibility
- Works with DivisionDesk Core 3.6.0 and newer.
- Core 3.6.1 separately corrects the generic module lifecycle ordering for all modules.

## 1.0.0 — 2026-08-14

### Added
- Multi-channel campaign model for Email, SMS, Push and on-site delivery.
- Membership Manager audience adapter with active-member, Camp and role targeting.
- Shared background delivery jobs using DivisionDesk Core 3.6 Job Queue.
- Multipart HTML/plain-text email construction with Date, Message-ID, Reply-To, List-ID, List-Unsubscribe and one-click unsubscribe headers where appropriate.
- Non-transactional email footer with physical/site address and unsubscribe link.
- Email header-injection safeguards.
- Deliverability Center with SMTP, sender, SPF and DMARC checks plus DKIM guidance.
- Suppression system for opt-outs, provider failures and invalid destinations.
- Built-in communication templates: Newsletter, Receipt, Donation Receipt, Announcement, Official Notice, Event Announcement, Event Reminder, Registration Confirmation, Dues Renewal, Welcome, Login Code, Application Status and Contact Response.
- SMS provider abstraction with Twilio, Amazon SNS and Telnyx outbound adapters.
- Normalized Twilio errors for invalid, landline/non-SMS, unreachable and opted-out numbers.
- Automatic permanent SMS suppression for selected permanent provider failures.
- STOP/START handling for inbound SMS.
- Incoming SMS webhook/conversation handling for Twilio and Telnyx.
- Standards-oriented Web Push subscription database and service worker.
- VAPID Web Push adapter integration point.
- Rich push payload model: title, body, URL, image, icon, badge, actions, tag, TTL, urgency and require-interaction.
- Unified Conversations Inbox for website/contact/SMS messages.
- Public Contact Us / Website Messaging system.
- Member Communication Preferences page.
- Contact, Announcement and Communication Preferences widgets.
- NotificationService API for other DivisionDesk modules to queue transactional or bulk notifications.
- Notification Rule trigger/action foundation.
- Provider settings using Core encrypted Secret Vault.
- Delivery reports, provider-event history and configurable retention foundation.

### Security
- Provider secrets are encrypted by Core 3.6 Secret Vault.
- Twilio webhook signatures are validated before incoming events are trusted.
- Telnyx Ed25519 webhook verification is supported when a public verification key is configured.
- Email header values reject CR/LF injection.

### Compatibility
- Requires DivisionDesk Core 3.6.0 or newer.

Release History

1.0.6 development published
2026-08-15T00:06:52+00:00

Campaign reliability/UX release: fixes envelope sender fallback and makes campaign Save/Test fetch-based so errors and results are shown inline without clearing entered fields.

1.0.5 development published
2026-08-15T00:00:26+00:00

Unsubscribe URL correctness release: campaign email now uses absolute HTTPS one-click unsubscribe URLs when the site has a public HTTPS origin, and standards-valid mailto fallback on local/non-HTTPS installations.

1.0.4 development published
2026-08-14T23:57:31+00:00

Email configuration unification: Communications now consumes the global Core Mailer/Email Delivery configuration instead of maintaining a duplicate SMTP profile. Campaign tests provide precise missing-setting diagnostics.

1.0.3 development published
2026-08-14T23:51:18+00:00

Browser form-validation fix: template-capable Push URL/image/icon/badge fields no longer block Campaign submission when they contain DivisionDesk variables; Email Test bypasses unrelated hidden-form validation.

1.0.2 development published
2026-08-14T23:38:59+00:00

Template recovery and Campaign Composer release: built-in templates are now self-healing and upgrade-seeded; Campaigns receives a polished multi-channel composer with template loading, rich email editing, email/push preview, immediate SMTP test-send, improved audience/timing controls, and corrected campaign list presentation.

1.0.1 development published
2026-08-14T23:11:18+00:00

Installation recovery release: Communications now ensures its database schema exists before seeding templates/endpoints, fixing the fresh-install failure exposed by Core 3.6.0 lifecycle ordering.

1.0.0 development published
2026-08-14T22:47:29+00:00

Initial 1.0.0 release. Requires Core 3.6.0 shared Job Queue, Secret Vault, transports and event infrastructure.