PHPackages                             silverstripers/scheduled-messages - 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. silverstripers/scheduled-messages

ActiveSilverstripe-vendormodule

silverstripers/scheduled-messages
=================================

Send scheduled messages based on conditions. Silverstripe

058PHP

Since Jan 24Pushed 3y ago1 watchersCompare

[ Source](https://github.com/HelloBetterLTD/scheduled-messages)[ Packagist](https://packagist.org/packages/silverstripers/scheduled-messages)[ RSS](/packages/silverstripers-scheduled-messages/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

Silverstripe Scheduled Messages
===============================

[](#silverstripe-scheduled-messages)

Send scheduled emails / text messages easy and fast.

Maintainers
-----------

[](#maintainers)

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

[](#installation)

Use composer to install on your SilverStripe 4 website.

```
composer require silverstripers/scheduled-messages dev-master

```

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

[](#requirements)

1. SilverStripe 4+
2. PHP 8.1 +

Basic usage
-----------

[](#basic-usage)

Require the package via composer and run dev build.

The module will add schedule messages to the settings / site config area in the CMS.

**Define the types you want to send messages against**

Pick your dataobjects that you want to send emails to and implement them by

`SilverStripers\ScheduledMessages\Interface\ScheduledMessager`

That will essentially force you to implement four new methods.

```
  // return the merge fields / methods available for the messages to use as merge tags
  public function getMergeFields() : array;

  // return the fields that are used to run various comparison queries
  public function getComparisonFields() : array;

  // returns the phone number to send text messages
  public function getMessagePhoneNumber() : ?string;

  // return the email address to send emails to
  public function getMessageEmail() : ?string;

```

For text messages
-----------------

[](#for-text-messages)

Unlike emails text messages are different. There are so many way to connect SMS gateways, email to SMS services, Rest apis, WSDLs, SOAP etc. The module lets you define your own SMS transporter.

Create a class and implement `SilverStripers\ScheduledMessages\Interface\TextMessageTransporter`, which will force you to implement a `sendText` message.

###  Health Score

15

—

LowBetter than 3% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity8

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity23

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/6a6fa4ab2a74fee1ac574bf15dd3ce1f38f31fee60c186b4b24ee8d7e3090b52?d=identicon)[silverstripers](/maintainers/silverstripers)

---

Top Contributors

[![fonsekaean](https://avatars.githubusercontent.com/u/143939?v=4)](https://github.com/fonsekaean "fonsekaean (12 commits)")

### Embed Badge

![Health badge](/badges/silverstripers-scheduled-messages/health.svg)

```
[![Health](https://phpackages.com/badges/silverstripers-scheduled-messages/health.svg)](https://phpackages.com/packages/silverstripers-scheduled-messages)
```

PHPackages © 2026

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