PHPackages                             xenoplexus/statamic-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. [Mail &amp; Notifications](/categories/mail)
4. /
5. xenoplexus/statamic-newsletter

ActiveLibrary[Mail &amp; Notifications](/categories/mail)

xenoplexus/statamic-newsletter
==============================

Newsletter management addon for Statamic — subscribe/unsubscribe, Postmark integration, queued batch sending.

v1.1.0(3mo ago)06MITPHPPHP ^8.3

Since Feb 17Pushed 3mo agoCompare

[ Source](https://github.com/xenoplexus/statamic-newsletter)[ Packagist](https://packagist.org/packages/xenoplexus/statamic-newsletter)[ Docs](https://github.com/xenoplexus/statamic-newsletter)[ RSS](/packages/xenoplexus-statamic-newsletter/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (2)Versions (6)Used By (0)

Statamic Newsletter
===================

[](#statamic-newsletter)

A Statamic addon for managing newsletters with Postmark integration. Subscribe/unsubscribe handling, welcome emails, queued batch sending, and suppression webhook support.

Features
--------

[](#features)

- **Subscribe/unsubscribe** with signed URL verification
- **Welcome email** sent automatically on subscribe
- **Batch sending** via Postmark with configurable batch sizes and queued jobs
- **Publish-to-send** workflow — publishing a newsletter entry in the CP dispatches it to all active subscribers
- **Postmark suppression webhook** automatically deactivates bounced/complained addresses
- **Antlers `{{ newsletter_form }}` tag** for embedding subscribe forms in any template
- **CLI preview** with `php artisan newsletter:preview` (supports `--demo` for placeholder content)
- **Fully configurable** via env variables — org info, Postmark credentials, DB connection, route prefixes
- **Publishable templates** for per-project email customization

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

[](#requirements)

- PHP 8.3+
- Statamic 6 / Laravel 12
- Postmark account (for sending)

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

[](#installation)

```
composer require xenoplexus/statamic-newsletter
php please newsletter:install
php artisan migrate
```

The install command copies the newsletter collection, blueprint, and unsubscribe page into your project.

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

[](#configuration)

Add these to your `.env`:

```
# Required
POSTMARK_TOKEN=your-postmark-server-token
POSTMARK_WEBHOOK_TOKEN=your-webhook-auth-token

# Organization
NEWSLETTER_ORG_NAME="Your Organization"
NEWSLETTER_ORG_URL=https://example.com
NEWSLETTER_ORG_EMAIL=info@example.com
NEWSLETTER_ORG_ADDRESS="123 Main St, City, ST 12345"

# Email
NEWSLETTER_FROM_ADDRESS=info@example.com
NEWSLETTER_REPLY_TO=info@example.com
NEWSLETTER_NOREPLY_ADDRESS=no-reply@example.com
NEWSLETTER_WELCOME_SUBJECT="Welcome to our newsletter!"

# Optional
NEWSLETTER_ORG_TAGLINE="Your tagline here"
NEWSLETTER_ORG_COPYRIGHT="&copy; 2025 Your Org. All rights reserved."
NEWSLETTER_BANNER_IMAGE=/assets/images/banner.jpg
NEWSLETTER_TAG=newsletter
NEWSLETTER_WELCOME_TAG=welcome
NEWSLETTER_BATCH_SIZE=50
NEWSLETTER_DB_CONNECTION=mysql
NEWSLETTER_DB_TABLE=newsletter_subscribers
```

Publish the full config to customize further:

```
php artisan vendor:publish --tag=statamic-newsletter-config
```

Usage
-----

[](#usage)

### Subscribe form

[](#subscribe-form)

Use the Antlers tag in any template:

```
{{ newsletter_form }}
```

Or build your own form that POSTs to `/{prefix}/subscribe` with an `email` field.

### Sending newsletters

[](#sending-newsletters)

1. Create a newsletter entry in the CP using the `newsletters` collection
2. Add an intro heading, optional intro body, and content sections
3. **Publish** the entry — it automatically dispatches to all active subscribers

To resend: unpublish, set `newsletter_send_count` to `0`, clear `newsletter_sent_at`, then republish.

### Preview

[](#preview)

```
php artisan newsletter:preview              # Pick from existing entries
php artisan newsletter:preview my-slug      # Preview a specific entry
php artisan newsletter:preview --demo       # Preview with placeholder content
```

### Customizing email templates

[](#customizing-email-templates)

```
php artisan vendor:publish --tag=statamic-newsletter-views
```

Templates are published to `resources/views/vendor/statamic-newsletter/` for editing.

### Webhook

[](#webhook)

Set up a Postmark suppression webhook pointing to:

```
https://yoursite.com/webhook/postmark/suppression

```

Include the `X-Webhook-Token` header matching your `POSTMARK_WEBHOOK_TOKEN` env var.

License
-------

[](#license)

MIT

###  Health Score

39

—

LowBetter than 86% of packages

Maintenance82

Actively maintained with recent releases

Popularity4

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity53

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 ~0 days

Total

5

Last Release

90d ago

### Community

Maintainers

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

---

Top Contributors

[![xenoplexus](https://avatars.githubusercontent.com/u/15138924?v=4)](https://github.com/xenoplexus "xenoplexus (10 commits)")

---

Tags

emailnewsletterstatamicpostmark

### Embed Badge

![Health badge](/badges/xenoplexus-statamic-newsletter/health.svg)

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

###  Alternatives

[coconutcraig/laravel-postmark

Laravel package for sending mail via the Postmark API

2152.9M1](/packages/coconutcraig-laravel-postmark)[slm/mail

Integration of various email service providers in the Laminas\\Mail

108732.4k1](/packages/slm-mail)[omnimail/omnimail

PHP Library to send email across all platforms using one interface.

32934.3k](/packages/omnimail-omnimail)[znarkus/postmark

Postmark PHP class

13789.7k1](/packages/znarkus-postmark)[hocza/sendy

Sendy API implementation for Laravel

71195.5k](/packages/hocza-sendy)[putyourlightson/craft-campaign

Send and manage email campaigns, contacts and mailing lists.

6435.0k1](/packages/putyourlightson-craft-campaign)

PHPackages © 2026

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