PHPackages                             mhe/silverstripe-newsletter - 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. [Utility &amp; Helpers](/categories/utility)
4. /
5. mhe/silverstripe-newsletter

ActiveSilverstripe-vendormodule[Utility &amp; Helpers](/categories/utility)

mhe/silverstripe-newsletter
===========================

A Silverstripe extension enabling users to subscribe to a newsletter

v2.0.3(3mo ago)032BSD-3-ClausePHPPHP ^8.3CI passing

Since Oct 13Pushed 1w agoCompare

[ Source](https://github.com/martinheise/silverstripe-newsletter)[ Packagist](https://packagist.org/packages/mhe/silverstripe-newsletter)[ RSS](/packages/mhe-silverstripe-newsletter/feed)WikiDiscussions main Synced 3w ago

READMEChangelog (10)Dependencies (3)Versions (16)Used By (0)

SilverStripe Newsletter module
==============================

[](#silverstripe-newsletter-module)

A Silverstripe extension enabling users to subscribe to a newsletter.

Currently only subscribing/unsubscribing functionality with management of recipients is implemented for external sending of newsletters. Creating and sending the actual newsletters might be implemented in the future.

**Main features:**

- multiple newsletter lists (“channels”)
- subscribing to one or more channels via form
- Double-opt-in: confirm subscription via link, send by e-mail
- unsubscribing via generated link
- option to enable standard spam protection fields (using `silverstripe/spamprotection` extension)
- Admin: export confirmed subscribers per channel with necessary information for external bulk e-mail as CSV

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

[](#requirements)

Requires Silverstripe 6.x – for a version compatible with Silverstripe 5 see respective branch `5`

Installation
------------

[](#installation)

Install with composer:

```
composer require mhe/silverstripe-newsletter ^2.0

```

Perform `dev/build` task

Usage overview
--------------

[](#usage-overview)

- In admin area “Newsletter” create channels as required (one default channel is auto-created)
- Include the subscription form in some page template (either on alle standard pages or create a dedicated page type)

    For all channels (user selection):

    ```
    $ChannelSubscriptionForm

    ```

    For a specific channel by name:

    ```
    $ChannelSubscriptionForm("Highlights")

    ```
- Subscribers can be found in the admin area “Newsletter”

    - Tab “Channels”: references the active and confirmed subscribers, perfect for export and usage in mailings
    - Tab “Recipients”: shows all subscribers, including unconfirmed ones, with detailed information, perfect for data cleanup etc.
- If module [`colymba/gridfield-bulk-editing-tools`](https://packagist.org/packages/colymba/gridfield-bulk-editing-tools) is installed, bulk deletion of entries is possible.

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

[](#configuration)

### Silverstripe YAML configuration options

[](#silverstripe-yaml-configuration-options)

- `Mhe\Newsletter\Forms\SubscriptionForm.enable_spam_protection`: add spam protection to subscription forms, needs `silverstripe/spamprotection` extension (default: false)
- `Mhe\Newsletter\Forms\UnsubscribeForm.enable_spam_protection`: add spam protection to unsubscribe forms, needs `silverstripe/spamprotection` extension (default: false)
- `Mhe\Newsletter\Forms\Validation\SubscriptionFormValidator.invalid_field_regex`: array with regular expressions for form fields that are considered invalid – default blocks HTML tags, URLs and emojis inside the name field
- `Mhe\Newsletter\Model\Recipient.autokey_length`: length of auto-generated URL keys (default: 40)
- `Mhe\Newsletter\Model\Recipient.autokey_chars`: characters to use in auto-generated URL keys (default: "abcdef0123456789")

### Templates

[](#templates)

- `Mhe/Newsletter/Controllers/SubscriptionController_confirm.ss`: Content displayed after a recipient confirms their subscription by clicking the confirmation link
- `Mhe/Newsletter/Controllers/SubscriptionController_unsubscribe.ss`: Content displayed when clicking an unsubscribe link
- `Mhe/Newsletter/Email/SubscriptionConfirmationEmail.ss`: Content of the email sent after submitting the subscription form

###  Health Score

43

—

FairBetter than 90% of packages

Maintenance90

Actively maintained with recent releases

Popularity7

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity58

Maturing project, gaining track record

 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.

###  Release Activity

Cadence

Every ~14 days

Recently: every ~28 days

Total

11

Last Release

113d ago

Major Versions

v1.0.3 → 5.x-dev2025-10-15

v1.0.4 → v2.0.02025-11-11

v2.0.3 → 6.x-dev2026-03-05

PHP version history (2 changes)v1.0.0PHP ^8.1

v2.0.0PHP ^8.3

### Community

Maintainers

![](https://www.gravatar.com/avatar/bdc925a420ee741e57764c199a926d0edb8dbcfe1f4528b2f0519c465461720e?d=identicon)[martinheise](/maintainers/martinheise)

---

Top Contributors

[![martinheise](https://avatars.githubusercontent.com/u/16256376?v=4)](https://github.com/martinheise "martinheise (57 commits)")

###  Code Quality

TestsPHPUnit

Code StylePHP\_CodeSniffer

### Embed Badge

![Health badge](/badges/mhe-silverstripe-newsletter/health.svg)

```
[![Health](https://phpackages.com/badges/mhe-silverstripe-newsletter/health.svg)](https://phpackages.com/packages/mhe-silverstripe-newsletter)
```

PHPackages © 2026

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